if getgenv().KiciaRebuild and getgenv().KiciaRebuild.Unload then pcall(getgenv().KiciaRebuild.Unload) end if not game:IsLoaded() then game.Loaded:Wait() end print("[Kicia] script file executing, PlaceId=" .. tostring(game.PlaceId)) local K: { [string]: any } = { connections = {}, cleanups = {}, destroyed = false } getgenv().KiciaRebuild = K local Players = game:GetService("Players") local _ReplicatedStorage = game:GetService("ReplicatedStorage") local _RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local _CollectionService = game:GetService("CollectionService") local _HttpService = game:GetService("HttpService") local _SoundService = game:GetService("SoundService") local _Lighting = game:GetService("Lighting") local _player = Players.LocalPlayer local rawget, rawset = rawget, rawset function K.fn(name) local v pcall(function() v = getgenv()[name] end) if type(v) ~= "function" then pcall(function() v = getgenv()[name] end) end return type(v) == "function" and v or nil end local getthreadidentity_ = K.fn("getthreadidentity") or K.fn("getidentity") local setthreadidentity_ = K.fn("setthreadidentity") or K.fn("setidentity") local _sethiddenproperty = K.fn("sethiddenproperty") local gethui_ = K.fn("gethui") local function identity(n) if not setthreadidentity_ then return function() end end local old = getthreadidentity_ and getthreadidentity_() or nil pcall(setthreadidentity_, n) return function() if old then pcall(setthreadidentity_, old) end end end K.identity = identity local function hudParent() local ok, h = pcall(function() return gethui_ and gethui_() end) if ok and h then return h end return game:GetService("CoreGui") end K.hudParent = hudParent function K.track(c) K.connections[#K.connections + 1] = c; return c end function K.onUnload(f) K.cleanups[#K.cleanups + 1] = f end --========================================================================== -- Signal / Trove (Kicia's own small versions) --========================================================================== local Signal = {} Signal.__index = Signal function Signal.new() return setmetatable({ _handlers = {} }, Signal) end function Signal:Connect(fn) local h = { fn = fn, connected = true } table.insert(self._handlers, h) local sig = self return { Connected = true, Disconnect = function(c) if not h.connected then return end h.connected = false c.Connected = false local i = table.find(sig._handlers, h) if i then table.remove(sig._handlers, i) end end, } end function Signal:Once(fn) local c c = self:Connect(function(...) c:Disconnect(); fn(...) end) return c end function Signal:Fire(...) local list = table.clone(self._handlers) for _, h in ipairs(list) do if h.connected then task.spawn(h.fn, ...) end end end function Signal:FireSync(...) for _, h in ipairs(table.clone(self._handlers)) do if h.connected then h.fn(...) end end end function Signal:Destroy() table.clear(self._handlers) end K.Signal = Signal local Trove = {} Trove.__index = Trove function Trove.new(name) return setmetatable({ _name = name, _items = {} }, Trove) end local function cleanItem(o) local t = typeof(o) if t == "RBXScriptConnection" then o:Disconnect() elseif t == "Instance" then pcall(function() o:Destroy() end) elseif t == "thread" then pcall(task.cancel, o) elseif type(o) == "function" then pcall(o) elseif type(o) == "table" then -- some objects (Kicia's signal connections) error on unknown fields local function member(k) local ok, v = pcall(function() return o[k] end) return ok and type(v) == "function" and v or nil end local cancel, getStatus = member("cancel"), member("getStatus") if cancel and getStatus then pcall(cancel, o); return end local destroy = member("Destroy") if destroy then pcall(destroy, o); return end local disconnect = member("Disconnect") if disconnect then pcall(disconnect, o) end end end function Trove:Add(o) table.insert(self._items, o); return o end function Trove:Connect(sig, fn) return self:Add(sig:Connect(fn)) end function Trove:Extend() return self:Add(Trove.new(self._name)) end function Trove:Remove(o, keep) local i = table.find(self._items, o) if i then table.remove(self._items, i) if not keep then cleanItem(o) end end end -- Promise held until it settles; cancelled if the trove is cleaned first. function Trove:AddPromise(promise) if tostring(promise:getStatus()) == "Started" then self:Add(promise) promise:finally(function() if not self._cleaning then self:Remove(promise, true) end end) end return promise end -- Sub-trove that cleans itself up when `instance` is destroyed. function Trove:AttachExtend(instance) local sub = self:Extend() sub:Connect(instance.Destroying, function() self:Remove(sub) end) return sub end function Trove:Clean() local items = self._items self._items = {} self._cleaning = true for i = #items, 1, -1 do cleanItem(items[i]) end self._cleaning = false end Trove.Destroy = Trove.Clean K.Trove = Trove --========================================================================== -- Kicia's constant pool (v86[...]) as recovered from usage in the dump --========================================================================== local C = { [3] = "Toggle", [9] = 20, [12] = 12, [18] = "0", [26] = 4, [34] = true, [44] = "Enabled", [45] = 90, [48] = 2, [53] = 20, [55] = "Mode", [56] = 2, [62] = 0.1, [63] = 1, [68] = "table", [75] = "None", [83] = 64, [91] = 100, [95] = "number", [101] = 0.5, [108] = 255, [116] = "boolean", [118] = 16, [122] = 8, [126] = 0.15, [127] = "CFrame", [128] = "Frame", [133] = 10, [137] = 256, [147] = 0.1, [149] = 1, [153] = false, [155] = 3, [160] = 50, [162] = 8, [165] = "string", [170] = 9, [173] = 0.88, [175] = 5, [186] = 0, [192] = 30, [195] = 0.7, } K.C = C --========================================================================== -- Kicia's own UI, settings store and Combat menu (lifted from the dump) --========================================================================== local v86 = { [2] = "ReactiveStore", [3] = "Toggle", [4] = "UIListLayout", [5] = "BackgroundColor3", [6] = 0, [7] = 60, [8] = 60, [9] = 20, [12] = 12, [13] = 14, [14] = "Settings", [15] = 120, [16] = "min", [17] = 200, [18] = "0", [19] = 200, [20] = "Vector3", [21] = "Always", [22] = "", [23] = 1.4707963267948965, [24] = "Roboto", [25] = 24, [26] = 4, [27] = "Color", [28] = 0.2, [29] = "Size", [30] = 0.35, [31] = 29, [32] = 24, [33] = "Button", [34] = true, [35] = "ConfigManager", [36] = "ApplyMigrations", [37] = "TextBounds", [38] = "DeleteFile", [39] = "Slider", [40] = "...", [42] = "left", [43] = "Proggy Clean", [44] = "Enabled", [45] = 90, [46] = "UIGradient", [47] = "CanvasGroup", [48] = 0.3, [49] = 2, [50] = "Side", [51] = " ", [52] = "BottomRight", [53] = 92, [54] = 6, [55] = "Mode", [56] = 2, [57] = "TextColor", [58] = 80, [59] = "Font", [60] = 29, [61] = 20, [62] = 0.1, [63] = 1, [64] = "ScrollingFrame", [65] = 200, [66] = 0.5, [67] = 100, [68] = "table", [69] = "Catalog unavailable", [70] = "GradientDark", [71] = 10, [72] = 12, [73] = "Keybind", [74] = 0.9, [75] = "None", [76] = "LoadFromFile", [77] = "FireServer", [78] = 720, [79] = 255, [80] = "Text", [81] = 1, [82] = "Realize() can only be called on the root", [83] = 64, [84] = 0.5, [85] = "UIStroke", [87] = 0.8, [88] = "TabHighlight", [89] = "Loading", [90] = "Gradient", [91] = 100, [92] = "TextButton", [93] = "ColorSequence", [94] = "Options", [95] = "number", [96] = "Unselected", [97] = "Mode", [98] = "UICorner", [99] = "ExportToJson", [100] = 14, [101] = 0.5, [102] = 231, [103] = 52, [104] = "Fonts", [105] = 0.85, [106] = "Menu Keybind", [107] = 40, [108] = 255, [109] = 77, [110] = 70, [111] = "Fetching items...", [112] = "Invisible", [113] = "UIPadding", [114] = "primary", [115] = "Color3", [116] = "boolean", [118] = 16, [119] = 159, [120] = "Outline", [121] = "ImageButton", [122] = 8, [123] = 19, [124] = "X", [125] = "Proggy Tiny", [126] = 0.15, [127] = "CFrame", [128] = "Frame", [129] = "Show Watermark", [131] = "AbsoluteSize", [132] = "Breathing", [133] = 10, [134] = "GradientTop", [135] = "TextLabel", [136] = "Unselected Text", [137] = 256, [138] = 0.85, [139] = "Accent", [140] = "danger", [141] = "GradientDeep", [142] = "Silent Load", [143] = 32, [144] = 20, [145] = "Dialog has been destroyed", [146] = "ImageLabel", [147] = 0.1, [148] = "TextBox", [149] = 1, [150] = "stop", [151] = "family", [153] = false, [154] = "ScrollBarImageColor3", [155] = 3, [156] = "ImageColor3", [157] = 20, [158] = "secondary", [159] = 20, [160] = 50, [161] = 0.5, [162] = 8, [163] = 80, [164] = "hue", [165] = "string", [166] = "family", [167] = "TextColor3", [168] = "ElementBackground", [169] = "FromJson", [170] = 9, [172] = "none", [173] = 0.88, [174] = "Unselected", [175] = 5, [176] = "UISizeConstraint", [177] = "Try a different search.", [178] = "ElementBackground", [181] = 10, [182] = "HttpService", [183] = 72, [184] = "Color", [186] = 0, [187] = "GradientMid", [189] = "Position", [190] = "Search...", [191] = "TabShadow", [192] = 30, [193] = 0, [194] = "Hold", [195] = 0.7, [196] = "Viewport", [197] = "Y", [198] = 400, [199] = "Unload", [200] = 26, } -- Environment Kicia's modules expect: the module table and the aliases its -- loader set up before them (v102 = rawget, v103 = rawset, v107 = pcall). local tbl17: { [string]: any } = { cache = {} } local v102, v103, v107 = rawget, rawset, pcall -- The obfuscator's integrity counters. Every check in the lifted code has one -- branch that hangs and one that runs the real code; these values sit inside -- the window where all of them take the real branch (n26 in [4790, 4809), -- n25 in [3866, 3887]). local n25, n26 = 3870, 4800 local flag2, flag3 = true, true local function n29(...) return 0 end local cloneref = K.fn("cloneref") or function(x) return x end local gethui = K.fn("gethui") or function() return game:GetService("CoreGui") end local getthreadidentity = K.fn("getthreadidentity") or K.fn("getidentity") or function() return 8 end local setthreadidentity = K.fn("setthreadidentity") or K.fn("setidentity") or function() end -- The rest of the loader's locals (clonefunction'd so hooks on them can't see us). local function clonefn(f) local c = K.fn("clonefunction") if c and f then local ok, r = pcall(c, f) if ok and r then return r end end return f end local fireServer = clonefn(Instance.new("RemoteEvent").FireServer) local fireServer2 = clonefn(Instance.new("UnreliableRemoteEvent").FireServer) local v104 = clonefn(K.fn("sethiddenproperty")) local v108 = clonefn(K.fn("setfflag")) or function() end local v109 = clonefn(K.fn("isexecutorclosure")) or function() return false end local v110 = clonefn(K.fn("setrawmetatable")) or setmetatable local v111 = clonefn(K.fn("getrawmetatable")) or getmetatable local v112 = clonefn(v111(game).__newindex) local v113 = clonefn(v111(game).__index) local v114 = clonefn(game.FindFirstChildOfClass) local function _n27() return 0 end local firetouchinterest = K.fn("firetouchinterest") or function() end local getconnections = K.fn("getconnections") or function() return {} end local setclipboard = K.fn("setclipboard") or K.fn("toclipboard") or function() end local InstanceHandle pcall(function() InstanceHandle = getgenv().InstanceHandle end) if InstanceHandle == nil then pcall(function() InstanceHandle = getgenv().InstanceHandle end) end if InstanceHandle == nil then InstanceHandle = { new = function(x) return x end } end -- The modules the decompiler lost (their bodies are `fn35(...) end` in -- the dump), rebuilt from how the rest of Kicia's code calls them. -- k: Trove tbl17.k = function() return { new = function(name) return Trove.new(name) end } end -- w: viewport / pointer / key / path helpers do local UIS = UserInputService local _GuiService = game:GetService("GuiService") local function camera() return workspace.CurrentCamera end local W = {} function W.appendPath(path, key) local p = table.clone(path) table.insert(p, key) return p end function W.currentViewportSize() local c = camera() return c and c.ViewportSize or Vector2.new(1920, 1080) end function W.connectCurrentCameraViewport(trove, cb) local inner = trove:Extend() local function bind() inner:Clean() local c = camera() if c == nil then return end inner:Connect(c:GetPropertyChangedSignal("ViewportSize"), function() cb(c.ViewportSize) end) cb(c.ViewportSize) end trove:Connect(workspace:GetPropertyChangedSignal("CurrentCamera"), bind) bind() end function W.absoluteToLayerOffset(layer, pos) return pos - layer.AbsolutePosition end function W.clampOffsetToViewport(x, y, size) local vp = W.currentViewportSize() return math.clamp(x, 0, math.max(0, vp.X - size.X)), math.clamp(y, 0, math.max(0, vp.Y - size.Y)) end function W.clampGuiToViewport(gui) local vp = W.currentViewportSize() local ap, as = gui.AbsolutePosition, gui.AbsoluteSize local dx = math.clamp(ap.X, 0, math.max(0, vp.X - as.X)) - ap.X local dy = math.clamp(ap.Y, 0, math.max(0, vp.Y - as.Y)) - ap.Y if dx ~= 0 or dy ~= 0 then local p = gui.Position gui.Position = UDim2.new(p.X.Scale, p.X.Offset + dx, p.Y.Scale, p.Y.Offset + dy) end end function W.snapPosition(u) return UDim2.new(u.X.Scale, math.round(u.X.Offset), u.Y.Scale, math.round(u.Y.Offset)) end function W.onScreenKeyboardTop() local ok, visible = pcall(function() return UIS.OnScreenKeyboardVisible end) if not ok or not visible then return nil end local ok2, pos = pcall(function() return UIS.OnScreenKeyboardPosition end) return ok2 and pos and pos.Y or nil end function W.connectOnScreenKeyboard(trove, cb) pcall(function() trove:Connect(UIS:GetPropertyChangedSignal("OnScreenKeyboardVisible"), cb) end) pcall(function() trove:Connect(UIS:GetPropertyChangedSignal("OnScreenKeyboardPosition"), cb) end) end function W.getPointerPosition() return UIS:GetMouseLocation() end function W.matchesPointerDrag(input, started, movement) if started ~= nil and started.UserInputType == Enum.UserInputType.Touch then return input == started end return input.UserInputType == movement end function W.round(v, step) if step == nil or step == 0 then return v end return math.round(v / step) * step end W.KeyNames = { [Enum.UserInputType.MouseButton1] = "MB1", [Enum.UserInputType.MouseButton2] = "MB2", [Enum.UserInputType.MouseButton3] = "MB3", [Enum.KeyCode.LeftShift] = "LShift", [Enum.KeyCode.RightShift] = "RShift", [Enum.KeyCode.LeftControl] = "LCtrl", [Enum.KeyCode.RightControl] = "RCtrl", [Enum.KeyCode.LeftAlt] = "LAlt", [Enum.KeyCode.RightAlt] = "RAlt", } function W.serializeKey(key) if typeof(key) ~= "EnumItem" then return nil end return tostring(key.EnumType) .. "." .. key.Name end function W.deserializeKey(s) if type(s) ~= "string" then return nil end local kind, name = s:match("^(%w+)%.(%w+)$") if kind == nil then return nil end local ok, v = pcall(function() return Enum[kind][name] end) return ok and v or nil end function W.findScrollingAncestor(inst) local p = inst and inst.Parent while p ~= nil do if p:IsA("ScrollingFrame") then return p end p = p.Parent end return nil end function W.isEffectivelyVisible(gui) local p = gui while p ~= nil and p ~= game do if p:IsA("GuiObject") and not p.Visible then return false end if p:IsA("LayerCollector") then return p.Enabled end p = p.Parent end return false end function W.ensureStorageDirectories(dir) local isf, mkf = K.fn("isfolder"), K.fn("makefolder") if not (isf and mkf) or type(dir) ~= "string" then return end local function make(path) local acc for part in path:gmatch("[^/]+") do acc = acc and (acc .. "/" .. part) or part pcall(function() if not isf(acc) then mkf(acc) end end) end end make(dir) make(dir .. "/configs") end tbl17.w = function() return W end end -- P: two-way link between a control and a settings path. Sliders ask for -- Debounce so dragging writes once per short burst instead of every frame. do local P = {} function P.bind(trove, config, control, path, opts) local debounce = opts ~= nil and opts.Debounce == true local writeBack = opts ~= nil and opts.WriteBack or nil control:Set(config:Get(path), true) trove:Connect(config:Changed(path), function(v) control:Set(v, true) end) local pending, scheduled = nil, false local function write(v) if writeBack then writeBack(v) else config:Set(path, v) end end trove:Connect(control.Changed, function(v) if not debounce then write(v); return end pending = v if scheduled then return end scheduled = true task.delay(0.05, function() scheduled = false write(pending) end) end) end tbl17.P = function() return P end end -- c5: the critically damped Spring (Position, Velocity, Target, Speed, Damper). do local Spring = {} local function posVel(self, now) local p0, v0, p1, d, s = self._p0, self._v0, self._target, self._damper, self._speed local t = s * (now - self._t0) local d2 = d * d local h, si, co if d2 < 1 then h = math.sqrt(1 - d2) local ep = math.exp(-d * t) / h co, si = ep * math.cos(h * t), ep * math.sin(h * t) elseif d2 == 1 then h = 1 local ep = math.exp(-d * t) / h co, si = ep, ep * t else h = math.sqrt(d2 - 1) local u, v = math.exp((-d + h) * t) / (2 * h), math.exp((-d - h) * t) / (2 * h) co, si = u + v, u - v end local a0, a1 = h * co + d * si, 1 - (h * co + d * si) local a2 = si / s local b0, b1, b2 = -s * si, s * si, h * co - d * si return a0 * p0 + a1 * p1 + a2 * v0, b0 * p0 + b1 * p1 + b2 * v0 end function Spring.new(initial, clock) initial = initial or 0 clock = clock or os.clock return setmetatable({ _clock = clock, _t0 = clock(), _p0 = initial, _v0 = 0 * initial, _target = initial, _damper = 1, _speed = 1 }, Spring) end function Spring:Impulse(v) self.Velocity = self.Velocity + v end function Spring:SetTarget(value, doNotAnimate) if doNotAnimate then self._p0, self._v0, self._target, self._t0 = value, 0 * value, value, self._clock() else self.Target = value end end function Spring:TimeSkip(delta) local now = self._clock() local p, v = posVel(self, now + delta) self._p0, self._v0, self._t0 = p, v, now end Spring.__index = function(self, k) if Spring[k] then return Spring[k] end if k == "Value" or k == "Position" or k == "p" then local p = posVel(self, self._clock()); return p elseif k == "Velocity" or k == "v" then local _, v = posVel(self, self._clock()); return v elseif k == "Target" or k == "t" then return self._target elseif k == "Damper" or k == "d" then return self._damper elseif k == "Speed" or k == "s" then return self._speed elseif k == "Clock" then return self._clock end return nil end Spring.__newindex = function(self, k, v) local now = self._clock() if k == "Value" or k == "Position" or k == "p" then local _, vel = posVel(self, now) self._p0, self._v0 = v, vel elseif k == "Velocity" or k == "v" then local pos = posVel(self, now) self._p0, self._v0 = pos, v elseif k == "Target" or k == "t" then local pos, vel = posVel(self, now) self._p0, self._v0, self._target = pos, vel, v elseif k == "Damper" or k == "d" then local pos, vel = posVel(self, now) self._p0, self._v0, self._damper = pos, vel, v elseif k == "Speed" or k == "s" then local pos, vel = posVel(self, now) self._p0, self._v0, self._speed = pos, vel, v < 0 and 0 or v elseif k == "Clock" then local pos, vel = posVel(self, now) self._clock, self._t0, self._p0, self._v0 = v, v(), pos, vel return else rawset(self, k, v) return end self._t0 = now end tbl17.c5 = function() return Spring end end -- ca: the AI aim mode's network weights. They are not in the dump; cc falls -- back to Linear movement without them. tbl17.ca = function() return nil end -- hH: weather emitter specs and lightning / thunder constants. Kicia's own -- values are not in the dump; these fit every field the weather module reads -- and use particle textures that ship with Roblox. do local soft = "rbxasset://textures/particles/smoke_main.dds" local sparkle = "rbxasset://textures/particles/sparkles_main.dds" local function spec(t) t.RotationMin, t.RotationMax = t.RotationMin or 0, t.RotationMax or 360 t.RotationSpeedMin, t.RotationSpeedMax = t.RotationSpeedMin or -40, t.RotationSpeedMax or 40 return t end local W = { EmitterSpecsByPreset = { Snow = { spec({ Texture = soft, TransparencyMax = 0.15, LifetimeMin = 6, LifetimeMax = 9, BaseRate = 220, SpeedMin = 6, SpeedMax = 10, SizeStart = 0.35, SizeEnd = 0.25, BaseSpread = 0.4, BaseAccelerationY = -1 }), spec({ Texture = sparkle, TransparencyMax = 0.35, LifetimeMin = 6, LifetimeMax = 9, BaseRate = 60, SpeedMin = 5, SpeedMax = 8, SizeStart = 0.2, SizeEnd = 0.15, BaseSpread = 0.6, BaseAccelerationY = -0.5 }), }, Rain = { spec({ Texture = soft, TransparencyMax = 0.35, LifetimeMin = 1.2, LifetimeMax = 1.8, BaseRate = 600, SpeedMin = 70, SpeedMax = 90, SizeStart = 0.12, SizeEnd = 0.1, BaseSpread = 0.05, BaseAccelerationY = -40, RotationMin = 0, RotationMax = 0, RotationSpeedMin = 0, RotationSpeedMax = 0, Orientation = Enum.ParticleOrientation.VelocityParallel }), }, Blizzard = { spec({ Texture = soft, TransparencyMax = 0.1, LifetimeMin = 3, LifetimeMax = 5, BaseRate = 700, SpeedMin = 18, SpeedMax = 28, SizeStart = 0.3, SizeEnd = 0.2, BaseSpread = 0.8, BaseAccelerationY = -6 }), spec({ Texture = soft, TransparencyMax = 0.75, LifetimeMin = 3, LifetimeMax = 5, BaseRate = 120, SpeedMin = 14, SpeedMax = 22, SizeStart = 3, SizeEnd = 5, BaseSpread = 1, BaseAccelerationY = -2 }), }, }, LightningPresetSet = { Rain = true }, LightningRadiusMin = 20, LightningGroundDrop = 40, LightningRayLength = 1000, LightningJitter = 30, ThunderSoundId = "", ThunderSpeed = 340, ThunderVolumeFloor = 0.2, ThunderFalloff = 600, ThunderPitchMin = 0.85, ThunderPitchMax = 1.1, } tbl17.hH = function() return W end end -- iQ: the Visuals > Player ESP page. Its builder is lost; rebuilt with the -- same menu calls Kicia's other pages use, over Kicia's own Esp settings. tbl17.iQ = function() return function(_, _, grid) local enable = tbl17.h6() local fonts = tbl17.az().Order local function P(...) return { "Esp", ... } end local main = grid:AddSection({ Title = "Player ESP", Side = "left" }) enable(main, "Enable ESP", { "Always", "Toggle", "Hold" }, P("Main"), true) main:AddDropdown({ Label = "Box Fit", Options = { "Static", "Dynamic" }, Config = P("Main", "Mode") }) local look = grid:AddSection({ Title = "Text", Side = "right" }) look:AddToggle({ Label = "Use Display Names", Config = P("Settings", "UseDisplayName") }) look:AddDropdown({ Label = "Font", Options = fonts, Config = P("Settings", "Font") }) look:AddSlider({ Label = "Font Size", Min = 8, Max = 32, Config = P("Settings", "FontSize") }) look:AddDropdown({ Label = "Text Case", Options = { "Standard", "UPPERCASE", "lowercase" }, Config = P("Settings", "TextCase") }) look:AddDropdown({ Label = "Text Surround", Options = { "None", "[]", "()", "<>", "{}" }, Config = P("Settings", "TextSurround") }) look:AddDivider({ Label = "Rank Spoof" }) look:AddToggle({ Label = "Spoof Rank", Config = P("RankSpoof", "Enabled") }) look:AddTextBox({ Label = "Rank Text", Config = P("RankSpoof", "Text") }) look:AddTextBox({ Label = "Rank Icon", Config = P("RankSpoof", "Icon") }) look:AddDivider({ Label = "Flags" }) look:AddDropdown({ Label = "Flag Font", Options = fonts, Config = P("Settings", "FlagFont") }) look:AddSlider({ Label = "Flag Font Size", Min = 6, Max = 24, Config = P("Settings", "FlagFontSize") }) look:AddDropdown({ Label = "Flag Text Case", Options = { "Standard", "UPPERCASE", "lowercase" }, Config = P("Settings", "FlagTextCase") }) look:AddDropdown({ Label = "Flag Surround", Options = { "None", "[]", "()", "<>", "{}" }, Config = P("Settings", "FlagTextSurround") }) look:AddGroup({ Source = look:AddToggle({ Label = "Scale With Distance", Config = P("Settings", "DistanceScaling") }) }) :AddSlider({ Label = "Reference Distance", Min = 10, Max = 300, Config = P("Settings", "DistanceScalingRef") }) local function side(title, key, where) local s = grid:AddSection({ Title = title, Side = where }) local function Q(...) return P(key, ...) end -- Kicia's ESP draws a side only when Main AND this side are enabled enable(s, "Enable " .. title .. " ESP", { "Always", "Toggle", "Hold" }, P(key), true) local function color(label, path, transparency) local t = s:AddToggle({ Label = label, Config = Q(path, "Enabled") }) s:AddColor({ Row = t.Row, Config = Q(path, "Color"), Transparency = transparency and Q(path, "Transparency") or nil, Alpha = transparency or nil }) return t end local function gradient(label, path) local t = s:AddToggle({ Label = label, Config = Q(path, "Enabled") }) s:AddColor({ Row = t.Row, Gradient = "editable", Alpha = true, Config = Q(path, "Color"), Transparency = Q(path, "Transparency") }) return t end color("Name", "Name", true) s:AddGroup({ Source = color("Box", "Box") }):AddDropdown({ Label = "Style", Options = { "Full", "Corner" }, Config = Q("Box", "Style") }) gradient("Filled Box", "FilledBox") local hb = s:AddToggle({ Label = "Health Bar", Config = Q("HealthBar", "Enabled") }) s:AddColor({ Row = hb.Row, Gradient = "editable", Config = Q("HealthBar", "Color") }) s:AddGroup({ Source = hb }):AddDropdown({ Label = "Color Mode", Options = { "Solid", "Gradient", "Reactive" }, Config = Q("HealthBar", "ColorMode") }) color("Health Number", "HealthNumber") color("Held Weapon", "HeldWeapon", true) local ab = s:AddToggle({ Label = "Ammo Bar", Config = Q("AmmoBar", "Enabled") }) s:AddColor({ Row = ab.Row, Gradient = "editable", Config = Q("AmmoBar", "Color") }) s:AddGroup({ Source = ab }):AddDropdown({ Label = "Color Mode", Options = { "Solid", "Gradient", "Reactive" }, Config = Q("AmmoBar", "ColorMode") }) color("Distance", "Distance") color("Rank", "Rank") color("Win Streak", "Winstreak") color("Deflecting", "Deflecting", true) local ch = s:AddGroup({ Source = s:AddToggle({ Label = "Chams", Config = Q("Chams", "Enabled") }) }) ch:AddDropdown({ Label = "Kind", Options = { "Legacy", "Highlight" }, Config = Q("Chams", "Kind") }) local fill = ch:AddLabel({ Label = "Fill" }) ch:AddColor({ Row = fill.Row, Alpha = true, Config = Q("Chams", "InnerColor"), Transparency = Q("Chams", "InnerTransparency") }) local outline = ch:AddLabel({ Label = "Outline" }) ch:AddColor({ Row = outline.Row, Alpha = true, Config = Q("Chams", "OutlineColor"), Transparency = Q("Chams", "OutlineTransparency") }) local glow = ch:AddToggle({ Label = "Glow", Config = Q("Chams", "Glow") }) ch:AddColor({ Row = glow.Row, Config = Q("Chams", "GlowColor") }) s:AddGroup({ Source = gradient("Skeleton", "Skeleton") }) :AddSlider({ Label = "Thickness", Min = 1, Max = 6, Config = Q("Skeleton", "Thickness") }) local hm = s:AddGroup({ Source = color("Head Marker", "HeadMarker", true) }) hm:AddDropdown({ Label = "Shape", Options = { "Cross", "Circle", "Diamond" }, Config = Q("HeadMarker", "Shape") }) hm:AddToggle({ Label = "Filled", Config = Q("HeadMarker", "Filled") }) local hmo = hm:AddToggle({ Label = "Outline", Config = Q("HeadMarker", "Outline") }) hm:AddColor({ Row = hmo.Row, Alpha = true, Config = Q("HeadMarker", "OutlineColor"), Transparency = Q("HeadMarker", "OutlineTransparency") }) local tr = s:AddGroup({ Source = gradient("Tracer", "Tracer") }) tr:AddSlider({ Label = "Thickness", Min = 1, Max = 6, Config = Q("Tracer", "Thickness") }) tr:AddDropdown({ Label = "From", Options = { "Bottom", "Center", "Top", "Mouse" }, Config = Q("Tracer", "Origin") }) tr:AddDropdown({ Label = "To", Options = { "Feet", "Head" }, Config = Q("Tracer", "Target") }) local tro = tr:AddToggle({ Label = "Outline", Config = Q("Tracer", "Outline") }) tr:AddColor({ Row = tro.Row, Alpha = true, Config = Q("Tracer", "OutlineColor"), Transparency = Q("Tracer", "OutlineTransparency") }) tr:AddSlider({ Label = "Outline Thickness", Min = 1, Max = 6, Config = Q("Tracer", "OutlineThickness") }) end side("Enemies", "Enemy", "left") side("Teammates", "Team", "right") end end -- eZ: Kicia's online user service (sessions with user.kicia.cc). Offline here: -- nothing is sent anywhere, connecting is refused. tbl17.eZ = function() local Offline = {} Offline.__index = Offline function Offline.new() local Signal = tbl17.g() local self = setmetatable({ Connected = Signal.new(), ShowActiveChanged = Signal.new(), PeerPayloadReceived = Signal.new(), PeerRemoved = Signal.new(), ShowActivated = Signal.new(), _playerByHash = {} }, Offline) self._leaving = Players.PlayerRemoving:Connect(function(p) self.PeerRemoved:Fire(p) end) return self end function Offline:ShouldShowActive() return false end function Offline:IsConnected() return false end function Offline:Send() return tbl17.a().err("UserServer", "offline", "the online user service is disabled") end function Offline:FindPlayerByHash() return nil end function Offline:Connect() return tbl17.ay().reject("the online user service is disabled") end function Offline:Destroy() self.Connected:Destroy() self.ShowActiveChanged:Destroy() self.PeerPayloadReceived:Destroy() self.PeerRemoved:Destroy() self.ShowActivated:Destroy() self._leaving:Disconnect() end return Offline end -- Kicia's own modules, lifted from the dump (extract.py). Do not edit by hand. do -- a local function fn35() return { ok = function(arg) return { Ok = true, Value = arg } end, err = function(arg, arg2, arg3) return { Ok = false, Error = { Source = arg, Stage = arg2, Detail = arg3, Timestamp = os.clock() } } end, formatError = function(arg) local v115 = tostring local detail = arg.Detail return string.format("'%s' @ %s failed during stage '%s'; %s", tostring(arg.Source), tostring(arg.Timestamp), tostring(arg.Stage), v115(detail)) end, VoidOk = table.freeze({ Ok = true, Value = nil }), } end tbl17.a = function() local a = tbl17.cache.a if not a then a = { c = fn35() } tbl17.cache.a = a end return a.c end end do -- b local function fn35() tbl17.a() local v115 = nil return { use = function(arg) v115 = arg end, get = function() assert(v115) return v115 end, } end tbl17.b = function() local b = tbl17.cache.b if not b then b = { c = fn35() } tbl17.cache.b = b end return b.c end end do -- d local function fn35() local function copy(t) if type(t) ~= "table" then return t end local o = {} for k, v in next, t do o[k] = copy(v) end return setmetatable(o, getmetatable(t)) end return copy end tbl17.d = function() local d = tbl17.cache.d if not d then d = { c = fn35() } tbl17.cache.d = d end return d.c end end do -- e local function fn35() local v115 = tbl17.a() return function(arg, arg2) local parts = arg:split("/") arg2 = arg2 or "" for k, v116 in parts, nil, nil do if v116 == "" then continue end local str7 = k == #parts and "" or "/" local v117 = tostring arg2 ..= string.format("%s%s", tostring(v116), v117(str7)) if isfile(arg2) then return v115.err("ensureFolderPath", "collision", string.format("expected `%s` to be non-existant or a folder, found a file instead.", tostring(arg2))) end if not isfolder(arg2) then makefolder(arg2) end end return v115.VoidOk end end tbl17.e = function() local e = tbl17.cache.e if not e then e = { c = fn35() } tbl17.cache.e = e end return e.c end end do -- f local function fn35() local v115 = tbl17.a() local v116 = tbl17.d() local v117 = tbl17.e() local v118 = cloneref(game:GetService(v86[182])) local index2 = {} index2.__index = index2 local function fn36(arg) local v119 = v86[68] if type(arg) == v119 then return v116(arg) end return arg end local function fn37(arg) if arg == nil or arg == "" then return "" end if arg:sub(-v86[63]) == "/" then return arg end return arg .. "/" end local function fn38(arg) if arg == "" then return v115.err("ConfigManager", "validateConfigName", "config name cannot be empty") end if arg:find("/") or arg:find("\\") then return v115.err("ConfigManager", "validateConfigName", "expected no directory traversal") end return v115.VoidOk end index2.new = function(arg) assert(type(arg.CurrentVersion) == "number" and arg.CurrentVersion >= v86[63], "expected `CurrentVersion` >= 1") local v119 = fn37(arg.SavePath) if v119 ~= "" then local v120 = v117(v119) if not v120.Ok then error(v120.Error.Detail, 2) end end local serialize = arg.Serialize or function(arg2) return arg2 end local deserialize = arg.Deserialize or function(arg2) return arg2 end local v120 = fn36(arg.DefaultConfig) local tbl18 = { Data = fn36(v120), _defaultConfig = v120, _currentVersion = arg.CurrentVersion, _legacyVersion = arg.LegacyVersion or 1, _savePath = v119, _migrations = arg.Migrations or {}, _serialize = serialize, _deserialize = deserialize, } setmetatable(tbl18, index2) return tbl18 end index2._ConfigPath = function(arg, arg2) if arg2:match("%.json$") then return arg._savePath .. arg2 end local v119 = tostring return string.format("%s%s.json", tostring(arg._savePath), v119(arg2)) end index2._ApplyMigrations = function(arg, arg2, arg3) if arg2 < 1 then return v115.err("ConfigManager", "ApplyMigrations", string.format("invalid file version %s", tostring(arg2))) end if arg._currentVersion < arg2 then local v119 = tostring local currentVersion = arg._currentVersion return v115.err("ConfigManager", "ApplyMigrations", string.format("file version %s is newer than current version %s", tostring(arg2), v119(currentVersion))) end local v119 = fn36(arg3) while arg2 < arg._currentVersion do local v120 = arg._migrations[arg2] if v120 == nil then local v121 = tostring return v115.err("ConfigManager", v86[36], string.format("missing migration for version %s -> %s", tostring(arg2), v121(arg2 + 1))) end local v121, v122 = v107(v120, v119, arg2, arg2 + v86[63]) if not v121 then local v123 = tostring return v115.err(v86[35], "ApplyMigrations", string.format("migration %s -> %s failed: %s", tostring(arg2), tostring(arg2 + v86[63]), v123(v122))) end if v122 == nil then local v123 = tostring return v115.err("ConfigManager", "ApplyMigrations", string.format("migration %s -> %s returned nil", tostring(arg2), v123(arg2 + 1))) end arg2 += 1 v119 = v122 end return v115.ok(v119) end index2.SetData = function(arg, data) arg.Data = data end index2.Reset = function(arg) local v119 = v116(arg._defaultConfig) arg.Data = v119 return v119 end index2.ToJson = function(arg, arg2) if arg2 == nil then arg2 = arg.Data end local v119, v120 = v107(arg._serialize, arg2) if not v119 then return v115.err("ConfigManager", "ToJson", string.format("failed to serialize config: %s", tostring(v120))) end local v121, v122 = v107(v118.JSONEncode, v118, { Version = arg._currentVersion, Data = v120 }) if not v121 then return v115.err("ConfigManager", "ToJson", string.format("failed to encode config payload as JSON: %s", tostring(v122))) end return v115.ok(v122) end index2.FromJson = function(arg, arg2) local v119, v120 = v107(v118.JSONDecode, v118, arg2) if not v119 then return v115.err(v86[35], v86[169], string.format("failed to decode JSON payload: %s", tostring(v120))) end if type(v120) ~= "table" then return v115.err("ConfigManager", "FromJson", "expected decoded config JSON to be a table") end local legacyVersion = arg._legacyVersion local version = v120.Version local data = v120.Data if version == nil and data == nil then version = v120.version data = v120.data end if not (type(version) == "number" and data ~= nil) then data = v120 version = legacyVersion end local v121 = arg:_ApplyMigrations(version, data) if not v121.Ok then return v115.err("ConfigManager", v86[169], v121.Error.Detail) end local v122, v123 = v107(arg._deserialize, v121.Value) if not v122 then return v115.err("ConfigManager", "FromJson", string.format("failed to deserialize config data: %s", tostring(v123))) end if v123 == nil then return v115.err("ConfigManager", "FromJson", "deserializer returned nil") end arg.Data = v123 return v115.ok(v123) end index2._SaveImpl = function(arg, arg2, arg3, arg4) local v119 = fn38(arg2) if not v119.Ok then return v119 end local v120 = arg:_ConfigPath(arg2) if arg4 and isfile(v120) then return v115.err("ConfigManager", "SaveImpl", string.format("path `%s` already exists", tostring(v120))) end local v121 = arg:ToJson(arg3) if not v121.Ok then return v115.err("ConfigManager", "SaveImpl", v121.Error.Detail) end writefile(v120, v121.Value) return v115.VoidOk end index2.SaveToFile = function(arg, arg2, arg3) return arg:_SaveImpl(arg2, nil, arg3) end index2.LoadFromFile = function(arg, arg2) local v119 = fn38(arg2) if not v119.Ok then return v115.err("ConfigManager", v86[76], v119.Error.Detail) end local v120 = arg:_ConfigPath(arg2) if not isfile(v120) then return v115.err(v86[35], "LoadFromFile", string.format("path `%s` does not exist", tostring(v120))) end local v121 = readfile(v120) return arg:FromJson(v121) end index2.Exists = function(arg, arg2) if not fn38(arg2).Ok then return v86[153] end return isfile(arg:_ConfigPath(arg2)) end index2.SaveDefaultToFile = function(arg, arg2, arg3) return arg:_SaveImpl(arg2, arg._defaultConfig, arg3) end index2.Delete = function(arg, arg2) local v119 = fn38(arg2) if not v119.Ok then return v119 end local v120 = arg:_ConfigPath(arg2) if not isfile(v120) then return v115.err("ConfigManager", v86[38], string.format("path `%s` does not exist", tostring(v120))) end delfile(v120) return v115.VoidOk end index2.AllConfigs = function(arg) local tbl18 = {} if arg._savePath == "" then return tbl18 end for _, v119 in listfiles(arg._savePath) do if isfile(v119) then local match = (v119:match("[/\\]([^/\\]+)$") or v119):match("(.+)%.json$") if match ~= nil then table.insert(tbl18, match) end end end return tbl18 end return index2 end tbl17.f = function() local f = tbl17.cache.f if not f then f = { c = fn35() } tbl17.cache.f = f end return f.c end end do -- g local function fn35()local I;local function W(N,...)local P=I;I=nil;N(...);I=P;end;local function N(...)W(...);while true do W(coroutine.yield());end;end;local W_1={};W_1.__index=W_1;W_1.Disconnect=function(P)if not P.Connected then return;end;P.Connected=false;if P._signal._handlerListHead==P then P._signal._handlerListHead=P._next;else local a=P._signal._handlerListHead;while a and a._next~=P do a=a._next;end;if a then a._next=P._next;end;end;end;W_1.Destroy=W_1.Disconnect;setmetatable(W_1,{__index=function(P,P_2)error(("Attempt to get Connection::%s (not a valid member)"):format(tostring(P_2)),2);end,__newindex=function(P,P_3,a)error(("Attempt to set Connection::%s (not a valid member)"):format(tostring(P_3)),2);end});local P={};P.__index=P;P.new=function()return(setmetatable({_handlerListHead=false,_proxyHandler=nil,_yieldedThreads=nil},P));end;P.Wrap=function(a)assert(typeof(a)=="RBXScriptSignal","Argument #1 to Signal.Wrap must be a RBXScriptSignal; got "..typeof(a));local e=P.new();e._proxyHandler=a:Connect(function(...)e:Fire(...);end);return e;end;P.Is=function(a)return type(a)=="table"and getmetatable(a)==P;end;P.Connect=function(a,e)local c=setmetatable({Connected=true,_signal=a,_fn=e,_next=false},W_1);if a._handlerListHead then c._next=a._handlerListHead;a._handlerListHead=c;else a._handlerListHead=c;end;return c;end;P.ConnectOnce=function(W,a)return W:Once(a);end;P.Once=function(W,a)local e;local c=false;e=W:Connect(function(...)if c then return;end;c=true;e:Disconnect();a(...);end);return e;end;P.GetConnections=function(W)local a,e={},W._handlerListHead;while e do table.insert(a,e);e=e._next;end;return a;end;P.DisconnectAll=function(W)local a=W._handlerListHead;while a do a.Connected=false;a=a._next;end;W._handlerListHead=false;a= v102 (W,"_yieldedThreads");if a then for e in a,nil,nil do if coroutine.status(e)=="suspended"then warn((debug.traceback :: any)(e,"signal disconnected; yielded thread cancelled",2));task.cancel(e);end;end;table.clear(W._yieldedThreads);end;end;P.Fire=function(W,...)local a=W._handlerListHead;while a do if a.Connected then W=I;if not W then I=coroutine.create(N);end;task.spawn(I,a._fn,...);end;a=a._next;end;end;P.FireDeferred=function(I,...)local W=I._handlerListHead;while W do local I_4=W;task.defer(function(...)if I_4.Connected then I_4._fn(...);end;end,...);W=W._next;end;end;P.Wait=function(I)local W= v102 (I,"_yieldedThreads");if not W then W={}; v103 (I,"_yieldedThreads",W);end;local N=coroutine.running();W[N]=true;I:Once(function(...)W[N]=nil;if coroutine.status(N)=="suspended"then task.spawn(N,...);end;end);return coroutine.yield();end;P.Destroy=function(I)I:DisconnectAll();local W= v102 (I,"_proxyHandler");if W then W:Disconnect();end;end;return table.freeze({new=P.new,Wrap=P.Wrap,Is=P.Is});end tbl17.g = function() local g = tbl17.cache.g if not g then local g2 = { c = fn35() } tbl17.cache.g = g2 g = g2 end return g.c end end do -- h local function fn35() local v115 = tbl17.g() local index2 = {} index2.__index = index2 local index3 = {} index3.__index = index3 index3.Enable = function(l)if l.Connected then return;end;l.Connected=true;l._inner=l._signal._inner:Connect(l._callback);end index3.Disable = function(l)if not l.Connected then return;end;l.Connected=false;local I=l._inner;if I~=nil then I:Disconnect();end;l._inner=nil;end index3.Disconnect = index3.Disable index3.Destroy = index3.Disable index2.Connect = function(I,W)local N=setmetatable({_signal=I,_callback=W,_inner=nil,Connected=false}, index3 );N:Enable();return N;end index2.Fire = function(l,I)l._inner:Fire(I);end index2.FireDeferred = function(arg, arg2) arg._inner:FireDeferred(arg2) end index2.Once = function(arg, arg2) return arg._inner:Once(arg2) end index2.Wait = function(arg) return arg._inner:Wait() end index2.DisconnectAll = function(arg) arg._inner:DisconnectAll() end index2.GetConnections = function(arg) return arg._inner:GetConnections() end index2.Destroy = function(arg) arg._inner:Destroy() end return table.freeze({ new = function() return (setmetatable({ _inner = v115.new() }, index2)) end }) end tbl17.h = function() local h = tbl17.cache.h if not h then local h2 = { c = fn35() } tbl17.cache.h = h2 h = h2 end return h.c end end do -- i local function fn35() local tbl18 = {} return { atomic = function(arg) setmetatable(arg, tbl18) return arg end, isAtomic = function(I)return type(I)=="table"and getmetatable(I)== tbl18 ;end, } end tbl17.i = function() local i = tbl17.cache.i if not i then local i2 = { c = fn35() } tbl17.cache.i = i2 i = i2 end return i.c end end do -- j local function fn35() if true then local isAtomic = tbl17.i().isAtomic local tbl18 tbl18 = { PathToKey = function(l)return table.concat(l,".");end, KeyToPath = function(l)return l:split(".");end, NavigateTo = function(l,I,W)if#I==0 then return nil;end;for N=1,#I,1 do local P=I[N];if N==#I then return l[P];end;l=l[P];if l==nil then if W then return nil;end;error(string.format("Invalid path specified '%s', key %s is nil!",tostring(table.concat(I,".")),tostring(P)),2);elseif type(l)~="table"then if W then return nil;end;error(string.format("Invalid path specified '%s', key %s is not a branch!",tostring(table.concat(I,".")),tostring(P)),2);end;end;return nil;end, Set = function(I,W,N)for P=1,#W,1 do local a=W[P];if P==#W then I[a]=N;return;end;local Q=I[a];if Q==nil then Q={};I[a]=Q;elseif type(Q)~="table"then local N_5= tbl18 .PathToKey(W);error(string.format("Invalid path specified '%s', key %s is not a table!",tostring(N_5),tostring(a)),2);end;I=Q;end;end, ForEachEntry = function(I,W)local N={};local function P(a)for e,c in a,nil,nil do table.insert(N,e);W(N,c);if type(c)=="table"and not isAtomic (c)then P(c);end;table.remove(N);end;end;P(I);end, ForEachLeafValue = function(I,W,N)local P={};local function a(e,c)for E,p in e,nil,nil do table.insert(P,E);local e_6=if c~=nil then c[E]else nil;local c_7=type(e_6)=="table";E=if type(p)=="table"and not isAtomic (p)and not(c_7 and( isAtomic (e_6)))and(e_6==nil or c_7)then(a(p,if c_7 then e_6 else nil))else if c_7 and not isAtomic (e_6)then false else N(P,p)==true;table.remove(P);if E then return true;end;end;return false;end;a(I,W);end, } return tbl18 end return nil -- (anti-tamper freeze trap removed) end tbl17.j = function() local j = tbl17.cache.j if not j then local j2 = { c = fn35() } tbl17.cache.j = j2 j = j2 end return j.c end end do -- l local function fn35() local v115 = tbl17.f() local v116 = tbl17.h() local v117 = tbl17.j() local v118 = tbl17.a() local v119 = tbl17.g() local v120 = tbl17.k() local v121 = tbl17.d() local isAtomic = tbl17.i().isAtomic local index2 = {} index2.__index = index2 index2.new = function(arg) local ReactiveStore = v120.new("ReactiveStore") return setmetatable({ _trove = ReactiveStore, Default = arg.DefaultConfig, Data = v121(arg.DefaultConfig), _middleware = {}, _configManager = v115.new({ DefaultConfig = arg.DefaultConfig, CurrentVersion = arg.CurrentVersion, LegacyVersion = arg.LegacyVersion, SavePath = arg.SavePath, Migrations = arg.Migrations, Serialize = arg.Serialize, Deserialize = arg.Deserialize, }), _listenerByPathKey = {}, _listenerTrieRoot = {}, _pendingUpdateByPathKey = {}, _pendingOrder = {}, _isFlushing = false, _isLoading = false, _lastPublishedValueByPathKey = {}, _liveValueByPathKey = {}, Reloaded = ReactiveStore:Add(v119.new()), Changed = ReactiveStore:Add(v119.new()), }, index2) end index2.UseMiddleware = function(arg, middleware) arg._middleware = middleware end local tbl18 = {} index2.GetPropertyChangedSignal = function(arg, arg2) local v122 = v117.PathToKey(arg2) local v123 = arg._listenerByPathKey[v122] if v123 == nil then local v124 = arg._trove:Add(v116.new()) arg._listenerByPathKey[v122] = v124 local listenerTrieRoot = arg._listenerTrieRoot for _, v125 in arg2, nil, nil do local v126 = listenerTrieRoot[v125] if v126 ~= nil then listenerTrieRoot = v126 else local tbl19 = {} listenerTrieRoot[v125] = tbl19 listenerTrieRoot = tbl19 end end listenerTrieRoot[tbl18] = v124 v123 = v124 end return v123 end index2._FireChanged = function(l,I,W,N)local P=l._pendingUpdateByPathKey[I];if not N and P==nil and l._lastPublishedValueByPathKey[I]==W then return;end;if P==nil then table.insert(l._pendingOrder,I);end;l._pendingUpdateByPathKey[I]={Value=W};end index2._Flush = function(l)if l._isFlushing then return;end;l._isFlushing=true;while#l._pendingOrder>0 do local I,W=l._pendingOrder,l._pendingUpdateByPathKey;l._pendingUpdateByPathKey={};l._pendingOrder={};for N,N_8 in I,nil,nil do local I_9,P=W[N_8],l._listenerByPathKey[N_8];if P then P:Fire(I_9.Value);end;l._lastPublishedValueByPathKey[N_8]=I_9.Value;end;end;l._isFlushing=false;end index2._FireForChangedPaths = function(arg, paths) local function publish(p) local value = v117.NavigateTo(arg.Data, p, true) arg:_FireChanged(v117.PathToKey(p), value, type(value) == "table") end local function below(node, p) for k, child in next, node do if k ~= tbl18 and type(child) == "table" then table.insert(p, k) if child[tbl18] ~= nil then publish(p) end below(child, p) table.remove(p) end end end for _, path in paths do local node, prefix = arg._listenerTrieRoot, {} for i = 1, #path do node = node[path[i]] if node == nil then break end prefix[i] = path[i] if node[tbl18] ~= nil then publish(prefix) end if i == #path then below(node, table.clone(prefix)) end end end end index2._FireListenersOnly = function(arg, path) arg:_FireForChangedPaths({ path }) arg:_Flush() end index2.Get = function(I,W,N)return v117 .NavigateTo(I.Data,W,N);end index2.Set = function(I,W,N)local P=I._middleware;local a=P.Set;N=if a~=nil then(a(P,W,N))else N;local e=I.Data;a= v117 .NavigateTo(e,W,true)~=N;if a then v117 .Set(e,W,N);end;e=P.SetApplied;if e~=nil then e(P,W,N);end;if a then I:_FireForChangedPaths({W});end;e= v117 .PathToKey(W);a=I._liveValueByPathKey[e];if a~=nil then a.Base=N;end;if I._pendingUpdateByPathKey[e]==nil then I:_FireChanged(e,N);end;I:_Flush();if not I._isLoading then I.Changed:Fire(W,N);end;end index2.SetLiveOverride = function(I,W,N)local P= v117 .PathToKey(W);if I._liveValueByPathKey[P]==nil then I._liveValueByPathKey[P]={Path=W,Base= v117 .NavigateTo(I.Data,W,true)};end; v117 .Set(I.Data,W,N);I:_FireListenersOnly(W,N);end index2.ClearLiveOverride = function(arg, arg2) local v122 = v117.PathToKey(arg2) local v123 = arg._liveValueByPathKey[v122] if v123 == nil then return end arg._liveValueByPathKey[v122] = nil v117.Set(arg.Data, arg2, v123.Base) arg:_FireListenersOnly(arg2, v123.Base) end index2.GetBase = function(I,W)local N=I._liveValueByPathKey[ v117 .PathToKey(W)];if N~=nil then return N.Base;end;return v117 .NavigateTo(I.Data,W,true);end index2.RebaseLiveOverride = function(arg, arg2, base) local v122 = arg._liveValueByPathKey[v117.PathToKey(arg2)] if v122 == nil then return v86[153] end v122.Base = base return true end index2.PublishPath = function(arg, arg2) arg:_FireListenersOnly(arg2, v117.NavigateTo(arg.Data, arg2, true)) end index2._PersistableData = function(arg) local data = arg.Data local flag19 = true if next(arg._liveValueByPathKey) ~= nil then data = v121(data) for _, v122 in arg._liveValueByPathKey, nil, nil do v117.Set(data, v122.Path, v122.Base) end flag19 = false end local middleware = arg._middleware local persistable = middleware.Persistable local v122 if persistable ~= nil then v122 = persistable(middleware, data, flag19) else v122 = data end return v122 end index2.SaveToFile = function(arg, arg2, arg3) arg._configManager:SetData(arg:_PersistableData()) return arg._configManager:SaveToFile(arg2, arg3) end index2.CreateDefault = function(arg, arg2) return arg._configManager:SaveDefaultToFile(arg2, v86[34]) end local fn36 = nil fn36 = function(arg, arg2) if type(arg) ~= "table" or isAtomic(arg) then local v122 = (arg2 == nil and { arg } or { arg2 })[1] return (type(v122) == "table" and { (v121(v122)) } or { v122 })[1] end if type(arg2) ~= "table" then return v121(arg) end local v122 = table.clone(arg) for k, v123 in arg, nil, nil do v122[k] = fn36(v123, arg2[k]) end for k, v123 in arg2, nil, nil do if arg[k] == nil then v122[k] = (type(v123) == "table" and { (v121(v123)) } or { v123 })[v86[63]] end end return v122 end local fn37 = nil fn37 = function(arg, arg2, arg3, arg4, arg5) for k, v122 in arg, nil, nil do if not (arg2 ~= nil and arg2[k] ~= nil) then table.insert(arg4, k) local v123 = (arg3 ~= nil and { arg3[k] } or { nil })[1] if type(v122) == "table" and not isAtomic(v122) and (v123 == nil or type(v123) == "table" and not isAtomic(v123)) then fn37(v122, nil, v123, arg4, arg5) end arg[k] = nil table.insert(arg5, table.clone(arg4)) table.remove(arg4) end end if arg2 == nil then return end for k, v122 in arg2, nil, nil do table.insert(arg4, k) local tbl19 = arg[k] local v123 = (arg3 ~= nil and { arg3[k] } or { nil })[1] if type(v122) == "table" and not isAtomic(v122) and (v123 == nil or type(v123) == "table" and not isAtomic(v123)) then if type(tbl19) ~= "table" or isAtomic(tbl19) then tbl19 = {} arg[k] = tbl19 table.insert(arg5, table.clone(arg4)) end fn37(tbl19, v122, v123, arg4, arg5) elseif tbl19 ~= v122 then if type(tbl19) == "table" and not isAtomic(tbl19) and (v123 == nil or type(v123) == "table" and not isAtomic(v123)) then fn37(tbl19, nil, v123, arg4, arg5) end arg[k] = v122 table.insert(arg5, table.clone(arg4)) end table.remove(arg4) end end index2._ApplyLoadedData = function(arg, arg2) local v122 = fn36(arg.Default, arg2) arg._isLoading = true table.clear(arg._lastPublishedValueByPathKey) table.clear(arg._pendingUpdateByPathKey) table.clear(arg._pendingOrder) table.clear(arg._liveValueByPathKey) local tbl19 = {} fn37(arg.Data, v122, arg.Default, {}, tbl19) local loaded = arg._middleware.Loaded if loaded ~= nil then loaded(arg._middleware, v122) end arg:_FireForChangedPaths(tbl19) arg:_Flush() arg.Reloaded:Fire() arg._isLoading = v86[153] end index2.LoadFromFile = function(arg, arg2) local v122 = arg._configManager:LoadFromFile(arg2) if not v122.Ok then return v118.err("ReactiveStore", "LoadFromFile", v122.Error.Detail) end local value = v122.Value arg:_ApplyLoadedData(value) return v118.ok(value) end index2.ExportToJson = function(arg) local v122 = arg._configManager:ToJson(arg:_PersistableData()) if not v122.Ok then return v118.err("ReactiveStore", v86[99], v122.Error.Detail) end return v118.ok(v122.Value) end index2.InstallFromJson = function(arg, arg2, arg3) local v122 = arg._configManager:FromJson(arg3) if not v122.Ok then return v118.err("ReactiveStore", "InstallFromJson", v122.Error.Detail) end local v123 = arg._configManager:SaveToFile(arg2) if not v123.Ok then return v118.err(v86[2], "InstallFromJson", v123.Error.Detail) end return v118.VoidOk end index2.LoadFromJson = function(arg, arg2) local v122 = arg._configManager:FromJson(arg2) if not v122.Ok then return v118.err(v86[2], "LoadFromJson", v122.Error.Detail) end arg:_ApplyLoadedData(v122.Value) return v118.VoidOk end index2.DeleteFile = function(arg, arg2) local v122 = arg._configManager:Delete(arg2) if not v122.Ok then return v118.err("ReactiveStore", "DeleteFile", v122.Error.Detail) end return v118.VoidOk end index2.AllConfigs = function(arg) return arg._configManager:AllConfigs() end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.l = function() local l = tbl17.cache.l if not l then l = { c = fn35() } tbl17.cache.l = l end return l.c end end do -- m local function fn35() local tbl18 tbl18 = { normalize = function(arg) local tbl19 = {} for k, v115 in arg, nil, nil do local kind = typeof(v115) local tbl20 if kind == "Color3" then tbl20 = { __type = v86[115], R = v115.R, G = v115.G, B = v115.B } elseif kind == "EnumItem" then tbl20 = { __type = "EnumItem", EnumType = tostring(v115.EnumType), Name = v115.Name } elseif kind == "Vector3" then tbl20 = { __type = v86[20], X = v115.X, Y = v115.Y, Z = v115.Z } elseif kind == v86[127] then tbl20 = { __type = "CFrame", Components = { v115:GetComponents() } } elseif kind == "ColorSequence" then local v116 = table.create(#v115.Keypoints) for k2, v117 in v115.Keypoints, nil, nil do v116[k2] = { Time = v117.Time, R = v117.Value.R, G = v117.Value.G, B = v117.Value.B } end tbl20 = { __type = v86[93], Keypoints = v116 } elseif kind == "NumberSequence" then local v116 = table.create(#v115.Keypoints) for k2, v117 in v115.Keypoints, nil, nil do v116[k2] = { Time = v117.Time, Value = v117.Value, Envelope = v117.Envelope } end tbl20 = { __type = "NumberSequence", Keypoints = v116 } elseif kind == "table" then tbl20 = tbl18.normalize(v115) else tbl20 = v115 end tbl19[k] = tbl20 end return tbl19 end, parse = function(arg) local tbl19 = {} for k, v115 in arg, nil, nil do if typeof(v115) == "table" then local type_ = v115.__type if type(type_) ~= "string" then tbl19[k] = tbl18.parse(v115) else if type_ == "Color3" then v115 = Color3.new(v115.R, v115.G, v115.B) elseif type_ == "EnumItem" then v115 = Enum[v115.EnumType][v115.Name] elseif type_ == "Vector3" then v115 = Vector3.new(v115.X, v115.Y, v115.Z) elseif type_ == "CFrame" then v115 = CFrame.new(unpack(v115.Components)) elseif type_ == v86[93] then local v116 = table.create(#v115.Keypoints) for k2, v117 in v115.Keypoints, nil, nil do v116[k2] = ColorSequenceKeypoint.new(v117.Time, Color3.new(v117.R, v117.G, v117.B)) end v115 = ColorSequence.new(v116) elseif type_ == "NumberSequence" then local v116 = table.create(#v115.Keypoints) for k2, v117 in v115.Keypoints, nil, nil do v116[k2] = NumberSequenceKeypoint.new(v117.Time, v117.Value, v117.Envelope) end v115 = NumberSequence.new(v116) end tbl19[k] = v115 end continue end tbl19[k] = v115 end return tbl19 end, } return tbl18 end tbl17.m = function() local m = tbl17.cache.m if not m then local m2 = { c = fn35() } tbl17.cache.m = m2 m = m2 end return m.c end end do -- n local function fn35() local GlobalTrove = tbl17.k().new("GlobalTrove") K.GlobalTrove = GlobalTrove return GlobalTrove end tbl17.n = function() local n = tbl17.cache.n if not n then local n33 = { c = fn35() } tbl17.cache.n = n33 n = n33 end return n.c end end do -- r local function fn35() tbl17.l() tbl17.g() tbl17.k() return {} end tbl17.r = function() local r = tbl17.cache.r if not r then r = { c = fn35() } tbl17.cache.r = r end return r.c end end do -- s local function fn35()return table.freeze({Medium=Font.new("rbxassetid://12187365364",Enum.FontWeight.Medium,Enum.FontStyle.Normal),SemiBold=Font.new("rbxassetid://12187365364",Enum.FontWeight.SemiBold,Enum.FontStyle.Normal),Bold=Font.new("rbxassetid://12187365364",Enum.FontWeight.Bold,Enum.FontStyle.Normal)});end tbl17.s = function() local s = tbl17.cache.s if not s then local s2 = { c = fn35() } tbl17.cache.s = s2 s = s2 end return s.c end end do -- t local function fn35()return{Players=cloneref(game:GetService("Players")),GuiService=cloneref(game:GetService("GuiService")),UserInputService=cloneref(game:GetService("UserInputService")),RunService=cloneref(game:GetService("RunService")),TweenService=cloneref(game:GetService("TweenService")),HttpService=cloneref(game:GetService("HttpService")),CoreGui=cloneref(game:GetService("CoreGui"))};end tbl17.t = function() local t = tbl17.cache.t if not t then if n26 >= 4809 then -- (anti-tamper freeze trap removed) else local t2 = { c = fn35() } tbl17.cache.t = t2 t = t2 end end return t.c end end do -- u local function fn35()local I= tbl17 .t();local l,W,N=I.GuiService,I.UserInputService,{DesignSize=UDim2.fromOffset(919,643),MinSize=UDim2.fromOffset(700,400),Scale=1};local function I_10()return workspace.CurrentCamera;end;local function P(a)if not a then return false;end;a=I_10();if a==nil then return false;end;local I=a.ViewportSize;return math.min(I.X,I.Y)>500;end;local function I_11(a)if a then return false;end;a=W.PreferredInput;if a==Enum.PreferredInput.Touch then return true;end;if a==Enum.PreferredInput.KeyboardAndMouse or a==Enum.PreferredInput.Gamepad then return false;end;a=W:GetLastInputType();if a==Enum.UserInputType.Touch then return true;end;if a==Enum.UserInputType.MouseButton1 or a==Enum.UserInputType.MouseButton2 or a==Enum.UserInputType.MouseMovement or a==Enum.UserInputType.Keyboard then return false;end;return W.TouchEnabled and not W.KeyboardEnabled;end;local a=l:IsTenFootInterface();local l_12=I_11(a);local I_13;N.IsMobile=function()return l_12;end;N.ForceMobileLayout=function(e)l_12=true;I_13=e==true;end;N.IsTablet=function()local l=I_13;if l==nil then l=P(N.IsMobile());I_13=l;end;return l;end;N.HasTouch=function()return not a and W.TouchEnabled;end;N.WantsMobileButtons=function()return N.HasTouch()or(N.IsMobile());end;return N;end tbl17.u = function() local u = tbl17.cache.u if not u then local u2 = { c = fn35() } tbl17.cache.u = u2 u = u2 end return u.c end end do -- v local function fn35()local I,W,N,P= tbl17 .u(),{},table.freeze({IsCompact=false,Rail=table.freeze({Width=100,HeaderHeight=85,TabsTop=102,TabSize=66,TabGap=4,TabIconSize=26,LogoSize=Vector2.new(48,37),ShowLabels=true}),Page=table.freeze({HasTitleBlock=true,OuterInset=18,HorizontalInset=17,HeaderHeight=85,TabsHeight=84,BottomInset=17,TitleTextSize=18,DescriptionTextSize=13,TabMinWidth=50,TabHeight=50,TabIconSize=24,TabTextSize=16,TabGap=14,TabPaddingLeft=13,TabPaddingRight=16,SearchCollapsedWidth=90,SearchExpandedWidth=260,SearchHeight=33,SearchRightInset=14}),Navigation=table.freeze({CueDepth=12,RevealPadding=4,VisibilityEpsilon=1}),Grid=table.freeze({Gap=17,MinColumnWidth=220}),Section=table.freeze({Gap=17,TitleGap=16,InnerPadding=12,ElementGap=12,GroupGap=12,TitleTextSize=16,MultiHeaderHeight=45,MultiHeaderGap=12,MultiHeaderPadding=12,MultiPaneTop=57,MultiTabTextSize=16}),Row=table.freeze({Height=24,TextSize=16,ControlVerticalInset=0,ControlHeight=22,AttachmentGap=11,ListRowHeight=26}),Button=table.freeze({RowHeight=24,VisualHeight=22,Gap=13})}),table.freeze({IsCompact=true,Rail=table.freeze({Width=52,HeaderHeight=48,TabsTop=52,TabSize=44,TabGap=2,TabIconSize=20,LogoSize=Vector2.new(24,19),ShowLabels=false}),Page=table.freeze({HasTitleBlock=true,OuterInset=12,HorizontalInset=12,HeaderHeight=44,TabsHeight=40,BottomInset=12,TitleTextSize=16,DescriptionTextSize=10,TabMinWidth=44,TabHeight=34,TabIconSize=18,TabTextSize=13,TabGap=6,TabPaddingLeft=8,TabPaddingRight=10,SearchCollapsedWidth=32,SearchExpandedWidth=220,SearchHeight=32,SearchRightInset=8}),Navigation=table.freeze({CueDepth=12,RevealPadding=4,VisibilityEpsilon=1}),Grid=table.freeze({Gap=12,MinColumnWidth=220}),Section=table.freeze({Gap=12,TitleGap=8,InnerPadding=8,ElementGap=8,GroupGap=8,TitleTextSize=15,MultiHeaderHeight=36,MultiHeaderGap=8,MultiHeaderPadding=8,MultiPaneTop=44,MultiTabTextSize=13}),Row=table.freeze({Height=32,TextSize=14,ControlVerticalInset=4,ControlHeight=24,AttachmentGap=8,ListRowHeight=32}),Button=table.freeze({RowHeight=32,VisualHeight=30,Gap=8})});local l=table.freeze({IsCompact=true,Rail=P.Rail,Page=table.freeze({HasTitleBlock=false,OuterInset=12,HorizontalInset=12,HeaderHeight=0,TabsHeight=44,BottomInset=12,TitleTextSize=16,DescriptionTextSize=10,TabMinWidth=44,TabHeight=36,TabIconSize=18,TabTextSize=14,TabGap=6,TabPaddingLeft=8,TabPaddingRight=10,SearchCollapsedWidth=32,SearchExpandedWidth=220,SearchHeight=32,SearchRightInset=8}),Navigation=P.Navigation,Grid=table.freeze({Gap=12,MinColumnWidth=330}),Section=P.Section,Row=table.freeze({Height=40,TextSize=15,ControlVerticalInset=6,ControlHeight=28,AttachmentGap=8,ListRowHeight=40}),Button=table.freeze({RowHeight=40,VisualHeight=36,Gap=8})});W.get=function()if not I.IsMobile()then return N;end;if I.IsTablet()then return P;end;return l;end;return W;end tbl17.v = function() local v115 = tbl17.cache.v if not v115 then v115 = { c = fn35() } tbl17.cache.v = v115 end return v115.c end end do -- x local function fn35() tbl17 .k();local I,W= tbl17 .t(), tbl17 .w();local l,N,P=I.UserInputService,{},setmetatable({},{__mode="k"});N.suppressActivation=function(I)P[I]=true;end;local I_14=W.findScrollingAncestor;N.connectPress=function(a,e,c,E)local p,T,t,x=false, nil, nil, nil;local function S(J)if not p then return;end;p,T,t=false,nil,nil;if x~=nil then x:Disconnect();x=nil;end;E(J);end;a:Add({Destroy=function()p,T,t=false,nil,nil;if x~=nil then x:Disconnect();x=nil;end;end});a:Connect(e.InputBegan,function(E)if p then return;end;local J=E.UserInputType;if J~=Enum.UserInputType.MouseButton1 and J~=Enum.UserInputType.Touch then return;end;T,t,p=E,J,true;c();x=l.InputEnded:Connect(function(c)if T==nil then return;end;if not W.matchesPointerDrag(c,T,Enum.UserInputType.MouseButton1)then return;end;S(false);end);end);a:Connect(e.MouseLeave,function()if t==Enum.UserInputType.MouseButton1 then S(true);end;end);end;N.connectClick=function(a,e,c)if e:IsA("GuiButton")then a:Connect(e.Activated,function(E,p)if P[E]then P[E]=nil;return;end;c();end);return;end;a:Connect(e.InputBegan,function(P)local a=P.UserInputType;if a==Enum.UserInputType.MouseButton1 or a==Enum.UserInputType.Touch then c();end;end);end;N.connectDrag=function(P,a,e,c)local E,p,T,t,x=c or function(c,c_15)end, nil, nil, nil, nil;local c_16,S,J,B,X=false,false,0, nil, nil;local function H()J+=1;if B~=nil then B:Disconnect();B=nil;end;if X~=nil then X:Disconnect();X=nil;end;p,T,t,x,c_16,S=nil,nil,nil,nil,false,false;end;local function k(D)local Q=c_16;H();if Q then E(false,D);end;end;local function D()if p==nil or c_16 or S then return;end;c_16=true;E(true,false);end;P:Add({Destroy=H});P:Connect(a.InputBegan,function(P)local E=P.UserInputType;if E~=Enum.UserInputType.MouseButton1 and E~=Enum.UserInputType.Touch then return;end;H();p=P;T=P.Position;t=I_14(a);x=t and t.CanvasPosition or nil;J+=1;local I=J;task.delay(0.3,function()if J==I then D();end;end);X=l.InputEnded:Connect(function(I)if p==nil then return;end;if not W.matchesPointerDrag(I,p,Enum.UserInputType.MouseButton1)then return;end;J+=1;k(false);end);B=l.InputChanged:Connect(function(l)if p==nil or S then return;end;if not W.matchesPointerDrag(l,p,Enum.UserInputType.MouseMovement)then return;end;local I,W=t,x;if I~=nil and W~=nil then local P=I.CanvasPosition-W;if P.X*P.X+P.Y*P.Y>0.25 then if c_16 then k(true);else S=true;J+=1;end;return;end;end;if not c_16 and T~=nil then W,I=l.Position.X-T.X,l.Position.Y-T.Y;if W*W+I*I>=100 then D();end;end;if c_16 then e(l);end;end);end);end;return N;end tbl17.x = function() local x = tbl17.cache.x if not x then x = { c = fn35() } tbl17.cache.x = x end return x.c end end do -- y local function fn35() tbl17.k() tbl17.r() local color = Color3.fromRGB(255, v86[108], v86[108]) local tweenInfo = TweenInfo.new(0.28, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) return { attach = function(arg, arg2, parent, arg3) local trigger = parent local cornerRadius = nil if arg3 ~= nil then trigger = arg3.Trigger or parent cornerRadius = arg3.CornerRadius end local frame = Instance.new("Frame") frame.BackgroundTransparency = v86[63] frame.Size = UDim2.fromScale(1, 1) frame.BorderSizePixel = v86[186] frame.ClipsDescendants = v86[34] frame.ZIndex = 0 frame.Parent = parent if cornerRadius ~= nil then local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, cornerRadius) uiCorner.Parent = frame end arg2:Connect(trigger.InputBegan, function(arg4) local userInputType = arg4.UserInputType if userInputType ~= Enum.UserInputType.MouseButton1 and userInputType ~= Enum.UserInputType.Touch then return end local absoluteSize = parent.AbsoluteSize local absolutePosition = parent.AbsolutePosition local n = arg4.Position.X - absolutePosition.X local n33 = arg4.Position.Y - absolutePosition.Y local n34 = math.max(absoluteSize.X, absoluteSize.Y) * v86[49] local frame2 = Instance.new("Frame") frame2.AnchorPoint = Vector2.new(0.5, v86[101]) frame2.Position = UDim2.fromOffset(n, n33) frame2.Size = UDim2.fromOffset(0, 0) frame2.BackgroundColor3 = color frame2.BackgroundTransparency = 0.84 frame2.BorderSizePixel = 0 frame2.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[63], 0) uiCorner.Parent = frame2 local v115 = arg:Tween(frame2, { Size = UDim2.fromOffset(n34, n34), BackgroundTransparency = 1 }, tweenInfo) if v115 ~= nil then v115.Completed:Once(function() frame2:Destroy() end) else frame2:Destroy() end end) end } end tbl17.y = function() local y = tbl17.cache.y if not y then local y2 = { c = fn35() } tbl17.cache.y = y2 y = y2 end return y.c end end do -- z local function fn35()return{Accent=Color3.fromRGB(197,59,59),Outline=Color3.fromRGB(24,25,24),Background=Color3.fromRGB(0,0,0),ElementBackground=Color3.fromRGB(6,6,6),TabButtonSelected=Color3.fromRGB(51,65,70),Unselected=Color3.fromRGB(75,72,72),TextColor=Color3.fromRGB(197,197,197),ToggleCircleUnselected=Color3.fromRGB(70,85,87),ToggleBackgroundUnselected=Color3.fromRGB(12,13,13),GradientTop=Color3.fromRGB(14,16,16),GradientMid=Color3.fromRGB(6,6,6),GradientDark=Color3.fromRGB(3,3,3),GradientDeep=Color3.fromRGB(0,0,0),TabHighlight=Color3.fromRGB(51,65,70),TabShadow=Color3.fromRGB(30,51,61)};end tbl17.z = function() local z = tbl17.cache.z if not z then local z2 = { c = fn35() } tbl17.cache.z = z2 z = z2 end return z.c end end do -- A local function fn35() tbl17.k() local v115 = tbl17.z() local index2 = {} index2.__index = index2 local tbl18 = {} local tbl19 = { Tokens = v115 } local function fn36(arg, arg2) local n = #arg if n == 1 then return ColorSequence.new(v115[arg[1]]) end local tbl20 = {} for k, v116 in arg, nil, nil do local n33 if arg2 ~= nil then n33 = arg2[k] else n33 = (k - 1) / (n - 1) end tbl20[k] = ColorSequenceKeypoint.new(n33, v115[v116]) end return ColorSequence.new(tbl20) end local function fn37(arg, arg2) if arg._tokenSet[arg2] then return end arg._tokenSet[arg2] = true local tbl20 = tbl18[arg2] if tbl20 == nil then tbl20 = {} tbl18[arg2] = tbl20 end tbl20[arg] = v86[34] end index2.new = function() return setmetatable({ _propBindingsByToken = {}, _gradients = {}, _statefulApplyByToken = {}, _tokenSet = {} }, index2) end index2.Bind = function(arg, arg2, arg3, arg4) arg2[arg3] = v115[arg4] local tbl20 = arg._propBindingsByToken[arg4] if tbl20 == nil then tbl20 = {} arg._propBindingsByToken[arg4] = tbl20 end table.insert(tbl20, { Instance = arg2, Property = arg3 }) fn37(arg, arg4) end index2.BindGradient = function(arg, arg2, arg3, arg4) arg2.Color = fn36(arg3, arg4) table.insert(arg._gradients, { Gradient = arg2, Tokens = arg3, Times = arg4 }) for _, v116 in arg3, nil, nil do fn37(arg, v116) end end index2.BindStateful = function(arg, arg2, arg3) local tbl20 = arg._statefulApplyByToken[arg2] if tbl20 == nil then tbl20 = {} arg._statefulApplyByToken[arg2] = tbl20 end table.insert(tbl20, arg3) fn37(arg, arg2) end index2.Destroy = function(arg) for k in arg._tokenSet, nil, nil do local v116 = tbl18[k] if v116 ~= nil then v116[arg] = nil end end table.clear(arg._tokenSet) table.clear(arg._propBindingsByToken) table.clear(arg._gradients) table.clear(arg._statefulApplyByToken) end tbl19.newBatch = function(arg) local v116 = index2.new() if arg ~= nil then arg:Add(v116) end return v116 end tbl19.get = function(arg) return v115[arg] end local tbl20 = { "GradientTop", v86[187], v86[70], v86[141] } local tbl21 = {} local background = v115.Background for _, v116 in tbl20, nil, nil do local v117 = v115[v116] tbl21[v116] = { R = v117.R - background.R, G = v117.G - background.G, B = v117.B - background.B } end local function fn38(I,W)if v115 [I]==W then return;end; v115 [I]=W;local N= tbl18 [I];if N==nil then return;end;for P in N,nil,nil do local N_17=P._propBindingsByToken[I];if N_17~=nil then for a,a_18 in N_17,nil,nil do a_18.Instance[a_18.Property]=W;end;end;for a,a_19 in P._gradients,nil,nil do if table.find(a_19.Tokens,I)~=nil then a_19.Gradient.Color= fn36 (a_19.Tokens,a_19.Times);end;end;N_17=P._statefulApplyByToken[I];if N_17~=nil then for l,l_20 in N_17,nil,nil do l_20(W);end;end;end;end local function fn39(arg) for _, v116 in tbl20, nil, nil do local v117 = tbl21[v116] fn38(v116, Color3.new(math.clamp(arg.R + v117.R, v86[186], 1), math.clamp(arg.G + v117.G, 0, 1), math.clamp(arg.B + v117.B, 0, 1))) end end tbl19.refresh = function(arg, arg2) fn38(arg, arg2) if arg == "Background" then fn39(arg2) end end return tbl19 end tbl17.A = function() local a = tbl17.cache.A if not a then local a2 = { c = fn35() } tbl17.cache.A = a2 a = a2 end return a.c end end do -- B local function fn35() local v115 = tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() local v118 = tbl17.A() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local v119 = v117.get() local flag19 = arg2.Bare == v86[34] local height = arg2.Height or v119.Row.Height local n if v119.IsCompact and not flag19 then n = math.max(height, v119.Row.Height) else n = height end return setmetatable({ _menu = arg, _metrics = v119, Label = arg2.Label, _tooltip = arg2.Tooltip, _bare = flag19, _isBareFlexRoot = false, _visible = v86[34], _height = n, _mediumTitle = arg2.MediumTitle == true, _rightOffset = arg2.RightOffset or 0, _attachments = {}, _titleAccessories = {}, _titleAccessoryReserve = v86[186], _isDestroyed = false, _onVisibilityChanged = function() end, _ctx = nil, _barePending = nil, _isTooltipWired = false, Frame = nil, TitleLabel = nil, Right = nil, _rightLayout = nil, }, index2) end index2.AttachRight = function(arg, arg2, arg3, arg4, arg5, arg6, arg7) local tbl18 = { Build = arg2, BuildRoot = arg6, IsFlexChild = arg7 == true, IsInRight = false, Widget = nil, NaturalWidth = arg3, Leading = arg4, Trove = v115.new(), Cleanup = nil, } local cleanup = { Destroy = function() arg:_DetachAttachment(tbl18) end } tbl18.Cleanup = cleanup if arg5 ~= nil then arg5:Add(cleanup) end if arg._isDestroyed then tbl18.Trove:Destroy() return end table.insert(arg._attachments, tbl18) local ctx = arg._ctx if ctx == nil then return end local barePending = arg._barePending if barePending ~= nil then arg._barePending = nil arg:_BuildBareRoot(barePending.Parent, barePending.LayoutOrder, ctx) return end arg:_RealizeAttachment(tbl18, ctx) end index2._DetachAttachment = function(arg, arg2) local v119 = table.find(arg._attachments, arg2) if v119 == nil then return end local isInRight = arg2.IsInRight table.remove(arg._attachments, v119) arg2.Trove:Destroy() arg2.Widget = nil arg2.Cleanup = nil if arg._bare and isInRight then local flag19 = v86[153] for _, v120 in arg._attachments, nil, nil do if v120.IsInRight then flag19 = true break end end if not flag19 then local right = arg.Right if right ~= nil then right:Destroy() arg.Right = nil arg._rightLayout = nil end end end if #arg._attachments > 0 then return end arg._isDestroyed = true arg._barePending = nil local frame = arg.Frame if frame ~= nil then frame:Destroy() arg.Frame = nil end arg.TitleLabel = nil arg.Right = nil arg._rightLayout = nil arg._isBareFlexRoot = false arg._onVisibilityChanged() end index2.AttachTitleAccessory = function(arg, arg2, arg3, arg4) local tbl18 = { Build = arg2, Trove = v115.new(), Widget = nil } local tbl19 = { Destroy = function() local v119 = table.find(arg._titleAccessories, tbl18) if v119 ~= nil then table.remove(arg._titleAccessories, v119) end tbl18.Trove:Destroy() tbl18.Widget = nil end } if arg4 ~= nil then arg4:Add(tbl19) end if arg._isDestroyed then tbl18.Trove:Destroy() return end table.insert(arg._titleAccessories, tbl18) arg._titleAccessoryReserve = arg._titleAccessoryReserve + arg3 local ctx = arg._ctx if ctx ~= nil and arg.TitleLabel ~= nil then arg:_RealizeTitleAccessory(tbl18, ctx) end end index2._RealizeTitleAccessory = function(arg, arg2, arg3) arg2.Widget = arg2.Build(arg.TitleLabel, { Menu = arg3.Menu, Trove = arg2.Trove, Batch = v118.newBatch(arg2.Trove), ParentOverlay = arg3.ParentOverlay, }) end index2._EnsureRightLayout = function(arg, parent) if arg._rightLayout ~= nil then return end local uiListLayout = Instance.new("UIListLayout") uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right uiListLayout.Padding = UDim.new(0, arg._metrics.Row.AttachmentGap) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = parent arg._rightLayout = uiListLayout for k, v119 in arg._attachments, nil, nil do if not (arg._bare and k == 1) then local widget = v119.Widget if widget ~= nil then widget.LayoutOrder = v119.Leading and -1 or k end end end end index2._EnsureBareRight = function(arg) if arg.Right ~= nil then return arg.Right end local frame = arg.Frame if frame == nil then return nil end local frame2 = Instance.new("Frame") frame2.AnchorPoint = Vector2.new(v86[63], 0.5) frame2.Position = UDim2.new(1, arg._rightOffset, 0.5, 0) frame2.Size = UDim2.new(0.55, 0, v86[186], arg._height) frame2.BorderSizePixel = 0 frame2.BackgroundTransparency = 1 frame2.Parent = frame arg.Right = frame2 arg:_EnsureRightLayout(frame2) return frame2 end index2._RealizeAttachment = function(arg, arg2, arg3) local frame if arg._bare then if arg._isBareFlexRoot and arg2.IsFlexChild then frame = arg.Frame else frame = arg:_EnsureBareRight() end else frame = arg.Right or arg.Frame if arg.Right ~= nil and #arg._attachments >= 2 then arg:_EnsureRightLayout(arg.Right) end end if frame == nil then return end arg2.IsInRight = arg.Right ~= nil and frame == arg.Right local tbl18 = {} for _, v119 in frame:GetChildren() do tbl18[v119] = v86[34] end local v119 = arg2.Build(frame, { Menu = arg3.Menu, Trove = arg2.Trove, Batch = v118.newBatch(arg2.Trove), ParentOverlay = arg3.ParentOverlay, }) arg2.Widget = v119 for _, v120 in frame:GetChildren() do if not tbl18[v120] then arg2.Trove:Add(v120) end end if v119 ~= nil and arg._rightLayout ~= nil then local layoutOrder = table.find(arg._attachments, arg2) or #arg._attachments if arg2.Leading then layoutOrder = -v86[63] end v119.LayoutOrder = layoutOrder end end local function fn36(arg) local v119 = v86[186] for k, v120 in arg._attachments, nil, nil do local naturalWidth = v120.NaturalWidth if naturalWidth == nil then return nil end v119 += naturalWidth if k > 1 then v119 += arg._metrics.Row.AttachmentGap end end if v119 == 0 then return nil end return v119 end local function fn37(arg, arg2, arg3, arg4, arg5) local flag19 = false local flag20 = false local size = arg5.Size local anchorPoint = arg5.AnchorPoint local position = arg5.Position local position2 = arg4.Position local size2 = arg3.Size local automaticSize = arg3.AutomaticSize local scale = size.X.Scale local n = 1 if scale > 0 then n = v86[63] - scale end local n33 = arg4.TextBounds.X + arg._titleAccessoryReserve local function fn38() if flag20 then return end flag20 = true local x = arg3.AbsoluteSize.X if x <= 0 then flag20 = false return end local n34 = x * n - v86[162] local v119 = fn36(arg) if v119 ~= nil then n34 = x - v119 - 8 end local flag21 = n33 > n34 if flag21 == flag19 then flag20 = false return end flag19 = flag21 if flag19 then local v120 = math.round(math.max(arg4.TextBounds.Y, arg._metrics.Row.TextSize)) arg4.AnchorPoint = Vector2.zero arg4.Position = UDim2.new(0, 0, v86[186], v86[186]) arg5.AnchorPoint = Vector2.zero arg5.Position = UDim2.fromOffset(0, v120 + 4) arg5.Size = UDim2.new(1, 0, 0, size.Y.Offset) arg3.AutomaticSize = Enum.AutomaticSize.None arg3.Size = UDim2.new(1, 0, 0, v120 + 4 + size.Y.Offset) else arg4.AnchorPoint = Vector2.zero arg4.Position = position2 arg5.AnchorPoint = anchorPoint arg5.Position = position arg5.Size = size arg3.AutomaticSize = automaticSize arg3.Size = size2 end flag20 = false end fn38() arg2.Trove:Connect(arg3:GetPropertyChangedSignal("AbsoluteSize"), fn38) arg2.Trove:Connect(arg4:GetPropertyChangedSignal(v86[37]), function() n33 = arg4.TextBounds.X + arg._titleAccessoryReserve fn38() end) end index2._BuildBareRoot = function(arg, arg2, layoutOrder, arg3) local v119 = arg._attachments[1] v119.IsInRight = false arg._isBareFlexRoot = v119.IsFlexChild local v120 = (v119.BuildRoot or v119.Build)(arg2, { Menu = arg3.Menu, Trove = v119.Trove, Batch = v118.newBatch(v119.Trove), ParentOverlay = arg3.ParentOverlay, }) assert(v120 ~= nil, "Row: bare row builder returned no root") v120.LayoutOrder = layoutOrder v120.Visible = arg._visible arg.Frame = v120 for _, v121 in v120:GetChildren() do if not v121:IsA("UIListLayout") then v119.Trove:Add(v121) end end for i = 2, #arg._attachments do local v121 = arg._attachments[i] if v121.Widget == nil then arg:_RealizeAttachment(v121, arg3) end end arg:_WireTooltip() end index2.Realize = function(arg, parent, ctx, layoutOrder) if arg._ctx ~= nil or arg._isDestroyed then return end arg._ctx = ctx if arg._bare then if arg._attachments[1] == nil then arg._barePending = { Parent = parent, LayoutOrder = layoutOrder } return end arg:_BuildBareRoot(parent, layoutOrder, ctx) else local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = 1 textButton.Size = UDim2.new(1, 0, 0, arg._height) textButton.BorderSizePixel = 0 textButton.AutomaticSize = Enum.AutomaticSize.Y textButton.AutoButtonColor = false textButton.Text = "" textButton.LayoutOrder = layoutOrder textButton.Visible = arg._visible textButton.Parent = parent arg.Frame = textButton local n = arg._metrics.Row.TextSize + 4 local textLabel = Instance.new("TextLabel") textLabel.Text = arg.Label or "" textLabel.AnchorPoint = Vector2.zero textLabel.BackgroundTransparency = v86[63] textLabel.Position = UDim2.fromOffset(v86[186], math.round((arg._height - n) / 2)) textLabel.Size = UDim2.fromOffset(0, n) textLabel.BorderSizePixel = 0 textLabel.AutomaticSize = Enum.AutomaticSize.X textLabel.TextSize = arg._metrics.Row.TextSize textLabel.TextXAlignment = Enum.TextXAlignment.Left if arg._mediumTitle then textLabel.FontFace = v116.Medium else textLabel.FontFace = ctx.Menu.Fonts.Main end ctx.Batch:Bind(textLabel, "TextColor3", "TextColor") textLabel.Parent = textButton arg.TitleLabel = textLabel local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(1, v86[186]) frame.Position = UDim2.new(v86[63], arg._rightOffset, 0, 0) frame.Size = UDim2.new(0.55, 0, 0, arg._height) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.Y frame.BackgroundTransparency = 1 frame.Parent = textButton local controlVerticalInset = arg._metrics.Row.ControlVerticalInset if controlVerticalInset > 0 then frame.AutomaticSize = Enum.AutomaticSize.None local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, controlVerticalInset) uiPadding.PaddingBottom = UDim.new(v86[186], controlVerticalInset) uiPadding.Parent = frame end arg.Right = frame for _, v119 in arg._attachments, nil, nil do if v119.Widget == nil then arg:_RealizeAttachment(v119, ctx) end end for _, v119 in arg._titleAccessories, nil, nil do if v119.Widget == nil then arg:_RealizeTitleAccessory(v119, ctx) end end fn37(arg, ctx, textButton, textLabel, frame) arg:_WireTooltip() end end index2._WireTooltip = function(arg) if arg._isTooltipWired or arg._tooltip == nil then return end local ctx = arg._ctx local frame = arg.Frame if ctx == nil or frame == nil then return end arg._isTooltipWired = true ctx.Menu:AttachTooltip(ctx.Trove, frame, function() return arg._tooltip end) end index2.SetLabel = function(arg, label) arg.Label = label arg._menu:InvalidateSearch() local titleLabel = arg.TitleLabel if titleLabel ~= nil then titleLabel.Text = label end end index2.SetTooltip = function(arg, tooltip) arg._tooltip = tooltip arg:_WireTooltip() end index2.SetVisible = function(arg, visible) if arg._visible == visible then return end arg._visible = visible local frame = arg.Frame if frame ~= nil then frame.Visible = visible end arg._onVisibilityChanged() end index2.IsVisible = function(arg) return arg._visible end index2.Destroy = function(arg) arg._isDestroyed = true arg._barePending = nil for i = #arg._attachments, 1, -v86[63] do local v119 = arg._attachments[i] table.remove(arg._attachments, i) v119.Trove:Destroy() v119.Widget = nil v119.Cleanup = nil end for i = #arg._titleAccessories, 1, -1 do local v119 = arg._titleAccessories[i] table.remove(arg._titleAccessories, i) v119.Trove:Destroy() v119.Widget = nil end local frame = arg.Frame if frame ~= nil then frame:Destroy() arg.Frame = nil end arg.TitleLabel = nil arg.Right = nil arg._rightLayout = nil arg._isBareFlexRoot = false arg._onVisibilityChanged() end return index2 end tbl17.B = function() local b = tbl17.cache.B if not b then b = { c = fn35() } tbl17.cache.B = b end return b.c end end do -- C local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() local v118 = tbl17.x() local v119 = tbl17.y() tbl17.B() local v120 = tbl17.A() local color = Color3.fromRGB(255, 255, 255) local tweenInfo = TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tweenInfo2 = TweenInfo.new(v86[62], Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local color2 = Color3.fromRGB(v86[102], 92, v86[53]) local function fn36(arg, arg2) local clamp = math.clamp local n = arg.B * arg2 return Color3.new(math.clamp(arg.R * arg2, v86[186], v86[63]), math.clamp(arg.G * arg2, 0, v86[63]), clamp(n, 0, 1)) end local function fn37(arg) return arg == "primary" and v120.get("Accent") or color end local function fn38(arg) local flag19 = arg == "primary" if flag19 then local v121 = v86[66] flag19 = fn36(v120.get("Accent"), v121) end return flag19 or Color3.fromRGB(v86[65], 220, 230) end local function fn39(arg) if arg == "primary" then return color end if arg == "ghost" then return v120.get("Unselected") end return v120.get("TextColor") end local function fn40(arg) return arg == "primary" and fn36(v120.get(v86[139]), 0.6) or v120.get(v86[120]) end local index2 = {} index2.__index = index2 local function createFrame(arg, parent, arg2) local menu = arg._menu local variant = arg._variant local button = v117.get().Button local transparency = 0 local n = 0 if variant == "primary" then n = 0.6 elseif variant == "ghost" then if n26 < 4790 then -- (anti-tamper freeze trap removed) else transparency = 1 n = 1 end end local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(v86[63], v86[186]) frame.Position = UDim2.new(1, -v86[63], 0, 1) frame.Size = UDim2.fromOffset(v86[186], button.VisualHeight) frame.BorderSizePixel = 0 frame.BackgroundColor3 = fn37(variant) frame.ClipsDescendants = v86[34] frame.Parent = parent if variant == "default" then local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 arg2.Batch:BindGradient(uiGradient, { "GradientMid", "GradientDark" }) uiGradient.Parent = frame end local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], 5) uiCorner.Parent = frame local uiStroke = Instance.new("UIStroke") uiStroke.Color = fn40(variant) uiStroke.Transparency = transparency uiStroke.Parent = frame local instance = Instance.new(v86[92]) instance.BackgroundTransparency = 1 instance.Size = UDim2.fromScale(1, 1) instance.BorderSizePixel = 0 instance.Text = "" instance.AutoButtonColor = false instance.Parent = frame v119.attach(menu, arg2.Trove, frame, { Trigger = instance }) local textLabel = Instance.new("TextLabel") textLabel.LayoutOrder = -v86[63] textLabel.FontFace = v116.SemiBold textLabel.TextColor3 = fn39(variant) textLabel.Text = arg.Label textLabel.BackgroundTransparency = 1 textLabel.Size = UDim2.fromScale(1, 1) textLabel.BorderSizePixel = 0 textLabel.TextSize = 16 textLabel.Parent = frame arg._title = textLabel if variant == "default" then arg2.Batch:Bind(textLabel, "TextColor3", "TextColor") elseif variant == "ghost" then arg2.Batch:Bind(textLabel, "TextColor3", "Unselected") end arg2.Trove:Connect(instance.MouseEnter, function() menu:Tween(frame, { BackgroundColor3 = fn38(variant) }, tweenInfo) if variant == "default" then menu:Tween(uiStroke, { Color = v120.get("Accent") }, tweenInfo) elseif variant == "primary" then menu:Tween(uiStroke, { Transparency = n }, tweenInfo) elseif variant == "ghost" then menu:Tween(textLabel, { TextColor3 = v120.get("TextColor") }, tweenInfo) end end) arg2.Trove:Connect(instance.MouseLeave, function() menu:Tween(frame, { BackgroundColor3 = fn37(variant) }, tweenInfo) if variant == "default" then menu:Tween(uiStroke, { Color = v120.get("Outline") }, tweenInfo) elseif variant == "primary" then menu:Tween(uiStroke, { Transparency = transparency }, tweenInfo) elseif variant == "ghost" then menu:Tween(textLabel, { TextColor3 = v120.get("Unselected") }, tweenInfo) end end) local backgroundColor3 = nil v118.connectPress(arg2.Trove, instance, function() backgroundColor3 = frame.BackgroundColor3 menu:Tween(frame, { BackgroundColor3 = fn36(backgroundColor3, 0.85) }, tweenInfo2) end, function() if backgroundColor3 ~= nil then menu:Tween(frame, { BackgroundColor3 = backgroundColor3 }, tweenInfo2) backgroundColor3 = nil end end) local function fn41() textLabel.TextColor3 = v120.get("Accent") menu:Tween(textLabel, { TextColor3 = fn39(variant) }) arg._onClick() arg.Clicked:Fire() end if not arg._requiresConfirm then v118.connectClick(arg2.Trove, instance, fn41) return frame end local v121 = nil local function fn42() local v122 = v121 if v122 == nil then return end v121 = nil v122:Destroy() textLabel.Text = arg.Label menu:Tween(textLabel, { TextColor3 = fn39(variant) }, tweenInfo) end v118.connectClick(arg2.Trove, instance, function() if v121 == nil then local v122 = arg2.Trove:Extend() v121 = v122 menu:Tween(textLabel, { TextColor3 = color2 }, tweenInfo) v122:Add(task.spawn(function() for i = v86[155], 1, -1 do textLabel.Text = string.format("%s (%s)", "Are you sure?", tostring(i)) task.wait(v86[63]) end fn42() end)) return end fn42() fn41() end) return frame end local function createTextButton() local button = v117.get().Button local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = 1 textButton.Size = UDim2.new(1, v86[186], 0, button.RowHeight) textButton.BorderSizePixel = 0 textButton.Text = "" textButton.AutoButtonColor = false local instance = Instance.new(v86[4]) instance.Padding = UDim.new(0, button.Gap) instance.FillDirection = Enum.FillDirection.Horizontal instance.HorizontalFlex = Enum.UIFlexAlignment.Fill instance.SortOrder = Enum.SortOrder.LayoutOrder instance.VerticalFlex = Enum.UIFlexAlignment.Fill instance.Parent = textButton return textButton end index2._New = function(arg, arg2, arg3, arg4, arg5) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = v86[33], Row = arg2, Label = arg4.Label or "Button", Clicked = arg3:Add(v115.new()), _onClick = arg4.OnClick or function() end, _variant = arg4.Variant or "default", _requiresConfirm = arg4.Confirm == true, _title = nil, }, index2) if arg5 then arg2:AttachRight(function(parent, arg6) local v121 = createTextButton() v121.Parent = parent createFrame(obj, v121, arg6) return v121 end, nil, nil, arg3, nil, v86[34]) else arg2:AttachRight(function(arg6, arg7) return createFrame(obj, arg6, arg7) end, nil, nil, arg3, function(parent, arg6) local v121 = createTextButton() v121.Parent = parent createFrame(obj, v121, arg6) return v121 end, true) end return obj end index2.SetLabel = function(arg, label) arg.Label = label local title = arg._title if title ~= nil then title.Text = label end return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnClick = function(arg, arg2) arg._trove:Connect(arg.Clicked, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.C = function() local c = tbl17.cache.C if not c then local c2 = { c = fn35() } tbl17.cache.C = c2 c = c2 end return c.c end end do -- D local function fn35() tbl17 .r();local l={};local function I(W)local N={};for P,P_21 in W.Keypoints,nil,nil do table.insert(N,{Time=P_21.Time,Value=P_21.Value});end;return N;end;local function W(N)local P={};for a,a_22 in N,nil,nil do table.insert(P,ColorSequenceKeypoint.new(a_22.Time,a_22.Value));end;return ColorSequence.new(P);end;local function N(P)local a=P[1].Value;for e=2,#P,1 do if P[e].Value~=a then return false;end;end;return true;end;local function P(a)if type(a)=="number"then return 1-a;end;return 1;end;l.decodeSolid=function(a,e)if typeof(a)~="Color3"then return nil;end;return{Rgb=a,Alpha=P(e),Stops={}};end;l.encodeSolid=function(a)return a.Rgb,1-a.Alpha;end;l.decodeSequence=function(a,e)if typeof(a)~="ColorSequence"then return nil;end;local c=I(a);if#c==0 then return nil;end;a=P(e);if N(c)then return{Rgb=c[1].Value,Alpha=a,Stops={}};end;return{Rgb=c[1].Value,Alpha=a,Stops=c};end;l.encodeSequence=function(I)local N=I.Stops;if N~=nil and#N>=2 then return W(N),1-I.Alpha;end;return ColorSequence.new(I.Rgb),1-I.Alpha;end;return l;end tbl17.D = function() local d = tbl17.cache.D if not d then d = { c = fn35() } tbl17.cache.D = d end return d.c end end do -- E local function fn35() tbl17 .r();local l;l={clone=function(I)local W={};if type(I)=="table"then for N,P in I,nil,nil do if type(P)=="table"then N=P.Value;if typeof(N)=="Color3"then table.insert(W,{Time=math.clamp(tonumber(P.Time)or 0,0,1),Value=N});end;end;end;end;return W;end,sort=function(I,W)table.sort(I,function(N,P)return N.Time=2 then l.sort(N);N[1].Time=0;N[#N].Time=1;return N;end;return{{Time=0,Value=W},{Time=1,Value=W}};end,toSequence=function(I)local W=l.clone(I);if#W==0 then return ColorSequence.new(Color3.new(1,1,1));end;l.sort(W);local I_23,N,P={},W[1],W[#W];if N.Time>0 then table.insert(I_23,ColorSequenceKeypoint.new(0,N.Value));end;for a,a_24 in W,nil,nil do N=math.clamp(a_24.Time,0,1);table.insert(I_23,ColorSequenceKeypoint.new(if#I_23>0 then(math.max(N,I_23[#I_23].Time))else N,a_24.Value));end;if I_23[#I_23].Time<1 then table.insert(I_23,ColorSequenceKeypoint.new(1,P.Value));end;return ColorSequence.new(I_23);end};return l;end tbl17.E = function() local e = tbl17.cache.E if not e then e = { c = fn35() } tbl17.cache.E = e end return e.c end end do -- F local function fn35() tbl17.A() return { addGlow = function(arg, parent, arg2) local amount = arg2.Amount or v86[175] local dampingFactor = arg2.DampingFactor or 0.4 for i = 1, amount do local uiStroke = Instance.new("UIStroke") uiStroke.LineJoinMode = Enum.LineJoinMode.Round uiStroke.BorderOffset = UDim.new(0, i) uiStroke.Transparency = 1 - (v86[63] - i / (amount + dampingFactor)) * (v86[63] - dampingFactor) arg:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = parent end end, bindSurfaceGradient = function(arg, arg2, arg3) local n = #arg3 local v115 = table.clone(arg3) table.insert(v115, arg3[n]) local tbl18 = {} for i = 1, n do tbl18[i] = (i - 1) / (n - 1) * v86[81] end tbl18[n + 1] = 1 arg:BindGradient(arg2, v115, tbl18) end, } end tbl17.F = function() local f = tbl17.cache.F if not f then local f2 = { c = fn35() } tbl17.cache.F = f2 f = f2 end return f.c end end do -- G local function fn35() tbl17.k() local v115 = tbl17.F() tbl17.r() local v116 = tbl17.A() local v117 = tbl17.w() local index2 = {} index2.__index = index2 local function fn36(arg) local root = arg.Root local v118, v119 = arg._place(arg._trigger, root) local v120 = v117.absoluteToLayerOffset(arg._layer, Vector2.new(v118, v119)) local absoluteSize = root.AbsoluteSize if absoluteSize.X <= 0 or absoluteSize.Y <= 0 then local absoluteSize2 = arg._layer.AbsoluteSize absoluteSize = Vector2.new(root.Size.X.Scale * absoluteSize2.X + root.Size.X.Offset, root.Size.Y.Scale * absoluteSize2.Y + root.Size.Y.Offset) end local anchorPoint = root.AnchorPoint local v121, v122 = v117.clampOffsetToViewport(v120.X - absoluteSize.X * anchorPoint.X, v120.Y - absoluteSize.Y * anchorPoint.Y, absoluteSize) local v123 = v117.onScreenKeyboardTop() local n if v123 == nil then n = v122 else n = math.clamp(v122, v86[186], math.max(0, v123 - absoluteSize.Y)) end return math.round(v121 + absoluteSize.X * anchorPoint.X), math.round(n + absoluteSize.Y * anchorPoint.Y) end local function fn37(arg, arg2) arg._geometryTrove:Clean() arg._onToggle(arg2) local menu = arg._menu local root = arg.Root if not arg2 then local v118, v119 = fn36(arg) menu:Tween(root, { Position = UDim2.fromOffset(v118, v119 - 15) }) menu:FadeCanvasGroup(root, false, arg._fadeState) return end v117.connectOnScreenKeyboard(arg._geometryTrove, function() local updateViewport = arg._updateViewport if updateViewport ~= nil then updateViewport() return end arg:Reposition() end) local v118, v119 = fn36(arg) root.Position = UDim2.fromOffset(v118, v119 - 15) arg._geometryTrove:Add(task.defer(function() if not arg.Entry.Open or root.Parent == nil then return end local v120, v121 = fn36(arg) root.Position = UDim2.fromOffset(v120, v121 - 15) menu:FadeCanvasGroup(root, true, arg._fadeState) menu:Tween(root, { Position = UDim2.fromOffset(v120, v121) }) end)) end index2.new = function(arg, arg2, arg3) local v118 = arg2:Extend() local v119 = v116.newBatch(v118) local canvasGroup = Instance.new("CanvasGroup") canvasGroup.Visible = false canvasGroup.GroupTransparency = 1 canvasGroup.BorderSizePixel = 0 canvasGroup.AnchorPoint = arg3.AnchorPoint or Vector2.zero canvasGroup.Size = arg3.Size canvasGroup.AutomaticSize = arg3.AutomaticSize or Enum.AutomaticSize.None if arg3.FlatBackground then canvasGroup.BackgroundTransparency = v86[6] v119:Bind(canvasGroup, "BackgroundColor3", v86[168]) else canvasGroup.BackgroundTransparency = 1 local frame = Instance.new("Frame") frame.Size = UDim2.fromScale(v86[63], 1) frame.BorderSizePixel = 0 frame.ZIndex = v86[186] frame.BackgroundColor3 = Color3.fromRGB(v86[108], v86[108], 255) frame.Parent = canvasGroup local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v115.bindSurfaceGradient(v119, uiGradient, { "GradientMid", "GradientDark" }) uiGradient.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, arg3.CornerRadius or 5) uiCorner.Parent = frame end local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], arg3.CornerRadius or 5) uiCorner.Parent = canvasGroup local uiStroke = Instance.new("UIStroke") v119:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = canvasGroup if arg3.Glow then v115.addGlow(v119, canvasGroup, { Amount = 5, DampingFactor = 0.6 }) end local overlayLayer = arg:GetOverlayLayer() canvasGroup.Parent = overlayLayer v118:Add(canvasGroup) local v120 = nil local v121 = arg:RegisterOverlay(canvasGroup, { Triggers = { arg3.Trigger }, ParentEntry = arg3.ParentEntry, OnToggle = function(arg4) local v121 = v120 if v121 ~= nil then fn37(v121, arg4) end end, }) v118:Add({ Destroy = function() arg:UnregisterOverlay(v121) end }) local obj = setmetatable({ Trove = v118, _menu = arg, _layer = overlayLayer, Batch = v119, _trigger = arg3.Trigger, _place = arg3.Place, _onToggle = arg3.OnToggle or function() end, _fadeState = { Tweening = v86[153] }, _geometryTrove = v118:Extend(), _updateViewport = nil, Root = canvasGroup, Entry = v121, }, index2) v120 = obj v118:Connect(arg3.Trigger:GetPropertyChangedSignal("AbsolutePosition"), function() obj:Reposition() end) v117.connectCurrentCameraViewport(v118, function() obj:Reposition() end) return obj end index2.RealizeCtx = function(arg) return { Menu = arg._menu, Trove = arg.Trove, Batch = arg.Batch, ParentOverlay = arg.Entry } end index2.placeBelow = function(arg, arg2) return function(arg3) local absolutePosition = arg3.AbsolutePosition return math.round(absolutePosition.X) + arg, math.round(absolutePosition.Y + arg3.AbsoluteSize.Y + arg2) end end index2.AttachScrollingList = function(arg, arg2, arg3) local root = arg.Root local n = 12 local n33 = 12 local n34 = 12 if arg3 ~= nil then n = arg3.Top n33 = arg3.Bottom n34 = arg3.Side end local instance = Instance.new(v86[64]) instance.Active = v86[34] instance.Size = UDim2.fromScale(1, 1) instance.BorderSizePixel = 0 instance.BackgroundTransparency = 1 instance.AutomaticCanvasSize = Enum.AutomaticSize.Y instance.CanvasSize = UDim2.fromOffset(0, 0) instance.ScrollBarImageTransparency = 0.35 instance.ScrollBarThickness = v86[186] instance.Selectable = false arg.Batch:Bind(instance, "ScrollBarImageColor3", "Accent") instance.Parent = root local instance2 = Instance.new(v86[128]) instance2.Position = UDim2.fromOffset(n34, n) instance2.Size = UDim2.new(1, -n34 * 2, 0, 0) instance2.AutomaticSize = Enum.AutomaticSize.Y instance2.BorderSizePixel = 0 instance2.BackgroundTransparency = v86[63] instance2.Parent = instance local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, v86[12]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = instance2 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, n33) uiPadding.Parent = instance2 local v118 = nil local function updateViewport() local y = v118 and v118.Y or v86[78] local v119 = v117.onScreenKeyboardTop() local n35 if v119 == nil then n35 = y else n35 = math.min(y, v119) end local n36 = uiListLayout.AbsoluteContentSize.Y + n + n33 local n37 = math.min(n36, math.max(80, n35 - v86[13])) root.Size = UDim2.fromOffset(arg2, n37) local scrollBarThickness = v86[186] if n36 > n37 + 0.5 then scrollBarThickness = 4 end instance.ScrollBarThickness = scrollBarThickness arg:Reposition() end arg._updateViewport = updateViewport arg.Trove:Connect(uiListLayout:GetPropertyChangedSignal("AbsoluteContentSize"), updateViewport) v117.connectCurrentCameraViewport(arg.Trove, function(arg4) v118 = arg4 updateViewport() end) return instance, instance2 end index2.IsOpen = function(arg) return arg.Entry.Open end index2.Toggle = function(arg) arg._menu:ToggleOverlay(arg.Entry) end index2.SetOpen = function(arg, arg2) arg._menu:SetOverlayOpen(arg.Entry, arg2) end index2.Reposition = function(arg) if not arg.Entry.Open then return end local v118, v119 = fn36(arg) if arg._fadeState.Tweening then arg._menu:Tween(arg.Root, { Position = UDim2.fromOffset(v118, v119) }) return end arg.Root.Position = UDim2.fromOffset(v118, v119) end index2.Destroy = function(arg) arg.Trove:Destroy() end return index2 end tbl17.G = function() local g = tbl17.cache.G if not g then g = { c = fn35() } tbl17.cache.G = g end return g.c end end do -- H local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() local v118 = tbl17.u() local v119 = tbl17.x() local v120 = tbl17.G() tbl17.B() local v121 = tbl17.A() local v122 = tbl17.w() local tweenInfo = TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local color = Color3.fromRGB(v86[108], v86[108], v86[108]) local index2 = {} index2.__index = index2 local function fn36(arg) local tbl18 = {} local v123 = v86[165] if type(arg) == v123 then tbl18[arg] = true else local v124 = v86[68] if type(arg) == v124 then for k, v125 in arg, nil, nil do local v126 = v86[165] if type(k) == v126 and v125 == true then tbl18[k] = true else local v127 = v86[95] if type(k) == v127 and type(v125) == "string" then tbl18[v125] = v86[34] end end end end end return tbl18 end local function fn37(arg) table.clear(arg._indexByName) for k, v123 in arg.Options, nil, nil do arg._indexByName[v123] = k end end local function fn38(arg, arg2) return arg._labelByValue[arg2] or arg2 end local function fn39(arg) local value = arg.Value if type(value) == "string" then return fn38(arg, value) end if type(value) == "table" then local tbl18 = {} for _, v123 in arg.Options, nil, nil do if value[v123] then table.insert(tbl18, fn38(arg, v123)) end end if v86[186] < #tbl18 then return table.concat(tbl18, ", ") end end return "Select" end local function fn40(arg) local rt = arg._rt if rt ~= nil then rt.ValueLabel.Text = fn39(arg) end end local function fn41(arg, arg2) local value = arg.Value if type(value) == "table" then return value[arg2] == true end return value == arg2 end local function fn42(arg, arg2, arg3, arg4) local Unselected = v121.get("Unselected") local imageTransparency = 1 if arg3 then Unselected = v121.get(v86[174]) imageTransparency = 0 end arg2.Tick.ImageColor3 = v121.get("TextColor") if arg4 then arg2.Button.TextColor3 = Unselected arg2.Tick.ImageTransparency = imageTransparency return end arg._menu:Tween(arg2.Button, { TextColor3 = Unselected }) arg._menu:Tween(arg2.Tick, { ImageTransparency = imageTransparency }) end local function fn43(arg, arg2) local panel = arg._panel if panel == nil or not panel.Popup:IsOpen() then return end for k, v123 in panel.Rows, nil, nil do local v124 = arg.Options[k] fn42(arg, v123, v124 ~= nil and fn41(arg, v124), arg2) end end local function fn44(arg, arg2) local panel = arg._panel if panel == nil then return end local str7 = arg2:lower() for _, v123 in panel.Rows, nil, nil do v123.Button.Visible = v123.Button.Text:lower():find(str7, 1, true) ~= nil end panel.Scroll.CanvasPosition = Vector2.zero end local function fn45(arg, arg2) local v123 = arg.Options[arg2] if v123 == nil then return end if arg.Multi then local tbl18 = {} local value = arg.Value if type(value) == "table" then for k in value, nil, nil do tbl18[k] = true end end if tbl18[v123] then tbl18[v123] = nil else tbl18[v123] = true end arg:Set(tbl18) return end arg:Set(v123) local panel = arg._panel if arg.CloseOnSelect and panel ~= nil then panel.Popup:SetOpen(v86[153]) end end local function fn46(arg, arg2, layoutOrder) local listRowHeight = v117.get().Row.ListRowHeight local textButton = Instance.new("TextButton") textButton.AutoButtonColor = false textButton.BackgroundTransparency = v86[63] textButton.TextColor3 = v121.get(v86[96]) textButton.Text = "" textButton.Size = UDim2.new(1, 0, v86[186], listRowHeight) textButton.ClipsDescendants = v86[34] textButton.TextXAlignment = Enum.TextXAlignment.Left textButton.BorderSizePixel = 0 textButton.TextSize = v86[13] textButton.FontFace = arg._menu.Fonts.Main textButton.LayoutOrder = layoutOrder textButton.Parent = arg2.Scroll local instance = Instance.new(v86[113]) instance.PaddingTop = UDim.new(0, 5) instance.PaddingBottom = UDim.new(0, 5) instance.PaddingRight = UDim.new(0, 5) instance.PaddingLeft = UDim.new(0, 29) instance.Parent = textButton local imageLabel = Instance.new("ImageLabel") imageLabel.Image = "rbxassetid://73347151382921" imageLabel.ImageColor3 = v121.get(v86[174]) imageLabel.ImageTransparency = 1 imageLabel.BackgroundTransparency = 1 imageLabel.AnchorPoint = Vector2.new(0, 0.5) imageLabel.Position = UDim2.new(0, -22, 0.5, 0) imageLabel.Size = UDim2.fromOffset(14, 14) imageLabel.BorderSizePixel = 0 imageLabel.Parent = textButton v119.connectClick(arg._trove, textButton, function() if arg2.Popup:IsOpen() then fn45(arg, layoutOrder) end end) return { Button = textButton, Tick = imageLabel } end local function fn47(arg) local listRowHeight = v117.get().Row.ListRowHeight local n = #arg.Rows local scroll = arg.Scroll scroll.AutomaticCanvasSize = Enum.AutomaticSize.None scroll.CanvasSize = UDim2.fromOffset(0, n * listRowHeight + v86[122]) if n >= 10 then scroll.Size = UDim2.new(v86[63], -1, 0, math.min(v86[162], n) * listRowHeight + 7) scroll.AutomaticSize = Enum.AutomaticSize.None else scroll.Size = UDim2.new(1, -1, 0, v86[186]) scroll.AutomaticSize = Enum.AutomaticSize.Y end end local function fn48(arg) local panel = arg._panel if panel == nil then return end local rows = panel.Rows local options = arg.Options for k, v123 in options, nil, nil do local v124 = rows[k] if v124 == nil then v124 = fn46(arg, panel, k) rows[k] = v124 end local v125 = fn38(arg, v123) if v124.Button.Text ~= v125 then v124.Button.Text = v125 end if not v124.Button.Visible then v124.Button.Visible = true end end for i = #rows, #options + 1, -v86[63] do rows[i].Button:Destroy() rows[i] = nil end fn47(panel) panel.RepositionTrove:Clean() panel.RepositionTrove:Add(task.defer(function() panel.Popup:Reposition() end)) end local function fn49(arg, arg2) local listRowHeight = v117.get().Row.ListRowHeight local menu = arg._menu local root = arg2.Popup.Root local instance = Instance.new(v86[128]) instance.BackgroundColor3 = v121.get(v86[168]) instance.BorderSizePixel = 0 instance.Size = UDim2.new(1, 0, 0, listRowHeight) instance.ClipsDescendants = true instance.Parent = root local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], v86[175]) uiCorner.Parent = instance local uiStroke = Instance.new("UIStroke") uiStroke.Color = v121.get("Outline") uiStroke.Parent = instance local textBox = Instance.new("TextBox") textBox.PlaceholderText = v86[190] textBox.PlaceholderColor3 = v121.get("Unselected") textBox.FontFace = menu.Fonts.Main textBox.TextColor3 = v121.get(v86[174]) textBox.Text = "" textBox.AnchorPoint = Vector2.new(0, 0.5) textBox.Position = UDim2.new(v86[186], v86[54], 0.5, 0) textBox.Size = UDim2.new(1, -12, 1, 0) textBox.BackgroundTransparency = 1 textBox.BorderSizePixel = 0 textBox.TextSize = 14 textBox.TextXAlignment = Enum.TextXAlignment.Left textBox.ClearTextOnFocus = true textBox.Active = v86[34] textBox.Parent = instance arg2.SearchInput = textBox arg2.Scroll.Position = UDim2.fromOffset(v86[186], v86[192]) arg._trove:Connect(textBox:GetPropertyChangedSignal("Text"), function() fn44(arg, textBox.Text) end) arg._trove:Connect(textBox.Focused, function() menu:Tween(textBox, { TextColor3 = v121.get("Accent") }) end) arg._trove:Connect(textBox.FocusLost, function() menu:Tween(textBox, { TextColor3 = v121.get("TextColor") }) end) end local function fn50(arg) local panel = arg._panel if panel ~= nil then return panel end local rt = arg._rt if rt == nil then return nil end local panel2 = nil local v123 = v120.new(arg._menu, arg._trove, { Trigger = rt.Pill, Size = UDim2.fromOffset(80, 0), AutomaticSize = Enum.AutomaticSize.Y, AnchorPoint = Vector2.new(1, 0), Glow = v86[34], ParentEntry = arg._parentOverlay, Place = function(arg2, arg3) local absolutePosition = arg2.AbsolutePosition local n = math.floor(arg2.AbsoluteSize.X + 2 + 0.5) local n33 = math.max(n, 80) local n34 = v86[186] for _, v123 in panel2.Rows, nil, nil do if v123.Button.Visible then n34 = math.max(n34, v123.Button.TextBounds.X) end end arg3.Size = UDim2.fromOffset(math.max(n33, math.ceil(n34) + 40), v86[186]) return math.floor(absolutePosition.X + 0.5) + n, (math.floor(absolutePosition.Y + arg2.AbsoluteSize.Y + 4)) end, OnToggle = function(arg2) arg._menu:Tween(rt.Arrow, { Rotation = arg2 and 180 or 0 }) panel2.FocusTrove:Clean() if not arg2 then local searchInput = panel2.SearchInput if searchInput ~= nil then searchInput:ReleaseFocus() end return end local getOptions = arg._getOptions if getOptions ~= nil then arg:SetOptions(getOptions()) end fn43(arg, true) panel2.Scroll.CanvasPosition = Vector2.zero local searchInput = panel2.SearchInput if searchInput ~= nil then searchInput.Text = "" fn44(arg, "") panel2.FocusTrove:Add(task.defer(function() if panel2.Popup:IsOpen() then searchInput:CaptureFocus() end if not flag2 then return end end)) end end, }) local y = v122.currentViewportSize().Y local n = math.floor(y * 0.6) if v118.IsMobile() then n = math.floor(y * 0.5) end local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.Active = true scrollingFrame.ScrollBarImageTransparency = v86[101] scrollingFrame.ScrollBarThickness = v86[26] scrollingFrame.Size = UDim2.new(1, -v86[63], 0, 0) scrollingFrame.BorderSizePixel = 0 scrollingFrame.BackgroundTransparency = v86[63] scrollingFrame.AutomaticSize = Enum.AutomaticSize.Y scrollingFrame.CanvasSize = UDim2.fromOffset(0, v86[186]) scrollingFrame.Selectable = v86[153] scrollingFrame.ScrollBarImageColor3 = v121.get("Accent") scrollingFrame.Parent = v123.Root local instance = Instance.new(v86[176]) instance.MaxSize = Vector2.new(math.huge, n) instance.Parent = scrollingFrame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, v86[122]) uiPadding.Parent = scrollingFrame local uiListLayout = Instance.new("UIListLayout") uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = scrollingFrame panel2 = { Popup = v123, Scroll = scrollingFrame, SearchInput = nil, Rows = {}, RepositionTrove = v123.Trove:Extend(), FocusTrove = v123.Trove:Extend(), } arg._panel = panel2 if arg.Search then fn49(arg, panel2) end fn48(arg) return panel2 end local function createTextButton(arg, parent, arg2) local menu = arg._menu local v123 = v117.get() local inline = arg.Inline local textButton = Instance.new("TextButton") textButton.AutoButtonColor = false textButton.Text = "" textButton.AnchorPoint = Vector2.new(1, v86[101]) textButton.Position = UDim2.new(1, -v86[63], 0.5, 0) textButton.BorderSizePixel = 0 textButton.BackgroundColor3 = color if inline then textButton.Size = UDim2.fromOffset(0, v123.Row.ControlHeight) textButton.ClipsDescendants = true textButton.AutomaticSize = Enum.AutomaticSize.X else textButton.Size = UDim2.fromOffset(137, 24) end textButton.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = v86[45] arg2.Batch:BindGradient(uiGradient, { "GradientMid", "GradientDark" }) uiGradient.Parent = textButton local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[175]) uiCorner.Parent = textButton if inline then local uiSizeConstraint = Instance.new("UISizeConstraint") uiSizeConstraint.MaxSize = Vector2.new(arg.MaxWidth, v123.Row.ControlHeight) uiSizeConstraint.Parent = textButton end local uiStroke = Instance.new("UIStroke") if not inline then uiStroke.BorderOffset = UDim.new(0, -1) end uiStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border arg2.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = textButton local imageLabel = Instance.new("ImageLabel") imageLabel.Image = "rbxassetid://84796267467531" imageLabel.BackgroundTransparency = v86[63] imageLabel.Size = UDim2.fromOffset(9, 5) imageLabel.BorderSizePixel = v86[186] if inline then imageLabel.LayoutOrder = 1 else imageLabel.AnchorPoint = Vector2.new(1, 0.5) imageLabel.Position = UDim2.new(1, -8, 0.5, 0) end arg2.Batch:Bind(imageLabel, "ImageColor3", "Unselected") imageLabel.Parent = textButton local instance = Instance.new(v86[135]) instance.Text = fn39(arg) instance.AnchorPoint = Vector2.new(0, v86[101]) instance.Position = UDim2.new(0, 5, v86[101], 0) instance.BackgroundTransparency = 1 instance.BorderSizePixel = 0 instance.TextSize = v86[13] instance.TextTruncate = Enum.TextTruncate.AtEnd if inline then instance.LayoutOrder = -1 instance.FontFace = menu.Fonts.Main instance.AutomaticSize = Enum.AutomaticSize.XY else instance.ClipsDescendants = true instance.FontFace = v116.Medium instance.Size = UDim2.new(1, -25, 0, 0) instance.TextXAlignment = Enum.TextXAlignment.Left instance.AutomaticSize = Enum.AutomaticSize.Y end arg2.Batch:Bind(instance, "TextColor3", "TextColor") instance.Parent = textButton if inline then local instance2 = Instance.new(v86[113]) instance2.PaddingBottom = UDim.new(0, 2) instance2.Parent = instance local uiListLayout = Instance.new("UIListLayout") uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.Padding = UDim.new(0, 6) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = textButton local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(v86[186], 2) uiPadding.PaddingRight = UDim.new(0, 6) uiPadding.PaddingLeft = UDim.new(v86[186], v86[54]) uiPadding.Parent = textButton local v124 = menu:DragTweenInfo() arg2.Trove:Connect(instance:GetPropertyChangedSignal("Text"), function() local controlHeight = v123.Row.ControlHeight menu:Tween(textButton, { Size = UDim2.fromOffset(math.min(instance.AbsoluteSize.X, arg.MaxWidth), controlHeight) }, v124) end) arg2.Trove:Add(task.defer(function() if instance.Parent ~= nil then local controlHeight = v123.Row.ControlHeight textButton.Size = UDim2.fromOffset(math.min(instance.AbsoluteSize.X + v86[144], arg.MaxWidth + 22), controlHeight) end end)) end arg._rt = { Pill = textButton, ValueLabel = instance, Arrow = imageLabel } if arg._parentOverlay == nil then arg._parentOverlay = arg2.ParentOverlay end v119.connectClick(arg2.Trove, textButton, function() if #arg.Options == 0 and arg._getOptions == nil then return end local v124 = fn50(arg) if v124 ~= nil then v124.Popup:Toggle() end end) local v124 = nil v119.connectPress(arg2.Trove, textButton, function() local backgroundColor3 = textButton.BackgroundColor3 v124 = backgroundColor3 menu:Tween(textButton, { BackgroundColor3 = Color3.new(backgroundColor3.R * v86[105], backgroundColor3.G * 0.85, backgroundColor3.B * 0.85) }, tweenInfo) end, function() if v124 ~= nil then menu:Tween(textButton, { BackgroundColor3 = v124 }, tweenInfo) v124 = nil end end) return textButton end local function fn51(arg, arg2, arg3, arg4, arg5, arg6, arg7) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "Dropdown", Row = arg2, Multi = arg5, Search = arg4.Search == true, Inline = arg4.Inline == true, CloseOnSelect = arg4.CloseOnSelect == true, MaxWidth = arg4.MaxWidth or 300, Options = table.clone(arg4.Options or {}), _labelByValue = arg4.Labels or {}, Value = arg6, Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg7, _getOptions = arg4.GetOptions, _isOptionsPublished = arg4.Options ~= nil or arg4.GetOptions == nil, _indexByName = {}, _rt = nil, _panel = nil, _parentOverlay = nil, }, index2) fn37(obj) local n = 138 if obj.Inline then n = nil end arg2:AttachRight(function(arg8, arg9) return createTextButton(obj, arg8, arg9) end, n, nil, arg3) return obj end index2._New = function(arg, arg2, arg3, arg4) local options = arg4.Options or {} local default = arg4.Default if not (default ~= nil and (not (arg4.Options ~= nil or arg4.GetOptions == nil) or table.find(options, default) ~= nil)) then default = options[1] end local onChanged = arg4.OnChanged local function fn52() end if onChanged ~= nil then fn52 = function(arg5) onChanged(arg5) end end return (fn51(arg, arg2, arg3, arg4, false, default, fn52)) end index2._NewMulti = function(arg, arg2, arg3, arg4) local onChanged = arg4.OnChanged local function fn52() end if onChanged ~= nil then fn52 = function(arg5) onChanged(arg5) end end return (fn51(arg, arg2, arg3, arg4, v86[34], fn36(arg4.Default), fn52)) end local function fn52(arg, arg2) for k in arg, nil, nil do if not arg2[k] then return false end end for k in arg2, nil, nil do if not arg[k] then return false end end return true end index2.Set = function(I,W,N)if I.Multi then local P= fn36 (W);local a=I.Value;if type(a)=="table"and( fn52 (P,a))then return;end;I.Value=P; fn43 (I,N==true); fn40 (I);I.ValueChanged:Fire(I.Value);if not N then I._onChanged(I.Value);I.Changed:Fire(I.Value);end;return;end;local P=if type(W)=="string"and(not I._isOptionsPublished or I._indexByName[W]~=nil)then W else nil;local a=I._isOptionsPublished and W~=nil and P==nil;if P==I.Value and not a then return;end;W=I.Value;I.Value=P;a=I._panel;if a~=nil and(a.Popup:IsOpen())then local e=N==true;local c=type(W)=="string"and I._indexByName[W]or nil;if c~=nil and a.Rows[c]~=nil then fn42 (I,a.Rows[c],false,e);end;c=P~=nil and I._indexByName[P]or nil;if c~=nil and a.Rows[c]~=nil then fn42 (I,a.Rows[c],true,e);end;end; fn40 (I);I.ValueChanged:Fire(I.Value);if not N then I._onChanged(I.Value);I.Changed:Fire(I.Value);end;end index2.SetOptions = function(arg, arg2) local tbl18 = arg2 or {} local options = arg.Options local isOptionsPublished = arg._isOptionsPublished arg._isOptionsPublished = true if isOptionsPublished and #tbl18 == #options then local flag19 = true for k, v123 in tbl18, nil, nil do if options[k] ~= v123 then flag19 = v86[153] break end end if flag19 then return end end local value = arg.Value arg.Options = table.clone(tbl18) fn37(arg) fn48(arg) if arg.Multi then fn43(arg, true) fn40(arg) arg.ValueChanged:Fire(arg.Value) return end local value2 = arg.Value if type(value2) ~= "string" or arg._indexByName[value2] == nil then arg.Value = nil end fn43(arg, true) fn40(arg) arg.ValueChanged:Fire(arg.Value) if value ~= arg.Value then arg._onChanged(arg.Value) arg.Changed:Fire(arg.Value) end end index2.Add = function(arg, arg2) local v123 = v86[165] if type(arg2) ~= v123 or arg._indexByName[arg2] ~= nil then return end local v124 = table.clone(arg.Options) table.insert(v124, arg2) arg:SetOptions(v124) end index2.Remove = function(arg, arg2) local v123 = arg._indexByName[arg2] if v123 == nil then return end local v124 = table.clone(arg.Options) table.remove(v124, v123) arg:SetOptions(v124) end index2.SetOpen = function(arg, arg2) local v123 = fn50(arg) if v123 ~= nil then v123.Popup:SetOpen(arg2) end end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.H = function() local h = tbl17.cache.H if not h then h = { c = fn35() } tbl17.cache.H = h end return h.c end end do -- I local function fn35() tbl17.r() local v115 = tbl17.s() tbl17.B() local v116 = tbl17.w() local color = Color3.fromRGB(v86[108], 255, 255) local udim2 = UDim2.fromOffset(14, 14) local udim22 = UDim2.fromOffset(18, 18) return { buildTrack = function(parent, arg, arg2) local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(0, 0.5) frame.Position = UDim2.fromScale(0, 0.5) frame.Size = UDim2.new(1, -arg2 - 11, 0, 2) frame.BorderSizePixel = 0 frame.BackgroundColor3 = color frame.Parent = parent local uiGradient = Instance.new("UIGradient") arg.Batch:BindGradient(uiGradient, { "GradientDark", v86[187] }) uiGradient.Parent = frame local uiStroke = Instance.new("UIStroke") arg.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[63], 0) uiCorner.Parent = frame local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(0.5, 0.5) instance.Position = UDim2.fromScale(0.5, 0.5) instance.Size = UDim2.new(1, v86[186], 0, 44) instance.BackgroundTransparency = 1 instance.BorderSizePixel = v86[186] instance.Active = true instance.ZIndex = 0 instance.Parent = frame return frame, instance end, buildThumb = function(parent) local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(0.5, 0.5) frame.Position = UDim2.fromScale(v86[186], 0.5) frame.Size = udim2 frame.BorderSizePixel = v86[186] frame.BackgroundColor3 = color frame.ZIndex = 2 frame.Parent = parent local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(1, 0) uiCorner.Parent = frame return frame end, setThumbPressed = function(arg, arg2, arg3) arg:Tween(arg2, { Size = arg3 and udim22 or udim2 }) end, valueAt = function(arg, arg2, arg3, arg4) return (arg4 - arg3) * (arg2 - arg.AbsolutePosition.X) / arg.AbsoluteSize.X + arg3 end, newTouchBubble = function(arg, arg2) local v117 = nil local v118 = nil local function fn36() local v119 = v117 local v120 = v118 if v119 ~= nil and v120 ~= nil then return v119, v120 end local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(v86[101], 0.5) frame.Size = UDim2.fromOffset(42, 28) frame.BorderSizePixel = 0 frame.Visible = false frame.ZIndex = 20 arg2.Batch:Bind(frame, v86[5], "Background") arg2.Trove:Add(frame) frame.Parent = arg:GetOverlayLayer() local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 5) uiCorner.Parent = frame local uiStroke = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = frame local instance = Instance.new(v86[135]) instance.FontFace = v115.SemiBold instance.BackgroundTransparency = 1 instance.Size = UDim2.fromScale(1, 1) instance.BorderSizePixel = v86[186] instance.TextSize = 14 instance.ZIndex = 21 arg2.Batch:Bind(instance, "TextColor3", "TextColor") instance.Parent = frame v117 = frame v118 = instance return frame, instance end return { Show = function(arg3, text) local v119, v120 = fn36() v120.Text = text v119.Size = UDim2.fromOffset(math.max(42, #text * 8 + 16), v86[25]) local n = arg3.AbsolutePosition + arg3.AbsoluteSize / 2 local v121 = v116.absoluteToLayerOffset(arg:GetOverlayLayer(), n) v119.Position = UDim2.fromOffset(v121.X, v121.Y - 40) v119.Visible = v86[34] end, Hide = function() if v117 ~= nil then v117.Visible = false end end, } end, } end tbl17.I = function() local i = tbl17.cache.I if not i then i = { c = fn35() } tbl17.cache.I = i end return i.c end end do -- J local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() local v118 = tbl17.x() tbl17.B() local v119 = tbl17.I() local v120 = tbl17.w() local index2 = {} index2.__index = index2 local function fn36(arg, arg2, arg3) local min = arg.Min local max = arg.Max local n = math.clamp(v120.round(arg2, arg.Step), min, max) local n33 = math.clamp(v120.round(arg3, arg.Step), arg.Min, arg.Max) if not (n33 < n) then local v121 = n33 n33 = n n = v121 end return n33, n end local function fn37(arg, arg2) if arg.Max == arg.Min then return v86[186] end return (arg2 - arg.Min) / (arg.Max - arg.Min) end local function fn38(arg, arg2) local v121 = fn37(arg, arg.Value.Min) local v122 = fn37(arg, arg.Value.Max) arg2.MinThumb.Position = UDim2.fromScale(v121, v86[101]) arg2.MaxThumb.Position = UDim2.fromScale(v122, v86[101]) local udim2 = UDim2.fromScale(v121, 0) local udim22 = UDim2.fromScale(v122 - v121, v86[63]) if arg._isDragging then arg2.Accent.Position = udim2 arg2.Accent.Size = udim22 else arg._menu:Tween(arg2.Accent, { Position = udim2, Size = udim22 }, arg._menu:DragTweenInfo()) end local v123 = tostring local max = arg.Value.Max arg2.ValueLabel.Text = ("%s - %s"):format(tostring(arg.Value.Min), v123(max)) end local function fn39(arg, parent, arg2, arg3) local menu = arg._menu local controlHeight = v117.get().Row.ControlHeight local v121, v122 = v119.buildTrack(parent, arg2, arg3) local frame = Instance.new("Frame") frame.Position = UDim2.new(0, 0, 0, v86[186]) frame.Size = UDim2.fromScale(0, 1) frame.BorderSizePixel = 0 arg2.Batch:Bind(frame, "BackgroundColor3", v86[139]) frame.Parent = v121 local v123 = v119.buildThumb(v121) local v124 = v119.buildThumb(v121) local frame2 = Instance.new("Frame") frame2.AnchorPoint = Vector2.new(v86[63], 0.5) frame2.Position = UDim2.fromScale(1, 0.5) frame2.Size = UDim2.fromOffset(arg3, controlHeight) frame2.BorderSizePixel = v86[186] frame2.ClipsDescendants = v86[34] arg2.Batch:Bind(frame2, "BackgroundColor3", "Background") frame2.Parent = parent local instance = Instance.new(v86[176]) instance.MinSize = Vector2.new(arg3, controlHeight) instance.Parent = frame2 local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], 5) uiCorner.Parent = frame2 local uiStroke = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = frame2 local textLabel = Instance.new("TextLabel") textLabel.FontFace = v116.SemiBold textLabel.Text = "" textLabel.BackgroundTransparency = 1 textLabel.Size = UDim2.fromScale(1, 1) textLabel.BorderSizePixel = 0 textLabel.TextSize = 14 arg2.Batch:Bind(textLabel, v86[167], "TextColor") textLabel.Parent = frame2 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingRight = UDim.new(0, 6) uiPadding.PaddingLeft = UDim.new(0, 6) uiPadding.Parent = textLabel local rt = { Outline = v121, Accent = frame, MinThumb = v123, MaxThumb = v124, ValueLabel = textLabel } arg._rt = rt local v125 = nil local v126 = v119.newTouchBubble(menu, arg2) local function fn40(arg4) return arg4 == v86[16] and v123 or v124 end local function fn41(arg4) local x = v121.AbsolutePosition.X local x2 = v121.AbsoluteSize.X local n = x + fn37(arg, arg.Value.Min) * x2 local n33 = x + fn37(arg, arg.Value.Max) * x2 return math.abs(arg4 - n) < math.abs(arg4 - n33) and v86[16] or "max" end local function fn42(arg4, arg5) local v127 = v125 if v127 == nil then v127 = arg5 or fn41(arg4.Position.X) v125 = v127 v119.setThumbPressed(menu, fn40(v127), true) end local v128 = v119.valueAt(v121, arg4.Position.X, arg.Min, arg.Max) if v127 == v86[16] then arg:Set({ Min = v128, Max = arg.Value.Max }) else arg:Set({ Min = arg.Value.Min, Max = v128 }) end if arg4.UserInputType == Enum.UserInputType.Touch then local min = v127 == "min" and arg.Value.Min or arg.Value.Max local v129 = tostring v126.Show(fn40(v127), v129(min)) end end local tbl18 = nil local function fn43(isDragging, arg4) arg._isDragging = isDragging if isDragging then tbl18 = { Min = arg.Value.Min, Max = arg.Value.Max } return end if arg4 and tbl18 ~= nil then arg:Set(tbl18, true) end tbl18 = nil if v125 ~= nil then v119.setThumbPressed(menu, fn40(v125), false) v125 = nil end v126.Hide() end v118.connectDrag(arg2.Trove, v122, function(arg4) fn42(arg4, nil) end, fn43) v118.connectDrag(arg2.Trove, v123, function(arg4) fn42(arg4, "min") end, fn43) v118.connectDrag(arg2.Trove, v124, function(arg4) fn42(arg4, "max") end, fn43) arg2.Trove:Connect(arg.ValueChanged, function() fn38(arg, rt) end) fn38(arg, rt) end index2._New = function(arg, arg2, arg3, arg4) local min = arg4.Min local max = arg4.Max local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "RangeSlider", Row = arg2, Min = min, Max = max, Step = arg4.Step or v86[63], Value = { Min = min, Max = max }, Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _isDragging = false, _rt = nil, }, index2) local default = arg4.Default if default ~= nil then local v121, v122 = fn36(obj, default.Min, default.Max) obj.Value = { Min = v121, Max = v122 } end local n = math.max(v86[8], (#tostring(min) + #tostring(max) + 3) * 8 + 20) arg2:AttachRight(function(arg5, arg6) fn39(obj, arg5, arg6, n) return nil end, nil, nil, arg3) return obj end index2.Set = function(arg, arg2, arg3) if type(arg2) ~= "table" then return end local v121, v122 = fn36(arg, tonumber(arg2.Min) or arg.Value.Min, tonumber(arg2.Max) or arg.Value.Max) if v121 == arg.Value.Min and v122 == arg.Value.Max then return end arg.Value = { Min = v121, Max = v122 } arg.ValueChanged:Fire(arg.Value) if not arg3 then arg._onChanged(arg.Value) arg.Changed:Fire(arg.Value) end end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.J = function() local j = tbl17.cache.J if not j then local j2 = { c = fn35() } tbl17.cache.J = j2 j = j2 end return j.c end end do -- K local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() local v118 = tbl17.x() tbl17.B() local v119 = tbl17.I() local v120 = tbl17.w() local tweenInfo = TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local color = Color3.fromRGB(255, v86[108], 255) local index2 = {} index2.__index = index2 local function fn36(arg, arg2) return math.clamp(v120.round(tonumber(arg2) or arg.Min, arg.Step), arg.Min, arg.Max) end local function fn37(arg) local suffix = arg.Suffix return tostring(arg.Value) .. suffix end local function fn38(arg, arg2, arg3) arg2.ValueText.Text = fn37(arg) if not arg._isDragging then arg2.UpdateValueBoxSize() end local n = 0 if arg.Max ~= arg.Min then n = (arg.Value - arg.Min) / (arg.Max - arg.Min) end if arg._isDragging or arg3 then arg2.Accent.Size = UDim2.fromScale(n, 1) return end arg._menu:Tween(arg2.Accent, { Size = UDim2.fromScale(n, 1) }, arg._menu:DragTweenInfo()) end local function fn39(arg, parent, arg2, arg3) local menu = arg._menu local controlHeight = v117.get().Row.ControlHeight local v121, v122 = v119.buildTrack(parent, arg2, arg3) local frame = Instance.new("Frame") frame.Size = UDim2.fromScale(v86[186], v86[63]) frame.BorderSizePixel = 0 arg2.Batch:Bind(frame, v86[5], "Accent") frame.Parent = v121 local uiStroke = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke, v86[27], v86[139]) uiStroke.Parent = frame local v123 = v119.buildThumb(frame) v123.Position = UDim2.fromScale(1, 0.5) local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(1, 0.5) instance.Position = UDim2.fromScale(v86[63], 0.5) instance.Size = UDim2.fromOffset(arg3, controlHeight) instance.BorderSizePixel = v86[186] instance.ClipsDescendants = true instance.BackgroundColor3 = color instance.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 arg2.Batch:BindGradient(uiGradient, { "GradientMid", "GradientDark" }) uiGradient.Parent = instance local uiSizeConstraint = Instance.new("UISizeConstraint") uiSizeConstraint.MinSize = Vector2.new(24, controlHeight) uiSizeConstraint.Parent = instance local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[175]) uiCorner.Parent = instance local uiStroke2 = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke2, "Color", v86[120]) uiStroke2.Parent = instance local textBox = Instance.new("TextBox") textBox.FontFace = v116.SemiBold textBox.Text = "" textBox.BackgroundTransparency = 1 textBox.Size = UDim2.fromScale(1, 1) textBox.BorderSizePixel = 0 textBox.TextSize = 16 textBox.TextScaled = false arg2.Batch:Bind(textBox, "TextColor3", "TextColor") textBox.Parent = instance local uiPadding = Instance.new("UIPadding") uiPadding.PaddingRight = UDim.new(0, 5) uiPadding.PaddingLeft = UDim.new(v86[186], 5) uiPadding.Parent = textBox local function fn40() local n = #textBox.Text local n33 = 16 if n > 5 then n33 = math.max(v86[181], 16 - n - 5) end if textBox.TextSize ~= n33 then menu:Tween(textBox, { TextSize = n33 }, tweenInfo) end local n34 = math.clamp(n * n33 * 0.6 + 12, arg3, 72) if instance.Size.X.Offset ~= n34 then menu:Tween(instance, { Size = UDim2.fromOffset(n34, controlHeight) }, tweenInfo) menu:Tween(v121, { Size = UDim2.new(v86[63], -n34 - v86[181], v86[186], 2) }, tweenInfo) end end local rt = { Outline = v121, Accent = frame, ValueBox = instance, ValueText = textBox, UpdateValueBoxSize = fn40 } arg._rt = rt arg2.Trove:Connect(textBox.FocusLost, function() local num = tonumber(textBox.Text:match("[%d%.%-]+")) if num == nil then fn38(arg, rt, true) else arg:Set(num) end fn40() end) local v124 = v119.newTouchBubble(menu, arg2) local function fn41(arg4) arg:Set(v119.valueAt(v121, arg4.Position.X, arg.Min, arg.Max)) if arg4.UserInputType == Enum.UserInputType.Touch then v124.Show(v123, fn37(arg)) end end local value = nil local function fn42(isDragging, arg4) arg._isDragging = isDragging v119.setThumbPressed(menu, v123, isDragging) if isDragging then value = arg.Value return end v124.Hide() if arg4 and value ~= nil then arg:Set(value, true) end value = nil fn40() end v118.connectDrag(arg2.Trove, v122, fn41, fn42) v118.connectDrag(arg2.Trove, v123, fn41, fn42) arg2.Trove:Connect(arg.ValueChanged, function() fn38(arg, rt, false) end) fn38(arg, rt, true) fn40() end index2._New = function(arg, arg2, arg3, arg4) local min = arg4.Min local max = arg4.Max local suffix = arg4.Suffix or "" local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = v86[39], Row = arg2, Min = min, Max = max, Step = arg4.Step or v86[63], Suffix = suffix, Value = v86[186], Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _isDragging = false, _rt = nil, }, index2) obj.Value = fn36(obj, arg4.Default or min) local v121 = v86[183] local n = math.clamp(math.max(#tostring(min) + #suffix, #tostring(max) + #suffix) * 16 * 0.6 + 12, 24, v121) arg2:AttachRight(function(arg5, arg6) fn39(obj, arg5, arg6, n) return nil end, nil, nil, arg3) return obj end index2.Set = function(arg, arg2, arg3) local v121 = fn36(arg, arg2) if v121 == arg.Value then return end arg.Value = v121 arg.ValueChanged:Fire(v121) if not arg3 then arg._onChanged(v121) arg.Changed:Fire(v121) end end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.K = function() local k = tbl17.cache.K if not k then local k2 = { c = fn35() } tbl17.cache.K = k2 k = k2 end return k.c end end do -- L local function fn35() local v115 = tbl17.E() tbl17.r() local v116 = tbl17.H() local v117 = tbl17.s() local v118 = tbl17.x() tbl17.G() local v119 = tbl17.J() local v120 = tbl17.B() local v121 = tbl17.K() local v122 = tbl17.A() local v123 = tbl17.w() local color = Color3.fromRGB(v86[108], v86[108], 255) local tbl18 = { "None", "Rainbow", "Breathing" } local tbl19 = { "None", "Rainbow" } local function fn36(parent, arg, arg2) local n = 12 if arg2 then n = 27 end local frame = Instance.new("Frame") frame.ClipsDescendants = v86[34] frame.Size = UDim2.fromOffset(0, v86[144]) frame.AutomaticSize = Enum.AutomaticSize.X frame.BorderSizePixel = v86[186] frame.BackgroundColor3 = v122.get(v86[168]) frame.Parent = parent local instance = Instance.new(v86[176]) instance.MinSize = Vector2.new(math.min(arg + n, n + 36), 22) instance.MaxSize = Vector2.new(arg + n, 22) instance.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 5) uiCorner.Parent = frame local instance2 = Instance.new(v86[85]) instance2.Color = v122.get("Outline") instance2.Parent = frame local textBox = Instance.new("TextBox") textBox.ClearTextOnFocus = false textBox.FontFace = v117.SemiBold textBox.TextColor3 = v122.get("TextColor") textBox.Text = "" textBox.AnchorPoint = Vector2.new(0, 0) textBox.BorderSizePixel = 0 textBox.BackgroundTransparency = 1 textBox.Position = UDim2.new(0, 0, 0, 0) textBox.Size = UDim2.new(1, 0, 1, 0) textBox.AutomaticSize = Enum.AutomaticSize.None textBox.TextXAlignment = Enum.TextXAlignment.Left textBox.TextSize = v86[13] textBox.Selectable = false textBox.Active = true textBox.Parent = frame local instance3 if arg2 then local uiListLayout = Instance.new("UIListLayout") uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.Padding = UDim.new(0, v86[175]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame local instance4 = Instance.new(v86[113]) instance4.PaddingRight = UDim.new(0, 5) instance4.PaddingLeft = UDim.new(0, 5) instance4.Parent = frame instance3 = Instance.new(v86[128]) instance3.LayoutOrder = -1 instance3.Size = UDim2.fromOffset(12, 12) instance3.BorderSizePixel = 0 instance3.Parent = frame local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(0, 3) uiCorner2.Parent = instance3 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, 2) uiPadding.PaddingLeft = UDim.new(0, -v86[63]) uiPadding.PaddingRight = UDim.new(0, v86[63]) uiPadding.Parent = textBox else local uiPadding = Instance.new("UIPadding") uiPadding.PaddingRight = UDim.new(0, v86[175]) uiPadding.PaddingLeft = UDim.new(0, 1) uiPadding.Parent = textBox instance3 = nil end frame.Active = true frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then task.defer(function() textBox:CaptureFocus() end) end end) return frame, textBox, instance3 end return { build = function(arg, arg2, arg3, arg4, arg5) local trove = arg2.Trove local batch = arg2.Batch local root = arg2.Root local tbl20 = { Menu = arg, Trove = trove, Batch = batch } local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, v86[170]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = root local instance = Instance.new(v86[113]) instance.PaddingTop = UDim.new(0, 9) instance.PaddingBottom = UDim.new(0, 10) instance.PaddingRight = UDim.new(0, 9) instance.PaddingLeft = UDim.new(0, 9) instance.Parent = root local frame = Instance.new("Frame") frame.LayoutOrder = -1 frame.BackgroundTransparency = 1 frame.Size = UDim2.new(1, 0, 0, 23) frame.BorderSizePixel = v86[186] frame.Parent = root local textLabel = Instance.new("TextLabel") textLabel.FontFace = v117.Medium textLabel.Text = v86[184] textLabel.AnchorPoint = Vector2.new(0, 0.5) textLabel.BackgroundTransparency = v86[63] textLabel.Position = UDim2.fromScale(v86[186], 0.5) textLabel.BorderSizePixel = 0 textLabel.AutomaticSize = Enum.AutomaticSize.XY textLabel.TextSize = v86[13] batch:Bind(textLabel, "TextColor3", v86[174]) textLabel.Parent = frame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(v86[186], v86[56]) uiPadding.Parent = textLabel local frame2 = Instance.new("Frame") frame2.AnchorPoint = Vector2.new(1, 0) frame2.Position = UDim2.fromScale(1, 0) frame2.BackgroundTransparency = v86[63] frame2.Size = UDim2.fromScale(0, 1) frame2.AutomaticSize = Enum.AutomaticSize.X frame2.BorderSizePixel = 0 frame2.Parent = frame local instance2 = Instance.new(v86[4]) instance2.SortOrder = Enum.SortOrder.LayoutOrder instance2.Parent = frame2 local uiPadding2 = Instance.new("UIPadding") uiPadding2.PaddingTop = UDim.new(0, 1) uiPadding2.PaddingRight = UDim.new(v86[186], 1) uiPadding2.PaddingLeft = UDim.new(0, 1) uiPadding2.Parent = frame2 local v124 = nil if arg4.Gradient == "editable" then local v125 = v120.new(arg, { Bare = true }) local tbl21 = { Inline = v86[34], MaxWidth = 86, Options = { "Solid", "Gradient" }, Default = arg3.Mode, OnChanged = function(arg6) if type(arg6) == "string" then arg5.SetMode(arg6) end end, } v124 = v116._New(arg, v125, trove:Extend(), tbl21) v125:Realize(frame2, tbl20, 0) else frame2.Visible = false end local frame3 = Instance.new("Frame") frame3.LayoutOrder = 0 frame3.BackgroundTransparency = 1 frame3.BorderSizePixel = 0 frame3.AutomaticSize = Enum.AutomaticSize.XY frame3.Parent = root local uiListLayout2 = Instance.new("UIListLayout") uiListLayout2.FillDirection = Enum.FillDirection.Horizontal uiListLayout2.HorizontalFlex = Enum.UIFlexAlignment.Fill uiListLayout2.Padding = UDim.new(v86[186], v86[149]) uiListLayout2.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout2.Parent = frame3 local frame4 = Instance.new("Frame") frame4.Size = UDim2.fromOffset(241, 234) frame4.BorderSizePixel = 0 frame4.BackgroundColor3 = Color3.fromRGB(v86[108], 0, 0) frame4.Parent = frame3 local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[133]) uiCorner.Parent = frame4 local frame5 = Instance.new("Frame") frame5.Size = UDim2.fromScale(1, 1) frame5.ZIndex = v86[56] frame5.BorderSizePixel = 0 frame5.BackgroundColor3 = color frame5.Parent = frame4 local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 270 uiGradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, v86[186]), NumberSequenceKeypoint.new(1, 1) }) uiGradient.Color = ColorSequence.new(Color3.new(0, 0, 0)) uiGradient.Parent = frame5 local instance3 = Instance.new(v86[98]) instance3.CornerRadius = UDim.new(v86[186], 7) instance3.Parent = frame5 local frame6 = Instance.new("Frame") frame6.Size = UDim2.fromScale(v86[63], 1) frame6.BorderSizePixel = 0 frame6.BackgroundColor3 = color frame6.Parent = frame4 local uiGradient2 = Instance.new("UIGradient") uiGradient2.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(v86[186], 0), NumberSequenceKeypoint.new(1, 1) }) uiGradient2.Parent = frame6 local instance4 = Instance.new(v86[98]) instance4.CornerRadius = UDim.new(0, 7) instance4.Parent = frame6 local instance5 = Instance.new(v86[128]) instance5.BackgroundTransparency = 1 instance5.Position = UDim2.fromOffset(v86[122], 7) instance5.Size = UDim2.new(1, -14, 1, -14) instance5.ZIndex = v86[56] instance5.BorderSizePixel = 0 instance5.Parent = frame4 local instance6 = Instance.new(v86[98]) instance6.CornerRadius = UDim.new(v86[186], 7) instance6.Parent = instance5 local frame7 = Instance.new("Frame") frame7.AnchorPoint = Vector2.new(0.5, 0.5) frame7.Position = UDim2.fromScale(0.5, v86[101]) frame7.Size = UDim2.fromOffset(v86[12], 12) frame7.ZIndex = 100 frame7.BorderSizePixel = 0 frame7.BackgroundColor3 = color frame7.Parent = instance5 local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(v86[186], 7) uiCorner2.Parent = frame7 local uiStroke = Instance.new("UIStroke") uiStroke.Color = color uiStroke.Thickness = 2 uiStroke.Parent = frame7 local frame8 = Instance.new("Frame") frame8.BackgroundTransparency = 1 frame8.Size = UDim2.fromOffset(v86[186], 234) frame8.BorderSizePixel = 0 frame8.AutomaticSize = Enum.AutomaticSize.XY frame8.Parent = frame3 local uiListLayout3 = Instance.new("UIListLayout") uiListLayout3.Padding = UDim.new(0, 23) uiListLayout3.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout3.FillDirection = Enum.FillDirection.Horizontal uiListLayout3.Parent = frame8 local instance7 = Instance.new(v86[113]) instance7.PaddingRight = UDim.new(0, v86[122]) instance7.PaddingLeft = UDim.new(0, v86[175]) instance7.Parent = frame8 local frame9 = Instance.new("Frame") frame9.Size = UDim2.fromOffset(8, 234) frame9.BorderSizePixel = 0 frame9.BackgroundColor3 = color frame9.Parent = frame8 local frame10 = Instance.new("Frame") frame10.AnchorPoint = Vector2.new(0.5, 0) frame10.Position = UDim2.fromScale(v86[101], 0) frame10.Size = UDim2.new(0, 28, 1, 0) frame10.BackgroundTransparency = 1 frame10.Active = true frame10.ZIndex = 150 frame10.Parent = frame9 local uiCorner3 = Instance.new("UICorner") uiCorner3.CornerRadius = UDim.new(0, v86[155]) uiCorner3.Parent = frame9 local uiGradient3 = Instance.new("UIGradient") uiGradient3.Rotation = v86[45] local colorSequence = ColorSequence.new local tbl21 = {} local v125 = ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, v86[186])) local v126 = ColorSequenceKeypoint.new(0.17, Color3.fromRGB(255, 255, 0)) local v127 = ColorSequenceKeypoint.new(0.33, Color3.fromRGB(v86[186], 255, 0)) local v128 = ColorSequenceKeypoint.new(0.5, Color3.fromRGB(0, 255, 255)) local v129 = ColorSequenceKeypoint.new(0.67, Color3.fromRGB(0, 0, 255)) local v130 = ColorSequenceKeypoint.new(0.83, Color3.fromRGB(255, 0, v86[108])) tbl21[1] = v125 tbl21[2] = v126 tbl21[3] = v127 tbl21[4] = v128 tbl21[5] = v129 tbl21[6] = v130 do local values = table.pack(ColorSequenceKeypoint.new(v86[63], Color3.fromRGB(255, 0, v86[186]))) table.move(values, 1, values.n, 7, tbl21) end uiGradient3.Color = colorSequence(tbl21) uiGradient3.Parent = frame9 local frame11 = Instance.new("Frame") frame11.BackgroundTransparency = 1 frame11.Position = UDim2.fromOffset(0, v86[56]) frame11.Size = UDim2.new(1, 0, 1, -8) frame11.ZIndex = 2 frame11.BorderSizePixel = 0 frame11.Parent = frame9 local instance8 = Instance.new(v86[128]) instance8.AnchorPoint = Vector2.new(0.5, 0.5) instance8.Position = UDim2.fromScale(0.5, 0.5) instance8.Size = UDim2.fromOffset(16, v86[162]) instance8.ZIndex = 100 instance8.BorderSizePixel = 0 instance8.BackgroundColor3 = color instance8.Parent = frame11 local instance9 = Instance.new(v86[85]) instance9.Color = color instance9.Thickness = 2 instance9.Parent = instance8 local uiCorner4 = Instance.new("UICorner") uiCorner4.CornerRadius = UDim.new(v86[63], 0) uiCorner4.Parent = instance8 local frame12 = Instance.new("Frame") frame12.Size = UDim2.fromOffset(8, 234) frame12.BorderSizePixel = 0 frame12.BackgroundColor3 = color frame12.Visible = arg4.AlphaEnabled frame12.Parent = frame8 local frame13 = Instance.new("Frame") frame13.AnchorPoint = Vector2.new(0.5, 0) frame13.Position = UDim2.fromScale(0.5, 0) frame13.Size = UDim2.new(v86[186], 28, 1, v86[186]) frame13.BackgroundTransparency = 1 frame13.Active = true frame13.ZIndex = v86[110] frame13.Parent = frame12 local uiCorner5 = Instance.new("UICorner") uiCorner5.CornerRadius = UDim.new(v86[186], 3) uiCorner5.Parent = frame12 local imageLabel = Instance.new("ImageLabel") imageLabel.ScaleType = Enum.ScaleType.Tile imageLabel.Image = "rbxassetid://18274452449" imageLabel.BackgroundTransparency = v86[63] imageLabel.Size = UDim2.fromScale(1, 1) imageLabel.TileSize = UDim2.fromOffset(8, 8) imageLabel.BorderSizePixel = v86[186] imageLabel.Parent = frame12 local uiCorner6 = Instance.new("UICorner") uiCorner6.CornerRadius = UDim.new(0, v86[155]) uiCorner6.Parent = imageLabel local instance10 = Instance.new(v86[128]) instance10.Size = UDim2.fromScale(1, 1) instance10.BorderSizePixel = 0 instance10.BackgroundColor3 = arg3.Color instance10.Parent = frame12 local uiCorner7 = Instance.new("UICorner") uiCorner7.CornerRadius = UDim.new(v86[186], 3) uiCorner7.Parent = instance10 local instance11 = Instance.new(v86[46]) instance11.Rotation = 90 instance11.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(v86[63], 0) }) instance11.Parent = instance10 local instance12 = Instance.new(v86[128]) instance12.BackgroundTransparency = v86[63] instance12.Position = UDim2.fromOffset(0, 4) instance12.Size = UDim2.new(1, 0, 1, -v86[162]) instance12.ZIndex = 2 instance12.BorderSizePixel = 0 instance12.Parent = frame12 local frame14 = Instance.new("Frame") frame14.AnchorPoint = Vector2.new(0.5, 0.5) frame14.Position = UDim2.fromScale(0.5, 0.5) frame14.Size = UDim2.fromOffset(12, 12) frame14.ZIndex = 100 frame14.BorderSizePixel = 0 frame14.BackgroundColor3 = color frame14.Parent = instance12 local uiStroke2 = Instance.new("UIStroke") uiStroke2.Color = color uiStroke2.Thickness = 2 uiStroke2.Parent = frame14 local uiCorner8 = Instance.new("UICorner") uiCorner8.CornerRadius = UDim.new(1, 0) uiCorner8.Parent = frame14 local frame15 = Instance.new("Frame") frame15.LayoutOrder = 1 frame15.BackgroundTransparency = 1 frame15.Size = UDim2.new(1, 0, v86[186], v86[159]) frame15.BorderSizePixel = 0 frame15.Parent = root local textLabel2 = Instance.new("TextLabel") textLabel2.FontFace = v117.Medium textLabel2.Text = "Input" textLabel2.AnchorPoint = Vector2.new(0, v86[101]) textLabel2.BackgroundTransparency = 1 textLabel2.Position = UDim2.fromScale(0, v86[101]) textLabel2.BorderSizePixel = v86[186] textLabel2.AutomaticSize = Enum.AutomaticSize.XY textLabel2.TextSize = 16 batch:Bind(textLabel2, "TextColor3", "TextColor") textLabel2.Parent = frame15 local frame16 = Instance.new("Frame") frame16.BackgroundTransparency = v86[63] frame16.Size = UDim2.fromScale(v86[186], 1) frame16.AutomaticSize = Enum.AutomaticSize.X frame16.BorderSizePixel = v86[186] frame16.Parent = frame15 local uiListLayout4 = Instance.new("UIListLayout") uiListLayout4.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout4.Parent = frame16 local uiPadding3 = Instance.new("UIPadding") uiPadding3.PaddingTop = UDim.new(0, 1) uiPadding3.PaddingLeft = UDim.new(0, v86[63]) uiPadding3.Parent = frame16 local frame17 = Instance.new("Frame") frame17.AnchorPoint = Vector2.new(1, 0) frame17.Position = UDim2.new(1, -v86[63], 0, 0) frame17.BackgroundTransparency = v86[63] frame17.Size = UDim2.fromScale(0, v86[63]) frame17.AutomaticSize = Enum.AutomaticSize.X frame17.BorderSizePixel = 0 frame17.Parent = frame15 local uiListLayout5 = Instance.new("UIListLayout") uiListLayout5.FillDirection = Enum.FillDirection.Horizontal uiListLayout5.Padding = UDim.new(0, 7) uiListLayout5.Parent = frame17 local uiPadding4 = Instance.new("UIPadding") uiPadding4.PaddingTop = UDim.new(0, 1) uiPadding4.PaddingLeft = UDim.new(0, 1) uiPadding4.Parent = frame17 local tbl22 = { Repaint = function(...) end } local v131 = nil if arg4.AlphaEnabled then local v132 = v120.new(arg, { Bare = true }) v132:AttachRight(function(arg6) local v133, v134 = fn36(arg6, 49, false) v131 = v134 return v133 end, nil, nil, trove) v132:Realize(frame17, tbl20, 0) end local v132 = nil local _v133 = nil local v134 = v120.new(arg, { Bare = true }) v134:AttachRight(function(arg6) local v135, v136, v137 = fn36(arg6, v86[110], v86[34]) v132 = v136 _v133 = v137 return v135 end, nil, nil, trove) v134:Realize(frame17, tbl20, 1) if v131 ~= nil then local v135 = v131 trove:Connect(v135.FocusLost, function() local v136 = tonumber local str7 = v135.Text:gsub("%%", "") local v137 = v136(str7) if v137 ~= nil then arg5.SetAlpha(1 - math.clamp(v137 / 100, 0, 1)) else tbl22.Repaint(true) end end) end if v132 ~= nil then local v135 = v132 trove:Connect(v135.FocusLost, function() local v136, v137 = v107(Color3.fromHex, v135.Text) if v136 then arg5.SetRgb(v137) end end) end local frame18 = Instance.new("Frame") frame18.LayoutOrder = v86[56] frame18.Visible = arg3.Mode == "Gradient" frame18.BackgroundTransparency = 1 frame18.Size = UDim2.fromScale(v86[63], 0) frame18.BorderSizePixel = 0 frame18.AutomaticSize = Enum.AutomaticSize.XY frame18.Parent = root local frame19 = Instance.new("Frame") frame19.Active = v86[34] frame19.Position = UDim2.fromOffset(29, 0) frame19.Size = UDim2.new(1, -v86[60], 0, v86[144]) frame19.BorderSizePixel = 0 frame19.BackgroundColor3 = color frame19.Parent = frame18 local instance13 = Instance.new(v86[46]) instance13.Parent = frame19 local uiCorner9 = Instance.new("UICorner") uiCorner9.CornerRadius = UDim.new(0, 5) uiCorner9.Parent = frame19 local frame20 = Instance.new("Frame") frame20.BackgroundTransparency = v86[63] frame20.Size = UDim2.new(1, 0, 0, 29) frame20.Position = UDim2.fromOffset(0, -1) frame20.BorderSizePixel = 0 frame20.ZIndex = 2 frame20.Parent = frame19 local function createTextButton(text, arg6) local textButton = Instance.new("TextButton") textButton.Active = v86[34] textButton.Text = "" textButton.Size = UDim2.fromOffset(22, 22) textButton.BorderSizePixel = 0 textButton.AutoButtonColor = false if arg6 then textButton.AnchorPoint = Vector2.new(1, 0) textButton.Position = UDim2.fromScale(1, 0) end batch:Bind(textButton, "BackgroundColor3", "Background") textButton.Parent = frame18 local uiCorner10 = Instance.new("UICorner") uiCorner10.CornerRadius = UDim.new(0, 5) uiCorner10.Parent = textButton local uiStroke3 = Instance.new("UIStroke") uiStroke3.BorderOffset = UDim.new(v86[186], -v86[63]) uiStroke3.ApplyStrokeMode = Enum.ApplyStrokeMode.Border batch:Bind(uiStroke3, "Color", v86[120]) uiStroke3.Parent = textButton local textLabel3 = Instance.new("TextLabel") textLabel3.FontFace = v117.Medium textLabel3.TextColor3 = Color3.fromRGB(132, 133, 139) textLabel3.Text = text textLabel3.BackgroundTransparency = 1 textLabel3.Size = UDim2.new(1, 1, 1, -2) textLabel3.BorderSizePixel = v86[186] textLabel3.TextWrapped = true textLabel3.TextSize = 22 textLabel3.Parent = textButton local uiPadding5 = Instance.new("UIPadding") uiPadding5.PaddingBottom = UDim.new(0, 2) uiPadding5.PaddingLeft = UDim.new(0, -1) uiPadding5.PaddingRight = UDim.new(0, v86[63]) uiPadding5.Parent = textLabel3 return textButton end local v135 = createTextButton("-", v86[153]) local v136 = createTextButton("+", true) local imageLabel2 = Instance.new("ImageLabel") imageLabel2.Active = true imageLabel2.AnchorPoint = Vector2.new(0.5, 0) imageLabel2.Image = "rbxassetid://127264563810956" imageLabel2.BackgroundTransparency = v86[63] imageLabel2.Position = UDim2.new(0.5, -1, v86[186], -1) imageLabel2.Size = UDim2.fromOffset(10, 29) imageLabel2.BorderSizePixel = 0 batch:Bind(imageLabel2, "ImageColor3", "Outline") imageLabel2.Parent = frame19 local imageLabel3 = Instance.new("ImageLabel") imageLabel3.Size = UDim2.new(v86[63], -2, 0, 27) imageLabel3.Image = "rbxassetid://127264563810956" imageLabel3.BackgroundTransparency = 1 imageLabel3.Position = UDim2.fromOffset(1, 1) imageLabel3.ZIndex = 2 imageLabel3.BorderSizePixel = 0 imageLabel3.Parent = imageLabel2 local frame21 = Instance.new("Frame") frame21.Position = UDim2.fromOffset(1, 1) frame21.Size = UDim2.new(v86[63], -2, 0, v86[71]) frame21.BorderSizePixel = 0 frame21.BackgroundColor3 = Color3.fromRGB(255, 0, 0) frame21.Parent = imageLabel3 local instance14 = Instance.new(v86[46]) instance14.Rotation = v86[45] instance14.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, color), ColorSequenceKeypoint.new(1, Color3.fromRGB(211, 211, 211)) }) instance14.Parent = frame21 local instance15 = Instance.new(v86[128]) instance15.LayoutOrder = 5 instance15.BackgroundTransparency = 1 instance15.Size = UDim2.new(1, 0, v86[186], 23) instance15.BorderSizePixel = 0 instance15.Visible = arg4.Animatable instance15.Parent = root local textLabel3 = Instance.new("TextLabel") textLabel3.FontFace = v117.Medium textLabel3.Text = "Animation" textLabel3.AnchorPoint = Vector2.new(0, v86[101]) textLabel3.BackgroundTransparency = 1 textLabel3.Position = UDim2.fromScale(v86[186], 0.5) textLabel3.BorderSizePixel = 0 textLabel3.AutomaticSize = Enum.AutomaticSize.XY textLabel3.TextSize = v86[13] batch:Bind(textLabel3, v86[167], v86[174]) textLabel3.Parent = instance15 local frame22 = Instance.new("Frame") frame22.AnchorPoint = Vector2.new(v86[63], 0) frame22.Position = UDim2.fromScale(1, 0) frame22.BackgroundTransparency = 1 frame22.Size = UDim2.fromScale(v86[186], 1) frame22.AutomaticSize = Enum.AutomaticSize.X frame22.BorderSizePixel = v86[186] frame22.Parent = instance15 local uiListLayout6 = Instance.new("UIListLayout") uiListLayout6.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout6.Parent = frame22 local instance16 = Instance.new(v86[128]) instance16.LayoutOrder = 8 instance16.BackgroundTransparency = 1 instance16.Size = UDim2.fromScale(v86[63], 0) instance16.AutomaticSize = Enum.AutomaticSize.Y instance16.BorderSizePixel = v86[186] instance16.Visible = arg4.Animatable and arg4.AnimationMode == "Breathing" instance16.Parent = root local allowBreathing = arg4.AllowBreathing and tbl18 or tbl19 local v137 = v120.new(arg, { Bare = true }) local tbl23 = { Inline = true, MaxWidth = 100, Options = allowBreathing, Default = arg4.AnimationMode, OnChanged = function(arg6) if type(arg6) == "string" then arg5.SetAnimationMode(arg6) instance16.Visible = arg4.Animatable and arg6 == "Breathing" end end, } local v138 = v116._New(arg, v137, trove:Extend(), tbl23) v137:Realize(frame22, tbl20, 0) local frame23 = Instance.new("Frame") frame23.LayoutOrder = 6 frame23.BackgroundTransparency = v86[63] frame23.Size = UDim2.fromScale(1, v86[186]) frame23.AutomaticSize = Enum.AutomaticSize.Y frame23.BorderSizePixel = 0 frame23.Visible = arg4.Animatable frame23.Parent = root local v139 = v120.new(arg, { Label = "Speed", Height = 24, MediumTitle = true, RightOffset = -1 }) local tbl24 = { Label = "Speed", Min = 0, Max = v86[175], Step = v86[62], Default = arg4.AnimationSpeed, OnChanged = function(arg6) arg5.SetAnimationSpeed(arg6) end, } local v140 = v121._New(arg, v139, trove:Extend(), tbl24) v139:Realize(frame23, tbl20, 0) local n = 100 if arg4.AnimationBreathingMin ~= nil then n = math.floor((1 - arg4.AnimationBreathingMin) * 100 + 0.5) end local n33 = 0 if arg4.AnimationBreathingMax ~= nil then n33 = math.floor((1 - arg4.AnimationBreathingMax) * v86[91] + 0.5) end local v141 = v120.new(arg, { Label = "Alpha Range", Height = 24, MediumTitle = true, RightOffset = -1 }) local tbl25 = { Label = v86[132], Min = 0, Max = 100, Step = 1, Default = { Min = n33, Max = n }, OnChanged = function(arg6) local setAnimationBreathingRange = arg5.SetAnimationBreathingRange if setAnimationBreathingRange ~= nil then setAnimationBreathingRange(arg6) end end, } local v142 = v119._New(arg, v141, trove:Extend(), tbl25) v141:Realize(instance16, tbl20, 0) local tbl26 = {} local v143 = trove:Extend() local function fn37(arg6) local n34 = math.clamp((arg6 - frame19.AbsolutePosition.X) / math.max(frame19.AbsoluteSize.X - 1, 1), 0, 1) local huge = math.huge local n35 = 1 for k, v144 in arg3.Stops, nil, nil do local n36 = math.abs(v144.Time - n34) if n36 < huge then huge = n36 n35 = k end end return n35 end local function fn38(arg6) if arg3.Mode ~= "Gradient" then return end if arg6 then arg5.SetDragMode(v86[150]) elseif arg3._dragMode == "stop" then arg5.SetDragMode(nil) end tbl22.Repaint(true) end local function fn39(arg6) arg5.MoveActiveStop(math.clamp((arg6.Position.X - frame19.AbsolutePosition.X) / math.max(frame19.AbsoluteSize.X - v86[63], 1), 0, 1)) end local function fn40() v143:Destroy() v143 = trove:Extend() for _, v144 in tbl26, nil, nil do v144.Marker:Destroy() end table.clear(tbl26) if arg3.Mode ~= v86[90] then return end for k, v144 in arg3.Stops, nil, nil do local flag19 = k == arg3.ActiveStopIndex local imageButton = Instance.new("ImageButton") imageButton.Active = true imageButton.AutoButtonColor = false imageButton.ImageColor3 = v122.get(v86[120]) imageButton.AnchorPoint = Vector2.new(0.5, 0) imageButton.Image = "rbxassetid://127264563810956" imageButton.BackgroundTransparency = 1 imageButton.Position = UDim2.new(v144.Time, -v86[63], 0, -v86[63]) imageButton.Size = flag19 and UDim2.fromOffset(10, 29) or UDim2.fromOffset(8, 24) imageButton.BorderSizePixel = 0 imageButton.Parent = frame20 local imageLabel4 = Instance.new("ImageLabel") imageLabel4.Size = UDim2.new(v86[63], -2, 1, -v86[56]) imageLabel4.Image = "rbxassetid://127264563810956" imageLabel4.BackgroundTransparency = 1 imageLabel4.Position = UDim2.fromOffset(v86[63], v86[63]) imageLabel4.BorderSizePixel = 0 imageLabel4.Parent = imageButton local frame24 = Instance.new("Frame") frame24.Position = UDim2.fromOffset(1, 1) frame24.Size = flag19 and UDim2.new(1, -v86[56], 0, 19) or UDim2.new(1, -2, 0, 16) frame24.BorderSizePixel = v86[186] frame24.BackgroundColor3 = v144.Value frame24.Parent = imageLabel4 local uiGradient4 = Instance.new("UIGradient") uiGradient4.Rotation = 90 local new = ColorSequenceKeypoint.new local color2 = Color3.fromRGB uiGradient4.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, color), new(1, color2(211, 211, 211)) }) uiGradient4.Parent = frame24 if not flag19 then imageButton.ImageTransparency = v86[62] end tbl26[k] = { Marker = imageButton, Accent = frame24 } v118.connectClick(v143, imageButton, function() arg5.SelectStop(k) end) v118.connectDrag(v143, imageButton, fn39, function(arg6) if arg6 then arg5.SelectStop(k) end fn38(arg6) end) end end local function fn41(arg6) local v144 = arg:DragTweenInfo() for k, v145 in tbl26, nil, nil do local v146 = arg3.Stops[k] if v146 ~= nil then local imageTransparency = k == arg3.ActiveStopIndex local udim2 = UDim2.new(v146.Time, -1, 0, -1) local udim22 = imageTransparency and UDim2.fromOffset(10, 29) or UDim2.fromOffset(v86[162], v86[61]) local udim23 = imageTransparency and UDim2.new(1, -2, 0, 19) or UDim2.new(1, -v86[56], 0, v86[13]) imageTransparency = imageTransparency and 0 or v86[62] if arg6 then v145.Marker.Position = udim2 v145.Marker.Size = udim22 v145.Marker.ImageTransparency = imageTransparency v145.Accent.Size = udim23 v145.Accent.BackgroundColor3 = v146.Value else arg:Tween(v145.Marker, { Position = udim2, Size = udim22, ImageTransparency = imageTransparency }, v144) arg:Tween(v145.Accent, { Size = udim23, BackgroundColor3 = v146.Value }, v144) end end end end local function _fn42(arg6) instance13.Color = v115.toSequence(arg3.Stops) local v144 = arg3.Stops[arg3.ActiveStopIndex] local color2 = arg3.Color local udim2 = UDim2.new(v86[101], -v86[63], 0, -1) if v144 ~= nil then color2 = v144.Value udim2 = UDim2.new(v144.Time, -1, v86[186], -v86[63]) end frame21.BackgroundColor3 = color2 local udim22 = UDim2.fromOffset(v86[133], v86[123]) if arg3._dragMode == "stop" then udim22 = UDim2.fromOffset(12, v86[31]) end if #tbl26 ~= #arg3.Stops then fn40() else fn41(arg6) end if arg6 then imageLabel2.Position = udim2 imageLabel2.Size = udim22 else arg:Tween(imageLabel2, { Position = udim2, Size = udim22 }, arg:DragTweenInfo()) end end v118.connectDrag(trove, frame4, function(arg6) local n34 = math.max(frame4.AbsoluteSize.X - 1, 1) local n35 = math.max(frame4.AbsoluteSize.Y - v86[63], 1) arg5.SetHSVA(arg3.Hue, math.clamp((arg6.Position.X - frame4.AbsolutePosition.X) / n34, v86[186], 1), 1 - math.clamp((arg6.Position.Y - frame4.AbsolutePosition.Y) / n35, 0, v86[63]), arg3.Alpha) end, function(arg6) local str7 = nil if arg6 then str7 = "sat" end arg5.SetDragMode(str7) end) v118.connectDrag(trove, frame10, function(arg6) local v144 = v86[186] arg5.SetHSVA(math.clamp((arg6.Position.Y - frame9.AbsolutePosition.Y) / math.max(frame9.AbsoluteSize.Y - 1, 1), v144, 1), arg3.Sat, arg3.Val, arg3.Alpha) end, function(arg6) local str7 = nil if arg6 then str7 = "hue" end arg5.SetDragMode(str7) end) v118.connectDrag(trove, frame13, function(arg6) local n34 = math.clamp((arg6.Position.Y - frame12.AbsolutePosition.Y) / math.max(frame12.AbsoluteSize.Y - 1, 1), 0, 1) arg5.SetHSVA(arg3.Hue, arg3.Sat, arg3.Val, n34) end, function(arg6) local str7 = nil if arg6 then str7 = "alpha" end arg5.SetDragMode(str7) end) v118.connectClick(trove, frame19, function() if arg3.Mode == v86[90] then arg5.SelectStop(fn37(v123.getPointerPosition().X)) end end) v118.connectDrag(trove, frame19, fn39, function(arg6) if arg3.Mode ~= "Gradient" then return end if arg6 then arg5.SelectStop(fn37(v123.getPointerPosition().X)) end fn38(arg6) if not (n26 >= 4814) then return end -- (anti-tamper freeze trap removed) end) v118.connectDrag(trove, imageLabel2, fn39, fn38) v118.connectClick(trove, v136, function() arg5.AddStop() end) v118.connectClick(trove, v135, function() arg5.RemoveStop() end) local function repaint(snap) local hueColor = Color3.fromHSV(arg3.Hue, 1, 1) frame4.BackgroundColor3 = hueColor frame7.Position = UDim2.new(arg3.Sat, 0, 1 - arg3.Val, 0) frame7.BackgroundColor3 = arg3.Color instance8.Position = UDim2.new(0.5, 0, arg3.Hue, 0) frame14.Position = UDim2.new(0.5, 0, arg3.Alpha, 0) frame14.BackgroundColor3 = arg3.Color instance10.BackgroundColor3 = arg3.Color if arg3.Mode == v86[90] then _fn42(snap) else frame21.BackgroundColor3 = arg3.Color end if v132 ~= nil and not v132:IsFocused() then v132.Text = arg3.Color:ToHex() end if v131 ~= nil and not v131:IsFocused() then v131.Text = tostring(math.floor((1 - arg3.Alpha) * 100 + 0.5)) end if _v133 ~= nil then _v133.BackgroundColor3 = arg3.Color end end tbl22.Repaint = repaint return { Repaint = repaint, SyncMode = function(arg6) frame18.Visible = arg6 == "Gradient" if v124 ~= nil then v124:Set(arg6, true) end end, SyncAnimation = function(arg6, arg7) v138:Set(arg6, true) v140:Set(arg7, v86[34]) instance16.Visible = arg4.Animatable and arg6 == "Breathing" end, SyncAnimationBreathingRange = function(arg6) v142:Set(arg6, v86[34]) end, SetAnimationEnabled = function(visible, arg6) instance15.Visible = visible frame23.Visible = visible instance16.Visible = visible and v138.Value == "Breathing" local v144 = tbl18 if not arg6 then v144 = tbl19 end v138:SetOptions(v144) end, } end } end tbl17.L = function() local l = tbl17.cache.L if not l then local l2 = { c = fn35() } tbl17.cache.L = l2 l = l2 end return l.c end end do -- M local function fn35() local v115 = tbl17.g() tbl17.k() local v116 = tbl17.L() local v117 = tbl17.E() tbl17.r() local v118 = tbl17.u() local v119 = tbl17.x() local v120 = tbl17.G() tbl17.B() local color = Color3.fromRGB(255, 255, 255) local index2 = {} index2.__index = index2 local function fn36(arg) return arg.Stops[arg.ActiveStopIndex] end local function fn37(arg, arg2) local flag19 = arg2 == "Gradient" and arg.Gradient ~= "off" local mode = "Solid" if flag19 then mode = "Gradient" end arg.Mode = mode if mode == "Gradient" then arg.Stops = v117.ensure(arg.Stops, arg.Color) arg.ActiveStopIndex = math.clamp(arg.ActiveStopIndex, 1, #arg.Stops) local v121 = fn36(arg) if v121 ~= nil then arg.Color = v121.Value local v122, v123, v124 = v121.Value:ToHSV() arg.Hue = v122 arg.Sat = v123 arg.Val = v124 end end local panel = arg._panel if panel ~= nil then panel.SyncMode(mode) end end index2._ApplyState = function(I,W)local N=Color3.fromHSV(I.Hue,I.Sat,I.Val);local P=nil;if I.Mode=="Gradient"then I.Stops= v117 .ensure(I.Stops,N);I.ActiveStopIndex=math.clamp(I.ActiveStopIndex,1,#I.Stops);local a= fn36 (I);if a~=nil then a.Value=N;P=a.Value;else P=N;end;else P=N;end;I.Color=P;N=I._rt;if N~=nil then local a=I.Mode=="Gradient";N.Swatch.BackgroundColor3=if a then color else P;N.SwatchGradient.Enabled=a;if a then N.SwatchGradient.Color= v117 .toSequence(I.Stops);else N.SwatchGradient.Color=ColorSequence.new(P);end;end;I.Value={Rgb=P,Alpha=I.Alpha,Stops=if I.Mode=="Gradient"then( v117 .clone(I.Stops))else nil};P=I._panel;if P~=nil then P.Repaint(I._dragMode~=nil or I.AnimationMode~="None");end;I.ValueChanged:Fire(I.Value);if not W then I._onChanged(I.Value);I.Changed:Fire(I.Value);end;end local function fn38(arg, arg2) local menu = arg._menu local v121 = v120.new(menu, arg._trove, { Trigger = arg2, Size = UDim2.fromOffset(300, 300), AutomaticSize = Enum.AutomaticSize.Y, CornerRadius = 13, FlatBackground = v86[34], Glow = v86[34], ParentEntry = arg._parentOverlay, Place = v120.placeBelow(1, 2), OnToggle = function(arg3) if arg3 then local panel = arg._panel if panel ~= nil then panel.Repaint(v86[34]) end end end, }) arg._popup = v121 if v118.Scale ~= 1 then local uiScale = Instance.new("UIScale") uiScale.Scale = v118.Scale uiScale.Parent = v121.Root end local v122 = v116.build(menu, v121, arg, { AlphaEnabled = arg.AlphaEnabled, Gradient = arg.Gradient, Animatable = arg.Animatable, AllowBreathing = arg._allowBreathing, AnimationMode = arg.AnimationMode, AnimationSpeed = arg.AnimationSpeed, AnimationBreathingMin = arg.AnimationBreathingRange and arg.AnimationBreathingRange.Min, AnimationBreathingMax = arg.AnimationBreathingRange and arg.AnimationBreathingRange.Max, }, { SetHSVA = function(hue, sat, val, alpha) arg.Hue = hue arg.Sat = sat arg.Val = val arg.Alpha = alpha arg:_ApplyState(false) end, SetDragMode = function(dragMode) arg._dragMode = dragMode arg.Dragging = dragMode ~= nil end, SelectStop = function(arg3) if arg.Mode ~= "Gradient" or #arg.Stops == 0 then return end arg.ActiveStopIndex = math.clamp(arg3, v86[63], #arg.Stops) local v122 = fn36(arg) if v122 ~= nil then arg.Color = v122.Value local v123 = arg local v124 = arg local v125 = arg local v126, v127, v128 = v122.Value:ToHSV() v123.Hue = v126 v124.Sat = v127 v125.Val = v128 end arg:_ApplyState(true) end, MoveActiveStop = function(arg3) local v122 = fn36(arg) if arg.Mode ~= "Gradient" or v122 == nil or arg.ActiveStopIndex == 1 or arg.ActiveStopIndex == #arg.Stops then return end v122.Time = math.clamp(arg3, 0, 1) arg.ActiveStopIndex = v117.sort(arg.Stops, v122) arg:_ApplyState(false) end, AddStop = function() if arg.Mode ~= "Gradient" then fn37(arg, "Gradient") end local v122 = fn36(arg) local n = 0.5 if v122 ~= nil then if arg.ActiveStopIndex < #arg.Stops then n = (v122.Time + arg.Stops[arg.ActiveStopIndex + 1].Time) * 0.5 elseif arg.ActiveStopIndex > 1 then n = (arg.Stops[arg.ActiveStopIndex - 1].Time + v122.Time) * v86[101] end end local tbl18 = { Time = n, Value = arg.Color } table.insert(arg.Stops, tbl18) arg.ActiveStopIndex = v117.sort(arg.Stops, tbl18) arg:_ApplyState(false) end, RemoveStop = function() if arg.Mode ~= "Gradient" or #arg.Stops <= v86[56] then return end local activeStopIndex = arg.ActiveStopIndex if activeStopIndex == 1 or activeStopIndex == #arg.Stops then return end local time = arg.Stops[activeStopIndex].Time table.remove(arg.Stops, activeStopIndex) local huge = math.huge local v122 = nil local activeStopIndex2 = 1 for k, v123 in arg.Stops, v122, nil do local n = math.abs(v123.Time - time) if n < huge then huge = n activeStopIndex2 = k end end arg.ActiveStopIndex = activeStopIndex2 arg._dragMode = nil arg.Dragging = v86[153] arg:_ApplyState(false) end, SetMode = function(arg3) fn37(arg, arg3) arg:_ApplyState(false) end, SetAlpha = function(arg3) arg.Alpha = math.clamp(arg3, 0, 1) arg:_ApplyState(v86[153]) end, SetRgb = function(arg3) arg:Set({ Rgb = arg3, Alpha = arg.Alpha, Stops = arg.Value.Stops }, false) end, SetAnimationMode = function(arg3) arg:SetAnimationMode(arg3) end, SetAnimationSpeed = function(arg3) arg:SetAnimationSpeed(arg3) end, SetAnimationBreathingRange = function(arg3) arg:SetAnimationBreathingRange(arg3) end, }) arg._panel = v122 v122.Repaint(true) end local function createTextButton(arg, parent, arg2) local textButton = Instance.new("TextButton") textButton.AnchorPoint = Vector2.new(1, 0.5) textButton.Position = UDim2.fromScale(1, 0.5) textButton.Size = UDim2.fromOffset(v86[32], v86[32]) textButton.BorderSizePixel = 0 textButton.BackgroundColor3 = arg.Color textButton.Text = "" textButton.AutoButtonColor = false textButton.Parent = parent local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], v86[175]) uiCorner.Parent = textButton local uiGradient = Instance.new("UIGradient") uiGradient.Enabled = arg.Mode == "Gradient" if arg.Mode == "Gradient" then uiGradient.Color = v117.toSequence(arg.Stops) else uiGradient.Color = ColorSequence.new(arg.Color) end uiGradient.Parent = textButton arg._rt = { Swatch = textButton, SwatchGradient = uiGradient } arg._parentOverlay = arg2.ParentOverlay v119.connectClick(arg2.Trove, textButton, function() if arg._panel == nil then fn38(arg, textButton) end local popup = arg._popup if popup ~= nil then popup:Toggle() end end) return textButton end index2._New = function(arg, arg2, arg3, arg4) local gradient = arg4.Gradient or "off" local default = arg4.Default local n = v86[63] local rgb = color local stops = nil if default ~= nil then rgb = color if default.Rgb ~= nil then rgb = default.Rgb end if default.Alpha ~= nil then n = math.clamp(default.Alpha, 0, 1) end stops = default.Stops end local str7 = "Solid" if gradient ~= "off" then if gradient == "only" or stops ~= nil and #stops > v86[186] then str7 = "Gradient" end end local v121 = v117.ensure(stops, rgb) local v122, v123, v124 = rgb:ToHSV() local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "ColorPicker", Row = arg2, AlphaEnabled = arg4.Alpha == true, Gradient = gradient, Mode = str7, Hue = v122, Sat = v123, Val = v124, Alpha = n, Color = rgb, Stops = v121, ActiveStopIndex = 1, Dragging = false, _dragMode = nil, Animatable = arg4.Animatable == true, AnimationMode = "None", AnimationSpeed = 1, AnimationBreathingRange = nil, Value = { Rgb = rgb, Alpha = n, Stops = str7 == "Gradient" and v117.clone(v121) or nil }, Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), AnimationChanged = arg3:Add(v115.new()), AnimationSpeedChanged = arg3:Add(v115.new()), AnimationBreathingRangeChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _allowBreathing = arg4.Alpha == true, _rt = nil, _panel = nil, _popup = nil, _parentOverlay = nil, }, index2) arg2:AttachRight(function(arg5, arg6) return createTextButton(obj, arg5, arg6) end, 18, nil, arg3) return obj end index2.Set = function(arg, arg2, arg3) local rgb = arg2.Rgb or arg.Color local alpha = arg.Alpha if arg2.Alpha ~= nil then alpha = math.clamp(arg2.Alpha, 0, v86[63]) end local stops = arg2.Stops local mode = arg.Mode if arg.Gradient == v86[172] then stops = nil mode = "Solid" elseif stops ~= nil then if v86[186] < #stops then mode = "Gradient" else mode = "Solid" end end local hue, v121, v122 = rgb:ToHSV() if mode == "Gradient" then local ensure = v117.ensure stops = stops or arg.Stops arg.Stops = ensure(stops, rgb) arg.ActiveStopIndex = math.clamp(arg.ActiveStopIndex, 1, #arg.Stops) local v123 = fn36(arg) if v123 ~= nil then v123.Value = rgb end elseif stops ~= nil and #stops > 0 then arg.Stops = v117.ensure(stops, rgb) end local flag19 = arg._dragMode == "sat" or arg._dragMode == v86[164] if not flag19 then flag19 = not (v122 > 0 and v121 > 0) end if flag19 then hue = arg.Hue end fn37(arg, mode) arg.Hue = hue arg.Sat = v121 arg.Val = v122 arg.Alpha = alpha arg:_ApplyState(arg3) end index2.EnableAnimation = function(arg, allowBreathing) arg.Animatable = v86[34] arg._allowBreathing = allowBreathing local panel = arg._panel if panel ~= nil then panel.SetAnimationEnabled(true, allowBreathing) end return arg end index2.SetAnimationMode = function(arg, animationMode, arg2) if arg.AnimationMode ~= animationMode then arg.AnimationMode = animationMode local panel = arg._panel if panel ~= nil then panel.SyncAnimation(animationMode, arg.AnimationSpeed) end if not arg2 then arg.AnimationChanged:Fire(animationMode) end end return arg end index2.SetAnimationSpeed = function(arg, animationSpeed, arg2) if arg.AnimationSpeed ~= animationSpeed then arg.AnimationSpeed = animationSpeed local panel = arg._panel if panel ~= nil then panel.SyncAnimation(arg.AnimationMode, animationSpeed) end if not arg2 then arg.AnimationSpeedChanged:Fire(animationSpeed) end end return arg end index2.SetAnimationBreathingRange = function(arg, animationBreathingRange, arg2) arg.AnimationBreathingRange = animationBreathingRange local panel = arg._panel if panel ~= nil then panel.SyncAnimationBreathingRange(animationBreathingRange) end if not arg2 then arg.AnimationBreathingRangeChanged:Fire(animationBreathingRange) end return arg end index2.SetOpen = function(arg, arg2) local popup = arg._popup if popup == nil then local rt = arg._rt if rt == nil then return end fn38(arg, rt.Swatch) popup = arg._popup end if popup ~= nil then popup:SetOpen(arg2) end end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.M = function() local m = tbl17.cache.M if not m then m = { c = fn35() } tbl17.cache.M = m end return m.c end end do -- N local function fn35()local I= tbl17 .D(); tbl17 .M(); tbl17 .r();local l={bind=function(W,N)local P=false;local function a()if P or W.Dragging then return;end;local e=N.Read();if e~=nil then W:Set(e,true);end;end;W:OnChanged(function(e)P=true;N.Write(e);P=false;end);for P,P_25 in N.Changed,nil,nil do W:Connect(P_25,a);end;a();return W;end};local function W(N,P)if N.GetBase~=nil then return N:GetBase(P);end;return N:Get(P);end;l.bindConfig=function(N,P,a)local e,c,E=a.Config,a.Transparency,a.Gradient=="editable"or a.Gradient=="only";a={P:Changed(e)};if c~=nil then table.insert(a,P:Changed(c));end;return l.bind(N,{Read=function()local N,p=W(P,e),if c~=nil then(W(P,c))else nil;if E then return I.decodeSequence(N,p);end;return I.decodeSolid(N,p);end,Write=function(W)local N;if E then local E;E,N=I.encodeSequence(W);P:Set(e,E);else local E;E,N=I.encodeSolid(W);P:Set(e,E);end;if c~=nil then P:Set(c,N);end;end,Changed=a});end;return l;end tbl17.N = function() local n = tbl17.cache.N if not n then local n33 = { c = fn35() } tbl17.cache.N = n33 n = n33 end return n.c end end do -- Q local function fn35() tbl17.g() tbl17.k() tbl17.r() local v115 = tbl17.s() tbl17.B() local index2 = {} index2.__index = index2 local function createFrame(arg, parent, arg2) local frame = Instance.new("Frame") frame.BackgroundTransparency = v86[63] frame.Size = UDim2.new(1, 0, 0, 16) frame.BorderSizePixel = v86[186] frame.Parent = parent local uiListLayout = Instance.new("UIListLayout") uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.HorizontalFlex = Enum.UIFlexAlignment.Fill uiListLayout.Padding = UDim.new(v86[186], v86[186]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame local function fn36(layoutOrder) local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = v86[195] frame2.BorderSizePixel = 0 frame2.Size = UDim2.fromOffset(0, v86[63]) frame2.LayoutOrder = layoutOrder arg2.Batch:Bind(frame2, v86[5], "TextColor") frame2.Parent = frame local uiFlexItem = Instance.new("UIFlexItem") uiFlexItem.FlexMode = Enum.UIFlexMode.Fill uiFlexItem.Parent = frame2 end fn36(0) local textLabel = Instance.new("TextLabel") textLabel.BackgroundTransparency = 1 textLabel.BorderSizePixel = 0 textLabel.Size = UDim2.fromScale(0, 1) textLabel.AutomaticSize = Enum.AutomaticSize.X textLabel.FontFace = v115.SemiBold textLabel.Text = arg.Label:upper() textLabel.TextSize = 12 textLabel.TextXAlignment = Enum.TextXAlignment.Center textLabel.LayoutOrder = v86[63] textLabel.Visible = arg.Label ~= "" arg2.Batch:Bind(textLabel, "TextColor3", "TextColor") textLabel.Parent = frame local instance = Instance.new(v86[113]) instance.PaddingLeft = UDim.new(0, v86[162]) instance.PaddingRight = UDim.new(0, 8) instance.Parent = textLabel fn36(2) arg._rt = { Object = frame, Label = textLabel } return frame end index2._New = function(arg, arg2, arg3, arg4) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "Divider", Row = arg2, Label = arg4.Label or "", _rt = nil }, index2) arg2:AttachRight(function(arg5, arg6) return createFrame(obj, arg5, arg6) end, nil, nil, arg3) return obj end index2.SetLabel = function(arg, label) arg.Label = label local rt = arg._rt if rt ~= nil then rt.Label.Text = label:upper() rt.Label.Visible = label ~= "" end return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.Q = function() local q = tbl17.cache.Q if not q then local q2 = { c = fn35() } tbl17.cache.Q = q2 q = q2 end return q.c end end do -- R local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.x() tbl17.B() local v118 = tbl17.A() local index2 = {} index2.__index = index2 local function fn36(arg) if arg.Default ~= nil then return arg.Default end local v119 = arg.Options[1] return (v119 ~= nil and { v119.Name } or { "" })[1] end local function fn37(arg, parent, arg2, arg3) local instance = Instance.new(v86[128]) instance.BackgroundTransparency = v86[63] instance.BorderSizePixel = 0 instance.Size = UDim2.new(1, 0, 0, arg3) local uiListLayout = Instance.new("UIListLayout") uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Padding = UDim.new(0, v86[54]) uiListLayout.Parent = instance local n = arg3 - 12 - v86[155] - 10 - 3 local n33 = #arg._options for k, v119 in arg._options, nil, nil do local imageButton = Instance.new("ImageButton") imageButton.BackgroundTransparency = 1 imageButton.BorderSizePixel = 0 imageButton.AutoButtonColor = false imageButton.Image = "" imageButton.LayoutOrder = k imageButton.Size = UDim2.new(v86[63] / n33, -v86[54], 1, 0) imageButton.Parent = instance local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.Position = UDim2.fromScale(0.5, 0) frame.AnchorPoint = Vector2.new(0.5, 0) frame.Size = UDim2.new(1, -20, 1, -10) frame.Parent = imageButton local uiListLayout2 = Instance.new("UIListLayout") uiListLayout2.FillDirection = Enum.FillDirection.Vertical uiListLayout2.HorizontalAlignment = Enum.HorizontalAlignment.Center uiListLayout2.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout2.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout2.Padding = UDim.new(0, 3) uiListLayout2.Parent = frame local imageLabel = Instance.new("ImageLabel") imageLabel.BackgroundTransparency = 1 imageLabel.BorderSizePixel = 0 imageLabel.LayoutOrder = 1 imageLabel.ScaleType = Enum.ScaleType.Fit imageLabel.Size = UDim2.new(1, 0, 0, n) imageLabel.Image = v119.Icon imageLabel.Parent = frame local textLabel = Instance.new("TextLabel") textLabel.BackgroundTransparency = v86[63] textLabel.BorderSizePixel = 0 textLabel.FontFace = v116.SemiBold textLabel.LayoutOrder = v86[56] textLabel.Size = UDim2.new(1, 0, 0, 14) textLabel.Text = v119.Name textLabel.TextSize = 12 textLabel.TextTruncate = Enum.TextTruncate.AtEnd textLabel.Parent = frame local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = v86[63] frame2.BorderSizePixel = 0 frame2.Position = UDim2.new(0, 0, 1, -3) frame2.Size = UDim2.new(v86[63], 0, 0, 10) arg2.Batch:Bind(frame2, "BackgroundColor3", "Accent") frame2.Parent = imageButton local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 3) uiCorner.Parent = frame2 arg._cells[k] = { Icon = imageLabel, Label = textLabel, Accent = frame2, Name = v119.Name } v117.connectClick(arg2.Trove, imageButton, function() arg:Set(v119.Name) end) end arg2.Batch:BindStateful(v86[174], function() arg:_Refresh() end) arg2.Batch:BindStateful(v86[96], function() arg:_Refresh() end) arg:_Refresh() instance.Parent = parent return instance end index2._New = function(arg, arg2, arg3, arg4) local obj = setmetatable({ _trove = arg3, _menu = arg, _options = arg4.Options, _cells = {}, Kind = "IconStrip", Row = arg2, Value = fn36(arg4), ValueChanged = arg3:Add(v115.new()), }, index2) local height = arg4.Height or 62 arg2:AttachRight(function(arg5, arg6) return fn37(obj, arg5, arg6, height) end, nil, nil, arg3) if arg4.OnChanged ~= nil then arg3:Add(obj.ValueChanged:Connect(arg4.OnChanged)) end return obj end index2._Refresh = function(arg) local v119 = v118.get(v86[174]) local Unselected = v118.get("Unselected") for _, v120 in arg._cells, nil, nil do local backgroundTransparency = 1 local v121 if v120.Name ~= arg.Value then v121 = Unselected else backgroundTransparency = v86[186] v121 = v119 end v120.Icon.ImageColor3 = v121 v120.Label.TextColor3 = v121 v120.Accent.BackgroundTransparency = backgroundTransparency end end index2.Set = function(arg, value, arg2) if value == arg.Value then return end local flag19 = v86[153] for _, v119 in arg._options, nil, nil do if v119.Name == value then flag19 = true break end end if not flag19 then return end arg.Value = value arg:_Refresh() if not arg2 then arg.ValueChanged:Fire(value) end end index2.Get = function(arg) return arg.Value end index2.Connect = function(arg, arg2, arg3) arg._trove:Add(arg2:Connect(arg3)) end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.R = function() local r = tbl17.cache.R if not r then r = { c = fn35() } tbl17.cache.R = r end return r.c end end do -- S local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.x() tbl17.B() local v117 = tbl17.A() local tweenInfo = TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local color = Color3.fromRGB(255, 255, v86[108]) local function fn36(arg, arg2) return Color3.new(arg.R * arg2, arg.G * arg2, arg.B * arg2) end local index2 = {} index2.__index = index2 local function fn37(arg, arg2, arg3, arg4) local backgroundTransparency = v86[63] local ToggleCircleUnselected = v117.get("ToggleCircleUnselected") local udim2 = UDim2.fromOffset(v86[155], 2) if arg3 then udim2 = UDim2.fromOffset(13, v86[56]) backgroundTransparency = 0 ToggleCircleUnselected = color end if arg4 then arg2.Fill.BackgroundTransparency = backgroundTransparency arg2.Circle.BackgroundColor3 = ToggleCircleUnselected arg2.Circle.Position = udim2 return end arg._menu:Tween(arg2.Fill, { BackgroundTransparency = backgroundTransparency }) arg._menu:Tween(arg2.Circle, { BackgroundColor3 = ToggleCircleUnselected, Position = udim2 }) end local function fn38(arg, parent, arg2) local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(1, v86[101]) instance.Position = UDim2.fromScale(1, v86[101]) instance.Size = UDim2.fromOffset(32, 20) instance.BorderSizePixel = 0 instance.BackgroundColor3 = color instance.Parent = parent local instance2 = Instance.new(v86[46]) instance2.Rotation = 90 arg2.Batch:BindGradient(instance2, { "ToggleBackgroundUnselected", "GradientDark" }) instance2.Parent = instance local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(1, 0) uiCorner.Parent = instance local instance3 = Instance.new(v86[128]) instance3.Size = UDim2.fromScale(1, 1) instance3.BorderSizePixel = 0 instance3.BackgroundColor3 = v117.get("Accent") instance3.BackgroundTransparency = v86[63] instance3.Parent = instance local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(1, v86[186]) uiCorner2.Parent = instance3 local frame = Instance.new("Frame") frame.Position = UDim2.fromOffset(v86[155], 2) frame.Size = UDim2.fromOffset(16, 16) frame.BorderSizePixel = v86[186] frame.BackgroundColor3 = v117.get("ToggleCircleUnselected") frame.Parent = instance local uiCorner3 = Instance.new("UICorner") uiCorner3.CornerRadius = UDim.new(1, v86[186]) uiCorner3.Parent = frame local rt = { Fill = instance3, Circle = frame } arg._rt = rt local frame2 = arg.Row.Frame if frame2 ~= nil then v116.connectClick(arg2.Trove, frame2, function() arg:Set(not arg.Value) end) v116.connectPress(arg2.Trove, frame2, function() if arg.Value then local v118 = v86[105] arg._menu:Tween(instance3, { BackgroundColor3 = fn36(v117.get("Accent"), v118) }, tweenInfo) end end, function() if arg.Value then arg._menu:Tween(instance3, { BackgroundColor3 = v117.get(v86[139]) }, tweenInfo) end end) end arg2.Trove:Connect(arg._menu.AccentChanged, function(arg3) arg._menu:Tween(instance3, { BackgroundColor3 = arg3 }) end) arg2.Batch:BindStateful("ToggleCircleUnselected", function(backgroundColor3) if not arg.Value then frame.BackgroundColor3 = backgroundColor3 end end) arg2.Trove:Connect(arg.ValueChanged, function(arg3) fn37(arg, rt, arg3, v86[153]) end) fn37(arg, rt, arg.Value, true) return instance end index2._New = function(arg, arg2, arg3, arg4) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "Toggle", Row = arg2, Value = arg4.Default == true, Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _rt = nil, }, index2) arg2:AttachRight(function(arg5, arg6) return fn38(obj, arg5, arg6) end, 32, nil, arg3) return obj end index2.Set = function(arg, value, arg2) local v118 = v86[116] if type(value) ~= v118 or value == arg.Value then return end arg.Value = value arg.ValueChanged:Fire(value) if not arg2 then arg._onChanged(value) arg.Changed:Fire(value) end end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.S = function() local s = tbl17.cache.S if not s then local s2 = { c = fn35() } tbl17.cache.S = s2 s = s2 end return s.c end end do -- T local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.H() local v117 = tbl17.s() local v118 = tbl17.u() local v119 = tbl17.x() local v120 = tbl17.G() local v121 = tbl17.B() local v122 = tbl17.A() local v123 = tbl17.S() local v124 = tbl17.w() local index2 = {} index2.__index = index2 local function fn36(arg) if typeof(arg) == "EnumItem" then local v125 = v124.KeyNames[arg] if type(v125) == "string" then return v125 end return arg.Name end if type(arg) == "string" then return arg end return "None" end local function fn37(arg) local panel = arg._panel if panel ~= nil then panel.KeyValue.Text = "Key: " .. fn36(arg.Value.Key) end end local function fn38(arg) local active = arg.Active or arg.Value.Mode == v86[21] local featureEnabled = arg.ShowInList and arg.FeatureEnabled local hud = arg._hud if hud ~= nil then hud:SetKeyText(fn36(arg.Value.Key)) hud:SetMode(arg.Value.Mode) hud:SetActiveAppearance(active) hud:SetEnabled(featureEnabled) end local mobile = arg._mobile if mobile ~= nil then mobile:SetMode(arg.Value.Mode) mobile:SetActive(active) mobile:SetVisible(featureEnabled) end end local function createTextLabel(arg, parent, arg2) local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = v86[63] textButton.Size = UDim2.new(1, 0, 0, 20) textButton.BorderSizePixel = 0 textButton.AutomaticSize = Enum.AutomaticSize.Y textButton.Text = "" textButton.AutoButtonColor = false textButton.LayoutOrder = 0 textButton.Parent = parent local textLabel = Instance.new("TextLabel") textLabel.FontFace = v117.Medium textLabel.Text = "Keybind" textLabel.AnchorPoint = Vector2.new(0, 0.5) textLabel.BackgroundTransparency = 1 textLabel.Position = UDim2.fromScale(0, v86[101]) textLabel.BorderSizePixel = v86[186] textLabel.AutomaticSize = Enum.AutomaticSize.XY textLabel.TextSize = 16 arg2.Batch:Bind(textLabel, v86[167], "TextColor") textLabel.Parent = textButton local textButton2 = Instance.new("TextButton") textButton2.AnchorPoint = Vector2.new(1, v86[186]) textButton2.Position = UDim2.new(1, v86[186], 0, 1) textButton2.Size = UDim2.fromOffset(2, v86[61]) textButton2.BorderSizePixel = v86[186] textButton2.AutomaticSize = Enum.AutomaticSize.X textButton2.Text = "" textButton2.AutoButtonColor = v86[153] arg2.Batch:Bind(textButton2, "BackgroundColor3", "Background") textButton2.Parent = textButton local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 5) uiCorner.Parent = textButton2 local uiStroke = Instance.new("UIStroke") uiStroke.BorderOffset = UDim.new(v86[186], -v86[63]) uiStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border arg2.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = textButton2 local uiListLayout = Instance.new("UIListLayout") uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.Padding = UDim.new(v86[186], 10) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = textButton2 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, -1) uiPadding.PaddingLeft = UDim.new(0, 5) uiPadding.PaddingRight = UDim.new(v86[186], 5) uiPadding.Parent = textButton2 local textLabel2 = Instance.new("TextLabel") textLabel2.FontFace = v117.Medium textLabel2.TextColor3 = v122.get("TextColor") textLabel2.Text = "" textLabel2.AnchorPoint = Vector2.new(0, 0.5) textLabel2.BackgroundTransparency = 1 textLabel2.Position = UDim2.new(0, 5, v86[101], 0) textLabel2.BorderSizePixel = 0 textLabel2.AutomaticSize = Enum.AutomaticSize.XY textLabel2.TextSize = 16 textLabel2.Parent = textButton2 local instance = Instance.new(v86[113]) instance.PaddingBottom = UDim.new(0, v86[56]) instance.Parent = textLabel2 v119.connectClick(arg2.Trove, textButton2, function() arg:StartCapture() end) return textLabel2 end local function fn39(arg) local panel = arg._panel if panel ~= nil then return panel end local rt = arg._rt if rt == nil then return nil end local menu = arg._menu local gear = rt.Gear local n = v86[17] if v118.IsMobile() then n = 240 end local v125 = v120.new(menu, arg._trove, { Trigger = gear, Size = UDim2.fromOffset(n, 0), ParentEntry = arg._parentOverlay, Place = v120.placeBelow(2, 2), OnToggle = function(arg2) local n33 = v86[186] if arg2 then n33 = 180 end menu:Tween(gear, { Rotation = n33 }) if arg2 then local panel2 = arg._panel if panel2 ~= nil then panel2.Scroll.CanvasPosition = Vector2.zero end end end, }) local v126, v127 = v125:AttachScrollingList(n) local v128 = v125:RealizeCtx() local v129 = createTextLabel(arg, v127, v128) local v130 = v121.new(menu, { Label = v86[97], Height = v86[9] }) local tbl18 = { Label = "Show in list", Default = arg.ShowInList, OnChanged = function(arg2) arg:SetShowInList(arg2) end, } local v131 = v123._New(menu, v130, arg._trove:Extend(), tbl18) v130:Realize(v127, v128, 2) local v132 = nil if v118.WantsMobileButtons() then local v133 = v121.new(menu, { Label = v86[112], Height = 20 }) local tbl19 = { Label = v86[112], Default = arg.Invisible, OnChanged = function(arg2) arg:SetInvisible(arg2) end, } v132 = v123._New(menu, v133, arg._trove:Extend(), tbl19) v133:Realize(v127, v128, v86[155]) end local v133 = v121.new(menu, { Label = v86[55], Height = 24 }) local tbl19 = { Label = "Mode", Options = arg.Modes, Default = arg.Value.Mode, OnChanged = function(arg2) local v134 = v86[165] if type(arg2) == v134 then arg:Set({ Key = arg.Value.Key, Mode = arg2 }) end end, } local v134 = v116._New(menu, v133, arg._trove:Extend(), tbl19) v133:Realize(v127, v128, v86[26]) local panel2 = { Popup = v125, Scroll = v126, KeyValue = v129, ShowToggle = v131, InvisibleToggle = v132, ModeDropdown = v134, } arg._panel = panel2 fn37(arg) return panel2 end local function createImageButton(arg, parent, arg2) local imageButton = Instance.new("ImageButton") imageButton.Image = "rbxassetid://127083575814915" imageButton.BackgroundTransparency = 1 imageButton.AnchorPoint = Vector2.new(1, 0.5) imageButton.Position = UDim2.fromScale(1, 0.5) imageButton.Size = UDim2.fromOffset(16, 16) imageButton.BorderSizePixel = 0 imageButton.AutoButtonColor = false arg2.Batch:Bind(imageButton, "ImageColor3", "TextColor") imageButton.Parent = parent arg._rt = { Gear = imageButton } arg._parentOverlay = arg2.ParentOverlay v119.connectClick(arg2.Trove, imageButton, function() local v125 = fn39(arg) if v125 ~= nil then v125.Popup:Toggle() end end) return imageButton end index2._New = function(arg, arg2, arg3, arg4) local default = arg4.Default local str7 = "Toggle" local key = nil if default ~= nil then key = default.Key if default.Mode ~= nil then str7 = default.Mode end end local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = v86[73], Row = arg2, Modes = arg4.Modes or { "Hold", "Toggle", "Always" }, Value = { Key = key, Mode = str7 }, Active = false, FeatureEnabled = false, ShowInList = arg4.InKeybindList == true, Invisible = v86[153], ListLabel = arg4.ListLabel or arg4.Label or "Keybind", Capturing = v86[153], Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), ActiveChanged = arg3:Add(v115.new()), ShowInListChanged = arg3:Add(v115.new()), InvisibleChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _cancelCapture = nil, _rt = nil, _panel = nil, _parentOverlay = nil, _hud = nil, _mobile = nil, }, index2) local v125 = arg:AddKeybindHudEntry() if v125 ~= nil then obj._hud = v125 v125:SetLabel(obj.ListLabel) arg3:Add(v125) end local v126 = arg:RegisterMobileButton(arg4.RegistrationKey or obj.ListLabel, obj.ListLabel, obj.Value.Mode, function(arg5) obj:SetActive(arg5) end) if v126 ~= nil then obj._mobile = v126 arg3:Add(v126) end fn38(obj) arg2:AttachRight(function(arg5, arg6) return createImageButton(obj, arg5, arg6) end, v86[13], nil, arg3) return obj end index2._BindConfigMap = function(arg, arg2, arg3) local flag19 = false local function fn40(arg4, arg5, arg6, arg7) if arg4 == nil then return end local function fn41(arg8) if arg8 == nil then return end flag19 = v86[34] arg7(arg8) flag19 = v86[153] end fn41(arg2:Get(arg4)) arg._trove:Connect(arg5, function() if flag19 then return end arg2:Set(arg4, arg6()) end) arg._trove:Connect(arg2:Changed(arg4, v86[34]), function(arg8) if flag19 or arg8 == arg6() then return end fn41(arg8) end) end fn40(arg3.Key, arg.Changed, function() local key = arg.Value.Key if key == nil then return v86[75] end return key end, function(arg4) if typeof(arg4) == "EnumItem" then arg:SetKey(arg4) elseif type(arg4) == "string" then local v125 = arg local setKey = v125.SetKey local v126 = v124.deserializeKey(arg4) setKey(v125, v126) end end) fn40(arg3.Mode, arg.Changed, function() return arg.Value.Mode end, function(arg4) if type(arg4) == "string" then arg:SetMode(arg4) end end) fn40(arg3.Active, arg.ActiveChanged, function() return arg.Active end, function(arg4) arg:SetActive(arg4 == v86[34]) end) fn40(arg3.ShowInList, arg.ShowInListChanged, function() return arg.ShowInList end, function(arg4) arg:SetShowInList(arg4 == v86[34]) end) fn40(arg3.Invisible, arg.InvisibleChanged, function() return arg.Invisible end, function(arg4) arg:SetInvisible(arg4 == true) end) end index2.StartCapture = function(arg) local panel = arg._panel if panel == nil then return end arg.Capturing = v86[34] panel.KeyValue.Text = "Key: ..." arg._menu:Tween(panel.KeyValue, { TextColor3 = v122.get("Accent") }) arg._cancelCapture = arg._menu:CaptureKey(function(arg2) arg.Capturing = false arg._cancelCapture = nil arg._menu:Tween(panel.KeyValue, { TextColor3 = v122.get("TextColor") }) if arg2 == nil then fn37(arg) return end arg:Set({ Key = arg2, Mode = arg.Value.Mode }) end) end index2.Set = function(arg, arg2, arg3) local key = arg2.Key local mode = arg2.Mode or arg.Value.Mode if key == arg.Value.Key and mode == arg.Value.Mode then return end arg.Value = { Key = key, Mode = mode } fn37(arg) fn38(arg) local panel = arg._panel if panel ~= nil then panel.ModeDropdown:Set(mode, true) end arg.ValueChanged:Fire(arg.Value) if not arg3 then arg._onChanged(arg.Value) arg.Changed:Fire(arg.Value) end end index2.SetKey = function(arg, arg2, arg3) arg:Set({ Key = arg2, Mode = arg.Value.Mode }, arg3) end index2.SetMode = function(arg, arg2, arg3) arg:Set({ Key = arg.Value.Key, Mode = arg2 }, arg3) end index2.SetActive = function(arg, active, arg2) if arg.Active == active then return end arg.Active = active fn38(arg) arg.ActiveChanged:Fire(active) if not arg2 then arg.Changed:Fire(arg.Value) end end index2.SetFeatureEnabled = function(arg, featureEnabled) if arg.FeatureEnabled == featureEnabled then return end arg.FeatureEnabled = featureEnabled fn38(arg) end index2.SetShowInList = function(arg, arg2, arg3) local showInList = arg2 == true if arg.ShowInList == showInList then return end arg.ShowInList = showInList fn38(arg) local panel = arg._panel if panel ~= nil then panel.ShowToggle:Set(showInList, true) end if not arg3 then arg.ShowInListChanged:Fire(showInList) end end index2.SetInvisible = function(arg, arg2, arg3) local invisible = arg2 == true if arg.Invisible == invisible then return end arg.Invisible = invisible local mobile = arg._mobile if mobile ~= nil then mobile:SetInvisible(invisible) end local panel = arg._panel if panel ~= nil then local invisibleToggle = panel.InvisibleToggle if invisibleToggle ~= nil then invisibleToggle:Set(invisible, v86[34]) end end if not arg3 then arg.InvisibleChanged:Fire(invisible) end end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) local cancelCapture = arg._cancelCapture if cancelCapture ~= nil then cancelCapture() end arg._trove:Destroy() end return index2 end tbl17.T = function() local t = tbl17.cache.T if not t then t = { c = fn35() } tbl17.cache.T = t end return t.c end end do -- U local function fn35() tbl17.g() tbl17.k() tbl17.r() local v115 = tbl17.s() tbl17.B() local index2 = {} index2.__index = index2 local function createTextButton(arg, parent, arg2) local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = 1 textButton.Size = UDim2.new(1, 0, 0, v86[61]) textButton.BorderSizePixel = 0 textButton.AutomaticSize = Enum.AutomaticSize.Y textButton.Text = "" textButton.AutoButtonColor = false textButton.Parent = parent local textLabel = Instance.new("TextLabel") textLabel.RichText = v86[34] textLabel.FontFace = v115.Medium textLabel.Text = arg.Label textLabel.AnchorPoint = Vector2.new(v86[186], 0.5) textLabel.BackgroundTransparency = 1 textLabel.Position = UDim2.fromScale(v86[186], 0.5) textLabel.BorderSizePixel = 0 textLabel.AutomaticSize = Enum.AutomaticSize.Y textLabel.Size = UDim2.fromScale(1, 0) textLabel.TextWrapped = v86[34] textLabel.TextXAlignment = Enum.TextXAlignment.Left textLabel.TextSize = arg._textSize or 16 if arg._textColor ~= nil then textLabel.TextColor3 = arg._textColor else arg2.Batch:Bind(textLabel, "TextColor3", "TextColor") end textLabel.Parent = textButton arg._label = textLabel return textButton end index2._New = function(arg, arg2, arg3, arg4) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "Label", Row = arg2, Label = arg4.Label or "", _textColor = arg4.TextColor, _textSize = arg4.TextSize, _label = nil, }, index2) arg2:AttachRight(function(arg5, arg6) return createTextButton(obj, arg5, arg6) end, nil, nil, arg3) return obj end index2.SetLabel = function(arg, label) arg.Label = label local label2 = arg._label if label2 ~= nil then label2.Text = label end return arg end index2.SetColor = function(arg, textColor) local v116 = v86[115] if typeof(textColor) ~= v116 then return arg end arg._textColor = textColor local label = arg._label if label ~= nil then label.TextColor3 = textColor end return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.U = function() local u = tbl17.cache.U if not u then u = { c = fn35() } tbl17.cache.U = u end return u.c end end do -- V local function fn35() local v115 = tbl17.g() tbl17.k() local v116 = tbl17.F() tbl17.r() local v117 = tbl17.x() tbl17.B() local v118 = tbl17.A() local index2 = {} index2.__index = index2 local function fn36(arg, arg2) local value = arg.Value if type(value) == "table" then return table.find(value, arg2) ~= nil end return value == arg2 end local function fn37(arg, arg2, arg3, arg4) local Unselected = v118.get("Unselected") local imageTransparency = v86[63] local n = v86[175] if arg3 then Unselected = v118.get("TextColor") n = 29 imageTransparency = 0 end arg2.Tick.ImageColor3 = v118.get(v86[174]) local udim = UDim.new(v86[186], n) if arg4 then arg2.Title.TextColor3 = Unselected arg2.Tick.ImageTransparency = imageTransparency arg2.Padding.PaddingLeft = udim return end arg._menu:Tween(arg2.Title, { TextColor3 = Unselected }) arg._menu:Tween(arg2.Tick, { ImageTransparency = imageTransparency }) arg._menu:Tween(arg2.Padding, { PaddingLeft = udim }) end local function fn38(arg, arg2) local rt = arg._rt if rt == nil then return end for k, v119 in rt.Rows, nil, nil do local v120 = arg.Options[k] fn37(arg, v119, v120 ~= nil and fn36(arg, v120), arg2) end end local function fn39(arg, arg2) local rt = arg._rt if rt == nil then return end local str7 = arg2:lower() for _, v119 in rt.Rows, nil, nil do v119.Title.Visible = v119.Title.Text:lower():find(str7, 1, true) ~= nil end end local function fn40(arg, arg2) local v119 = arg.Options[arg2] if v119 == nil then return end if not arg.Multi then arg:Set(v119) return end local tbl18 = {} local v120 = v86[68] if type(arg.Value) == v120 then tbl18 = table.clone(arg.Value) end local v121 = table.find(tbl18, v119) if v121 ~= nil then table.remove(tbl18, v121) else table.insert(tbl18, v119) end arg:Set(tbl18) end local function fn41(arg, arg2, layoutOrder) local instance = Instance.new(v86[135]) instance.BackgroundTransparency = v86[63] instance.TextColor3 = v118.get("Unselected") instance.Text = "" instance.Size = UDim2.fromScale(1, 0) instance.ClipsDescendants = true instance.TextXAlignment = Enum.TextXAlignment.Left instance.BorderSizePixel = 0 instance.AutomaticSize = Enum.AutomaticSize.XY instance.TextSize = 16 instance.FontFace = arg._menu.Fonts.Main instance.LayoutOrder = layoutOrder instance.Parent = arg2.Scroll local instance2 = Instance.new(v86[113]) instance2.PaddingTop = UDim.new(0, 5) instance2.PaddingBottom = UDim.new(0, 5) instance2.PaddingRight = UDim.new(0, 5) instance2.PaddingLeft = UDim.new(0, 5) instance2.Parent = instance local imageLabel = Instance.new("ImageLabel") imageLabel.ImageTransparency = v86[63] imageLabel.Image = "rbxassetid://73347151382921" imageLabel.ImageColor3 = v118.get(v86[174]) imageLabel.BackgroundTransparency = v86[63] imageLabel.AnchorPoint = Vector2.new(0, 0.5) imageLabel.Position = UDim2.new(0, -22, v86[101], v86[186]) imageLabel.Size = UDim2.fromOffset(14, 14) imageLabel.BorderSizePixel = v86[186] imageLabel.Parent = instance v117.connectClick(arg._trove, instance, function() fn40(arg, layoutOrder) end) return { Title = instance, Padding = instance2, Tick = imageLabel } end local function fn42(arg) local rt = arg._rt if rt == nil then return end local rows = rt.Rows local options = arg.Options for k, v119 in options, nil, nil do local v120 = rows[k] if v120 == nil then v120 = fn41(arg, rt, k) rows[k] = v120 end if v120.Title.Text ~= v119 then v120.Title.Text = v119 end if not v120.Title.Visible then v120.Title.Visible = true end end for i = #rows, #options + 1, -1 do rows[i].Title:Destroy() rows[i] = nil end end local function fn43(arg, arg2, arg3) local menu = arg._menu local instance = Instance.new(v86[128]) instance.LayoutOrder = -1 instance.Size = UDim2.fromOffset(v86[157], v86[144]) instance.ClipsDescendants = true instance.BorderSizePixel = 0 arg3.Batch:Bind(instance, "BackgroundColor3", "Background") instance.Parent = arg2.Root local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 5) uiCorner.Parent = instance local uiStroke = Instance.new("UIStroke") arg3.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = instance local textBox = Instance.new("TextBox") textBox.PlaceholderText = v86[190] textBox.PlaceholderColor3 = v118.get("Unselected") textBox.FontFace = menu.Fonts.Main textBox.Text = "" textBox.AnchorPoint = Vector2.new(v86[186], 0.5) textBox.Position = UDim2.new(0, v86[54], 0.5, 0) textBox.Size = UDim2.new(1, -12, 1, v86[186]) textBox.BackgroundTransparency = 1 textBox.BorderSizePixel = 0 textBox.TextSize = 14 textBox.TextXAlignment = Enum.TextXAlignment.Left textBox.ClearTextOnFocus = v86[34] textBox.Active = true arg3.Batch:Bind(textBox, "TextColor3", "TextColor") textBox.Parent = instance arg2.SearchInput = textBox arg3.Trove:Connect(textBox:GetPropertyChangedSignal(v86[80]), function() fn39(arg, textBox.Text) end) end local function fn44(arg, parent, arg2) local instance = Instance.new(v86[92]) instance.BackgroundTransparency = v86[63] instance.Size = UDim2.new(1, 0, v86[186], 24) instance.BorderSizePixel = 0 instance.AutomaticSize = Enum.AutomaticSize.Y instance.Text = "" instance.AutoButtonColor = false instance.Parent = parent local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(v86[186], v86[13]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = instance local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.ScrollBarImageTransparency = 1 scrollingFrame.ScrollBarThickness = v86[186] scrollingFrame.Selectable = false scrollingFrame.Size = UDim2.new(1, 0, 0, arg.Height) scrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y scrollingFrame.CanvasSize = UDim2.fromOffset(0, 0) scrollingFrame.BackgroundColor3 = Color3.fromRGB(v86[108], 255, 255) scrollingFrame.BorderSizePixel = 0 arg2.Batch:Bind(scrollingFrame, "ScrollBarImageColor3", "Accent") scrollingFrame.Parent = instance local instance2 = Instance.new(v86[46]) instance2.Rotation = v86[45] v116.bindSurfaceGradient(arg2.Batch, instance2, { v86[187], "GradientDark" }) instance2.Parent = scrollingFrame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 5) uiCorner.Parent = scrollingFrame local uiStroke = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke, "Color", v86[120]) uiStroke.Parent = scrollingFrame local uiListLayout2 = Instance.new("UIListLayout") uiListLayout2.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout2.Parent = scrollingFrame local rt = { Root = instance, Scroll = scrollingFrame, SearchInput = nil, Rows = {} } arg._rt = rt if arg.Search then fn43(arg, rt, arg2) end fn42(arg) fn38(arg, v86[34]) return instance end local function fn45(arg, arg2) local tbl18 = {} for _, v119 in arg, nil, nil do if table.find(arg2, v119) ~= nil then table.insert(tbl18, v119) end end return tbl18 end local function fn46(arg, arg2) if #arg ~= #arg2 then return false end for k, v119 in arg, nil, nil do if arg2[k] ~= v119 then return false end end return true end local function fn47(arg, arg2, arg3, arg4, arg5, arg6, arg7) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "List", Row = arg2, Multi = arg5, Search = arg4.Search == true, Height = arg4.Height or v86[110], Options = table.clone(arg4.Options or {}), Value = arg6, Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg7, _rt = nil, }, index2) arg2:AttachRight(function(arg8, arg9) return fn44(obj, arg8, arg9) end, nil, nil, arg3) return obj end index2._New = function(arg, arg2, arg3, arg4) local options = arg4.Options or {} local default = arg4.Default if not (default ~= nil and table.find(options, default) ~= nil) then default = nil if arg4.SelectFirst ~= false then default = options[1] end end local onChanged = arg4.OnChanged local function fn48() end if onChanged ~= nil then fn48 = function(arg5) onChanged(arg5) end end return (fn47(arg, arg2, arg3, arg4, false, default, fn48)) end index2._NewMulti = function(arg, arg2, arg3, arg4) local v119 = fn45(arg4.Options or {}, arg4.Default or {}) local onChanged = arg4.OnChanged local function fn48() end if onChanged ~= nil then fn48 = function(arg5) onChanged(arg5) end end return (fn47(arg, arg2, arg3, arg4, v86[34], v119, fn48)) end index2.Set = function(arg, value, arg2) local flag19 = arg2 == v86[34] if arg.Multi then local tbl18 = {} if type(value) ~= "table" then local v119 = v86[165] if type(value) ~= v119 then value = tbl18 else value = { value } end end arg.Value = fn45(arg.Options, value) else local flag20 = type(value) == "string" and table.find(arg.Options, value) ~= nil local v119 = nil if not flag20 then value = v119 end arg.Value = value end fn38(arg, flag19) arg.ValueChanged:Fire(arg.Value) if not arg2 then arg._onChanged(arg.Value) arg.Changed:Fire(arg.Value) end end index2.SetOptions = function(arg, arg2) local value = arg.Value arg.Options = table.clone(arg2 or {}) fn42(arg) arg:Set(value, true) local flag19 = value ~= arg.Value local multi = arg.Multi if multi then local v119 = v86[68] multi = type(value) == v119 end if multi and type(arg.Value) == "table" then flag19 = not fn46(value, arg.Value) end if flag19 then arg._onChanged(arg.Value) arg.Changed:Fire(arg.Value) end end index2.Add = function(arg, arg2) if type(arg2) ~= "string" or table.find(arg.Options, arg2) ~= nil then return end local v119 = table.clone(arg.Options) table.insert(v119, arg2) arg:SetOptions(v119) end index2.Remove = function(arg, arg2) local v119 = table.find(arg.Options, arg2) if v119 == nil then return end local v120 = table.clone(arg.Options) table.remove(v120, v119) arg:SetOptions(v120) end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.V = function() local v115 = tbl17.cache.V if not v115 then local v116 = { c = fn35() } tbl17.cache.V = v116 v115 = v116 end return v115.c end end do -- W local function fn35() local v115 = tbl17.F() local v116 = tbl17.v() tbl17.A() return { nextLayoutOrder = function(arg) local n = 0 for _, v117 in arg:GetChildren() do if v117:IsA("GuiObject") then n += v86[63] end end return n end, box = function(arg, parent) local frame = Instance.new("Frame") frame.BackgroundTransparency = 0 frame.Size = UDim2.fromScale(1, 0) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.Y frame.BackgroundColor3 = Color3.fromRGB(255, v86[108], 255) frame.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v115.bindSurfaceGradient(arg, uiGradient, { "GradientMid", v86[70] }) uiGradient.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = frame local instance = Instance.new(v86[85]) arg:Bind(instance, v86[27], "Outline") instance.Parent = frame return frame end, elementsContainer = function(parent, position, size) local section = v116.get().Section local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.Position = position or UDim2.fromOffset(section.InnerPadding, section.InnerPadding) frame.Size = size or UDim2.new(v86[63], -section.InnerPadding * v86[56], v86[186], 0) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.Y frame.Parent = parent local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(v86[186], section.ElementGap) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, section.InnerPadding) uiPadding.Parent = frame return frame end, } end tbl17.W = function() local w = tbl17.cache.W if not w then w = { c = fn35() } tbl17.cache.W = w end return w.c end end do -- X local function fn35() tbl17.g() tbl17.k() local v115 = tbl17.F() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() tbl17.B() local v118 = tbl17.W() local v119 = tbl17.A() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4) return setmetatable({ _trove = arg2:Extend(), _menu = arg, _resolveParent = arg4, Sections = arg3, _activeIndex = 1, _realized = false, _ctx = nil, _tabs = {}, _rootFrame = nil, }, index2) end local function fn36(arg, parent, arg2, layoutOrder) local section = v117.get().Section local frame = Instance.new("Frame") frame.LayoutOrder = layoutOrder or v118.nextLayoutOrder(parent) frame.BackgroundTransparency = 1 frame.Size = UDim2.fromScale(1, 0) frame.BorderSizePixel = v86[186] frame.AutomaticSize = Enum.AutomaticSize.Y frame.Parent = parent arg._rootFrame = frame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, 3) uiPadding.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[54]) uiCorner.Parent = frame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, section.TitleGap) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame local v120 = v118.box(arg2, frame) local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = 0 frame2.ClipsDescendants = true frame2.Size = UDim2.new(1, 0, 0, section.MultiHeaderHeight) frame2.BorderSizePixel = v86[186] frame2.BackgroundColor3 = Color3.fromRGB(v86[108], v86[108], 255) frame2.Parent = v120 local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(0, 6) uiCorner2.Parent = frame2 local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v115.bindSurfaceGradient(arg2, uiGradient, { "GradientTop", "GradientMid" }) uiGradient.Parent = frame2 local frame3 = Instance.new("Frame") frame3.Position = UDim2.new(0, v86[186], 1, -1) frame3.Size = UDim2.new(1, v86[186], 0, 1) frame3.BorderSizePixel = 0 arg2:Bind(frame3, "BackgroundColor3", "Outline") frame3.Parent = frame2 local instance = Instance.new(v86[128]) instance.BackgroundTransparency = 1 instance.Size = UDim2.fromScale(1, 1) instance.BorderSizePixel = 0 instance.Parent = frame2 local uiListLayout2 = Instance.new("UIListLayout") uiListLayout2.Padding = UDim.new(v86[186], section.MultiHeaderGap) uiListLayout2.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout2.FillDirection = Enum.FillDirection.Horizontal uiListLayout2.Parent = instance local uiPadding2 = Instance.new("UIPadding") uiPadding2.PaddingRight = UDim.new(0, section.MultiHeaderPadding) uiPadding2.PaddingLeft = UDim.new(v86[186], section.MultiHeaderPadding) uiPadding2.Parent = instance return v120, instance end local function fn37(arg, layoutOrder, arg2, parent, arg3) local section = v117.get().Section local udim2 = UDim2.new local n = -section.InnerPadding * v86[56] local v120 = v118.elementsContainer(arg2, UDim2.fromOffset(section.InnerPadding, section.MultiPaneTop), udim2(1, n, 0, 0)) v120.Visible = false local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = 1 textButton.Size = UDim2.fromScale(0, 1) textButton.BorderSizePixel = v86[186] textButton.AutomaticSize = Enum.AutomaticSize.X textButton.Text = "" textButton.AutoButtonColor = false textButton.LayoutOrder = layoutOrder textButton.Parent = parent local textLabel = Instance.new("TextLabel") textLabel.FontFace = v116.SemiBold textLabel.Text = arg.Sections[layoutOrder].Title textLabel.TextColor3 = v119.get("Unselected") textLabel.AnchorPoint = Vector2.new(0, 0.5) textLabel.BackgroundTransparency = 1 textLabel.Position = UDim2.fromScale(v86[186], v86[101]) textLabel.BorderSizePixel = 0 textLabel.AutomaticSize = Enum.AutomaticSize.X textLabel.Size = UDim2.fromOffset(0, section.MultiTabTextSize + 5) textLabel.TextSize = section.MultiTabTextSize textLabel.Parent = textButton local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.Position = UDim2.new(0, 0, v86[63], -v86[155]) frame.Size = UDim2.new(1, 0, 0, 10) frame.BorderSizePixel = 0 arg3.Batch:Bind(frame, v86[5], v86[139]) frame.Parent = textButton local instance = Instance.new(v86[98]) instance.CornerRadius = UDim.new(0, 3) instance.Parent = frame arg3.Trove:Connect(textButton.MouseButton1Click, function() arg:_SetActive(layoutOrder) end) return { Label = textLabel, Accent = frame, Pane = v120 } end index2.Realize = function(arg, arg2) if arg._realized then return end arg._realized = true local v120 = arg._trove:Extend() local v121 = v119.newBatch(v120) local ctx = { Menu = arg._menu, Trove = v120, Batch = v121 } arg._ctx = ctx local v122, v123 = fn36(arg, arg._resolveParent(), v121, arg2) for k in arg.Sections, nil, nil do arg._tabs[k] = fn37(arg, k, v122, v123, ctx) end v121:BindStateful("TextColor", function(textColor3) local v124 = arg._tabs[arg._activeIndex] if v124 ~= nil then v124.Label.TextColor3 = textColor3 end end) v121:BindStateful("Unselected", function(textColor3) for k, v124 in arg._tabs, nil, nil do if k ~= arg._activeIndex then v124.Label.TextColor3 = textColor3 end end end) local v124 = arg._tabs[arg._activeIndex] if v124 ~= nil then v124.Label.TextColor3 = v119.get("TextColor") v124.Accent.BackgroundTransparency = 0 v124.Pane.Visible = true arg.Sections[arg._activeIndex]:_RealizeAsPane(v124.Pane, ctx) end end index2._SetActive = function(arg, activeIndex) if activeIndex == arg._activeIndex or arg._tabs[activeIndex] == nil then return end local menu = arg._menu local v120 = arg._tabs[arg._activeIndex] if v120 ~= nil then menu:Tween(v120.Label, { TextColor3 = v119.get(v86[96]) }) menu:Tween(v120.Accent, { BackgroundTransparency = 1 }) v120.Pane.Visible = false arg.Sections[arg._activeIndex].Opened:Fire(v86[153]) end arg._activeIndex = activeIndex local v121 = arg._tabs[activeIndex] local ctx = arg._ctx if ctx ~= nil then arg.Sections[activeIndex]:_RealizeAsPane(v121.Pane, ctx) end menu:Tween(v121.Label, { TextColor3 = v119.get("TextColor") }) menu:Tween(v121.Accent, { BackgroundTransparency = 0 }) v121.Pane.Visible = v86[34] arg.Sections[activeIndex].Opened:Fire(true) end index2.SelectPane = function(arg, arg2) if not arg._realized then arg:Realize() end arg:_SetActive(arg2) end index2._SetGridParent = function(arg, parent, layoutOrder) local rootFrame = arg._rootFrame if rootFrame == nil then return end rootFrame.LayoutOrder = layoutOrder rootFrame.Parent = parent end index2.SetVisible = function(arg, visible) local rootFrame = arg._rootFrame if rootFrame ~= nil then rootFrame.Visible = visible end end index2.Destroy = function(arg) local rootFrame = arg._rootFrame if rootFrame ~= nil then rootFrame:Destroy() arg._rootFrame = nil if n26 >= 4826 then -- (anti-tamper freeze trap removed) end end arg._trove:Destroy() end return index2 end tbl17.X = function() local x = tbl17.cache.X if not x then x = { c = fn35() } tbl17.cache.X = x end return x.c end end do -- Y local function fn35() local v115 = tbl17.g() tbl17.k() local v116 = tbl17.F() tbl17.r() local v117 = tbl17.s() local v118 = tbl17.v() local v119 = tbl17.x() tbl17.B() local index2 = {} index2.__index = index2 local function fn36(arg, arg2) local tbl18 = {} for _, v120 in arg2, nil, nil do if type(v120) == "string" and table.find(arg, v120) ~= nil and table.find(tbl18, v120) == nil then table.insert(tbl18, v120) end end for _, v120 in arg, nil, nil do if table.find(tbl18, v120) == nil then table.insert(tbl18, v120) end end return tbl18 end local function fn37(arg, arg2, arg3) local v120 = table.find(arg, arg2) if v120 == nil then return false end local n = math.clamp(v120 + arg3, 1, #arg) if n == v120 then return false end table.remove(arg, v120) table.insert(arg, n, arg2) return v86[34] end local function fn38(arg) local rt = arg._rt if rt == nil then return end for k, v120 in rt.Rows, nil, nil do local layoutOrder = table.find(arg.Order, k) or 0 local autoButtonColor = layoutOrder > v86[63] local autoButtonColor2 = layoutOrder > v86[186] and layoutOrder < #arg.Order v120.Object.LayoutOrder = layoutOrder v120.Index.Text = tostring(layoutOrder) v120.Up.AutoButtonColor = autoButtonColor v120.Down.AutoButtonColor = autoButtonColor2 local textTransparency = 0.6 if autoButtonColor then textTransparency = 0 end local textTransparency2 = v86[84] if autoButtonColor2 then textTransparency2 = 0 end v120.Up.TextTransparency = textTransparency v120.Down.TextTransparency = textTransparency2 end end local function fn39(arg, arg2) arg.Value = table.clone(arg.Order) arg.ValueChanged:Fire(arg.Value) if not arg2 then arg._onChanged(arg.Value) arg.Changed:Fire(arg.Value) end end local function fn40(arg, text, parent, arg2) local menu = arg._menu local v120 = v118.get() local listRowHeight = v120.Row.ListRowHeight local n = -v86[58] local isCompact = v120.IsCompact local n33 = -28 local textSize = 12 local n34 = 22 if isCompact then n = -v86[53] n33 = -42 textSize = 14 n34 = 30 end local frame = Instance.new("Frame") frame.BackgroundTransparency = 0.5 frame.Size = UDim2.new(1, 0, v86[186], listRowHeight) frame.BorderSizePixel = v86[186] arg2.Batch:Bind(frame, "BackgroundColor3", "ElementBackground") frame.Parent = parent local instance = Instance.new(v86[98]) instance.CornerRadius = UDim.new(0, v86[26]) instance.Parent = frame local instance2 = Instance.new(v86[135]) instance2.BackgroundTransparency = 1 instance2.Position = UDim2.fromOffset(8, 0) instance2.Size = UDim2.new(v86[186], 18, 1, v86[186]) instance2.Text = "" instance2.TextSize = v86[118] instance2.TextXAlignment = Enum.TextXAlignment.Left instance2.FontFace = v117.Medium arg2.Batch:Bind(instance2, "TextColor3", v86[96]) instance2.Parent = frame local instance3 = Instance.new(v86[135]) instance3.BackgroundTransparency = 1 instance3.Position = UDim2.fromOffset(30, 0) instance3.Size = UDim2.new(1, n, 1, 0) instance3.Text = text instance3.TextSize = v86[72] instance3.TextXAlignment = Enum.TextXAlignment.Left instance3.FontFace = v117.Medium instance3.TextTruncate = Enum.TextTruncate.AtEnd arg2.Batch:Bind(instance3, "TextColor3", v86[174]) instance3.Parent = frame local textButton = Instance.new("TextButton") textButton.AnchorPoint = Vector2.new(1, 0.5) textButton.Position = UDim2.new(1, n33, 0.5, 0) textButton.Size = UDim2.fromOffset(n34, n34) textButton.BackgroundTransparency = 1 textButton.BorderSizePixel = 0 textButton.Text = "▲" textButton.TextSize = textSize textButton.AutoButtonColor = false textButton.FontFace = menu.Fonts.Main arg2.Batch:Bind(textButton, v86[167], "TextColor") textButton.Parent = frame local textButton2 = Instance.new("TextButton") textButton2.AnchorPoint = Vector2.new(v86[63], 0.5) textButton2.Position = UDim2.new(1, -4, 0.5, 0) textButton2.Size = UDim2.fromOffset(n34, n34) textButton2.BackgroundTransparency = 1 textButton2.BorderSizePixel = 0 textButton2.Text = "▼" textButton2.TextSize = textSize textButton2.AutoButtonColor = v86[153] textButton2.FontFace = menu.Fonts.Main arg2.Batch:Bind(textButton2, "TextColor3", "TextColor") textButton2.Parent = frame v119.connectClick(arg2.Trove, textButton, function() if fn37(arg.Order, text, -v86[63]) then fn38(arg) fn39(arg) end end) v119.connectClick(arg2.Trove, textButton2, function() if fn37(arg.Order, text, 1) then fn38(arg) fn39(arg) end end) return { Object = frame, Up = textButton, Down = textButton2, Index = instance2 } end local function createFrame(arg, parent, arg2) local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.Size = UDim2.fromScale(1, v86[186]) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.Y frame.Parent = parent local instance = Instance.new(v86[128]) instance.BackgroundColor3 = Color3.fromRGB(v86[108], v86[108], 255) instance.Size = UDim2.fromScale(1, 0) instance.AutomaticSize = Enum.AutomaticSize.Y instance.BorderSizePixel = 0 instance.Parent = frame local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v116.bindSurfaceGradient(arg2.Batch, uiGradient, { "GradientMid", v86[70] }) uiGradient.Parent = instance local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 5) uiCorner.Parent = instance local uiStroke = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = instance local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(v86[186], 1) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = instance local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, 4) uiPadding.PaddingBottom = UDim.new(0, v86[26]) uiPadding.PaddingLeft = UDim.new(v86[186], 4) uiPadding.PaddingRight = UDim.new(0, v86[26]) uiPadding.Parent = instance local rt = { Root = frame, Rows = {} } arg._rt = rt for _, v120 in arg.Items, nil, nil do rt.Rows[v120] = fn40(arg, v120, instance, arg2) end fn38(arg) return frame end index2._New = function(arg, arg2, arg3, arg4) local tbl18 = {} for _, v120 in arg4.Items, nil, nil do if type(v120) == "string" then table.insert(tbl18, v120) end end local v120 if arg4.Default ~= nil then v120 = fn36(tbl18, arg4.Default) else v120 = table.clone(tbl18) end local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "OrderedList", Row = arg2, Items = tbl18, Order = v120, Value = table.clone(v120), Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _rt = nil, }, index2) arg2:AttachRight(function(arg5, arg6) return createFrame(obj, arg5, arg6) end, nil, nil, arg3) return obj end index2.Set = function(arg, arg2, arg3) if type(arg2) ~= "table" then return end arg.Order = fn36(arg.Items, arg2) fn38(arg) fn39(arg, arg3) end index2.SetItems = function(arg, arg2) local items = {} for _, v120 in arg2, nil, nil do if type(v120) == "string" then table.insert(items, v120) end end arg.Items = items arg.Order = fn36(items, arg.Order) arg.Value = table.clone(arg.Order) return arg end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.Y = function() local y = tbl17.cache.Y if not y then local y2 = { c = fn35() } tbl17.cache.Y = y2 y = y2 end return y.c end end do -- Z local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.x() tbl17.B() local v118 = tbl17.A() local v119 = tbl17.w() local color = Color3.fromRGB(v86[119], 159, 159) local udim2 = UDim2.fromOffset(153, 150) local udim22 = UDim2.fromOffset(5, 16) local index2 = {} index2.__index = index2 local function fn36(arg) return arg.Title or arg.Name end local function fn37(arg, arg2, selected, arg3) arg2.Selected = selected local item = arg2.Item local defaultAccentPosition = arg2.DefaultAccentPosition local defaultImageSize = arg2.DefaultImageSize local selectedPreviewColor, n, n33, n34 if selected then selectedPreviewColor = item.SelectedPreviewColor or v118.get("TabButtonSelected") defaultAccentPosition = UDim2.new(0.5, 0, 1, -2) defaultImageSize = UDim2.new(arg2.DefaultImageSize.X.Scale, arg2.DefaultImageSize.X.Offset + 6, arg2.DefaultImageSize.Y.Scale, arg2.DefaultImageSize.Y.Offset + 6) n = 0 n33 = 0.94 n34 = 0 else selectedPreviewColor = arg2.DefaultPreviewColor n = 1 n33 = 1 n34 = 0.08 end selected = selected and arg2.TitleColor or v118.get("Unselected") local function fn38(arg4, arg5) if arg3 then for k, v120 in arg5, nil, nil do arg4[k] = v120 end else arg._menu:Tween(arg4, arg5) end end fn38(arg2.Card, { BackgroundColor3 = selectedPreviewColor }) fn38(arg2.Title, { TextColor3 = selected }) fn38(arg2.Accent, { Position = defaultAccentPosition, BackgroundTransparency = n34 }) fn38(arg2.SelectIndicator, { BackgroundTransparency = n }) fn38(arg2.SelectIndicatorIcon, { TextTransparency = n }) fn38(arg2.SelectIndicatorStroke, { Transparency = n }) fn38(arg2.Image, { Size = defaultImageSize }) fn38(arg2.Button, { BackgroundTransparency = n33 }) end local function fn38(arg, arg2) local visible = arg2 == nil or arg2(arg.Item, arg.SearchKey) if arg.Object.Visible ~= visible then arg.Object.Visible = visible end end local function fn39(arg) if arg == v86[89] then return "Loading catalog", v86[111] end if arg == "Unavailable" then return v86[69], "The catalog could not be loaded." end if arg == "Empty" then return "No items available", "This catalog does not have any items yet." end if arg == "NoMatches" then return "No matches", v86[177] end return "", "" end local function fn40(arg) local rt = arg._rt if rt == nil then return end local visible = arg.State == "Ready" rt.Holder.Visible = visible rt.StateRoot.Visible = not visible local v120, v121 = fn39(arg.State) rt.StateTitle.Text = v120 rt.StateMessage.Text = arg._stateMessage or v121 rt.ClearFilter.Visible = arg.State == "NoMatches" and arg._onClearFilter ~= nil rt.UpdateHeight() end local function fn41(arg, arg2, parent, arg3, arg4) local v120 = fn36(arg2) local previewColor = arg2.PreviewColor or v118.get(v86[178]) local titleColor = arg2.TitleColor or v118.get("TextColor") local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.Size = UDim2.fromOffset(100, 100) frame.LayoutOrder = arg2.LayoutOrder or 0 frame.Visible = false frame.Parent = parent local instance = Instance.new(v86[4]) instance.HorizontalAlignment = Enum.HorizontalAlignment.Center instance.VerticalAlignment = Enum.VerticalAlignment.Center instance.HorizontalFlex = Enum.UIFlexAlignment.Fill instance.VerticalFlex = Enum.UIFlexAlignment.Fill instance.Padding = UDim.new(0, 16) instance.SortOrder = Enum.SortOrder.LayoutOrder instance.ItemLineAlignment = Enum.ItemLineAlignment.Center instance.Parent = frame local instance2 = Instance.new(v86[128]) instance2.BackgroundColor3 = previewColor instance2.BorderSizePixel = v86[186] instance2.AnchorPoint = Vector2.new(v86[101], 0.5) instance2.Position = UDim2.fromScale(v86[101], 0.5) instance2.Size = UDim2.fromScale(1, 1) instance2.ClipsDescendants = true instance2.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[54]) uiCorner.Parent = instance2 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, 10) uiPadding.PaddingRight = UDim.new(0, 10) uiPadding.PaddingLeft = UDim.new(0, 10) uiPadding.PaddingBottom = UDim.new(0, v86[133]) uiPadding.Parent = instance2 local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = v86[63] textButton.BorderSizePixel = 0 textButton.Size = UDim2.fromScale(1, 1) textButton.Text = "" textButton.ZIndex = 5 textButton.AutoButtonColor = v86[153] textButton.Parent = instance2 local instance3 = Instance.new(v86[98]) instance3.CornerRadius = UDim.new(0, v86[54]) instance3.Parent = textButton local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = 1 frame2.BorderSizePixel = 0 frame2.AnchorPoint = Vector2.new(0.5, 0.5) frame2.Position = UDim2.fromScale(0.5, 0.5) frame2.AutomaticSize = Enum.AutomaticSize.XY frame2.Parent = instance2 local uiListLayout = Instance.new("UIListLayout") uiListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.ItemLineAlignment = Enum.ItemLineAlignment.Center uiListLayout.Parent = frame2 local imageLabel = Instance.new("ImageLabel") imageLabel.BackgroundTransparency = 1 imageLabel.BorderSizePixel = v86[186] imageLabel.AnchorPoint = Vector2.new(0.5, 0.5) imageLabel.Position = UDim2.fromScale(0.5, 0.5) imageLabel.Size = arg2.ImageSize or UDim2.fromOffset(v86[91], 100) imageLabel.ScaleType = Enum.ScaleType.Fit imageLabel.Image = arg2.Image or "rbxassetid://89204837120267" imageLabel.Parent = frame2 local frame3 = Instance.new("Frame") frame3.AnchorPoint = Vector2.new(1, 0) frame3.Position = UDim2.new(1, 2, 0, -v86[56]) frame3.Size = UDim2.fromOffset(v86[144], 22) frame3.BackgroundTransparency = 1 frame3.BorderSizePixel = 0 frame3.ZIndex = 6 arg4:Bind(frame3, "BackgroundColor3", "Accent") frame3.Parent = instance2 local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(1, v86[186]) uiCorner2.Parent = frame3 local uiStroke = Instance.new("UIStroke") uiStroke.Color = Color3.fromRGB(255, 255, 255) uiStroke.Transparency = v86[63] uiStroke.Thickness = 1.5 uiStroke.Parent = frame3 local instance4 = Instance.new(v86[135]) instance4.BackgroundTransparency = 1 instance4.Size = UDim2.fromScale(1, 1) instance4.Text = "✓" instance4.FontFace = v116.Bold instance4.TextSize = 15 instance4.TextColor3 = Color3.fromRGB(v86[108], v86[108], 255) instance4.TextTransparency = v86[63] instance4.ZIndex = 7 instance4.Parent = frame3 local instance5 = Instance.new(v86[128]) instance5.BorderSizePixel = 0 instance5.AnchorPoint = Vector2.new(0.5, 0) instance5.Position = UDim2.new(v86[101], 0, 1, 5) instance5.Size = UDim2.fromOffset(v86[91], 100) instance5.BackgroundTransparency = v86[147] if arg2.AccentColor ~= nil then instance5.BackgroundColor3 = arg2.AccentColor else arg4:Bind(instance5, "BackgroundColor3", "Accent") end instance5.Parent = instance2 Instance.new("UICorner").Parent = instance5 local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = v86[45] local new = ColorSequenceKeypoint.new local v121 = v86[63] uiGradient.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(v86[108], 255, v86[108])), new(v121, color) }) uiGradient.Parent = instance5 local textLabel = Instance.new("TextLabel") textLabel.BackgroundTransparency = v86[63] textLabel.BorderSizePixel = 0 textLabel.AnchorPoint = Vector2.new(0, v86[101]) textLabel.Position = UDim2.fromScale(0, 0.5) textLabel.AutomaticSize = Enum.AutomaticSize.XY textLabel.TextSize = 16 textLabel.Text = v120 textLabel.FontFace = v116.SemiBold textLabel.TextColor3 = titleColor textLabel.Parent = frame local tbl18 = { Item = arg2, Object = frame, Card = instance2, Button = textButton, Title = textLabel, Image = imageLabel, SelectIndicator = frame3, SelectIndicatorIcon = instance4, SelectIndicatorStroke = uiStroke, Accent = instance5, Selected = arg2.Selected == true, TitleColor = titleColor, DefaultPreviewColor = previewColor, DefaultAccentPosition = instance5.Position, DefaultImageSize = imageLabel.Size, SearchKey = arg2.Name:lower(), } local render = arg2.Render if render ~= nil then local frame4 = Instance.new("Frame") frame4.BackgroundTransparency = v86[63] frame4.BorderSizePixel = 0 frame4.Size = UDim2.fromScale(1, 1) frame4.Parent = instance2 render(arg2, { Content = frame4, HideImage = function() imageLabel.Visible = false end, }) end fn37(arg, tbl18, tbl18.Selected, true) arg3:Connect(textButton.MouseEnter, function() if tbl18.Selected then return end arg._menu:Tween(tbl18.Card, { BackgroundColor3 = v118.get("Outline") }) end) arg3:Connect(textButton.MouseLeave, function() if tbl18.Selected then return end arg._menu:Tween(tbl18.Card, { BackgroundColor3 = tbl18.DefaultPreviewColor }) end) v117.connectClick(arg3, textButton, function() arg:Set(arg2.Name) end) return tbl18 end local function fn42(arg) local value = arg.Value if value == nil then for _, v120 in arg._entries, nil, nil do if v120.Item.Selected then value = v120.Item.Name break end end if value == nil and arg._entries[v86[63]] ~= nil then value = arg._entries[v86[63]].Item.Name end if value ~= nil then arg:Set(value, true) end return end for _, v120 in arg._entries, nil, nil do if v120.Item.Name == value then arg._selectedEntry = v120 fn37(arg, v120, true) return end end end local function fn43(arg, arg2) for _, v120 in arg, nil, nil do if v120.Name == arg2 then return true end end return false end local function fn44(arg) for _, v120 in arg, nil, nil do if v120.Selected then return v120.Name end end local v120 = arg[1] if v120 ~= nil then return v120.Name end return nil end local function fn45(arg) if true then local ctx = arg._ctx local rt = arg._rt if ctx == nil or rt == nil then return end arg._buildToken = arg._buildToken + 1 local itemsTrove = arg._itemsTrove if itemsTrove ~= nil then itemsTrove:Destroy() end for _, v120 in arg._entries, nil, nil do v120.Object:Destroy() end table.clear(arg._entries) arg._selectedEntry = nil local v120 = ctx.Trove:Extend() local v121 = v118.newBatch(v120) arg._itemsTrove = v120 local buildToken = arg._buildToken local items = arg.Items local function fn46(arg2) for k, v122 in items, nil, nil do if arg._buildToken ~= buildToken then return end local v123 = fn41(arg, v122, rt.Holder, v120, v121) table.insert(arg._entries, v123) fn38(v123, arg._filter) if arg2 and k % v86[192] == v86[186] then task.wait() end end if arg._buildToken == buildToken then fn42(arg) end end if #items <= 30 then fn46(false) else v120:Add(task.spawn(fn46, true)) end return end -- (anti-tamper freeze trap removed) end local function fn46(arg, parent, ctx) local instance = Instance.new(v86[128]) instance.BackgroundTransparency = 1 instance.BorderSizePixel = 0 instance.Size = UDim2.new(1, 0, 0, arg._height) instance.Parent = parent local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.BackgroundTransparency = 1 scrollingFrame.BorderSizePixel = 0 scrollingFrame.Size = UDim2.fromScale(1, 1) scrollingFrame.CanvasSize = UDim2.new(v86[186], 0, v86[186], 0) scrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y scrollingFrame.ScrollBarThickness = v86[186] scrollingFrame.ScrollBarImageTransparency = v86[63] scrollingFrame.Selectable = false ctx.Batch:Bind(scrollingFrame, v86[154], "Accent") scrollingFrame.Parent = instance local active = scrollingFrame.Active local uiGridLayout = Instance.new("UIGridLayout") uiGridLayout.CellSize = udim2 uiGridLayout.CellPadding = udim22 uiGridLayout.SortOrder = Enum.SortOrder.LayoutOrder uiGridLayout.Parent = scrollingFrame local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.Size = UDim2.fromScale(v86[63], 1) frame.Visible = false frame.Parent = instance local frame2 = Instance.new("Frame") frame2.AnchorPoint = Vector2.new(0.5, 0.5) frame2.Position = UDim2.fromScale(0.5, 0.5) frame2.Size = UDim2.new(v86[63], -48, 0, 0) frame2.AutomaticSize = Enum.AutomaticSize.Y frame2.BackgroundTransparency = 1 frame2.BorderSizePixel = v86[186] frame2.Parent = frame local uiListLayout = Instance.new("UIListLayout") uiListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center uiListLayout.Padding = UDim.new(v86[186], 8) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame2 local instance2 = Instance.new(v86[135]) instance2.BackgroundTransparency = 1 instance2.BorderSizePixel = 0 instance2.Size = UDim2.new(1, 0, 0, v86[61]) instance2.FontFace = v116.SemiBold instance2.Text = "" instance2.TextSize = 17 instance2.TextWrapped = true ctx.Batch:Bind(instance2, "TextColor3", "TextColor") instance2.Parent = frame2 local instance3 = Instance.new(v86[135]) instance3.BackgroundTransparency = 1 instance3.BorderSizePixel = 0 instance3.Size = UDim2.fromScale(1, 0) instance3.AutomaticSize = Enum.AutomaticSize.Y instance3.FontFace = arg._menu.Fonts.Main instance3.Text = "" instance3.TextSize = 15 instance3.TextWrapped = true ctx.Batch:Bind(instance3, "TextColor3", v86[96]) instance3.Parent = frame2 local textButton = Instance.new("TextButton") textButton.Size = UDim2.fromOffset(v86[67], 32) textButton.BackgroundColor3 = v118.get("ElementBackground") textButton.BorderSizePixel = 0 textButton.AutoButtonColor = false textButton.FontFace = v116.SemiBold textButton.Text = "Clear Search" textButton.TextSize = 15 textButton.Visible = v86[153] ctx.Batch:Bind(textButton, "BackgroundColor3", "ElementBackground") ctx.Batch:Bind(textButton, "TextColor3", "Accent") textButton.Parent = frame2 local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = textButton local uiStroke = Instance.new("UIStroke") ctx.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = textButton ctx.Trove:Connect(textButton.MouseEnter, function() arg._menu:Tween(textButton, { BackgroundColor3 = v118.get(v86[88]) }) end) ctx.Trove:Connect(textButton.MouseLeave, function() arg._menu:Tween(textButton, { BackgroundColor3 = v118.get("ElementBackground") }) end) v117.connectClick(ctx.Trove, textButton, function() local onClearFilter = arg._onClearFilter if onClearFilter ~= nil then onClearFilter() end end) local v120 = nil local connection = nil local n = -1 local function fn47() local flag19 = arg._heightMode == "Fill" local scrollingEnabled = not flag19 scrollingFrame.ScrollingEnabled = scrollingEnabled scrollingFrame.Active = scrollingEnabled and active local height = arg._height if flag19 then local y = uiGridLayout.AbsoluteContentSize.Y if arg.State ~= "Ready" then y = 144 end local height2 = arg._height if v120 ~= nil then height2 = math.max(0, v120.AbsoluteSize.Y - instance.AbsolutePosition.Y - v120.AbsolutePosition.Y + v120.CanvasPosition.Y) end height = math.max(y, height2) end if height == n then return end n = height instance.Size = UDim2.new(1, 0, 0, height) end local offset = udim2.X.Offset local offset2 = udim22.X.Offset local y = udim2.Y local n33 = -1 local function fn48() local x = scrollingFrame.AbsoluteSize.X if x < offset then return end local n34 = math.floor((x + offset2) / (offset + offset2)) if n34 < 1 then n34 = v86[63] end local n35 = math.floor((x - offset2 * (n34 - 1)) / n34) if n35 == n33 then return end n33 = n35 uiGridLayout.CellSize = UDim2.new(0, n35, y.Scale, y.Offset) end local function fn49() local v121 = v119.findScrollingAncestor(instance) if v121 == v120 then return end if connection ~= nil then ctx.Trove:Remove(connection) connection = nil end v120 = v121 if v120 ~= nil then connection = ctx.Trove:Connect(v120:GetPropertyChangedSignal("AbsoluteSize"), fn47) end fn47() end ctx.Trove:Connect(scrollingFrame:GetPropertyChangedSignal(v86[131]), fn48) ctx.Trove:Connect(uiGridLayout:GetPropertyChangedSignal("AbsoluteContentSize"), fn47) ctx.Trove:Connect(instance:GetPropertyChangedSignal("AbsolutePosition"), fn47) ctx.Trove:Connect(instance.AncestryChanged, fn49) fn49() ctx.Trove:Add(task.defer(fn48)) ctx.Trove:Add(task.defer(fn47)) arg._ctx = ctx arg._rt = { Holder = scrollingFrame, StateRoot = frame, StateTitle = instance2, StateMessage = instance3, ClearFilter = textButton, UpdateHeight = fn47, } fn45(arg) fn40(arg) return instance end index2._New = function(arg, arg2, arg3, arg4) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "SkinChanger", Row = arg2, Items = arg4.Items or {}, _areItemsPublished = arg4.Items ~= nil, Value = nil, Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _height = arg4.Height or 300, _heightMode = arg4.HeightMode or "Fixed", State = arg4.State or "Ready", _stateMessage = arg4.StateMessage, _onClearFilter = arg4.OnClearFilter, _filter = nil, _entries = {}, _selectedEntry = nil, _buildToken = 0, _itemsTrove = nil, _ctx = nil, _rt = nil, }, index2) arg2:AttachRight(function(arg5, arg6) return fn46(obj, arg5, arg6) end, nil, nil, arg3) return obj end index2.Set = function(arg, arg2, arg3) local v120 if arg2 ~= nil and arg._areItemsPublished and not fn43(arg.Items, arg2) then v120 = nil else v120 = arg2 end local flag19 = arg2 ~= nil and v120 == nil local v121 = nil if v120 ~= nil then v121 = nil for _, v122 in arg._entries, nil, nil do if v122.Item.Name == v120 then v121 = v122 break else v121 = nil end end end if arg.Value == v120 and (v121 == nil or arg._selectedEntry == v121) and not flag19 then return end arg.Value = v120 local selectedEntry = arg._selectedEntry if selectedEntry ~= nil and selectedEntry ~= v121 then fn37(arg, selectedEntry, false) end arg._selectedEntry = v121 if v121 ~= nil then fn37(arg, v121, v86[34]) end arg.ValueChanged:Fire(v120) if not arg3 then arg._onChanged(v120) arg.Changed:Fire(v120) end end index2.SetItems = function(arg, arg2, arg3) local value = arg.Value arg.Items = table.clone(arg2) arg._areItemsPublished = true local v120 = v86[153] if value == nil then value = fn44(arg.Items) elseif not fn43(arg.Items, value) then value = fn44(arg.Items) v120 = v86[34] end arg.Value = value arg.ValueChanged:Fire(value) if v120 and not arg3 then arg._onChanged(value) arg.Changed:Fire(value) end fn45(arg) return arg end index2.SetFilter = function(arg, filter) arg._filter = filter for _, v120 in arg._entries, nil, nil do fn38(v120, filter) end return arg end index2.SetState = function(arg, state, stateMessage) arg.State = state arg._stateMessage = stateMessage fn40(arg) return arg end index2.SetClearFilterAction = function(arg, onClearFilter) arg._onClearFilter = onClearFilter fn40(arg) return arg end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._buildToken = arg._buildToken + 1 arg._trove:Destroy() end return index2 end tbl17.Z = function() local z = tbl17.cache.Z if not z then z = { c = fn35() } tbl17.cache.Z = z end return z.c end end do -- _ local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() tbl17.B() local v118 = tbl17.A() local index2 = {} index2.__index = index2 local function createFrame(arg, parent, arg2) local menu = arg._menu local controlHeight = v117.get().Row.ControlHeight local frame = Instance.new("Frame") frame.ClipsDescendants = true frame.AnchorPoint = Vector2.new(v86[63], 0.5) frame.Position = UDim2.new(v86[63], -v86[63], 0.5, 0) frame.Size = UDim2.fromOffset(0, controlHeight) frame.BorderSizePixel = 0 arg2.Batch:Bind(frame, v86[5], v86[168]) frame.Parent = parent local uiSizeConstraint = Instance.new("UISizeConstraint") uiSizeConstraint.MinSize = Vector2.new(math.min(arg.MaxWidth + v86[12], v86[163]), controlHeight) uiSizeConstraint.MaxSize = Vector2.new(arg.MaxWidth + 12, controlHeight) uiSizeConstraint.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 5) uiCorner.Parent = frame local uiStroke = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke, v86[27], "Outline") uiStroke.Parent = frame local instance = Instance.new(v86[148]) instance.ClearTextOnFocus = false instance.PlaceholderText = arg.Placeholder arg2.Batch:Bind(instance, "PlaceholderColor3", "Unselected") instance.FontFace = v116.SemiBold instance.Text = "" instance.AnchorPoint = Vector2.new(0, 0.5) instance.BorderSizePixel = 0 instance.BackgroundTransparency = v86[63] instance.Position = UDim2.new(0, 5, v86[101], 0) instance.Size = UDim2.new(1, -10, 1, 0) instance.AutomaticSize = Enum.AutomaticSize.None instance.TextSize = v86[13] instance.TextXAlignment = Enum.TextXAlignment.Left instance.Selectable = v86[153] instance.Active = v86[34] arg2.Batch:Bind(instance, "TextColor3", "TextColor") instance.Parent = frame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingRight = UDim.new(0, v86[175]) uiPadding.PaddingLeft = UDim.new(0, 1) uiPadding.Parent = instance arg._rt = { Outline = frame, Input = instance } frame.Active = true arg2.Trove:Connect(frame.InputBegan, function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then task.defer(function() instance:CaptureFocus() end) end end) local tweenInfo = TweenInfo.new(0.05, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, v86[186], false, 0) local function fn36(arg3) if instance.TextSize ~= 16 then instance.TextSize = 16 end local _tbp = Instance.new("GetTextBoundsParams") _tbp.Text = instance.Text _tbp.Size = 16 _tbp.Font = instance.FontFace _tbp.Width = 100000 local x = game:GetService("TextService"):GetTextBoundsAsync(_tbp).X if arg.MaxWidth < x then instance.TextSize = math.max(math.floor(v86[13] * arg.MaxWidth / x), 8) x = arg.MaxWidth end local udim2 = UDim2.fromOffset(x + 12, controlHeight) if arg3 then menu:Tween(frame, { Size = udim2 }, tweenInfo) else frame.Size = udim2 end end arg2.Trove:Connect(instance:GetPropertyChangedSignal("Text"), function() fn36(true) if not arg.FocusLostOnly then arg:Set(instance.Text) end end) arg2.Trove:Connect(instance.Focused, function() menu:Tween(instance, { TextColor3 = v118.get(v86[139]) }) end) arg2.Trove:Connect(instance.FocusLost, function() menu:Tween(instance, { TextColor3 = v118.get("TextColor") }) if arg.FocusLostOnly then arg:Set(instance.Text) end end) arg2.Trove:Connect(arg.ValueChanged, function(text) if instance.Text ~= text and not instance:IsFocused() then instance.Text = text end end) if instance.Text ~= arg.Value then instance.Text = arg.Value end arg2.Trove:Add(task.defer(function() fn36(false) end)) return frame end index2._New = function(arg, arg2, arg3, arg4) local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = "Input", Row = arg2, Value = arg4.Default or "", Placeholder = arg4.Placeholder or v86[22], FocusLostOnly = arg4.FocusLostOnly == v86[34], MaxWidth = arg4.MaxLength or 200, Changed = arg3:Add(v115.new()), ValueChanged = arg3:Add(v115.new()), _onChanged = arg4.OnChanged or function() end, _rt = nil, }, index2) arg2:AttachRight(function(arg5, arg6) return createFrame(obj, arg5, arg6) end, nil, nil, arg3) return obj end index2.Set = function(arg, arg2, arg3) if type(arg2) == "boolean" or arg2 == nil then return end local value = tostring(arg2) if value == arg.Value then return end arg.Value = value arg.ValueChanged:Fire(value) if not arg3 then arg._onChanged(value) arg.Changed:Fire(value) end end index2.SetLabel = function(arg, arg2) arg.Row:SetLabel(arg2) return arg end index2.SetTooltip = function(arg, arg2) arg.Row:SetTooltip(arg2) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.OnChanged = function(arg, arg2) arg._trove:Connect(arg.Changed, arg2) return arg end index2.Connect = function(arg, arg2, arg3) arg._trove:Connect(arg2, arg3) return arg end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17._ = function() local tbl18 = tbl17.cache._ if not tbl18 then tbl18 = { c = fn35() } tbl17.cache._ = tbl18 end return tbl18.c end end do -- aa local function fn35() tbl17.k() local v115 = tbl17.F() tbl17.r() local v116 = tbl17.x() tbl17.B() local v117 = tbl17.w() local index2 = {} index2.__index = index2 local function fn36(arg) if arg:IsA("Model") then local boundingBox, v118 = arg:GetBoundingBox() return boundingBox.Position, math.max(v118.X, v118.Y, v118.Z) * 0.5 end if arg:IsA("BasePart") then local size = arg.Size return arg.Position, math.max(size.X, size.Y, size.Z) * v86[101] end return Vector3.zero, 4 end local function fn37(arg) if arg._model == nil then return end local modelCenter = arg._modelCenter local n = math.max(arg._modelRadius * 2.4 * arg._distanceMultiplier, v86[26]) local rotation = arg._rotation local n33 = math.clamp(arg._elevation, -1.4707963267948965, v86[23]) local v118 = math.cos(n33) arg._camera.CFrame = CFrame.new(modelCenter + Vector3.new(math.cos(rotation) * n * v118, math.sin(n33) * n, math.sin(rotation) * n * v118), modelCenter) end local function createFrame(arg, parent, arg2) local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.Size = UDim2.new(1, v86[186], 0, arg._height) frame.BorderSizePixel = v86[186] frame.Parent = parent local instance = Instance.new(v86[128]) instance.Size = UDim2.fromScale(v86[63], 1) instance.BackgroundColor3 = Color3.fromRGB(255, 255, 255) instance.BorderSizePixel = 0 instance.ZIndex = 0 instance.Parent = frame local instance2 = Instance.new(v86[46]) instance2.Rotation = v86[45] v115.bindSurfaceGradient(arg2.Batch, instance2, { v86[187], v86[70] }) instance2.Parent = instance local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = instance local viewportFrame = Instance.new("ViewportFrame") viewportFrame.Size = UDim2.fromScale(v86[63], 1) viewportFrame.BackgroundTransparency = 1 viewportFrame.BorderSizePixel = 0 viewportFrame.LightDirection = Vector3.new(-1, -v86[63], -1).Unit viewportFrame.LightColor = Color3.fromRGB(v86[108], 255, 255) viewportFrame.Ambient = Color3.fromRGB(140, 140, 150) viewportFrame.CurrentCamera = arg._camera viewportFrame.Parent = frame local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(0, v86[54]) uiCorner2.Parent = viewportFrame local uiStroke = Instance.new("UIStroke") arg2.Batch:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = viewportFrame arg._worldModel.Parent = viewportFrame arg._rt = viewportFrame local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = 1 textButton.Size = UDim2.fromScale(1, 1) textButton.BorderSizePixel = 0 textButton.Text = "" textButton.AutoButtonColor = false textButton.Parent = viewportFrame arg2.Trove:Connect(textButton.InputBegan, function(arg3) if arg3.UserInputType ~= Enum.UserInputType.MouseWheel then return end local n = 1 if arg3.Position.Z > 0 then n = -1 end arg._distanceMultiplier = math.clamp(arg._distanceMultiplier * 0.85 ^ (-n), 0.2, v86[54]) fn37(arg) end) local v118 = nil v116.connectDrag(arg2.Trove, textButton, function(arg3) local v119 = v118 local vector2 = Vector2.new(arg3.Position.X, arg3.Position.Y) v118 = vector2 if v119 == nil then return end local n = vector2 - v119 arg._rotation = arg._rotation - n.X * 0.012 arg._elevation = math.clamp(arg._elevation - n.Y * 0.012, -1.4707963267948965, 1.4707963267948965) fn37(arg) end, function(arg3) v118 = nil if arg3 then arg._autoRotate = false return end if arg._userWantsAutoRotate then arg._autoRotate = true end end) arg2.Trove:Add(arg2.Menu:OnPreRender(function(arg3) if arg._model == nil or not v117.isEffectivelyVisible(viewportFrame) then return end if arg._autoRotate then arg._rotation = arg._rotation + arg3 * arg._rotateSpeed fn37(arg) end end)) for _, v119 in arg._onRealized, nil, nil do v119(viewportFrame) end table.clear(arg._onRealized) return frame end index2._New = function(arg, arg2, arg3, arg4) local camera = Instance.new("Camera") camera.FieldOfView = arg4.FieldOfView or 50 arg3:Add(camera) local worldModel = Instance.new("WorldModel") arg3:Add(worldModel) local flag19 = arg4.AutoRotate ~= v86[153] local obj = setmetatable({ _trove = arg3, _menu = arg, Kind = v86[196], Row = arg2, _height = arg4.Height or 180, _rotation = 0, _elevation = v86[30], _autoRotate = flag19, _userWantsAutoRotate = flag19, _rotateSpeed = arg4.RotateSpeed or 0.6, _distanceMultiplier = arg4.DistanceMul or 1, _camera = camera, _worldModel = worldModel, _model = nil, _modelCenter = Vector3.zero, _modelRadius = 4, _rt = nil, _onRealized = {}, }, index2) arg2:AttachRight(function(arg5, arg6) return createFrame(obj, arg5, arg6) end, nil, nil, arg3) return obj end index2.SetModel = function(arg, arg2) local model = arg._model if model ~= nil and model.Parent == arg._worldModel then model:Destroy() end arg._model = nil if arg2 ~= nil then local clone = arg2:Clone() if clone ~= nil then clone.Parent = arg._worldModel arg._model = clone local v118, v119 = fn36(clone) arg._modelCenter = v118 arg._modelRadius = v119 fn37(arg) end end return arg end index2.OnRealized = function(arg, arg2) local rt = arg._rt if rt ~= nil then arg2(rt) return arg end table.insert(arg._onRealized, arg2) return arg end index2.SetDistance = function(arg, arg2) arg._distanceMultiplier = math.max(0.1, arg2) fn37(arg) return arg end index2.SetRotation = function(arg, rotation) arg._rotation = rotation fn37(arg) return arg end index2.SetVisible = function(arg, arg2) arg.Row:SetVisible(arg2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.aa = function() local aa = tbl17.cache.aa if not aa then local aa2 = { c = fn35() } tbl17.cache.aa = aa2 aa = aa2 end return aa.c end end do -- ab local function fn35() local v115 = tbl17.g() tbl17.k() local v116 = tbl17.P() local v117 = tbl17.C() local v118 = tbl17.N() local v119 = tbl17.M() tbl17.r() local v120 = tbl17.Q() local v121 = tbl17.H() local v122 = tbl17.R() local v123 = tbl17.T() local v124 = tbl17.U() local v125 = tbl17.v() local v126 = tbl17.V() local v127 = tbl17.X() local v128 = tbl17.Y() local v129 = tbl17.u() local v130 = tbl17.x() local v131 = tbl17.G() local v132 = tbl17.J() local v133 = tbl17.B() local v134 = tbl17.W() local v135 = tbl17.Z() local v136 = tbl17.K() local v137 = tbl17._() local v138 = tbl17.A() local v139 = tbl17.S() local v140 = tbl17.aa() local index2 = {} index2.__index = index2 local function fn36(arg, arg2, arg3, arg4) return setmetatable({ _trove = arg2, _menu = arg, _kind = arg3, Title = arg4, Opened = arg2:Add(v115.new()), _side = nil, _resolveParent = nil, _groupSpec = nil, _entries = {}, _visible = v86[34], _realized = false, _realizeTrove = nil, _batch = nil, _ctx = nil, _elements = nil, _titleLabel = nil, _rootFrame = nil, _separatorsDirty = false, _separatorTrove = arg2:Extend(), _popup = nil, _gearOverlayParent = nil, _gears = {}, _gearTrigger = nil, _gearTooltip = nil, _gearOwnerRow = nil, }, index2) end index2.BuildSection = function(arg, arg2, arg3, resolveParent) local v141 = fn36(arg, arg2:Extend(), "section", arg3.Title or "") v141._side = arg3.Side v141._resolveParent = resolveParent return v141 end index2.BuildPanes = function(arg, arg2, arg3) local tbl18 = {} for _, v141 in arg3, nil, nil do table.insert(tbl18, fn36(arg, arg2:Extend(), "subsection", v141)) end return tbl18 end index2.BuildRoot = function(arg, arg2) return fn36(arg, arg2:Extend(), "root", "") end local function fn37(arg, parent, arg2) local v141 = v125.get() local frame = Instance.new("Frame") frame.LayoutOrder = v134.nextLayoutOrder(parent) frame.BackgroundTransparency = 1 frame.Size = UDim2.fromScale(1, 0) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.Y frame.Visible = arg._visible frame.Parent = parent arg._rootFrame = frame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, v141.Section.TitleGap) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame if arg.Title ~= "" then local instance = Instance.new(v86[135]) instance.Text = arg.Title instance.AnchorPoint = Vector2.new(0, 0.5) instance.BackgroundTransparency = 1 instance.Position = UDim2.fromScale(v86[186], 0.5) instance.BorderSizePixel = 0 instance.AutomaticSize = Enum.AutomaticSize.XY instance.TextSize = v141.Section.TitleTextSize instance.FontFace = arg._menu.Fonts.Main arg2:Bind(instance, "TextColor3", "TextColor") instance.Parent = frame arg._titleLabel = instance local uiPadding = Instance.new("UIPadding") uiPadding.PaddingLeft = UDim.new(0, -v86[63]) uiPadding.Parent = instance end local v142 = v134.box(arg2, frame) arg._elements = v134.elementsContainer(v142) end local function createFrame(arg, parent) local v141 = v125.get() local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.Size = UDim2.fromScale(1, 0) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.Y frame.Visible = arg._visible frame.Parent = parent arg._rootFrame = frame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, v141.Section.GroupGap) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame arg._elements = frame return frame end local function fn38(arg) local entries = arg._entries local flag19 = false local flag20 = false for i = #entries, 1, -v86[63] do local v141 = entries[i] local flag21 if v141.Row ~= nil then flag21 = v141.Row:IsVisible() and v141.Row.Frame ~= nil else flag21 = false if v141.Group ~= nil then local rootFrame = v141.Group._rootFrame flag21 = rootFrame ~= nil and rootFrame.Visible end end local separator = v141.Separator if separator ~= nil then separator.Visible = flag21 and flag19 and not flag20 end if flag21 then flag20 = v141.IsDivider == v86[34] flag19 = true end end end index2._MarkSeparatorsDirty = function(arg) if arg._separatorsDirty or not arg._realized then return end arg._separatorsDirty = true arg._separatorTrove:Clean() arg._separatorTrove:Add(task.defer(function() arg._separatorsDirty = false fn38(arg) end)) end local function fn39(arg, arg2, arg3) local elements = arg._elements local ctx = arg._ctx local batch = arg._batch if elements == nil or ctx == nil or batch == nil then return end if arg2.Row ~= nil then arg2.Row:Realize(elements, ctx, arg3 * 2) elseif arg2.Group ~= nil then arg2.Group:_RealizeAsGroup(elements, ctx, arg3 * v86[56]) elseif arg2.Multi ~= nil then arg2.Multi:Realize(arg3 * 2) end if not arg2.NoSeparator and arg2.Separator == nil then local frame = Instance.new("Frame") frame.Visible = v86[153] frame.Size = UDim2.new(1, 0, 0, 1) frame.BorderSizePixel = 0 frame.LayoutOrder = arg3 * 2 + v86[63] batch:Bind(frame, v86[5], "Outline") frame.Parent = elements arg2.Separator = frame end end local function fn40(arg, ctx) arg._realizeTrove = ctx.Trove arg._batch = ctx.Batch arg._ctx = ctx for k, v141 in arg._entries, nil, nil do fn39(arg, v141, k) end fn38(arg) end index2.Realize = function(arg) if arg._realized then return end local resolveParent = arg._resolveParent assert(arg._kind == "section", "Container.Realize is for sections") if resolveParent == nil then error("Container.Realize: section has no parent resolver") end arg._realized = true local v141 = arg._trove:Extend() local v142 = v138.newBatch(v141) fn37(arg, resolveParent(), v142) fn40(arg, { Menu = arg._menu, Trove = v141, Batch = v142 }) end index2._SetGridParent = function(arg, parent, layoutOrder) if true then local rootFrame = arg._rootFrame if rootFrame == nil then if not flag2 then return end return end rootFrame.LayoutOrder = layoutOrder rootFrame.Parent = parent return end -- (anti-tamper freeze trap removed) end index2._RealizeAsGroup = function(arg, arg2, arg3, layoutOrder) if arg._realized then return end arg._realized = true local v141 = createFrame(arg, arg2) v141.LayoutOrder = layoutOrder local groupSpec = arg._groupSpec if groupSpec ~= nil then local function fn41() v141.Visible = arg._visible and groupSpec.Predicate(groupSpec.Source.Value) end arg3.Trove:Connect(groupSpec.Source.ValueChanged, fn41) fn41() end fn40(arg, arg3) end index2._RealizeAsPane = function(arg, elements, arg2) if arg._realized then return end arg._realized = true arg._elements = elements arg._rootFrame = elements fn40(arg, arg2) end index2.RealizeRoot = function(arg, elements, arg2) if arg._realized then return end assert(arg._kind == "root", v86[82]) arg._realized = v86[34] arg._elements = elements arg._rootFrame = elements local v141 = arg._trove:Extend() fn40(arg, { Menu = arg._menu, Trove = v141, Batch = v138.newBatch(v141), ParentOverlay = arg2 }) end local function fn41(arg, arg2) local popup = arg._popup if popup ~= nil then return popup end local n = 300 if v129.IsMobile() then n = v86[65] end local v141 = nil local v142 = v131.new(arg._menu, arg._trove, { Trigger = arg2, Size = UDim2.fromOffset(n, v86[186]), AnchorPoint = Vector2.new(1, 0), CornerRadius = v86[118], FlatBackground = v86[34], ParentEntry = arg._gearOverlayParent, Place = function(arg3) local absolutePosition = arg3.AbsolutePosition local absoluteSize = arg3.AbsoluteSize return math.round(absolutePosition.X + absoluteSize.X), math.round(absolutePosition.Y + absoluteSize.Y + 2) end, OnToggle = function(arg3) if arg3 and v141 ~= nil then v141.CanvasPosition = Vector2.zero end end, }) arg._popup = v142 local v143 v141, v143 = v142:AttachScrollingList(n, { Top = 9, Bottom = v86[133], Side = 9 }) arg._realized = v86[34] arg._elements = v143 arg._rootFrame = v142.Root fn40(arg, v142:RealizeCtx()) return v142 end index2._RevealGear = function(arg) local gearTrigger = arg._gearTrigger if gearTrigger == nil then return end fn41(arg, gearTrigger):SetOpen(v86[34]) end local function createTextButton(arg, parent, arg2, name) local n = 28 local n33 = 24 if v129.IsMobile() then n = 44 n33 = 44 end local textButton = Instance.new("TextButton") textButton.Name = name textButton.Text = name textButton.TextTransparency = 1 textButton.Size = UDim2.fromOffset(n, n33) textButton.AnchorPoint = Vector2.new(0, v86[101]) textButton.BackgroundTransparency = 1 textButton.Position = UDim2.fromScale(0, 0.5) textButton.BorderSizePixel = 0 textButton.AutomaticSize = Enum.AutomaticSize.None textButton.AutoButtonColor = false textButton.Selectable = true local textLabel = Instance.new("TextLabel") textLabel.Name = "Ellipsis" textLabel.Text = v86[40] textLabel.AnchorPoint = Vector2.new(0.5, v86[101]) textLabel.Position = UDim2.fromScale(0.5, v86[101]) textLabel.Size = UDim2.fromOffset(v86[25], v86[61]) textLabel.BackgroundTransparency = 1 textLabel.BorderSizePixel = 0 textLabel.TextSize = 30 textLabel.FontFace = arg._menu.Fonts.Main arg2.Batch:Bind(textLabel, "TextColor3", v86[174]) textLabel.Parent = textButton local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, 21) uiPadding.Parent = textLabel textButton.Parent = parent arg2.Menu:AttachTooltip(arg2.Trove, textButton, function() return name end) arg._gearOverlayParent = arg2.ParentOverlay arg._gearTrigger = textButton v130.connectClick(arg2.Trove, textButton, function() fn41(arg, textButton):Toggle() end) return textButton end index2._AddEntry = function(arg, arg2, arg3) local tbl18 = { Row = arg2, Group = nil, Separator = nil, NoSeparator = arg3 == v86[34] } table.insert(arg._entries, tbl18) arg._menu:InvalidateSearch() arg2._onVisibilityChanged = function() arg:_MarkSeparatorsDirty() end if arg._realized then fn39(arg, tbl18, #arg._entries) arg:_MarkSeparatorsDirty() end end index2._RowFor = function(arg, arg2, arg3) local row = arg2.Row if row ~= nil then return row end arg3.Label = arg2.Label arg3.Tooltip = arg2.Tooltip local v141 = v133.new(arg._menu, arg3) arg:_AddEntry(v141, arg2.NoSeparator) return v141 end index2._Bind = function(arg, arg2, arg3, arg4, arg5) local config = arg4.Config if config == nil then return end local config2 = arg._menu:GetConfig() if config2 == nil then return end local bind = arg4.Bind local tbl18 if arg5 and (bind == nil or bind.Debounce == nil) then tbl18 = {} bind = bind and bind.WriteBack tbl18.WriteBack = bind tbl18.Debounce = true else tbl18 = bind end v116.bind(arg2, config2, arg3, config, tbl18) end index2.AddToggle = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Height = 20 }) local v142 = arg._trove:Extend() local v143 = v139._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.AddSlider = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Height = 24, MediumTitle = true, RightOffset = -1 }) local v142 = arg._trove:Extend() local v143 = v136._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2, true) return v143 end index2.AddRangeSlider = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Height = v86[61], MediumTitle = v86[34], RightOffset = -v86[63] }) local v142 = arg._trove:Extend() local v143 = v132._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2, true) return v143 end index2.AddButton = function(arg, arg2) local flag19 = arg2.Row == nil return v117._New(arg._menu, arg:_RowFor(arg2, { Bare = true }), arg._trove:Extend(), arg2, flag19) end index2.AddLabel = function(arg, arg2) return v124._New(arg._menu, arg:_RowFor(arg2, { Bare = true }), arg._trove:Extend(), arg2) end index2.AddDivider = function(arg, arg2) local tbl18 = arg2 or {} tbl18.NoSeparator = v86[34] local v141 = arg:_RowFor(tbl18, { Bare = v86[34] }) local v142 = arg._entries[#arg._entries] if v142 ~= nil and v142.Row == v141 then v142.IsDivider = true end return v120._New(arg._menu, v141, arg._trove:Extend(), tbl18) end index2.AddTextBox = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Height = 24, MediumTitle = true }) local v142 = arg._trove:Extend() local v143 = v137._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.AddDropdown = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Height = 24 }) local v142 = arg._trove:Extend() local v143 = v121._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.AddMultiDropdown = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Height = 24 }) local v142 = arg._trove:Extend() local v143 = v121._NewMulti(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.AddList = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Bare = true }) local v142 = arg._trove:Extend() local v143 = v126._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.AddMultiList = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Bare = true }) local v142 = arg._trove:Extend() local v143 = v126._NewMulti(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.AddKeybind = function(arg, arg2) local v141 = v123._New(arg._menu, arg:_RowFor(arg2, { Height = 20 }), arg._trove:Extend(), arg2) local configMap = arg2.ConfigMap if configMap ~= nil then local config = arg._menu:GetConfig() if config ~= nil then v141:_BindConfigMap(config, configMap) end end return v141 end local function fn42(arg, arg2, arg3) local config = arg3.Config local transparency = arg3.Transparency arg:EnableAnimation(transparency ~= nil) local function fn43() local v141 = arg2:Get(config) arg:SetAnimationMode(v141.Mode, v86[34]) arg:SetAnimationSpeed(v141.Speed, true) if v141.BreathingMin ~= nil or v141.BreathingMax ~= nil then arg:SetAnimationBreathingRange({ Min = math.floor((1 - (v141.BreathingMax or 1)) * v86[91] + v86[101]), Max = math.floor((1 - (v141.BreathingMin or 0)) * 100 + 0.5), }, true) end arg2:Apply(config, transparency, v141) end arg:Connect(arg.AnimationChanged, function(arg4) arg2:SetMode(config, arg4) end) arg:Connect(arg.AnimationSpeedChanged, function(arg4) arg2:SetSpeed(config, arg4) end) arg:Connect(arg.AnimationBreathingRangeChanged, function(arg4) arg2:SetBreathing(config, 1 - arg4.Max / v86[91], 1 - arg4.Min / 100) end) arg:Connect(arg2:Changed(), fn43) fn43() end index2.AddColor = function(arg, arg2) local v141 = v119._New(arg._menu, arg:_RowFor(arg2, { Height = v86[9] }), arg._trove:Extend(), arg2) if arg2.Config ~= nil then local config = arg._menu:GetConfig() if config ~= nil then v118.bindConfig(v141, config, arg2) end if arg2.Animatable then local colorAnimation = arg._menu:GetColorAnimation() if colorAnimation ~= nil then fn42(v141, colorAnimation, arg2) end end end return v141 end index2.AddSkinChanger = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Bare = true }) local v142 = arg._trove:Extend() local v143 = v135._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.AddIconStrip = function(arg, arg2) local v141 = arg:_RowFor({ Row = nil, NoSeparator = true }, { Bare = v86[34], Height = arg2.Height }) local v142 = arg._trove:Extend() local v143 = v122._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, { Config = arg2.Config, Bind = arg2.Bind }) return v143 end index2.AddViewport = function(arg, arg2) return v140._New(arg._menu, arg:_RowFor({ Label = arg2.Label, Tooltip = arg2.Tooltip, Row = arg2.Row, NoSeparator = arg2.NoSeparator }, { Bare = true }), arg._trove:Extend(), arg2) end index2.AddOrderedList = function(arg, arg2) local v141 = arg:_RowFor(arg2, { Bare = true }) local v142 = arg._trove:Extend() local v143 = v128._New(arg._menu, v141, v142, arg2) arg:_Bind(v142, v143, arg2) return v143 end index2.GetConfig = function(arg) return arg._menu:GetConfig() end index2.AddGear = function(arg, arg2) local v141 = fn36(arg._menu, arg._trove:Extend(), "gear", "Gear") v141._gearTooltip = arg2.Tooltip local v142 = arg:_RowFor({ Row = arg2.Row }, { Height = v86[61] }) v141._gearOwnerRow = v142 if v129.IsMobile() then v142._height = math.max(v142._height, 44) end local tooltip = arg2.Tooltip if tooltip == nil then local label = v142.Label if label ~= nil and label ~= "" then tooltip = "Open " .. label .. " details" else tooltip = "Open details" end end local n = 28 if v129.IsMobile() then n = 44 end v142:AttachRight(function(arg3, arg4) return createTextButton(v141, arg3, arg4, tooltip) end, n, true, v141._trove) table.insert(arg._gears, v141) arg._menu:InvalidateSearch() return v141 end index2.AddGroup = function(arg, arg2) local source = arg2.Source local option = arg2.Option local fn43 if option ~= nil then fn43 = function(arg3) if type(arg3) == "string" then return arg3 == option end local v141 = v86[68] if type(arg3) == v141 then return arg3[option] == v86[34] or table.find(arg3, option) ~= nil end return v86[153] end else fn43 = function(arg3) return arg3 == true end end local v141 = fn36(arg._menu, arg._trove:Extend(), "group", arg.Title) v141._groupSpec = { Source = source, Predicate = fn43, Option = option } if arg2.Visible ~= nil then v141._visible = arg2.Visible end local tbl18 = { Row = nil, Group = v141, Separator = nil, NoSeparator = false } table.insert(arg._entries, tbl18) arg._menu:InvalidateSearch() v141._trove:Connect(source.ValueChanged, function() arg:_MarkSeparatorsDirty() end) if arg._realized then fn39(arg, tbl18, #arg._entries) arg:_MarkSeparatorsDirty() end return v141 end index2.AddMultiSection = function(arg, arg2) local v141 = index2.BuildPanes(arg._menu, arg._trove, arg2.Titles) local tbl18 = { Row = nil, Group = nil, Multi = v127.new(arg._menu, arg._trove, v141, function() local elements = arg._elements assert(elements ~= nil, "Container.AddMultiSection: container has not realized") return elements end), Panes = v141, Separator = nil, NoSeparator = v86[34], } table.insert(arg._entries, tbl18) arg._menu:InvalidateSearch() if arg._realized then fn39(arg, tbl18, #arg._entries) end return table.unpack(v141) end index2.CollectSearchHits = function(arg, arg2, arg3, arg4, arg5) local tbl18 = arg5 or {} if not arg._visible then return end local groupSpec = arg._groupSpec local str7, tbl19 if groupSpec == nil then str7 = arg2 tbl19 = tbl18 else local row = groupSpec.Source.Row local v141 = v86[94] if row ~= nil then local label = row.Label if typeof(label) == "string" and label ~= "" then v141 = label end end str7 = ("%s › Requires %s: %s"):format(arg2, v141, groupSpec.Option or "On") local resolveFrame = tbl18.ResolveFrame tbl19 = { Reveal = tbl18.Reveal, ResolveFrame = function(arg6) if not groupSpec.Predicate(groupSpec.Source.Value) and row ~= nil then arg6 = row.Frame end if resolveFrame ~= nil then return resolveFrame(arg6) end return arg6 end, } end for _, v141 in arg._entries, nil, nil do local row = v141.Row if row ~= nil then local label = row.Label if label ~= nil and label ~= "" then local resolveFrame = tbl19.ResolveFrame table.insert(arg4, { Kind = "control", Label = label, Crumb = str7, Open = arg3, Reveal = tbl19.Reveal, GetFrame = function() if resolveFrame ~= nil then return resolveFrame(row.Frame) end return row.Frame end, }) end end local group = v141.Group if group ~= nil then group:CollectSearchHits(str7, arg3, arg4, tbl19) end local panes = v141.Panes local multi = v141.Multi if panes ~= nil and multi ~= nil then for k, v142 in panes, nil, nil do local reveal = tbl19.Reveal local tbl20 = { ResolveFrame = tbl19.ResolveFrame, Reveal = function() if reveal ~= nil then reveal() end multi:SelectPane(k) end, } local title = v142.Title assert(typeof(title) == "string", "Container pane title must be a string") v142:CollectSearchHits(("%s › %s"):format(str7, title), arg3, arg4, tbl20) end end end for _, v141 in arg._gears, nil, nil do local gearOwnerRow = v141._gearOwnerRow local gearTooltip = v141._gearTooltip if gearTooltip == nil and gearOwnerRow ~= nil then gearTooltip = gearOwnerRow.Label end gearTooltip = gearTooltip or v86[14] local reveal = tbl19.Reveal local tbl20 = { ResolveFrame = tbl19.ResolveFrame, Reveal = function() if reveal ~= nil then reveal() end v141:_RevealGear() end, } v141:CollectSearchHits(("%s › %s"):format(str7, tostring(gearTooltip)), arg3, arg4, tbl20) end end index2.SetTitle = function(arg, title) arg.Title = title arg._menu:InvalidateSearch() local titleLabel = arg._titleLabel if titleLabel ~= nil then titleLabel.Text = title end return arg end index2.SetVisible = function(arg, visible) if arg._visible == visible then return end arg._visible = visible arg._menu:InvalidateSearch() local rootFrame = arg._rootFrame if rootFrame == nil then return end local groupSpec = arg._groupSpec if groupSpec ~= nil then visible = visible and groupSpec.Predicate(groupSpec.Source.Value) rootFrame.Visible = visible else rootFrame.Visible = visible end end index2.Destroy = function(arg) local rootFrame = arg._rootFrame if rootFrame ~= nil then rootFrame:Destroy() arg._rootFrame = nil end arg._trove:Destroy() end return index2 end tbl17.ab = function() local ab = tbl17.cache.ab if not ab then ab = { c = fn35() } tbl17.cache.ab = ab end return ab.c end end do -- ac local function fn35() local v115 = tbl17.k() local v116 = tbl17.F() local v117 = tbl17.ab() tbl17.r() local v118 = tbl17.s() local v119 = tbl17.u() local v120 = tbl17.x() local v121 = tbl17.y() local v122 = tbl17.W() local v123 = tbl17.t() local v124 = tbl17.A() local v125 = tbl17.w() local coreGui = v123.CoreGui local guiService = v123.GuiService local userInputService = v123.UserInputService local color = Color3.fromRGB(255, 255, 255) local color2 = Color3.fromRGB(231, 92, v86[53]) local color3 = Color3.fromRGB(v86[65], 220, 230) local tweenInfo = TweenInfo.new(0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tweenInfo2 = TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local function fn36(arg, arg2) return Color3.new(arg.R * arg2, arg.G * arg2, arg.B * arg2) end local function fn37(arg, arg2) local clamp = math.clamp local n = arg.B * arg2 local v126 = v86[63] return Color3.new(math.clamp(arg.R * arg2, v86[186], 1), math.clamp(arg.G * arg2, v86[186], v86[63]), clamp(n, 0, v126)) end local function fn38(arg, arg2, arg3, parent, text, arg4, arg5) local textButton = Instance.new("TextButton") textButton.Size = UDim2.fromScale(0, 1) textButton.BorderSizePixel = v86[186] textButton.Text = text textButton.TextSize = 14 textButton.FontFace = v118.Bold textButton.TextTruncate = Enum.TextTruncate.AtEnd textButton.AutoButtonColor = false textButton.Active = v86[34] textButton.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = v86[45] arg3:BindGradient(uiGradient, { "GradientMid", "GradientDark" }) uiGradient.Parent = textButton local instance = Instance.new(v86[98]) instance.CornerRadius = UDim.new(0, 5) instance.Parent = textButton local v126 = arg4 local flag19 = true local flag20 = false local function fn39() if not flag19 then uiGradient.Enabled = false textButton.BackgroundColor3 = v124.get("ElementBackground") textButton.TextColor3 = v124.get("Unselected") textButton.TextTransparency = 0.45 return end textButton.TextTransparency = v86[186] if v126 == "secondary" then uiGradient.Enabled = false textButton.BackgroundColor3 = v124.get("ElementBackground") textButton.TextColor3 = v124.get(v86[174]) elseif v126 == "danger" then uiGradient.Enabled = false textButton.BackgroundColor3 = color2 textButton.TextColor3 = color else uiGradient.Enabled = false textButton.BackgroundColor3 = v124.get(v86[139]) textButton.TextColor3 = color end end local function fn40() if not flag19 then return end if v126 == v86[158] then arg:Tween(textButton, { BackgroundColor3 = v124.get("TabButtonSelected") }, tweenInfo) arg:Tween(textButton, { TextColor3 = v124.get("TextColor") }, tweenInfo) elseif v126 == v86[140] then arg:Tween(textButton, { BackgroundColor3 = fn37(color2, 1.12) }, tweenInfo) else local v127 = v86[138] arg:Tween(textButton, { BackgroundColor3 = fn37(v124.get(v86[139]), v127) }, tweenInfo) end end local function fn41() if v126 == "secondary" then arg:Tween(textButton, { BackgroundColor3 = v124.get("ElementBackground") }, tweenInfo) elseif v126 == "danger" then arg:Tween(textButton, { BackgroundColor3 = color2 }, tweenInfo) else arg:Tween(textButton, { BackgroundColor3 = v124.get("Accent") }, tweenInfo) end end for _, v127 in { "Accent", v86[120], "ElementBackground", "TextColor", "Unselected" }, nil, nil do arg3:BindStateful(v127, function() if not flag20 then fn39() end end) end arg2:Connect(textButton.MouseEnter, function() if not flag19 then return end flag20 = true fn40() end) arg2:Connect(textButton.MouseLeave, function() flag20 = v86[153] if flag19 then fn41() else fn39() end end) v120.connectPress(arg2, textButton, function() if not flag19 then return end arg:Tween(textButton, { BackgroundColor3 = fn36(textButton.BackgroundColor3, 0.85) }, tweenInfo2) end, function() if flag20 then fn40() elseif flag19 then fn41() else fn39() end end) v120.connectClick(arg2, textButton, function() if flag19 then arg5() end end) fn39() return { Object = textButton, SetVariant = function(arg6) v126 = arg6 if flag20 then fn40() else fn39() end end, SetEnabled = function(active) flag19 = active textButton.Active = active if not active then flag20 = false end fn39() end, } end local function fn39(arg, parent) local v126 = v119.IsMobile() local n = v126 and 14 or 20 local n33 = v126 and v86[181] or 14 local n34 = v126 and 10 or 12 local frame = Instance.new("Frame") frame.Size = UDim2.fromScale(1, 0) frame.AutomaticSize = Enum.AutomaticSize.Y frame.BorderSizePixel = 0 frame.BackgroundColor3 = color frame.LayoutOrder = 1 frame.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v116.bindSurfaceGradient(arg, uiGradient, { "GradientTop", "GradientMid" }) uiGradient.Parent = frame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, n33) uiPadding.PaddingRight = UDim.new(0, n) uiPadding.PaddingBottom = UDim.new(v86[186], n34) uiPadding.PaddingLeft = UDim.new(0, n) uiPadding.Parent = frame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, 3) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame local textLabel = Instance.new("TextLabel") textLabel.Size = UDim2.new(1, -v86[192], v86[186], v86[186]) textLabel.AutomaticSize = Enum.AutomaticSize.Y textLabel.BackgroundTransparency = 1 textLabel.BorderSizePixel = 0 textLabel.Text = "" textLabel.TextSize = v126 and 16 or v86[100] textLabel.TextWrapped = true textLabel.TextTruncate = Enum.TextTruncate.AtEnd textLabel.TextXAlignment = Enum.TextXAlignment.Left textLabel.FontFace = v118.Bold textLabel.LayoutOrder = 1 arg:Bind(textLabel, v86[167], v86[174]) textLabel.Parent = frame local uiSizeConstraint = Instance.new("UISizeConstraint") uiSizeConstraint.MaxSize = Vector2.new(100000, 44) uiSizeConstraint.Parent = textLabel local textLabel2 = Instance.new("TextLabel") textLabel2.Size = UDim2.fromScale(1, 0) textLabel2.AutomaticSize = Enum.AutomaticSize.Y textLabel2.BackgroundTransparency = 1 textLabel2.BorderSizePixel = 0 textLabel2.Text = "" textLabel2.TextSize = v126 and 11 or 13 textLabel2.TextWrapped = true textLabel2.TextTruncate = Enum.TextTruncate.AtEnd textLabel2.TextXAlignment = Enum.TextXAlignment.Left textLabel2.FontFace = v118.SemiBold textLabel2.LayoutOrder = 2 arg:Bind(textLabel2, "TextColor3", "Unselected") textLabel2.Parent = frame local instance = Instance.new(v86[176]) instance.MaxSize = Vector2.new(100000, v126 and 34 or 40) instance.Parent = textLabel2 return { Root = frame, Title = textLabel, Description = textLabel2 } end local function createFrame(arg, parent, layoutOrder) local frame = Instance.new("Frame") frame.Size = UDim2.new(1, 0, 0, v86[63]) frame.BorderSizePixel = 0 frame.LayoutOrder = layoutOrder arg:Bind(frame, "BackgroundColor3", v86[120]) frame.Parent = parent return frame end local function fn40(arg, parent) local canvasGroup = Instance.new("CanvasGroup") canvasGroup.Size = UDim2.fromScale(1, 1) canvasGroup.BackgroundTransparency = 1 canvasGroup.BorderSizePixel = 0 canvasGroup.GroupTransparency = v86[63] canvasGroup.Visible = false canvasGroup.Parent = parent local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.Size = UDim2.fromScale(1, 1) scrollingFrame.BackgroundTransparency = 1 scrollingFrame.BorderSizePixel = 0 scrollingFrame.Active = true scrollingFrame.CanvasSize = UDim2.fromOffset(0, 0) scrollingFrame.ScrollBarImageTransparency = 0.35 scrollingFrame.ScrollBarThickness = 0 scrollingFrame.Selectable = false scrollingFrame.ScrollingDirection = Enum.ScrollingDirection.Y arg:Bind(scrollingFrame, "ScrollBarImageColor3", "Accent") scrollingFrame.Parent = canvasGroup return { Group = canvasGroup, Body = scrollingFrame, Fade = { Tweening = false } } end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5, arg6) local v126 = v115.new() local v127 = v124.newBatch(v126) local v128 = fn40(v127, arg2) v126:Add(v128.Group) local v129 = v122.box(v127, v128.Body) v129.Position = UDim2.fromOffset(20, v86[72]) v129.Size = UDim2.new(1, -40, 0, 24) v129.AutomaticSize = Enum.AutomaticSize.None local v130 = v122.elementsContainer(v129) local v131 = v130:FindFirstChildOfClass(v86[4]) local v132 = v117.BuildRoot(arg, v126) v132:RealizeRoot(v130, arg3) return setmetatable({ _trove = v126, _props = arg4, _view = v128, _card = v129, _contentLayout = v131, _open = arg5, _syncActionEnabled = arg6, _isActionEnabled = arg4.ActionEnabled ~= false, _isDestroyed = false, Container = v132, }, index2) end index2._PrepareLayout = function(arg, arg2, arg3) local n = arg._contentLayout.AbsoluteContentSize.Y + 24 arg._card.Position = UDim2.fromOffset(arg2, arg3) arg._card.Size = UDim2.new(1, -arg2 * 2, 0, n) return n + arg3 * 2 end index2._SetViewport = function(arg, arg2, arg3) arg._view.Body.CanvasSize = UDim2.fromOffset(0, arg3) arg._view.Body.ScrollBarThickness = arg3 > arg2 + v86[101] and 4 or 0 end index2.Open = function(arg) if not arg._isDestroyed then arg._open() end end index2.SetActionEnabled = function(arg, isActionEnabled) if arg._isDestroyed or arg._isActionEnabled == isActionEnabled then return end arg._isActionEnabled = isActionEnabled arg._syncActionEnabled(isActionEnabled) end index2.Destroy = function(arg) if arg._isDestroyed then return end arg._isDestroyed = true arg._trove:Destroy() end local index3 = {} index3.__index = index3 local function fn41(arg, arg2, arg3, parent, arg4, arg5) local instance = Instance.new(v86[92]) instance.BorderSizePixel = 0 instance.BackgroundColor3 = color instance.Text = "" instance.AutoButtonColor = false instance.Active = true instance.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v116.bindSurfaceGradient(arg3, uiGradient, { "ElementBackground", "GradientDark" }) uiGradient.Parent = instance local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = instance local uiStroke = Instance.new("UIStroke") uiStroke.Transparency = 1 if arg4.Variant == "danger" then uiStroke.Color = color2 else arg3:Bind(uiStroke, "Color", "Accent") end uiStroke.Parent = instance v121.attach(arg, arg2, instance, { CornerRadius = 6 }) local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(0, 0.5) frame.Position = UDim2.new(0, v86[181], v86[101], 0) frame.Size = UDim2.fromOffset(30, 30) frame.BorderSizePixel = 0 frame.BackgroundTransparency = 0.9 frame.Visible = arg4.Glyph ~= nil if arg4.Variant == "danger" then frame.BackgroundColor3 = color2 else arg3:Bind(frame, v86[5], "Accent") end frame.Parent = instance local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(0, 6) uiCorner2.Parent = frame local uiStroke2 = Instance.new("UIStroke") uiStroke2.Transparency = 0.7 if arg4.Variant == v86[140] then uiStroke2.Color = color2 else arg3:Bind(uiStroke2, "Color", "Accent") end uiStroke2.Parent = frame local textLabel = Instance.new("TextLabel") textLabel.Size = UDim2.fromScale(1, 1) textLabel.BackgroundTransparency = 1 textLabel.BorderSizePixel = 0 textLabel.Text = arg4.Glyph or "" textLabel.TextSize = 17 textLabel.FontFace = v118.SemiBold if arg4.Variant == "danger" then textLabel.TextColor3 = color2 else arg3:Bind(textLabel, "TextColor3", v86[139]) end textLabel.Parent = frame local n = arg4.Glyph ~= nil and 51 or 13 local frame2 = Instance.new("Frame") frame2.AnchorPoint = Vector2.new(v86[186], 0.5) frame2.Position = UDim2.new(0, n, 0.5, 0) frame2.Size = UDim2.new(v86[63], -n - v86[192], 0, 34) frame2.BackgroundTransparency = v86[63] frame2.BorderSizePixel = 0 frame2.Parent = instance local textLabel2 = Instance.new("TextLabel") textLabel2.Size = UDim2.new(1, 0, v86[186], 16) textLabel2.BackgroundTransparency = 1 textLabel2.BorderSizePixel = 0 textLabel2.Text = arg4.Title textLabel2.TextSize = v86[118] textLabel2.TextTruncate = Enum.TextTruncate.AtEnd textLabel2.TextXAlignment = Enum.TextXAlignment.Left textLabel2.FontFace = v118.Bold arg3:Bind(textLabel2, "TextColor3", v86[174]) textLabel2.Parent = frame2 local instance2 = Instance.new(v86[135]) instance2.Position = UDim2.fromOffset(0, 18) instance2.Size = UDim2.new(1, 0, 0, 16) instance2.BackgroundTransparency = 1 instance2.BorderSizePixel = 0 instance2.Text = arg4.Description or "" instance2.TextSize = 11 instance2.TextWrapped = v86[153] instance2.TextTruncate = Enum.TextTruncate.AtEnd instance2.TextXAlignment = Enum.TextXAlignment.Left instance2.TextYAlignment = Enum.TextYAlignment.Top instance2.FontFace = v118.SemiBold instance2.Visible = arg4.Description ~= nil and arg4.Description ~= "" arg3:Bind(instance2, "TextColor3", "Unselected") instance2.Parent = frame2 local textLabel3 = Instance.new("TextLabel") textLabel3.AnchorPoint = Vector2.new(1, 0.5) textLabel3.Position = UDim2.new(1, -11, 0.5, 0) textLabel3.Size = UDim2.fromOffset(16, 24) textLabel3.BackgroundTransparency = 1 textLabel3.BorderSizePixel = 0 textLabel3.Text = "›" textLabel3.TextSize = 18 textLabel3.FontFace = v118.SemiBold arg3:Bind(textLabel3, "TextColor3", "Unselected") textLabel3.Parent = instance local flag19 = false local function fn42(arg6) if flag19 == arg6 then return end flag19 = arg6 local n33 = 1 if arg6 then n33 = 0 end local Accent = arg4.Variant == "danger" and color2 or v124.get("Accent") local v126 = arg6 and color3 or color local Unselected = arg6 and Accent or v124.get("Unselected") local udim2 = UDim2.new(1, arg6 and -7 or -11, 0.5, 0) arg:Tween(uiStroke, { Transparency = n33 }, tweenInfo) arg:Tween(instance, { BackgroundColor3 = v126 }, tweenInfo) arg:Tween(textLabel3, { TextColor3 = Unselected, Position = udim2 }, tweenInfo) end local function fn43() local v126 = v125.getPointerPosition() for _, v127 in coreGui:GetGuiObjectsAtPosition(v126.X, v126.Y) do if v127 == instance or v127:IsDescendantOf(instance) then fn42(true) return end end fn42(false) end arg2:Connect(instance.MouseEnter, function() fn42(true) end) arg2:Connect(instance.MouseLeave, function() fn42(false) end) v120.connectClick(arg2, instance, arg5) return { Object = instance, SyncHover = fn43 } end index3.new = function(arg, arg2, arg3, arg4, arg5) local v126 = arg3:Extend() local v127 = v124.newBatch(v126) local v128 = v119.IsMobile() local n = v128 and 46 or 50 local canvasGroup = Instance.new("CanvasGroup") canvasGroup.Visible = false canvasGroup.GroupTransparency = 1 canvasGroup.BackgroundTransparency = v86[63] canvasGroup.BorderSizePixel = 0 canvasGroup.Active = v86[34] canvasGroup.ClipsDescendants = v86[34] canvasGroup.Parent = arg:GetOverlayLayer() v126:Add(canvasGroup) local instance = Instance.new(v86[128]) instance.Size = UDim2.fromScale(1, 1) instance.BorderSizePixel = 0 instance.BackgroundColor3 = Color3.new(0, 0, v86[186]) instance.BackgroundTransparency = 0.58 instance.ZIndex = 1 instance.Parent = canvasGroup local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[54]) uiCorner.Parent = instance local canvasGroup2 = Instance.new("CanvasGroup") canvasGroup2.AnchorPoint = Vector2.new(0.5, 0.5) canvasGroup2.Position = UDim2.new(v86[101], 0, 0.5, -15) canvasGroup2.Size = UDim2.fromOffset(520, v86[186]) canvasGroup2.AutomaticSize = Enum.AutomaticSize.Y canvasGroup2.BorderSizePixel = 0 canvasGroup2.BackgroundTransparency = 1 canvasGroup2.ZIndex = 2 canvasGroup2.Parent = canvasGroup local frame = Instance.new("Frame") frame.Size = UDim2.fromScale(1, 1) frame.BorderSizePixel = 0 frame.BackgroundColor3 = color frame.ZIndex = v86[186] frame.Parent = canvasGroup2 local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(0, 8) uiCorner2.Parent = frame local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = v86[45] v116.bindSurfaceGradient(v127, uiGradient, { "GradientTop", v86[187], v86[70] }) uiGradient.Parent = frame local uiCorner3 = Instance.new("UICorner") uiCorner3.CornerRadius = UDim.new(0, 8) uiCorner3.Parent = canvasGroup2 local uiStroke = Instance.new("UIStroke") v127:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = canvasGroup2 v116.addGlow(v127, canvasGroup2, { Amount = 5, DampingFactor = 0.65 }) local frame2 = Instance.new("Frame") frame2.Size = UDim2.fromScale(1, 0) frame2.AutomaticSize = Enum.AutomaticSize.Y frame2.BackgroundTransparency = 1 frame2.BorderSizePixel = 0 frame2.Parent = canvasGroup2 local instance2 = Instance.new(v86[4]) instance2.SortOrder = Enum.SortOrder.LayoutOrder instance2.Parent = frame2 local v129 = fn39(v127, frame2) createFrame(v127, frame2, 2) local frame3 = Instance.new("Frame") frame3.Size = UDim2.new(1, 0, 0, v128 and v86[103] or v86[83]) frame3.BackgroundTransparency = v86[63] frame3.BorderSizePixel = 0 frame3.LayoutOrder = 3 frame3.ClipsDescendants = v86[34] frame3.Parent = frame2 local v130 = createFrame(v127, frame2, v86[26]) local frame4 = Instance.new("Frame") frame4.Size = UDim2.new(1, v86[186], 0, n) frame4.ClipsDescendants = v86[34] frame4.BorderSizePixel = 0 frame4.BackgroundTransparency = 0.28 frame4.LayoutOrder = v86[175] v127:Bind(frame4, "BackgroundColor3", v86[141]) frame4.Parent = frame2 local frame5 = Instance.new("Frame") frame5.AnchorPoint = Vector2.new(1, 0.5) frame5.Position = UDim2.new(1, -20, 0.5, 0) frame5.Size = UDim2.fromOffset(104, 32) frame5.BackgroundTransparency = 1 frame5.BorderSizePixel = 0 if v128 then frame5.AnchorPoint = Vector2.new(0.5, v86[101]) frame5.Position = UDim2.fromScale(0.5, v86[101]) frame5.Size = UDim2.new(1, -26, v86[186], 38) end frame5.Parent = frame4 local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, 9) uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.HorizontalFlex = Enum.UIFlexAlignment.Fill uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame5 local v131 = nil local back = fn38(arg, v126, v127, frame5, "Back", "secondary", function() local v132 = v131 if v132 ~= nil then if v132._isConfirming then v132:_CancelConfirmation() else v132:_ShowHub() end end end) back.Object.LayoutOrder = v86[63] back.Object.Visible = v86[153] local v132 = fn38(arg, v126, v127, frame5, "", "primary", function() local v132 = v131 if v132 ~= nil then v132:_RunPageAction() end end) v132.Object.LayoutOrder = 2 v132.Object.Visible = false local instance3 = Instance.new(v86[92]) instance3.AnchorPoint = Vector2.new(1, v86[186]) instance3.Position = UDim2.new(v86[63], -10, 0, 10) instance3.Size = UDim2.fromOffset(26, v86[200]) instance3.BackgroundTransparency = v86[63] instance3.BorderSizePixel = 0 instance3.Text = "×" instance3.TextSize = 18 instance3.FontFace = v118.SemiBold instance3.AutoButtonColor = false instance3.ZIndex = 4 v127:Bind(instance3, "BackgroundColor3", "ElementBackground") v127:Bind(instance3, "TextColor3", "Unselected") instance3.Parent = canvasGroup2 local uiCorner4 = Instance.new("UICorner") uiCorner4.CornerRadius = UDim.new(0, v86[54]) uiCorner4.Parent = instance3 local frame6 = Instance.new("Frame") frame6.Position = UDim2.fromOffset(0, 0) frame6.Size = UDim2.new(1, 0, 0, 1) frame6.BorderSizePixel = 0 frame6.ZIndex = 3 v127:Bind(frame6, "BackgroundColor3", "Accent") frame6.Parent = canvasGroup2 local uiGradient2 = Instance.new("UIGradient") local numberSequence = NumberSequence.new local tbl18 = {} local v133 = NumberSequenceKeypoint.new(0, 1) local v134 = NumberSequenceKeypoint.new(v86[62], 0.28) local v135 = NumberSequenceKeypoint.new(0.5, 0) local v136 = NumberSequenceKeypoint.new(v86[173], 0.28) tbl18[1] = v133 tbl18[2] = v134 tbl18[3] = v135 tbl18[4] = v136 do local values = table.pack(NumberSequenceKeypoint.new(1, v86[63])) table.move(values, 1, values.n, 5, tbl18) end uiGradient2.Transparency = numberSequence(tbl18) uiGradient2.Parent = frame6 v116.addGlow(v127, frame6, { Amount = 2, DampingFactor = v86[161] }) local v137 = arg:RegisterOverlay(canvasGroup, { Open = v86[153], CloseOnOutside = false, OnToggle = function(arg6) if arg6 then canvasGroup.Visible = true return end local v137 = v131 if v137 ~= nil and v137:IsOpen() then v137:Close() else canvasGroup.Visible = false end end, }) v126:Add({ Destroy = function() arg:UnregisterOverlay(v137) end }) local v138 = fn40(v127, frame3) local frame7 = Instance.new("Frame") frame7.BackgroundTransparency = v86[63] frame7.BorderSizePixel = 0 frame7.Parent = v138.Body local instance4 = Instance.new(v86[128]) instance4.Size = UDim2.fromScale(1, v86[186]) instance4.BackgroundTransparency = 1 instance4.BorderSizePixel = v86[186] instance4.Parent = frame7 local uiGridLayout = Instance.new("UIGridLayout") uiGridLayout.CellPadding = UDim2.fromOffset(v86[133], 10) uiGridLayout.FillDirectionMaxCells = v128 and 1 or 2 uiGridLayout.SortOrder = Enum.SortOrder.LayoutOrder uiGridLayout.Parent = instance4 local obj = setmetatable({ _trove = v126, _menu = arg, _window = arg2, _batch = v127, _root = canvasGroup, _panel = canvasGroup2, _header = v129, _closeButton = instance3, _bodyHost = frame3, _hubView = v138, _hubContent = frame7, _routes = instance4, _routeLayout = uiGridLayout, _routeButtons = {}, _footer = frame4, _actionHolder = frame5, _footerDivider = v130, _footerHeightTween = nil, _backAction = back, _pageAction = v132, _entry = v137, _pages = {}, _activePage = nil, _activeView = nil, _bodyHeightTween = nil, _rootTitle = arg4.Title, _rootDescription = arg4.Description, _activeDescription = arg4.Description, _isConfirming = v86[153], _onClosed = arg5, _isOpen = false, _isResolving = false, _isDestroyed = false, _didNotifyClosed = false, _keyboardSyncToken = v86[186], _previousSelectedObject = nil, _hasSelectionGroup = false, }, index3) v131 = obj v120.connectClick(v126, instance3, function() obj:Close() end) v126:Connect(instance3.MouseEnter, function() arg:Tween(instance3, { BackgroundTransparency = 0, TextColor3 = v124.get("TextColor") }, tweenInfo) end) v126:Connect(instance3.MouseLeave, function() arg:Tween(instance3, { BackgroundTransparency = v86[63], TextColor3 = v124.get("Unselected") }, tweenInfo) end) v126:Connect(canvasGroup2:GetPropertyChangedSignal("AbsoluteSize"), function() if obj._isOpen then obj._panel.Position = obj:_ResolvePanelPosition(0) end end) v126:Connect(arg2:GetPropertyChangedSignal("AbsolutePosition"), function() obj:_SyncBounds() end) v126:Connect(arg2:GetPropertyChangedSignal("AbsoluteSize"), function() obj:_SyncBounds() end) v126:Connect(arg.VisibilityChanged, function(arg6) if not arg6 then obj:Close() end end) v126:Connect(userInputService.InputBegan, function(arg6) if not obj._isOpen or arg6.KeyCode ~= Enum.KeyCode.Escape then return end if arg:ShouldBlockKeybindCapture(arg6) then return end if obj._isConfirming then obj:_CancelConfirmation() elseif obj._activePage ~= nil then obj:_ShowHub() else obj:Close() end end) v125.connectOnScreenKeyboard(v126, function() obj:_SyncKeyboard() end) v126:Connect(userInputService.TextBoxFocused, function(arg6) if arg6:IsDescendantOf(canvasGroup2) then obj:_SyncKeyboard() end end) v126:Connect(userInputService.TextBoxFocusReleased, function(arg6) if arg6:IsDescendantOf(canvasGroup2) then obj:_SyncKeyboard() end end) obj:_ShowHub() obj:_SyncBounds() return obj end index3.AddPage = function(arg, arg2, arg3) if arg._isDestroyed then error(v86[145], 2) end local v126 = nil local v127 = index2.new(arg._menu, arg._bodyHost, arg._entry, arg2, function() local v127 = v126 if v127 ~= nil then arg:_ShowPage(v127) end end, function(arg4) if arg._activePage == v126 then arg._pageAction.SetEnabled(arg4) end end) arg._trove:Add(v127) table.insert(arg._pages, v127) local v128 = fn41(arg._menu, arg._trove, arg._batch, arg._routes, arg2, function() v127:Open() end) v128.Object.LayoutOrder = #arg._pages table.insert(arg._routeButtons, v128) arg._trove:Connect(v127._contentLayout:GetPropertyChangedSignal("AbsoluteContentSize"), function() if arg._activePage == v127 then arg:_UpdateLayout(true) end end) if arg3 ~= nil then arg3(v127.Container) end arg:_UpdateLayout() v126 = v127 return v127 end index3._SetHeader = function(arg, text, activeDescription) local header = arg._header arg._activeDescription = activeDescription header.Title.Text = text header.Description.Text = activeDescription or "" header.Description.Visible = activeDescription ~= nil and activeDescription ~= "" and not arg:_IsKeyboardVisible() if arg._isOpen then header.Title.TextTransparency = 1 header.Description.TextTransparency = v86[63] arg._menu:Tween(header.Title, { TextTransparency = 0 }) arg._menu:Tween(header.Description, { TextTransparency = 0 }) end end index3._ApplyFooter = function(arg, arg2) local visible = not (arg2 == nil) arg._backAction.Object.Visible = visible arg._backAction.Object.Text = arg._isConfirming and "Cancel" or "Back" local actionText = arg2 and arg2._props.ActionText or nil local visible2 = actionText ~= nil and actionText ~= "" arg._pageAction.Object.Visible = visible2 if visible2 and arg2 ~= nil then local confirmation = arg2._props.Confirmation if arg._isConfirming and confirmation ~= nil then arg._pageAction.Object.Text = confirmation.ActionText or "Confirm" else arg._pageAction.Object.Text = actionText end local str7 = v86[114] if arg2._props.Variant == "danger" then str7 = "danger" end arg._pageAction.SetVariant(str7) arg._pageAction.SetEnabled(arg2._isActionEnabled) end if not v119.IsMobile() then local n = visible2 and v86[56] or 1 arg._actionHolder.Size = UDim2.fromOffset(n * 104 + (n - 1) * 9, 32) end arg._footerDivider.Visible = visible local n = 0 if visible then n = v119.IsMobile() and 46 or 50 end local udim2 = UDim2.new(1, 0, 0, n) local footerHeightTween = arg._footerHeightTween if footerHeightTween ~= nil then arg._footerHeightTween = nil footerHeightTween:Cancel() end if arg._footer.Size ~= udim2 then if arg._isOpen then arg._footerHeightTween = arg._menu:Tween(arg._footer, { Size = udim2 }) else arg._footer.Size = udim2 end end end index3._ShowHub = function(arg) if arg._isDestroyed or arg._isResolving then return end arg._isConfirming = false arg._menu:CloseOverlayDescendants(arg._entry) arg._activePage = nil arg._hubView.Body.CanvasPosition = Vector2.zero arg:_TransitionViews(arg._hubView, -1) arg:_SetHeader(arg._rootTitle, arg._rootDescription) arg:_ApplyFooter(nil) arg:_UpdateLayout(true) arg:_SyncRouteHover() end index3._ShowPage = function(arg, activePage) if arg._isDestroyed or arg._isResolving or not arg._isOpen then return end arg._isConfirming = false arg._menu:CloseOverlayDescendants(arg._entry) arg._activePage = activePage activePage._view.Body.CanvasPosition = Vector2.zero arg:_TransitionViews(activePage._view, v86[63]) arg:_SetHeader(activePage._props.Title, activePage._props.Description) arg:_ApplyFooter(activePage) local onOpen = activePage._props.OnOpen if onOpen ~= nil then local v126, v127 = v107(onOpen) if not v126 then error(v127, 2) end end arg:_UpdateLayout(true) end index3._BeginConfirmation = function(arg, arg2) local confirmation = arg2._props.Confirmation if confirmation == nil then return end local description = confirmation.Description if type(description) == "function" then description = description() end arg._isConfirming = true arg:_TransitionViews(nil, 0) arg:_SetHeader(confirmation.Title or "Confirm action", description) arg:_ApplyFooter(arg2) arg:_UpdateLayout(true) end index3._CancelConfirmation = function(arg) local activePage = arg._activePage if not arg._isConfirming or activePage == nil or arg._isResolving then return end arg._isConfirming = false arg:_TransitionViews(activePage._view, v86[186]) arg:_SetHeader(activePage._props.Title, activePage._props.Description) arg:_ApplyFooter(activePage) arg:_UpdateLayout(true) end index3._RunPageAction = function(arg) local activePage = arg._activePage if activePage == nil or not activePage._isActionEnabled or arg._isResolving or not arg:IsOpen() then return end if activePage._props.Confirmation ~= nil and not arg._isConfirming then arg:_BeginConfirmation(activePage) return end arg._isResolving = true local onAction = activePage._props.OnAction local flag19 = true local v126 = nil if onAction ~= nil then flag19, v126 = v107(onAction) end arg._isResolving = false if not flag19 then error(v126, v86[56]) end if v126 == false or not arg._isOpen or arg._activePage ~= activePage then return end arg:_ShowHub() end index3._IsKeyboardVisible = function(arg) local focusedTextBox = userInputService:GetFocusedTextBox() return v125.onScreenKeyboardTop() ~= nil and focusedTextBox ~= nil and focusedTextBox:IsDescendantOf(arg._panel) end index3._GetKeyboardTop = function() local guiInset = guiService:GetGuiInset() return (v125.onScreenKeyboardTop() or 0) - guiInset.Y end local function fn42(arg, arg2) local v126 = v86[56] return math.round(arg - arg2) % 2 / v126 end index3._ResolvePanelPosition = function(arg, arg2) local absoluteSize = arg._root.AbsoluteSize local absoluteSize2 = arg._panel.AbsoluteSize local v126 = fn42(absoluteSize.X, absoluteSize2.X) if not arg:_IsKeyboardVisible() then return UDim2.new(0.5, v126, v86[101], arg2 + fn42(absoluteSize.Y, absoluteSize2.Y)) end local y = absoluteSize2.Y local absolutePosition = arg._root.AbsolutePosition local v127 = v86[162] return UDim2.new(0.5, v126, 0, math.round(math.max(absolutePosition.Y + 8 + y / v86[56], math.min(absolutePosition.Y + absoluteSize.Y / 2, arg:_GetKeyboardTop() - v127 - y / 2)) - absolutePosition.Y + arg2)) end index3._GetActiveBody = function(arg) local activePage = arg._activePage if activePage ~= nil then return activePage._view.Body end return arg._hubView.Body end index3._ScrollFocusedTextBox = function(arg) if not arg:_IsKeyboardVisible() then return end local v126 = arg:_GetActiveBody() local focusedTextBox = userInputService:GetFocusedTextBox() if focusedTextBox == nil or not focusedTextBox:IsDescendantOf(v126) then return end local y = v126.AbsoluteWindowSize.Y if y <= 0 then return end local y2 = v126.CanvasPosition.Y local n = focusedTextBox.AbsolutePosition.Y - v126.AbsolutePosition.Y + y2 local n33 = n + focusedTextBox.AbsoluteSize.Y if n < y2 + v86[162] then y2 = n - 8 elseif y2 + y - 8 < n33 then y2 = n33 - y + 8 end local n34 = math.max(v86[186], v126.AbsoluteCanvasSize.Y - y) v126.CanvasPosition = Vector2.new(v126.CanvasPosition.X, math.clamp(y2, 0, n34)) end index3._SyncKeyboard = function(arg) if arg._isDestroyed then return end arg._keyboardSyncToken = arg._keyboardSyncToken + 1 local keyboardSyncToken = arg._keyboardSyncToken local activeDescription = arg._activeDescription arg._header.Description.Visible = activeDescription ~= nil and activeDescription ~= "" and not arg:_IsKeyboardVisible() task.defer(function() if arg._isDestroyed or arg._keyboardSyncToken ~= keyboardSyncToken then return end arg:_UpdateLayout() task.defer(function() if arg._isDestroyed or arg._keyboardSyncToken ~= keyboardSyncToken then return end local v126 = arg:_ResolvePanelPosition(0) if arg._isOpen and arg._root.Visible then arg._menu:Tween(arg._panel, { Position = v126 }) else arg._panel.Position = v126 end arg:_ScrollFocusedTextBox() end) end) end index3._SetBodyHeight = function(arg, arg2, arg3) local udim2 = UDim2.new(1, 0, 0, arg2) local bodyHeightTween = arg._bodyHeightTween if bodyHeightTween ~= nil then arg._bodyHeightTween = nil bodyHeightTween:Cancel() end if arg._bodyHost.Size == udim2 then return end if arg3 and arg._isOpen then arg._bodyHeightTween = arg._menu:Tween(arg._bodyHost, { Size = udim2 }) else arg._bodyHost.Size = udim2 end end index3._TransitionViews = function(arg, activeView, arg2) local activeView2 = arg._activeView if activeView2 == activeView then return end arg._activeView = activeView if not arg._isOpen then if activeView2 ~= nil then activeView2.Group.Visible = false activeView2.Group.GroupTransparency = 1 end if activeView ~= nil then activeView.Group.Position = UDim2.fromOffset(0, 0) activeView.Group.GroupTransparency = 0 activeView.Group.Visible = true end return end if activeView2 ~= nil then arg._menu:FadeCanvasGroup(activeView2.Group, v86[153], activeView2.Fade) end if activeView ~= nil then if arg2 ~= 0 then activeView.Group.Position = UDim2.fromOffset(arg2 * 16, 0) arg._menu:Tween(activeView.Group, { Position = UDim2.fromOffset(0, 0) }) else activeView.Group.Position = UDim2.fromOffset(0, 0) end arg._menu:FadeCanvasGroup(activeView.Group, true, activeView.Fade) end end index3._SyncRouteHover = function(arg) if v119.IsMobile() then return end task.defer(function() if arg._isDestroyed or arg._activeView ~= arg._hubView then return end for _, v126 in arg._routeButtons, nil, nil do v126.SyncHover() end end) end index3._UpdateLayout = function(arg, arg2) if arg._isDestroyed then return end local v126 = v119.IsMobile() local n = v126 and 8 or v86[144] local n33 = v126 and v86[103] or 64 local n34 = v126 and v86[118] or 20 local n35 = v126 and v86[181] or 14 local n36 = v126 and 56 or 60 local absoluteSize = arg._root.AbsoluteSize if absoluteSize.X > 0 then arg._panel.Size = UDim2.fromOffset(math.max(0, math.min(520, absoluteSize.X - n * 2)), 0) end local v127 = math.ceil(#arg._pages / 1) local n37 = 0 if v127 > 0 then n37 = v127 * n36 + (v127 - 1) * v86[133] end arg._routeLayout.FillDirectionMaxCells = 1 arg._routeLayout.CellSize = UDim2.new(1, 0, 0, n36) arg._routes.Size = UDim2.new(1, v86[186], 0, n37) local activePage = arg._activePage local n38 if activePage == nil then arg._hubContent.Position = UDim2.fromOffset(n34, n35) arg._hubContent.Size = UDim2.new(1, -n34 * 2, 0, n37) n38 = n37 + n35 * 2 else n38 = activePage:_PrepareLayout(n34, n35) end local n39 = 0 local n40 = 1 if activePage ~= nil then n39 = v126 and 46 or 50 n40 = 2 end local n41 = arg._header.Root.AbsoluteSize.Y + n39 + n40 local n42 = math.max(0, absoluteSize.Y - n * v86[56] - n41) local n43 if arg:_IsKeyboardVisible() then local y = arg._root.AbsolutePosition.Y n43 = math.min(n42, math.max(0, math.max(0, arg:_GetKeyboardTop() - y - 16) - n41)) else n43 = n42 end local n44 = 0 if not arg._isConfirming then n44 = math.min(math.max(n33, n38), n43) end arg:_SetBodyHeight(n44, arg2 == true) if activePage == nil then arg._hubView.Body.CanvasSize = UDim2.fromOffset(0, n38) arg._hubView.Body.ScrollBarThickness = n38 > n44 + v86[101] and v86[26] or 0 else activePage:_SetViewport(n44, n38) end end index3._SyncBounds = function(arg) if arg._isDestroyed then return end local v126 = v125.absoluteToLayerOffset(arg._menu:GetOverlayLayer(), arg._window.AbsolutePosition) local absoluteSize = arg._window.AbsoluteSize local floor2 = math.floor local n = v126.Y + 0.5 arg._root.Position = UDim2.fromOffset(math.floor(v126.X + 0.5), floor2(n)) arg._root.Size = UDim2.fromOffset(math.floor(absoluteSize.X + v86[101]), math.floor(absoluteSize.Y + 0.5)) arg:_UpdateLayout() if arg:_IsKeyboardVisible() then arg:_SyncKeyboard() end end index3._NotifyClosed = function(arg) if arg._didNotifyClosed then return end arg._didNotifyClosed = true arg._onClosed() end index3._AcquireSelection = function(arg) if arg._hasSelectionGroup then return end arg._hasSelectionGroup = true arg._previousSelectedObject = guiService.SelectedObject arg._panel.SelectionGroup = true if userInputService.GamepadEnabled then guiService.SelectedObject = arg._closeButton end end index3._ReleaseSelection = function(arg) if not arg._hasSelectionGroup then return end arg._hasSelectionGroup = false arg._panel.SelectionGroup = false local selectedObject = guiService.SelectedObject if selectedObject ~= nil and selectedObject:IsDescendantOf(arg._panel) then local previousSelectedObject = arg._previousSelectedObject if previousSelectedObject ~= nil and previousSelectedObject.Parent ~= nil then guiService.SelectedObject = previousSelectedObject else guiService.SelectedObject = nil end end arg._previousSelectedObject = nil end index3._AnimateClosed = function(arg) arg._menu:CloseOverlayDescendants(arg._entry) local v126 = arg._menu:Tween(arg._root, { GroupTransparency = 1 }) arg._menu:Tween(arg._panel, { Position = arg:_ResolvePanelPosition(-15) }) if v126 == nil then arg:Destroy() return end arg._trove:Connect(v126.Completed, function() arg:Destroy() if not flag3 then return end end) end index3._Open = function(arg) if arg._isDestroyed or arg._isOpen then return end arg._isOpen = true task.defer(function() if arg._isDestroyed or not arg._isOpen then return end arg:_SyncBounds() arg._hubView.Body.CanvasPosition = Vector2.zero arg._root.GroupTransparency = 1 arg._panel.Position = arg:_ResolvePanelPosition(-15) arg._menu:SetOverlayOpen(arg._entry, true) arg:_AcquireSelection() local v126 = arg:_ResolvePanelPosition(0) local v127 = arg._menu:Tween(arg._root, { GroupTransparency = v86[186] }) local v128 = arg._menu:Tween(arg._panel, { Position = v126 }) if v127 == nil then arg._root.GroupTransparency = v86[186] end if v128 == nil then arg._panel.Position = v126 end arg:_SyncRouteHover() end) end index3.IsOpen = function(arg) return arg._isOpen and not arg._isDestroyed end index3.Close = function(arg) if not arg:IsOpen() then return end arg._isOpen = v86[153] arg:_ReleaseSelection() arg:_NotifyClosed() arg:_AnimateClosed() end index3.Destroy = function(arg) if arg._isDestroyed then return end arg._isDestroyed = true arg._isOpen = false arg:_NotifyClosed() arg:_ReleaseSelection() arg._trove:Destroy() end return index3 end tbl17.ac = function() local ac = tbl17.cache.ac if not ac then ac = { c = fn35() } tbl17.cache.ac = ac end return ac.c end end do -- ad local function fn35() local v115 = tbl17.b() tbl17.a() local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _errors = {}, _sink = v115.get() } setmetatable(tbl18, index2) return tbl18 end index2.Report = function(arg, arg2) local errors = arg._errors if #errors >= v86[137] then table.remove(errors, v86[63]) end table.insert(errors, arg2) local sink = arg._sink if sink ~= nil then sink:Report(arg2) end end index2.ReportResult = function(arg, arg2) if not arg2.Ok then arg:Report(arg2.Error) end return arg2 end index2.GetErrors = function(arg) return arg._errors end index2.Destroy = function(arg) table.clear(arg._errors) arg._sink = nil end return index2 end tbl17.ad = function() local ad = tbl17.cache.ad if not ad then local ad2 = { c = fn35() } tbl17.cache.ad = ad2 ad = ad2 end return ad.c end end do -- ae local function fn35()local I,W= tbl17 .f(), tbl17 .ad(); tbl17 .a(); tbl17 .r();local l={};l.__index=l;local N={AutoSave=false,AutoSaveConfigName=nil,AutoLoad=false,AutoLoadConfigName=nil,Keybind="RightShift",Size=nil,Position=nil,KeybindsListPosition=nil,WatermarkPosition=nil,MobileButtonPositions=nil,ShowKeybinds=nil,ShowWatermark=nil,MenuKeybindInList=nil,HideMobileMenuButton=nil,SilentLoad=nil};local function P(a)return(a:gsub("%.json$",""));end;local function a(e)if type(e)~="table"then return nil;end;local c,E=e[1],e[2];if type(c)~="number"or type(E)~="number"then return nil;end;if c~=c or E~=E then return nil;end;return{c,E};end;local function e(c)if type(c)~="table"then return nil;end;local E,p={},false;for T,t in c,nil,nil do if type(T)~="string"or T==""then continue;end;local c_26=a(t);if c_26==nil then continue;end;E[T]=c_26;p=true;end;return p and E or nil;end;local function c(E)local p=table.clone(N);if type(E)~="table"then return p;end;if type(E.AutoSave)=="boolean"then p.AutoSave=E.AutoSave;end;if type(E.AutoSaveConfigName)=="string"then p.AutoSaveConfigName=P(E.AutoSaveConfigName);end;if type(E.AutoLoad)=="boolean"then p.AutoLoad=E.AutoLoad;end;if type(E.AutoLoadConfigName)=="string"then p.AutoLoadConfigName=P(E.AutoLoadConfigName);end;if type(E.Keybind)=="string"then p.Keybind=E.Keybind;end;if type(E.ShowKeybinds)=="boolean"then p.ShowKeybinds=E.ShowKeybinds;end;if type(E.ShowWatermark)=="boolean"then p.ShowWatermark=E.ShowWatermark;end;if type(E.MenuKeybindInList)=="boolean"then p.MenuKeybindInList=E.MenuKeybindInList;end;if type(E.HideMobileMenuButton)=="boolean"then p.HideMobileMenuButton=E.HideMobileMenuButton;end;if type(E.SilentLoad)=="boolean"then p.SilentLoad=E.SilentLoad;end;p.Size=a(E.Size);p.Position=a(E.Position);p.KeybindsListPosition=a(E.KeybindsListPosition);p.WatermarkPosition=a(E.WatermarkPosition);p.MobileButtonPositions=e(E.MobileButtonPositions);return p;end;local function P_27(a)if type(a)~="table"then return{};end;local e=table.clone(a);a=e.autosave;e.autosave=nil;if type(a)=="string"then e.AutoSave=true;e.AutoSaveConfigName=a;end;a=e.autoload;e.autoload=nil;if type(a)=="string"then e.AutoLoad=true;e.AutoLoadConfigName=a;end;return e;end;local function a_28(e)if type(e)~="table"then return{};end;local E,p=table.clone(e),{"autoSave","autoSaveConfigName","autoLoad","autoLoadConfigName","keybind","size","position","keybindsListPosition","watermarkPosition","mobileButtonPositions","showKeybinds","showWatermark","menuKeybindInList","hideMobileMenuButton","silentLoad"};for T,T_29 in p,nil,nil do e=string.upper(string.sub(T_29,1,1))..string.sub(T_29,2);if E[e]==nil then E[e]=E[T_29];end;E[T_29]=nil;end;return E;end;l.new=function(e)return setmetatable({_errorReporter=W.new(),_manager=I.new({DefaultConfig=N,CurrentVersion=3,SavePath=e,Deserialize=c,Migrations={[1]=P_27,[2]=a_28}})},l);end;l.Load=function(I)if not I._manager:Exists("general")then return I._manager:Reset();end;local W=I._manager:LoadFromFile("general");if W.Ok then return W.Value;end;I._errorReporter:Report(W.Error);return I._manager:Reset();end;l.Save=function(I,W)I._manager:SetData(W);return I._errorReporter:ReportResult(I._manager:SaveToFile("general"));end;l.Destroy=function(I)I._errorReporter:Destroy();end;return l;end tbl17.ae = function() local ae = tbl17.cache.ae if not ae then ae = { c = fn35() } tbl17.cache.ae = ae end return ae.c end end do -- af local function fn35() tbl17.k() local v115 = tbl17.ab() tbl17.r() local v116 = tbl17.v() local v117 = tbl17.X() tbl17.A() local index2 = {} index2.__index = index2 local function createScrollingFrame(arg, parent, arg2) local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.ScrollBarImageTransparency = 1 scrollingFrame.ScrollBarThickness = 0 scrollingFrame.Size = UDim2.fromScale(v86[63], v86[63]) scrollingFrame.Selectable = v86[153] scrollingFrame.BackgroundTransparency = 1 scrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y scrollingFrame.BorderSizePixel = 0 scrollingFrame.CanvasSize = UDim2.new(v86[186], 0, 0, 0) arg:Bind(scrollingFrame, "ScrollBarImageColor3", "Accent") scrollingFrame.Parent = parent local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, v86[63]) uiPadding.PaddingBottom = UDim.new(0, 1) uiPadding.PaddingRight = UDim.new(0, 1) uiPadding.PaddingLeft = UDim.new(0, v86[63]) uiPadding.Parent = scrollingFrame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, arg2) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.HorizontalFlex = Enum.UIFlexAlignment.Fill uiListLayout.Parent = scrollingFrame return scrollingFrame end index2.new = function(arg, parent, arg2, arg3, arg4, arg5) local v118 = v116.get() local columns = v86[56] if arg4 ~= nil and arg4.Columns ~= nil then columns = arg4.Columns end local uiListLayout = Instance.new("UIListLayout") uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.HorizontalFlex = Enum.UIFlexAlignment.Fill uiListLayout.Padding = UDim.new(v86[186], v118.Grid.Gap) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.VerticalFlex = Enum.UIFlexAlignment.Fill uiListLayout.Parent = parent local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.Visible = false scrollingFrame.ScrollBarImageTransparency = 1 scrollingFrame.ScrollBarThickness = 0 scrollingFrame.Size = UDim2.fromScale(1, 1) scrollingFrame.Selectable = v86[153] scrollingFrame.BackgroundTransparency = 1 scrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y scrollingFrame.BorderSizePixel = v86[186] scrollingFrame.CanvasSize = UDim2.new(0, v86[186], v86[186], v86[186]) scrollingFrame.ZIndex = v86[56] arg3:Bind(scrollingFrame, "ScrollBarImageColor3", "Accent") scrollingFrame.Parent = parent local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, 1) uiPadding.PaddingBottom = UDim.new(0, 1) uiPadding.PaddingRight = UDim.new(0, v86[63]) uiPadding.PaddingLeft = UDim.new(0, 1) uiPadding.Parent = scrollingFrame local uiListLayout2 = Instance.new("UIListLayout") uiListLayout2.Padding = UDim.new(0, v118.Section.Gap) uiListLayout2.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout2.HorizontalFlex = Enum.UIFlexAlignment.Fill uiListLayout2.Parent = scrollingFrame local tbl18 = {} for i = v86[63], columns do table.insert(tbl18, createScrollingFrame(arg3, parent, v118.Section.Gap)) end return setmetatable({ _trove = arg2, _layoutTrove = arg2:Extend(), _menu = arg, _batch = arg3, _parent = parent, _effectiveColumns = columns, Columns = columns, _columns = tbl18, _fullPage = scrollingFrame, _items = {}, _realized = false, _searchHost = arg5, _hasFullSection = false, _layoutQueued = false, _columnCanvasPositions = {}, _fullCanvasPosition = Vector2.zero, }, index2) end index2._SetMode = function(arg, visible) if arg._fullPage.Visible == visible then return end if arg._fullPage.Visible then arg._fullCanvasPosition = arg._fullPage.CanvasPosition else for k, v118 in arg._columns, nil, nil do arg._columnCanvasPositions[k] = v118.CanvasPosition end end arg._fullPage.Visible = visible for k, v118 in arg._columns, nil, nil do local visible2 = not visible v118.Visible = visible2 if visible2 then v118.CanvasPosition = arg._columnCanvasPositions[k] or Vector2.zero end end if visible then arg._fullPage.CanvasPosition = arg._fullCanvasPosition end end index2._ResolveColumnCount = function(arg) if arg._hasFullSection or arg.Columns <= 1 then return 1 end local x = arg._parent.AbsoluteSize.X if x <= 0 then return arg.Columns end local v118 = v116.get() local gap = v118.Grid.Gap local n = math.max(1, math.floor((x + gap) / (v118.Grid.MinColumnWidth + gap))) return math.min(arg.Columns, n) end index2._ParentForSide = function(arg, arg2) if arg._effectiveColumns == 1 or arg2 == "full" then return arg._fullPage end if arg2 == "right" and arg._effectiveColumns >= 2 then return arg._columns[2] end return arg._columns[1] end index2._ApplyResponsiveLayout = function(arg) local v118 = arg:_ResolveColumnCount() arg._effectiveColumns = v118 arg:_SetMode(v118 == 1) for k, v119 in arg._items, nil, nil do v119.Reparent(arg:_ParentForSide(v119.Side), k) end end index2.ColumnParent = function(arg, arg2) return arg:_ParentForSide(arg2) end index2.AddSection = function(arg, arg2) if arg2.Side == "full" then arg._hasFullSection = true end local v118 = v115.BuildSection(arg._menu, arg._trove, arg2, function() return arg:ColumnParent(arg2.Side) end) arg:_RegisterItem(arg2.Side, function() v118:Realize() end, function(arg3, arg4) v118:_SetGridParent(arg3, arg4) end) arg._menu:RegisterSearchSection(arg._searchHost, v118, function(arg3, arg4, arg5) v118:CollectSearchHits(arg3, arg4, arg5) end) return v118 end index2.AddMultiSection = function(arg, arg2) if arg2.Side == "full" then arg._hasFullSection = true end local v118 = v115.BuildPanes(arg._menu, arg._trove, arg2.Titles) local v119 = v117.new(arg._menu, arg._trove, v118, function() return arg:ColumnParent(arg2.Side) end) arg:_RegisterItem(arg2.Side, function() v119:Realize() end, function(arg3, arg4) v119:_SetGridParent(arg3, arg4) end) for k, v120 in v118, nil, nil do arg._menu:RegisterSearchSection(arg._searchHost, v120, function(arg3, arg4, arg5) v120:CollectSearchHits(arg3, arg4, arg5, { Reveal = function() v119:SelectPane(k) end }) end) end return table.unpack(v118) end index2._RegisterItem = function(arg, arg2, arg3, arg4) table.insert(arg._items, { Side = arg2, Realize = arg3, Reparent = arg4 }) if arg._realized then arg3() arg:_ApplyResponsiveLayout() end end index2.Register = function(arg, arg2) arg:_RegisterItem(nil, arg2, function() end) end index2.Realize = function(arg) if arg._realized then return end arg._effectiveColumns = arg:_ResolveColumnCount() arg:_SetMode(arg._effectiveColumns == v86[63]) arg._realized = true for _, v118 in arg._items, nil, nil do v118.Realize() end arg:_ApplyResponsiveLayout() arg._trove:Connect(arg._parent:GetPropertyChangedSignal(v86[131]), function() if arg._layoutQueued then return end arg._layoutQueued = true arg._layoutTrove:Clean() arg._layoutTrove:Add(task.defer(function() arg._layoutQueued = v86[153] arg:_ApplyResponsiveLayout() end)) end) end return index2 end tbl17.af = function() local af = tbl17.cache.af if not af then local af2 = { c = fn35() } tbl17.cache.af = af2 af = af2 end return af.c end end do -- ag local function fn35() tbl17 .k();local I= tbl17 .t();local l,W,N,P=I.UserInputService,I.RunService,I.HttpService,{};P.__index=P;P.new=function(I)return setmetatable({_trove=I,_unlocked=false,_textbox=nil,_binding=nil,_oldMouseIconEnabled=nil},P);end;local function I_30(a)local e=a._textbox;if e~=nil then return e;end;e=Instance.new("TextBox");a._textbox=e;a._trove:Add(e);return e;end;P.Set=function(a,e)if a._unlocked==e then return;end;a._unlocked=e;if not l.KeyboardEnabled then return;end;if e then local e_31=I_30(a);a._oldMouseIconEnabled=l.MouseIconEnabled;local I=N:GenerateGUID(false);a._binding=I;W:BindToRenderStep(I,Enum.RenderPriority.Camera.Value+1,function()if not l.MouseIconEnabled then a._oldMouseIconEnabled=l.MouseIconEnabled;l.MouseIconEnabled=true;end;local f=l:GetFocusedTextBox();if f==nil or f==e_31 then e_31:CaptureFocus();end;end);else if a._binding~=nil then W:UnbindFromRenderStep(a._binding);a._binding=nil;end;if a._oldMouseIconEnabled~=nil then l.MouseIconEnabled=a._oldMouseIconEnabled;a._oldMouseIconEnabled=nil;end;if a._textbox~=nil then a._textbox:ReleaseFocus(false);end;end;end;P.Destroy=function(l)l:Set(false);end;return P;end tbl17.ag = function() local ag = tbl17.cache.ag if not ag then ag = { c = fn35() } tbl17.cache.ag = ag end return ag.c end end do -- ah local function fn35()local I= tbl17 .k(); tbl17 .r();local W,N= tbl17 .t().UserInputService,{};N.__index=N;N.new=function(l)local P=I.new();local I={_trove=P,_captureTrove=P:Extend(),_active=nil,_pending=nil,_generation=0,_deliveryTrove=P:Extend(),_capturedInputSet={}};setmetatable(I._capturedInputSet,{__mode="k"});P=setmetatable(I,N);l:Add(P);return P;end;N.ShouldBlockMenuToggle=function(l,I)return l._active~=nil or l._capturedInputSet[I]==true;end;N.Begin=function(l,I)l:Cancel();l._generation=l._generation+1;local P=l._generation;l._active=I;l._captureTrove:Connect(W.InputBegan,function(I,W)if I.UserInputType==Enum.UserInputType.Touch then l:Cancel();return;end;local a=I.UserInputType;local e,c=a==Enum.UserInputType.Keyboard,a==Enum.UserInputType.MouseButton1 or a==Enum.UserInputType.MouseButton2 or a==Enum.UserInputType.MouseButton3;if not e and not c then return;end;c=e and I.KeyCode==Enum.KeyCode.Escape;if e and not c and W then return;end;local W_32=l._active;l:_Disarm();if W_32==nil then return;end;local E="None";if not c then if e then E=I.KeyCode;else E=a;end;end;l._capturedInputSet[I]=true;l._pending=W_32;l._deliveryTrove:Add(task.defer(function()if l._generation~=P or l._pending~=W_32 then return;end;l._pending=nil;l._capturedInputSet[I]=nil;W_32(E);end));end);return function()if l._generation==P then l:Cancel();end;end;end;N._Disarm=function(l)l._captureTrove:Clean();l._active=nil;end;N.Cancel=function(l)local I=l._active or l._pending;l._generation=l._generation+1;l._deliveryTrove:Clean();l:_Disarm();l._pending=nil;table.clear(l._capturedInputSet);if I~=nil then I(nil);end;end;N.Destroy=function(l)l:Cancel();l._trove:Destroy();end;return N;end tbl17.ah = function() local ah = tbl17.cache.ah if not ah then ah = { c = fn35() } tbl17.cache.ah = ah end return ah.c end end do -- ai local function fn35() tbl17.k() tbl17.r() local v115 = tbl17.u() local v116 = tbl17.A() local v117 = tbl17.w() local tweenInfo = TweenInfo.new(v86[28], Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local index2 = {} index2.__index = index2 local function fn36(arg, arg2) return arg._enabled and arg2.Enabled end local function fn37(arg, arg2, visible) local row = arg2.Row if row == nil then return end local outline = row.Outline local fadeTween = row.FadeTween if fadeTween ~= nil then fadeTween:Cancel() row.FadeTween = nil end local udim2 = UDim2.fromScale(1, 0) local n = v86[63] if visible then udim2 = UDim2.new(v86[63], v86[186], 0, 22) outline.Visible = v86[34] n = 0 end local v118 = arg._menu:Tween(outline, { Size = udim2, GroupTransparency = n }, tweenInfo) row.FadeTween = v118 if v118 == nil then outline.Visible = visible return end if not visible then v118.Completed:Once(function(playbackState) if playbackState == Enum.PlaybackState.Completed then outline.Visible = v86[153] end end) end end local function fn38(arg) local row = arg.Row if row == nil then return end if arg.Active then row.Label.TextColor3 = v116.get("TextColor") row.Label.TextTransparency = 0 row.ModeText.TextColor3 = v116.get("Accent") row.ModeText.TextTransparency = 0 else row.Label.TextColor3 = v116.get(v86[96]) row.Label.TextTransparency = v86[126] row.ModeText.TextColor3 = v116.get("Unselected") row.ModeText.TextTransparency = 0.25 end end local function fn39(arg, arg2) local main = arg._menu.Fonts.Main local canvasGroup = Instance.new("CanvasGroup") canvasGroup.Visible = false canvasGroup.GroupTransparency = 1 canvasGroup.BackgroundTransparency = 1 canvasGroup.BorderSizePixel = 0 canvasGroup.Size = UDim2.fromScale(1, 0) canvasGroup.Parent = arg._rows local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.Size = UDim2.fromScale(1, 1) frame.Parent = canvasGroup local uiListLayout = Instance.new("UIListLayout") uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Padding = UDim.new(0, 10) uiListLayout.Parent = frame local instance = Instance.new(v86[135]) instance.TextTransparency = v86[186] instance.Text = arg2.KeyText instance.BackgroundTransparency = 1 instance.BorderSizePixel = 0 instance.Size = UDim2.new(0, v86[163], 1, v86[186]) instance.TextXAlignment = Enum.TextXAlignment.Left instance.TextSize = 12 instance.LayoutOrder = v86[186] instance.FontFace = main arg._batch:Bind(instance, "TextColor3", "Accent") instance.Parent = frame local instance2 = Instance.new(v86[135]) instance2.Text = arg2.Label instance2.BackgroundTransparency = 1 instance2.BorderSizePixel = 0 instance2.Size = UDim2.fromScale(v86[186], 1) instance2.TextXAlignment = Enum.TextXAlignment.Left instance2.TextTruncate = Enum.TextTruncate.AtEnd instance2.TextSize = 12 instance2.LayoutOrder = v86[63] instance2.FontFace = main instance2.Parent = frame local uiFlexItem = Instance.new("UIFlexItem") uiFlexItem.FlexMode = Enum.UIFlexMode.Fill uiFlexItem.Parent = instance2 local instance3 = Instance.new(v86[135]) instance3.Text = arg2.Mode instance3.BackgroundTransparency = 1 instance3.BorderSizePixel = 0 instance3.AutomaticSize = Enum.AutomaticSize.X instance3.Size = UDim2.fromScale(0, v86[63]) instance3.TextXAlignment = Enum.TextXAlignment.Right instance3.TextSize = v86[133] instance3.LayoutOrder = 2 instance3.FontFace = main instance3.Parent = frame arg2.Row = { Outline = canvasGroup, KeyText = instance, Label = instance2, ModeText = instance3, FadeTween = nil } fn38(arg2) end local function fn40() local v118 = v86[84] return UDim2.fromOffset(50, math.min(v86[198], math.floor(v117.currentViewportSize().Y * v118))) end local function fn41(arg, arg2) arg:Add(task.defer(function() if arg2.Parent ~= nil then v117.clampGuiToViewport(arg2) end end)) arg:Add(task.defer(function() if arg2.Parent ~= nil then v117.clampGuiToViewport(arg2) end end)) end local function fn42(arg, arg2, parent, arg3) local main = arg.Fonts.Main local canvasGroup = Instance.new("CanvasGroup") canvasGroup.GroupTransparency = 0 canvasGroup.BackgroundTransparency = 1 canvasGroup.Position = fn40() canvasGroup.BorderSizePixel = v86[186] canvasGroup.AutomaticSize = Enum.AutomaticSize.XY canvasGroup.Parent = parent arg3:Add(canvasGroup) arg:MakeDraggable(canvasGroup, arg3, { PersistKey = "KeybindsListPosition" }) if v115.Scale ~= v86[63] then local uiScale = Instance.new("UIScale") uiScale.Scale = v115.Scale uiScale.Parent = canvasGroup end local canvasGroup2 = Instance.new("CanvasGroup") canvasGroup2.BackgroundTransparency = 0.06 canvasGroup2.BorderSizePixel = v86[186] canvasGroup2.Size = UDim2.fromOffset(234, 0) canvasGroup2.AutomaticSize = Enum.AutomaticSize.Y canvasGroup2.GroupTransparency = v86[63] canvasGroup2.Visible = false arg2:Bind(canvasGroup2, "BackgroundColor3", "GradientDark") canvasGroup2.Parent = canvasGroup local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = canvasGroup2 local uiStroke = Instance.new("UIStroke") uiStroke.Transparency = v86[87] uiStroke.Thickness = 1 arg2:Bind(uiStroke, v86[27], "Outline") uiStroke.Parent = canvasGroup2 local frame = Instance.new("Frame") frame.BorderSizePixel = 0 frame.Position = UDim2.fromScale(v86[186], 0) frame.Size = UDim2.new(0, v86[56], 1, 0) arg2:Bind(frame, v86[5], "Accent") frame.Parent = canvasGroup2 local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = 1 frame2.BorderSizePixel = 0 frame2.Position = UDim2.fromOffset(2, 0) frame2.Size = UDim2.new(1, -2, 0, v86[186]) frame2.AutomaticSize = Enum.AutomaticSize.Y frame2.Parent = canvasGroup2 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(v86[186], v86[162]) uiPadding.PaddingBottom = UDim.new(v86[186], 9) uiPadding.PaddingLeft = UDim.new(0, 12) uiPadding.PaddingRight = UDim.new(0, 12) uiPadding.Parent = frame2 local instance = Instance.new(v86[4]) instance.SortOrder = Enum.SortOrder.LayoutOrder instance.Padding = UDim.new(0, v86[54]) instance.Parent = frame2 local textLabel = Instance.new("TextLabel") textLabel.Text = "KEYBINDS" textLabel.BackgroundTransparency = 1 textLabel.Size = UDim2.new(1, 0, 0, 12) textLabel.BorderSizePixel = 0 textLabel.TextXAlignment = Enum.TextXAlignment.Left textLabel.TextSize = 10 textLabel.LayoutOrder = 0 textLabel.FontFace = main arg2:Bind(textLabel, v86[167], "Unselected") textLabel.Parent = frame2 local instance2 = Instance.new(v86[128]) instance2.BackgroundTransparency = v86[63] instance2.Size = UDim2.fromScale(v86[63], v86[186]) instance2.AutomaticSize = Enum.AutomaticSize.Y instance2.BorderSizePixel = 0 instance2.LayoutOrder = 1 instance2.Parent = frame2 local uiListLayout = Instance.new("UIListLayout") uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Padding = UDim.new(0, 1) uiListLayout.Parent = instance2 return canvasGroup, canvasGroup2, instance2 end index2.new = function(arg, arg2, arg3) local v118 = arg3:Extend() local v119 = v116.newBatch(v118) local stateData = arg:GetStateData() local flag19 = stateData ~= nil and stateData.ShowKeybinds == false local flag20 = true if flag19 then flag20 = false end local v120, v121, v122 = fn42(arg, v119, arg2, v118) local obj = setmetatable({ _trove = v118, _menu = arg, _batch = v119, _entries = {}, _group = v120, _card = v121, _rows = v122, _enabled = flag20, _cardFadeState = { Tweening = false }, }, index2) v119:BindStateful("Accent", function() for _, v123 in obj._entries, nil, nil do fn38(v123) end end) v119:BindStateful("Unselected", function() for _, v123 in obj._entries, nil, nil do fn38(v123) end end) if flag20 then arg:FadeCanvasGroup(obj._card, true, obj._cardFadeState) fn41(obj._trove, obj._group) end return obj end index2.SetEnabled = function(arg, enabled) if arg._enabled == enabled then return end arg._enabled = enabled for _, v118 in arg._entries, nil, nil do fn37(arg, v118, fn36(arg, v118)) end arg._menu:FadeCanvasGroup(arg._card, enabled, arg._cardFadeState) if enabled then fn41(arg._trove, arg._group) end local stateData = arg._menu:GetStateData() if stateData ~= nil then stateData.ShowKeybinds = enabled arg._menu:SaveState() end end index2.IsEnabled = function(arg) return arg._enabled end index2.AddEntry = function(arg) local tbl18 = { Label = v86[73], KeyText = "NONE", Mode = "TOGGLE", Active = v86[153], Enabled = false, Row = nil, } table.insert(arg._entries, tbl18) return { SetLabel = function(arg2, label) tbl18.Label = label local row = tbl18.Row if row ~= nil then row.Label.Text = label end end, SetKeyText = function(arg2, arg3) tbl18.KeyText = arg3:upper() local row = tbl18.Row if row ~= nil then row.KeyText.Text = tbl18.KeyText end end, SetMode = function(arg2, arg3) tbl18.Mode = arg3:upper() local row = tbl18.Row if row ~= nil then row.ModeText.Text = tbl18.Mode end end, SetActiveAppearance = function(arg2, active) tbl18.Active = active fn38(tbl18) end, SetEnabled = function(arg2, enabled) if tbl18.Enabled == enabled then return end tbl18.Enabled = enabled if enabled and tbl18.Row == nil then fn39(arg, tbl18) end fn37(arg, tbl18, fn36(arg, tbl18)) end, Destroy = function() local v118 = table.find(arg._entries, tbl18) if v118 ~= nil then table.remove(arg._entries, v118) end local row = tbl18.Row if row ~= nil then tbl18.Row = nil row.Outline:Destroy() end end, } end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.ai = function() local ai = tbl17.cache.ai if not ai then ai = { c = fn35() } tbl17.cache.ai = ai end return ai.c end end do -- aj local function fn35() tbl17.k() tbl17.r() local v115 = tbl17.s() local v116 = tbl17.x() local v117 = tbl17.t() local v118 = tbl17.A() local v119 = tbl17.w() local userInputService = v117.UserInputService local index2 = {} index2.__index = index2 local function fn36(arg) local rt = arg.Rt if rt ~= nil and rt.Instance.Parent ~= nil then v119.clampGuiToViewport(rt.Instance) end end index2.new = function(arg, arg2, arg3) local obj = setmetatable({ _trove = arg3:Extend(), _menu = arg, _parent = arg2, _buttonByFlag = {}, _buttonCount = 0, _isDragMode = false, }, index2) local v120 = obj._trove:Extend() v119.connectCurrentCameraViewport(obj._trove, function(arg4) v120:Clean() if arg4 == nil then return end v120:Add(task.defer(function() for _, v121 in obj._buttonByFlag, nil, nil do fn36(v121) end end)) end) return obj end local function fn37(arg, arg2) local rt = arg2.Rt if rt == nil then return end local str7 = "Background" if arg2.Active then str7 = "Accent" end arg:Tween(rt.Instance, { BackgroundColor3 = v118.get(str7) }) end local function fn38(arg) return arg.Visible and arg.Mode ~= "Always" end local function fn39(arg, arg2) local rt = arg.Rt if rt == nil then return end local backgroundTransparency = v86[186] if arg.Invisible and not arg2 then backgroundTransparency = 1 end rt.Instance.BackgroundTransparency = backgroundTransparency rt.Label.TextTransparency = backgroundTransparency rt.Stroke.Transparency = backgroundTransparency end local function fn40(arg) local v120 = v119.currentViewportSize() local n = math.min(300, math.floor(v120.Y * 0.45)) local v121 = v86[63] local n33 = math.max(v86[63], math.floor((v120.Y - n - v86[143]) / 44) + v121) return UDim2.fromOffset(20 + math.floor(arg / n33) * 140, n + arg % n33 * 44) end local function fn41(arg, arg2) local rt = arg2.Rt if rt ~= nil then return rt end local menu = arg._menu local v120 = v118.newBatch(arg2.Trove) local udim2 = fn40(arg2.Slot) local stateData = menu:GetStateData() if stateData ~= nil and stateData.MobileButtonPositions ~= nil then local v121 = stateData.MobileButtonPositions[arg2.Flag] if v121 ~= nil and #v121 >= 2 then udim2 = UDim2.fromOffset(v121[1], v121[2]) end end local textButton = Instance.new("TextButton") textButton.Position = udim2 textButton.Size = UDim2.fromOffset(0, v86[143]) textButton.AutomaticSize = Enum.AutomaticSize.X textButton.BorderSizePixel = 0 textButton.AutoButtonColor = v86[153] textButton.Text = "" textButton.Active = true textButton.Visible = fn38(arg2) v120:Bind(textButton, "BackgroundColor3", "Background") textButton.Parent = arg._parent arg2.Trove:Add(textButton) local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[175]) uiCorner.Parent = textButton local instance = Instance.new(v86[85]) instance.Thickness = v86[63] instance.BorderOffset = UDim.new(0, -1) instance.ApplyStrokeMode = Enum.ApplyStrokeMode.Border v120:Bind(instance, "Color", "Outline") instance.Parent = textButton local uiPadding = Instance.new("UIPadding") uiPadding.PaddingLeft = UDim.new(0, 14) uiPadding.PaddingRight = UDim.new(0, 14) uiPadding.Parent = textButton local instance2 = Instance.new(v86[135]) instance2.BackgroundTransparency = 1 instance2.Size = UDim2.fromOffset(v86[186], 36) instance2.AutomaticSize = Enum.AutomaticSize.X instance2.Text = arg2.LabelText instance2.FontFace = v115.Medium instance2.TextSize = 14 instance2.BorderSizePixel = 0 v120:Bind(instance2, "TextColor3", "TextColor") instance2.Parent = textButton local rt2 = { Instance = textButton, Label = instance2, Stroke = instance } arg2.Rt = rt2 if arg2.Active then textButton.BackgroundColor3 = v118.get("Accent") end fn39(arg2, arg._isDragMode) arg2.Trove:Add(task.defer(fn36, arg2)) arg2.Trove:Add(task.defer(fn36, arg2)) v116.connectPress(arg2.Trove, textButton, function() if arg._isDragMode then return end if arg2.Mode == "Hold" then arg2.Active = true fn37(menu, arg2) arg2.OnActivate(v86[34]) elseif arg2.Mode == "Toggle" or arg2.Mode == "Tap" then arg2.Active = not arg2.Active fn37(menu, arg2) arg2.OnActivate(arg2.Active) end end, function() if arg._isDragMode then return end if arg2.Mode == "Hold" then arg2.Active = false fn37(menu, arg2) arg2.OnActivate(false) end end) return rt2 end local function fn42(arg, arg2) local v120 = fn38(arg2) if v120 and arg2.Rt == nil then fn41(arg, arg2) end local rt = arg2.Rt if rt ~= nil then rt.Instance.Visible = v120 end end index2.Register = function(arg, arg2, arg3, arg4, arg5) local v120 = arg._buttonByFlag[arg2] if v120 ~= nil then v120.Trove:Destroy() arg._buttonByFlag[arg2] = nil end local tbl18 = { Flag = arg2, Slot = arg._buttonCount, Mode = arg4, Active = false, Visible = true, Invisible = false, LabelText = arg3, Trove = arg._trove:Extend(), OnActivate = arg5, Rt = nil, } arg._buttonByFlag[arg2] = tbl18 arg._buttonCount = arg._buttonCount + 1 tbl18.Trove:Add(task.defer(function() if arg._buttonByFlag[arg2] == tbl18 then fn42(arg, tbl18) end end)) return { SetActive = function(arg6, active) tbl18.Active = active fn37(arg._menu, tbl18) end, SetMode = function(arg6, mode) tbl18.Mode = mode fn42(arg, tbl18) end, SetLabel = function(arg6, labelText) tbl18.LabelText = labelText local rt = tbl18.Rt if rt ~= nil then rt.Label.Text = labelText end end, SetVisible = function(arg6, visible) tbl18.Visible = visible fn42(arg, tbl18) end, SetInvisible = function(arg6, invisible) tbl18.Invisible = invisible fn39(tbl18, arg._isDragMode) end, Destroy = function() if arg._buttonByFlag[arg2] == tbl18 then arg._buttonByFlag[arg2] = nil end tbl18.Trove:Destroy() end, } end index2.EnterDragMode = function(arg, arg2) arg._isDragMode = v86[34] local menu = arg._menu local textButton = Instance.new("TextButton") textButton.AnchorPoint = Vector2.new(v86[101], 0) textButton.Position = UDim2.new(0.5, 0, 0, 40) textButton.Size = UDim2.fromOffset(140, 40) textButton.BackgroundColor3 = v118.get("Accent") textButton.BorderSizePixel = 0 textButton.Text = "Done" textButton.FontFace = v115.Medium textButton.TextSize = 16 textButton.TextColor3 = Color3.fromRGB(255, 255, 255) textButton.AutoButtonColor = false textButton.Parent = arg._parent local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = textButton local v120 = arg._trove:Extend() for _, v121 in arg._buttonByFlag, nil, nil do fn39(v121, v86[34]) local rt = v121.Rt if rt ~= nil then menu:Tween(rt.Stroke, { Thickness = 2 }) end end local v121 = nil local v122 = nil local position = nil local position2 = nil for _, v123 in arg._buttonByFlag, nil, nil do local rt = v123.Rt if rt ~= nil then v120:Connect(rt.Instance.InputBegan, function(arg3) local userInputType = arg3.UserInputType if userInputType ~= Enum.UserInputType.Touch and userInputType ~= Enum.UserInputType.MouseButton1 then return end v121 = v123 v122 = arg3 position = arg3.Position position2 = rt.Instance.Position end) end end v120:Connect(userInputService.InputChanged, function(arg3) local v123 = v121 local v124 = position local v125 = position2 if v123 == nil or v124 == nil or v125 == nil then return end local rt = v123.Rt if rt == nil then return end if not v119.matchesPointerDrag(arg3, v122, Enum.UserInputType.MouseMovement) then return end local n = arg3.Position - v124 rt.Instance.Position = UDim2.fromOffset(v125.X.Offset + n.X, v125.Y.Offset + n.Y) v119.clampGuiToViewport(rt.Instance) end) v120:Connect(userInputService.InputEnded, function(arg3) if v121 == nil then return end if not v119.matchesPointerDrag(arg3, v122, Enum.UserInputType.MouseButton1) then return end v121 = nil v122 = nil position = nil position2 = nil end) v120:Connect(textButton.Activated, function() arg:_ExitDragMode() for _, v123 in arg._buttonByFlag, nil, nil do fn39(v123, false) local rt = v123.Rt if rt ~= nil then menu:Tween(rt.Stroke, { Thickness = 1 }) end end textButton:Destroy() v120:Destroy() arg2() end) end index2._ExitDragMode = function(arg) arg._isDragMode = false local stateData = arg._menu:GetStateData() if stateData == nil then return end local mobileButtonPositions = stateData.MobileButtonPositions or {} for k, v120 in arg._buttonByFlag, nil, nil do local rt = v120.Rt if rt ~= nil then local position = rt.Instance.Position mobileButtonPositions[k] = { position.X.Offset, position.Y.Offset } end end stateData.MobileButtonPositions = mobileButtonPositions arg._menu:SaveState() end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.aj = function() local aj = tbl17.cache.aj if not aj then aj = { c = fn35() } tbl17.cache.aj = aj end return aj.c end end do -- ak local function fn35() tbl17.g() tbl17.k() tbl17.r() local userInputService = tbl17.t().UserInputService local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local obj = setmetatable({ _trove = arg, _layer = arg2, _entries = {}, _blocker = nil, _lastHandledInput = nil, _onBeforeOpen = nil, }, index2) arg:Connect(userInputService.InputBegan, function(arg4, arg5) local userInputType = arg4.UserInputType local blocker = obj._blocker local flag19 = blocker ~= nil and blocker.Parent ~= nil and blocker.Visible == v86[34] if userInputType ~= Enum.UserInputType.MouseButton1 and userInputType ~= Enum.UserInputType.MouseButton2 and userInputType ~= Enum.UserInputType.Touch then return end if arg5 and not flag19 then return end obj:_HandlePointerInput(arg4, flag19 and not arg5) end) arg:Connect(arg3, function(arg4) if not arg4 then for _, v115 in obj._entries, nil, nil do if v115.Open then v115.Open = v86[153] v115.Root.Visible = false end end obj:_UpdateBlocker() end end) return obj end index2._HandlePointerInput = function(arg, lastHandledInput, arg2) if arg._lastHandledInput == lastHandledInput then return end arg._lastHandledInput = lastHandledInput task.defer(function() if arg._lastHandledInput == lastHandledInput then arg._lastHandledInput = nil end end) local position = lastHandledInput.Position local v115, v116 = arg:_FindHit(position, arg2 == v86[34]) if v115 then if v116 then arg:Toggle(v115) return end local tbl18 = {} local v117 = v86[153] for _, v118 in arg._entries, nil, nil do if v118 ~= v115 and arg:_IsDescendantOf(v118, v115) then local v119 = v86[153] for _, v120 in v118.Triggers, nil, nil do if arg:_ContainsPoint(v120, position) then v119 = v86[34] break end end if v119 then v117 = v86[34] elseif v118.Open and v118.CloseOnOutside and not arg:_ContainsPoint(v118.Root, position) then table.insert(tbl18, v118) end end end for _, v118 in tbl18, nil, nil do if v118.Open then arg:_Apply(v118, false) end end if not v117 then arg:BringToFront(v115) end return end arg:CloseAll(nil, v86[153]) end index2._EnsureBlocker = function(arg) if arg._blocker ~= nil then if arg._blocker.Parent ~= nil then return arg._blocker end return nil end local textButton = Instance.new("TextButton") textButton.Name = "\0" textButton.Active = true textButton.Visible = v86[153] textButton.BackgroundTransparency = 1 textButton.Size = UDim2.fromScale(v86[63], 1) textButton.BorderSizePixel = 0 textButton.ZIndex = v86[186] textButton.Text = "" textButton.Parent = arg._layer arg._trove:Connect(textButton.InputBegan, function(arg2) local userInputType = arg2.UserInputType if userInputType ~= Enum.UserInputType.MouseButton1 and userInputType ~= Enum.UserInputType.MouseButton2 and userInputType ~= Enum.UserInputType.Touch then return end arg:_HandlePointerInput(arg2) end) arg._blocker = textButton return textButton end index2._UpdateBlocker = function(arg) local v115 = arg:_EnsureBlocker() if v115 == nil then return end local visible = false for _, v116 in arg._entries, nil, nil do if v116.Open then visible = true break end end v115.Visible = visible end index2.SetBeforeOpen = function(arg, onBeforeOpen) arg._onBeforeOpen = onBeforeOpen end index2.Register = function(arg, arg2, arg3) local triggers = arg3 ~= nil and arg3.Triggers or {} local parentEntry = arg3 ~= nil and arg3.ParentEntry or nil local onToggle = arg3 ~= nil and arg3.OnToggle or nil local flag19 = arg3 ~= nil and arg3.Open == true local flag20 = arg3 == nil or arg3.CloseOnOutside ~= false if parentEntry == nil then local parent if triggers[1] ~= nil then parent = triggers[1].Parent else parent = arg2.Parent end while parent ~= nil do for _, v115 in arg._entries, nil, nil do if v115.Root == parent then parentEntry = v115 break end end if parentEntry == nil then parent = parent.Parent continue end break end end local tbl18 = { Root = arg2, Parent = arg2.Parent, ParentEntry = parentEntry, Triggers = triggers, OnToggle = onToggle, Open = flag19 or arg2.Visible == true, CloseOnOutside = flag20, } table.insert(arg._entries, tbl18) arg:_UpdateBlocker() return tbl18 end index2.Unregister = function(arg, arg2) local v115 = table.find(arg._entries, arg2) if v115 ~= nil then table.remove(arg._entries, v115) end arg:_UpdateBlocker() end index2._ContainsPoint = function(arg, arg2, arg3) if arg2.Visible ~= v86[34] then return v86[153] end local absolutePosition = arg2.AbsolutePosition local absoluteSize = arg2.AbsoluteSize return arg3.X >= absolutePosition.X and arg3.X <= absolutePosition.X + absoluteSize.X and arg3.Y >= absolutePosition.Y and arg3.Y <= absolutePosition.Y + absoluteSize.Y end index2._FindHit = function(arg, arg2, arg3) for i = #arg._entries, 1, -1 do local v115 = arg._entries[i] if v115.Open and arg:_ContainsPoint(v115.Root, arg2) then return v115, false end if v115.Open or arg3 == true then for _, v116 in v115.Triggers, nil, nil do if arg:_ContainsPoint(v116, arg2) then return v115, true end end end end return nil, v86[153] end index2._Apply = function(arg, arg2, open) if not open then for _, v115 in arg._entries, nil, nil do if v115.ParentEntry == arg2 and v115.Open then arg:_Apply(v115, false) end end end if open then local onBeforeOpen = arg._onBeforeOpen if onBeforeOpen ~= nil then onBeforeOpen() end end arg2.Open = open local onToggle = arg2.OnToggle if type(onToggle) == "function" then onToggle(open) arg:_UpdateBlocker() return end arg2.Root.Visible = open arg:_UpdateBlocker() end index2._IsDescendantOf = function(arg, arg2, arg3) local parentEntry = arg2.ParentEntry while parentEntry do if parentEntry == arg3 then return true end parentEntry = parentEntry.ParentEntry end return false end index2._IsRelated = function(arg, arg2, arg3) return arg2 == arg3 or arg:_IsDescendantOf(arg2, arg3) or arg:_IsDescendantOf(arg3, arg2) end index2.BringToFront = function(arg, arg2) local root = arg2.Root local parent = root.Parent or arg2.Parent if parent == nil then return end if root.Parent == parent then local focusedTextBox = userInputService:GetFocusedTextBox() if focusedTextBox ~= nil and focusedTextBox:IsDescendantOf(root) then return end root.Parent = nil end root.Parent = parent arg2.Parent = parent end index2.CloseAll = function(arg, arg2, arg3) for _, v115 in arg._entries, nil, nil do if v115.Open and v115 ~= arg2 and (arg2 == nil or not arg:_IsRelated(v115, arg2)) and (arg3 == true or v115.CloseOnOutside) then arg:_Apply(v115, false) end end end index2.CloseDescendants = function(arg, arg2) for _, v115 in arg._entries, nil, nil do if v115.Open and arg:_IsDescendantOf(v115, arg2) then arg:_Apply(v115, false) end end end index2.SetOpen = function(arg, arg2, arg3) if arg3 then arg:CloseAll(arg2, v86[34]) arg:BringToFront(arg2) end arg:_Apply(arg2, arg3) end index2.Toggle = function(arg, arg2) arg:SetOpen(arg2, not arg2.Open) end return index2 end tbl17.ak = function() local ak = tbl17.cache.ak if not ak then ak = { c = fn35() } tbl17.cache.ak = ak end return ak.c end end do -- al local function fn35() tbl17.k() local v115 = tbl17.F() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.t() local v118 = tbl17.A() local v119 = tbl17.w() local guiService = v117.GuiService local userInputService = v117.UserInputService local runService = v117.RunService local tweenInfo = TweenInfo.new(0.9, Enum.EasingStyle.Quad, Enum.EasingDirection.Out, v86[186], false, 0.4) local index2 = {} index2.__index = index2 local function fn36() return nil end local function fn37(arg) return (arg:lower():gsub("^%s+", ""):gsub("%s+$", ""):gsub("%s+", v86[51])) end local function fn38(arg) if arg == nil then return false end return arg >= 48 and arg <= 57 or arg >= 97 and arg <= 122 end local function fn39(arg, arg2) local pos = arg:find(arg2, v86[63], true) if pos ~= nil then if arg == arg2 then return 0 end local flag19 = not fn38(arg:byte(pos - 1)) local flag20 = not fn38(arg:byte(pos + #arg2 - 1 + 1)) if flag19 and flag20 then return 5 + pos end if flag19 then return 20 + pos end return 40 + pos end local n = #arg2 if n < v86[26] then return nil end local n33 = #arg local n34 = 1 local n35 = 1 local n36 = 0 local n37 = 0 local n38 = 0 while n34 <= n33 and n35 <= n do if arg:byte(n34) == arg2:byte(n35) then if n36 == v86[186] then n36 = n34 end if n37 ~= 0 then n38 += n34 - n37 - 1 end n35 += v86[63] n37 = n34 end n34 += 1 end if n35 <= n then return nil end return 100 + n36 + n38 * 4 + n33 - n end local function fn40(arg) local tbl18 = {} for match in arg:gmatch("%S+") do table.insert(tbl18, match) end return tbl18 end local function fn41(arg, arg2, arg3) local v120 = fn39(arg.Label, arg2) if v120 ~= nil then return v120 end if #arg3 == v86[63] then return nil end local v121 = v86[186] local flag19 = false for _, v122 in arg3, nil, nil do local v123 = fn39(arg.Label, v122) local v124 = fn39(arg.Crumb, v122) if v123 ~= nil and (v124 == nil or v123 <= v124 + 50) then v121 += v123 flag19 = true continue end if v124 ~= nil then v121 += v124 + 50 continue end return nil end if not flag19 then return nil end return 500 + v121 end local function fn42(arg) if arg == v86[186] then return v86[143] end local v120 = v86[56] return arg * 36 + math.max(0, arg - 1) * v120 + 8 end local function fn43(arg, arg2) table.insert(arg, { Hit = arg2, Label = arg2.Label:lower(), Crumb = arg2.Crumb:lower(), Score = 0 }) end local function fn44(arg, parent) if not parent:IsA("GuiObject") then return end local instance = Instance.new(v86[85]) instance.Color = v118.get("Accent") instance.Thickness = 2 instance.Transparency = 0 instance.LineJoinMode = Enum.LineJoinMode.Round if parent.ClassName == "TextButton" then instance.ApplyStrokeMode = Enum.ApplyStrokeMode.Border end instance.Parent = parent arg:Tween(instance, { Transparency = v86[63] }, tweenInfo) task.delay(1.6, function() if instance.Parent ~= nil then instance:Destroy() end end) end local function fn45(arg, parent, arg2) local instance = Instance.new(v86[92]) instance.Visible = false instance.BackgroundTransparency = 1 instance.Position = UDim2.fromOffset(v86[26], 4) instance.Size = UDim2.new(1, -8, 0, v86[143]) instance.BorderSizePixel = 0 instance.Text = "" instance.LayoutOrder = v86[186] instance.AutoButtonColor = false arg2:Bind(instance, "BackgroundColor3", v86[178]) instance.Parent = parent local instance2 = Instance.new(v86[98]) instance2.CornerRadius = UDim.new(0, 4) instance2.Parent = instance local uiPadding = Instance.new("UIPadding") uiPadding.PaddingLeft = UDim.new(0, 8) uiPadding.PaddingRight = UDim.new(v86[186], 8) uiPadding.Parent = instance local textLabel = Instance.new("TextLabel") textLabel.BackgroundTransparency = v86[63] textLabel.Position = UDim2.fromOffset(v86[186], 3) textLabel.Size = UDim2.new(1, v86[186], v86[186], 16) textLabel.TextSize = 13 textLabel.TextXAlignment = Enum.TextXAlignment.Left textLabel.TextTruncate = Enum.TextTruncate.AtEnd textLabel.FontFace = v116.Medium arg2:Bind(textLabel, "TextColor3", v86[174]) textLabel.Parent = instance local textLabel2 = Instance.new("TextLabel") textLabel2.BackgroundTransparency = 1 textLabel2.Position = UDim2.fromOffset(0, 19) textLabel2.Size = UDim2.new(v86[63], v86[186], 0, 13) textLabel2.TextSize = 11 textLabel2.TextXAlignment = Enum.TextXAlignment.Left textLabel2.TextTruncate = Enum.TextTruncate.AtEnd textLabel2.FontFace = arg._menu.Fonts.Main arg2:Bind(textLabel2, "TextColor3", "Unselected") textLabel2.Parent = instance arg._trove:Connect(instance.MouseButton1Click, function() local v120 = arg._scored[instance.LayoutOrder] if v120 ~= nil then arg:_NavigateTo(v120.Hit) end end) arg._trove:Connect(instance.MouseEnter, function() if arg._scored[instance.LayoutOrder] ~= nil then arg._selectedIndex = instance.LayoutOrder arg:_RefreshHighlight() end end) return { Button = instance, Title = textLabel, Crumb = textLabel2 } end local function fn46(arg) local ui = arg._ui if ui == nil then return end local n = #arg._scored local n33 = 1 if v86[186] < n then n33 = math.min(math.floor(math.max(0, ui.ResultList.CanvasPosition.Y - v86[26]) / 38) + 1, n) end for k, v120 in ui.Rows, nil, nil do local layoutOrder = n33 + k - 1 local v121 = arg._scored[layoutOrder] if v121 == nil then v120.Button.Visible = false v120.Button.LayoutOrder = v86[186] v120.Button.BackgroundTransparency = 1 else local hit = v121.Hit if v120.Title.Text ~= hit.Label then v120.Title.Text = hit.Label end if v120.Crumb.Text ~= hit.Crumb then v120.Crumb.Text = hit.Crumb end v120.Button.LayoutOrder = layoutOrder v120.Button.Position = UDim2.fromOffset(4, 4 + (layoutOrder - 1) * v86[107]) v120.Button.BackgroundTransparency = layoutOrder == arg._selectedIndex and 0 or 1 v120.Button.Visible = v86[34] end end end local function fn47(arg) local ui = arg._ui if ui ~= nil then return ui end local menu = arg._menu local v120 = v118.newBatch(arg._trove) local instance = Instance.new(v86[128]) instance.Size = UDim2.fromOffset(260, 0) instance.AutomaticSize = Enum.AutomaticSize.Y instance.AnchorPoint = Vector2.new(1, 0) instance.BackgroundColor3 = Color3.fromRGB(v86[108], v86[108], v86[108]) instance.BorderSizePixel = 0 instance.Visible = false instance.Parent = menu:GetOverlayLayer() arg._trove:Add(instance) local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v120:BindGradient(uiGradient, { "GradientTop", v86[70] }) uiGradient.Parent = instance local instance2 = Instance.new(v86[98]) instance2.CornerRadius = UDim.new(0, 8) instance2.Parent = instance local uiStroke = Instance.new("UIStroke") v120:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = instance v115.addGlow(v120, instance, { Amount = 4, DampingFactor = 0.6 }) local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.Size = UDim2.fromScale(v86[63], 0) scrollingFrame.AutomaticSize = Enum.AutomaticSize.None scrollingFrame.BackgroundTransparency = 1 scrollingFrame.BorderSizePixel = v86[186] scrollingFrame.Active = v86[34] scrollingFrame.ScrollBarThickness = 3 scrollingFrame.ScrollingDirection = Enum.ScrollingDirection.Y scrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.None scrollingFrame.CanvasSize = UDim2.new(0, 0, v86[186], 0) scrollingFrame.Selectable = v86[153] v120:Bind(scrollingFrame, "ScrollBarImageColor3", v86[139]) scrollingFrame.Parent = instance local textLabel = Instance.new("TextLabel") textLabel.BackgroundTransparency = v86[63] textLabel.Position = UDim2.fromOffset(4, 4) textLabel.Size = UDim2.new(1, -8, v86[186], 28) textLabel.Text = "No matches." textLabel.TextSize = 12 textLabel.Visible = v86[153] textLabel.FontFace = menu.Fonts.Main v120:Bind(textLabel, "TextColor3", v86[96]) textLabel.Parent = scrollingFrame local v121 = menu:RegisterOverlay(instance, { CloseOnOutside = true, OnToggle = function(arg2) if not arg2 then arg:Hide() end end, }) local tbl18 = {} for i = v86[63], v86[54] do table.insert(tbl18, fn45(arg, scrollingFrame, v120)) end local ui2 = { Dropdown = instance, ResultList = scrollingFrame, EmptyHint = textLabel, Batch = v120, Rows = tbl18, Entry = v121 } arg._ui = ui2 arg._trove:Connect(scrollingFrame:GetPropertyChangedSignal("CanvasPosition"), function() fn46(arg) end) return ui2 end index2.new = function(arg, arg2) local v120 = arg2:Extend() local obj = setmetatable({ _trove = v120, _menu = arg, _registrations = {}, _index = nil, _scored = {}, _selectedIndex = 1, _activeBar = nil, _visible = false, _ui = nil, }, index2) v120:Connect(userInputService.InputBegan, function(arg3, arg4) if arg3.UserInputType ~= Enum.UserInputType.Keyboard then return end if arg3.KeyCode == Enum.KeyCode.Escape then if obj._visible then obj:Hide() local activeBar = obj._activeBar if activeBar ~= nil then activeBar.Collapse() end end return end if arg3.KeyCode == Enum.KeyCode.F then if (userInputService:IsKeyDown(Enum.KeyCode.LeftControl) or userInputService:IsKeyDown(Enum.KeyCode.RightControl)) and arg.Visible then local activeBar = obj._activeBar if activeBar ~= nil then activeBar.Expand() end end return end if not obj._visible then return end if arg3.KeyCode == Enum.KeyCode.Down then obj:_MoveSelection(v86[63]) elseif arg3.KeyCode == Enum.KeyCode.Up then obj:_MoveSelection(-1) elseif arg3.KeyCode == Enum.KeyCode.Return and not arg4 then local v121 = obj._scored[obj._selectedIndex] if v121 ~= nil then obj:_NavigateTo(v121.Hit) end end end) return obj end index2.Register = function(arg, arg2, arg3, arg4) table.insert(arg._registrations, { Host = arg2, Section = arg3, Collect = arg4 }) arg._index = nil end index2.Invalidate = function(arg) arg._index = nil end index2.SetActiveBar = function(arg, activeBar) arg._activeBar = activeBar end local function fn48(arg) local index3 = arg._index if index3 ~= nil then return index3 end local index4 = {} local tbl18 = {} local tbl19 = {} for _, v120 in arg._registrations, nil, nil do local host = v120.Host local tabLabel = host.TabLabel if not tbl18[tabLabel] then tbl18[tabLabel] = true fn43(index4, { Kind = "navigation", Label = tabLabel, Crumb = "Menu", Open = host.OpenTab, Reveal = nil, GetFrame = fn36, }) end local pageLabel = host.PageLabel local str7 if pageLabel == nil then str7 = tabLabel else local str8 = tabLabel .. "\0" .. pageLabel if not tbl19[str8] then tbl19[str8] = true fn43(index4, { Kind = "navigation", Label = pageLabel, Crumb = tabLabel, Open = host.Open, Reveal = nil, GetFrame = fn36, }) end str7 = ("%s › %s"):format(tabLabel, pageLabel) end local title = v120.Section.Title local tbl20 = {} local open = host.Open v120.Collect(("%s › %s"):format(str7, title), open, tbl20) local v121 = tbl20[1] local reveal = nil local getFrame = fn36 if v121 ~= nil then reveal = v121.Reveal getFrame = v121.GetFrame end if title ~= "" then fn43(index4, { Kind = "navigation", Label = title, Crumb = str7, Open = host.Open, Reveal = reveal, GetFrame = getFrame, }) end for _, v122 in tbl20, nil, nil do fn43(index4, v122) end end arg._index = index4 return index4 end index2.Search = function(arg, arg2) local scored = arg._scored table.clear(scored) arg._selectedIndex = 1 local v120 = fn37(arg2) if v120 == "" then local ui = arg._ui if ui ~= nil then ui.EmptyHint.Visible = false ui.ResultList.CanvasPosition = Vector2.zero ui.ResultList.CanvasSize = UDim2.new(0, 0, 0, 0) fn46(arg) end return 0 end local v121 = fn40(v120) for _, v122 in fn48(arg) do local v123 = fn41(v122, v120, v121) if v123 ~= nil then v122.Score = v123 table.insert(scored, v122) end end table.sort(scored, function(arg3, arg4) if arg3.Score ~= arg4.Score then return arg3.Score < arg4.Score end if arg3.Hit.Kind ~= arg4.Hit.Kind then return arg3.Hit.Kind == "navigation" end if arg3.Label ~= arg4.Label then return arg3.Label < arg4.Label end return arg3.Crumb < arg4.Crumb end) local v122 = fn47(arg) local n = #scored v122.EmptyHint.Visible = n == 0 local n33 = math.min(math.max(n, 1), 5) local n34 if n == 0 then n34 = 36 else n34 = n33 * 36 + (n33 - 1) * 2 + 8 end v122.ResultList.Size = UDim2.new(1, 0, 0, n34) v122.ResultList.CanvasSize = UDim2.fromOffset(v86[186], fn42(n)) v122.ResultList.CanvasPosition = Vector2.zero arg:_RefreshHighlight() return n end index2.ShowAt = function(arg, arg2) local v120 = fn47(arg) local n = arg2.AbsolutePosition + guiService:GetGuiInset() local absoluteSize = arg2.AbsoluteSize local n33 = math.floor(absoluteSize.X) local n34 = math.floor(n.X + absoluteSize.X) local n35 = math.floor(n.Y + absoluteSize.Y + 4) local currentCamera = workspace.CurrentCamera local n36, n37, n38 if currentCamera == nil then n36 = n34 n37 = n33 n38 = n35 else local viewportSize = currentCamera.ViewportSize n37 = math.min(n33, math.floor(viewportSize.X)) n36 = math.clamp(n34, n37, viewportSize.X) n38 = math.clamp(n35, 0, math.max(0, viewportSize.Y - v120.ResultList.Size.Y.Offset)) end v120.Dropdown.Size = UDim2.fromOffset(n37, 0) if not arg._visible then local n39 = math.max(0, n38 - 8) v120.Dropdown.Position = UDim2.fromOffset(n36, n39) v120.Dropdown.Visible = v86[34] arg._menu:Tween(v120.Dropdown, { Position = UDim2.fromOffset(n36, n38) }) else v120.Dropdown.Position = UDim2.fromOffset(n36, n38) end arg._visible = true arg._menu:SetOverlayOpen(v120.Entry, v86[34]) end index2.Hide = function(arg) local ui = arg._ui if ui == nil then return end ui.Dropdown.Visible = false arg._visible = false if ui.Entry.Open then arg._menu:SetOverlayOpen(ui.Entry, false) end end index2._RefreshHighlight = function(arg) local ui = arg._ui if ui == nil then return end local n = #arg._scored if n == 0 then fn46(arg) return end local y = ui.ResultList.AbsoluteWindowSize.Y if y <= 0 then y = ui.ResultList.Size.Y.Offset end local n33 = 4 + (arg._selectedIndex - v86[63]) * 38 local n34 = n33 + 36 local y2 = ui.ResultList.CanvasPosition.Y if not (n33 < y2) then if not (y2 + y < n34) then n33 = y2 else n33 = n34 - y end end local n35 = math.max(0, fn42(n) - y) local n36 = math.clamp(n33, 0, n35) if n36 ~= ui.ResultList.CanvasPosition.Y then ui.ResultList.CanvasPosition = Vector2.new(0, n36) end fn46(arg) end index2._MoveSelection = function(arg, arg2) local selectedIndex = #arg._scored if selectedIndex == 0 then return end local n = arg._selectedIndex + arg2 if not (n < 1) then if not (selectedIndex < n) then selectedIndex = n else selectedIndex = 1 end end arg._selectedIndex = selectedIndex arg:_RefreshHighlight() end index2._NavigateTo = function(arg, arg2) arg:Hide() local activeBar = arg._activeBar if activeBar ~= nil then activeBar.Collapse() end arg2.Open() local reveal = arg2.Reveal if reveal ~= nil then reveal() end task.spawn(function() runService.Heartbeat:Wait() local v120 = arg2.GetFrame() if v120 == nil or v120.Parent == nil then return end local v121 = v119.findScrollingAncestor(v120) if v121 ~= nil then local n = math.max(0, v120.AbsolutePosition.Y - v121.AbsolutePosition.Y + v121.CanvasPosition.Y - 80) arg._menu:Tween(v121, { CanvasPosition = Vector2.new(0, n) }) end fn44(arg._menu, v120) end) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.al = function() local al = tbl17.cache.al if not al then al = { c = fn35() } tbl17.cache.al = al end return al.c end end do -- am local function fn35() tbl17.k() local v115 = tbl17.v() tbl17.A() local tbl18 = {} local tbl19 = {} setmetatable(tbl19, { __mode = "k" }) local function fn36(arg, arg2) if arg2 == "X" then return arg.AbsoluteCanvasSize.X, arg.AbsoluteWindowSize.X, arg.CanvasPosition.X end return arg.AbsoluteCanvasSize.Y, arg.AbsoluteWindowSize.Y, arg.CanvasPosition.Y end local function fn37(arg, parent, arg2, arg3, arg4, arg5) local instance = Instance.new(v86[128]) instance.BackgroundTransparency = 0 instance.BorderSizePixel = v86[186] instance.ZIndex = arg2.ZIndex + v86[63] instance.Active = false instance.Visible = false arg:Bind(instance, "BackgroundColor3", "GradientDark") local rotation if arg3 == "X" then local n if arg4 then instance.Position = arg2.Position n = 0 else instance.Position = UDim2.new(arg2.Position.X.Scale + arg2.Size.X.Scale, arg2.Position.X.Offset + arg2.Size.X.Offset, arg2.Position.Y.Scale, arg2.Position.Y.Offset) n = 1 end instance.AnchorPoint = Vector2.new(n, v86[186]) instance.Size = UDim2.new(0, arg5, arg2.Size.Y.Scale, arg2.Size.Y.Offset) rotation = 0 else local v116 = v86[63] if arg4 then v116 = v86[186] instance.Position = arg2.Position else instance.Position = UDim2.new(arg2.Position.X.Scale, arg2.Position.X.Offset, arg2.Position.Y.Scale + arg2.Size.Y.Scale, arg2.Position.Y.Offset + arg2.Size.Y.Offset) end instance.AnchorPoint = Vector2.new(v86[186], v116) instance.Size = UDim2.new(arg2.Size.X.Scale, arg2.Size.X.Offset, v86[186], arg5) rotation = 90 end instance.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = rotation if arg4 then local new = NumberSequenceKeypoint.new local v116 = v86[63] uiGradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.25), new(1, v116) }) else local new = NumberSequenceKeypoint.new uiGradient.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, v86[63]), new(1, 0.25) }) end uiGradient.Parent = instance return instance end tbl18.attachOverflowCues = function(arg, arg2, arg3, arg4, arg5) local navigation = v115.get().Navigation local v116 = fn37(arg2, arg4, arg3, arg5, true, navigation.CueDepth) local v117 = fn37(arg2, arg4, arg3, arg5, false, navigation.CueDepth) local function fn38() local v118, v119, v120 = fn36(arg3, arg5) local n = math.max(0, v118 - v119) local visibilityEpsilon = navigation.VisibilityEpsilon local flag19 = n > visibilityEpsilon v116.Visible = flag19 and v120 > visibilityEpsilon v117.Visible = flag19 and v120 < n - visibilityEpsilon end arg:Connect(arg3:GetPropertyChangedSignal("AbsoluteCanvasSize"), fn38) arg:Connect(arg3:GetPropertyChangedSignal("AbsoluteWindowSize"), fn38) arg:Connect(arg3:GetPropertyChangedSignal("CanvasPosition"), fn38) task.defer(function() if arg3.Parent ~= nil then fn38() end end) end local function fn38(arg, arg2, arg3) if arg.Parent == nil or arg2.Parent == nil then return end local v116, v117, n = fn36(arg, arg3) if v117 <= 0 then return end local x, x2, x3 if arg3 == "X" then x = arg2.AbsolutePosition.X x2 = arg2.AbsoluteSize.X x3 = arg.AbsolutePosition.X else x = arg2.AbsolutePosition.Y x2 = arg2.AbsoluteSize.Y x3 = arg.AbsolutePosition.Y end local revealPadding = v115.get().Navigation.RevealPadding local n33 = x - x3 + n - revealPadding local n34 = n33 + x2 + revealPadding * 2 if n33 < n then n = n33 elseif n34 > n + v117 then n = n34 - v117 end local n35 = math.clamp(n, v86[186], math.max(0, v116 - v117)) if arg3 == "X" then arg.CanvasPosition = Vector2.new(n35, arg.CanvasPosition.Y) else arg.CanvasPosition = Vector2.new(arg.CanvasPosition.X, n35) end end tbl18.scrollIntoView = function(arg, arg2, arg3) local n = (tbl19[arg] or 0) + 1 tbl19[arg] = n fn38(arg, arg2, arg3) task.defer(function() if tbl19[arg] == n then fn38(arg, arg2, arg3) end end) end return tbl18 end tbl17.am = function() local am = tbl17.cache.am if not am then local am2 = { c = fn35() } tbl17.cache.am = am2 am = am2 end return am.c end end do -- an local function fn35() local v115 = tbl17.g() tbl17.k() local v116 = tbl17.ab() tbl17.r() local v117 = tbl17.af() local v118 = tbl17.v() local v119 = tbl17.am() local v120 = tbl17.A() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local v121 = arg4:Extend() local v122 = v120.newBatch(v121) local page = v118.get().Page local subtabs = arg2._subtabs assert(subtabs ~= nil, "Page.new requires the tab's page header") local textButton = Instance.new("TextButton") textButton.BackgroundTransparency = 1 textButton.Size = UDim2.fromOffset(page.TabMinWidth, page.TabHeight) textButton.BorderSizePixel = 0 textButton.AutomaticSize = Enum.AutomaticSize.X textButton.Text = "" textButton.AutoButtonColor = false v122:Bind(textButton, "BackgroundColor3", "TabButtonSelected") textButton.Parent = subtabs local instance = Instance.new(v86[98]) instance.CornerRadius = UDim.new(v86[186], 6) instance.Parent = textButton local flag19 = arg5.Icon ~= nil and arg5.Icon ~= "" local imageLabel = nil if flag19 then imageLabel = Instance.new("ImageLabel") imageLabel.ImageColor3 = v120.get(v86[96]) imageLabel.AnchorPoint = Vector2.new(0.5, 0.5) imageLabel.Image = arg5.Icon imageLabel.BackgroundTransparency = 1 imageLabel.Position = UDim2.fromScale(0.5, 0.5) imageLabel.Size = UDim2.fromOffset(page.TabIconSize, page.TabIconSize) imageLabel.BorderSizePixel = 0 imageLabel.Parent = textButton end local frame = Instance.new("Frame") frame.BackgroundTransparency = v86[63] frame.Size = UDim2.new(0, 0, 0, 0) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.XY frame.Parent = textButton local instance2 = Instance.new(v86[135]) instance2.TextTransparency = 0 instance2.Text = arg5.Label instance2.AnchorPoint = Vector2.new(0, 0.5) instance2.BorderSizePixel = 0 instance2.BackgroundTransparency = 1 instance2.Position = UDim2.fromScale(0, 0.5) instance2.AutomaticSize = Enum.AutomaticSize.XY instance2.TextSize = page.TabTextSize instance2.FontFace = arg.Fonts.Main v122:Bind(instance2, "TextColor3", v86[174]) instance2.Parent = frame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(v86[186], 4) uiPadding.PaddingTop = UDim.new(0, 4) uiPadding.Parent = instance2 local uiListLayout = Instance.new("UIListLayout") uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.Padding = UDim.new(0, v86[26]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame local instance3 = Instance.new(v86[4]) instance3.VerticalAlignment = Enum.VerticalAlignment.Center if imageLabel == nil then instance3.HorizontalAlignment = Enum.HorizontalAlignment.Center end instance3.FillDirection = Enum.FillDirection.Horizontal instance3.Padding = UDim.new(0, page.TabGap) instance3.SortOrder = Enum.SortOrder.LayoutOrder instance3.Parent = textButton local tabPaddingLeft = page.TabPaddingLeft local tabPaddingRight = page.TabPaddingRight if imageLabel == nil then local n = (page.TabIconSize + page.TabGap) / 2 tabPaddingLeft = math.round(tabPaddingLeft + n) tabPaddingRight = math.round(tabPaddingRight + n) end local instance4 = Instance.new(v86[113]) instance4.PaddingRight = UDim.new(0, tabPaddingRight) instance4.PaddingLeft = UDim.new(0, tabPaddingLeft) instance4.Parent = textButton local instance5 = Instance.new(v86[47]) instance5.Visible = false instance5.BackgroundTransparency = 1 instance5.GroupTransparency = 0 local n = page.HeaderHeight + page.TabsHeight instance5.Position = UDim2.fromOffset(page.HorizontalInset, n) instance5.Size = UDim2.new(1, -page.HorizontalInset * 2, v86[63], -n - page.BottomInset) instance5.BorderSizePixel = v86[186] instance5.Parent = arg2._page local instance6 = Instance.new(v86[4]) instance6.SortOrder = Enum.SortOrder.LayoutOrder instance6.HorizontalFlex = Enum.UIFlexAlignment.Fill instance6.Padding = UDim.new(v86[186], v118.get().Section.Gap) instance6.Parent = instance5 local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = 1 frame2.BorderSizePixel = 0 frame2.LayoutOrder = 1 frame2.Size = UDim2.fromScale(1, 1) frame2.Parent = instance5 local uiFlexItem = Instance.new("UIFlexItem") uiFlexItem.FlexMode = Enum.UIFlexMode.Fill uiFlexItem.Parent = frame2 local obj = setmetatable({ _trove = v121, _menu = arg, _tab = arg2, _openTab = arg3, _batch = v122, Label = arg5.Label, _button = textButton, _icon = imageLabel, _page = instance5, _body = frame2, _header = nil, _fadeState = { Tweening = v86[153] }, _grid = nil, Opened = v121:Add(v115.new()), _openedOnce = false, _pendingOpen = v86[153], _selected = false, }, index2) v121:Connect(textButton.MouseButton1Click, function() obj:Open() end) v122:BindStateful("Accent", function(imageColor3) local icon = obj._icon if icon ~= nil and obj._selected then icon.ImageColor3 = imageColor3 end end) v122:BindStateful("Unselected", function(imageColor3) local icon = obj._icon if icon ~= nil and not obj._selected then icon.ImageColor3 = imageColor3 end end) if arg2.ActivePage == nil then obj:Open() end return obj end index2._SetSelected = function(arg, selected) arg._selected = selected local str7 = "Unselected" local n = 1 if selected then str7 = "Accent" n = 0 end arg._menu:Tween(arg._button, { BackgroundTransparency = n }) local icon = arg._icon if icon ~= nil then arg._menu:Tween(icon, { ImageColor3 = v120.get(str7) }) end end index2.Open = function(activePage) local activePage2 = activePage._tab.ActivePage if activePage2 == activePage then return end activePage._menu:CloseOverlays(nil, v86[34]) if activePage2 ~= nil then activePage2:_SetSelected(false) activePage._menu:FadeCanvasGroup(activePage2._page, false, activePage2._fadeState) if activePage2._pendingOpen then activePage2._pendingOpen = v86[153] else activePage2.Opened:Fire(false) end end activePage:_SetSelected(true) activePage._menu:FadeCanvasGroup(activePage._page, true, activePage._fadeState) local subtabs = activePage._tab._subtabs if subtabs ~= nil then v119.scrollIntoView(subtabs, activePage._button, v86[124]) end activePage._tab.ActivePage = activePage if activePage._tab._openedOnce then activePage._openedOnce = true activePage:_MaybeRealize() activePage.Opened:Fire(true) else activePage._pendingOpen = v86[34] end end index2._FlushPendingOpen = function(arg) if not arg._pendingOpen then return end arg._pendingOpen = false arg._openedOnce = v86[34] arg:_MaybeRealize() arg.Opened:Fire(true) end index2._MaybeRealize = function(arg) if arg._tab.ActivePage ~= arg then return end if not arg._tab._openedOnce then return end local header = arg._header if header ~= nil then header:Realize() end local grid = arg._grid if grid ~= nil then grid:Realize() end end index2.Grid = function(arg, arg2) local grid = arg._grid if grid ~= nil then return grid end local openTab = arg._openTab local v121 = v117.new(arg._menu, arg._body, arg._trove, arg._batch, arg2, { TabLabel = arg._tab.Label, PageLabel = arg.Label, OpenTab = openTab, Open = function() openTab() arg:Open() end, }) arg._grid = v121 arg:_MaybeRealize() return v121 end index2.Header = function(arg, arg2) local header = arg._header if header ~= nil then return header end local frame = Instance.new("Frame") frame.AutomaticSize = Enum.AutomaticSize.Y frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.LayoutOrder = v86[186] frame.Size = UDim2.fromScale(v86[63], 0) frame.Parent = arg._page local instance = Instance.new(v86[113]) instance.PaddingTop = UDim.new(0, 1) instance.PaddingBottom = UDim.new(0, 1) instance.PaddingLeft = UDim.new(0, 1) instance.PaddingRight = UDim.new(v86[186], 1) instance.Parent = frame local openTab = arg._openTab local v121 = v116.BuildSection(arg._menu, arg._trove, arg2 or {}, function() return frame end) arg._header = v121 arg._menu:RegisterSearchSection({ TabLabel = arg._tab.Label, PageLabel = arg.Label, OpenTab = openTab, Open = function() openTab() arg:Open() end, }, v121, function(arg3, arg4, arg5) v121:CollectSearchHits(arg3, arg4, arg5) end) arg:_MaybeRealize() return v121 end index2.OnFirstOpen = function(arg, arg2) local function fn36() local thread = coroutine.create(arg2) arg._trove:Add(thread) task.spawn(thread) end if arg._openedOnce then fn36() return end local connection = nil connection = arg._trove:Connect(arg.Opened, function(arg3) if arg3 ~= v86[34] then return end connection:Disconnect() fn36() end) end index2.Destroy = function(arg) arg._button:Destroy() arg._page:Destroy() arg._trove:Destroy() end return index2 end tbl17.an = function() local an = tbl17.cache.an if not an then local an2 = { c = fn35() } tbl17.cache.an = an2 an = an2 end return an.c end end do -- ao local function fn35() tbl17.k() local v115 = tbl17.F() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() local v118 = tbl17.am() local v119 = tbl17.A() local tbl18 = {} local tweenInfo = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local function fn36(arg, arg2, parent, arg3) local v120 = v117.get() local page = v120.Page local n = 10 if v120.IsCompact then n = 6 end local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(1, v86[101]) frame.Position = UDim2.new(1, -page.SearchRightInset, 0.5, 0) frame.Size = UDim2.fromOffset(page.SearchCollapsedWidth, page.SearchHeight) frame.BackgroundColor3 = Color3.fromRGB(v86[108], v86[108], 255) frame.BorderSizePixel = v86[186] frame.ClipsDescendants = true frame.Parent = parent local instance = Instance.new(v86[46]) instance.Rotation = 90 arg2:BindGradient(instance, { "GradientTop", "GradientMid" }) instance.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], 8) uiCorner.Parent = frame local uiStroke = Instance.new("UIStroke") uiStroke.Color = v119.get("TabHighlight") uiStroke.Transparency = v86[186] uiStroke.Parent = frame local imageLabel = Instance.new("ImageLabel") imageLabel.AnchorPoint = Vector2.new(0, 0.5) imageLabel.Position = UDim2.new(0, n, 0.5, 0) imageLabel.Size = UDim2.fromOffset(16, v86[13]) imageLabel.BackgroundTransparency = 1 imageLabel.BorderSizePixel = 0 imageLabel.Image = "rbxassetid://72296609649861" imageLabel.ImageColor3 = v119.get("Unselected") imageLabel.Parent = frame local textLabel = Instance.new("TextLabel") textLabel.AnchorPoint = Vector2.new(0, 0.5) textLabel.Position = UDim2.new(v86[186], 30, 0.5, 0) textLabel.Size = UDim2.new(v86[63], -40, 1, 0) textLabel.BackgroundTransparency = v86[63] textLabel.Text = "Ctrl+F" textLabel.TextSize = 12 textLabel.TextXAlignment = Enum.TextXAlignment.Left textLabel.FontFace = v116.SemiBold arg2:Bind(textLabel, "TextColor3", "Unselected") textLabel.Visible = not v120.IsCompact textLabel.Parent = frame local textBox = Instance.new("TextBox") textBox.AnchorPoint = Vector2.new(0, v86[101]) textBox.Position = UDim2.new(0, 32, 0.5, 0) textBox.Size = UDim2.new(1, -72, 1, -v86[162]) textBox.BackgroundTransparency = 1 textBox.BorderSizePixel = v86[186] textBox.Text = "" textBox.PlaceholderText = "Search..." textBox.PlaceholderColor3 = v119.get("Unselected") textBox.TextSize = v86[72] textBox.TextXAlignment = Enum.TextXAlignment.Left textBox.ClearTextOnFocus = v86[153] textBox.FontFace = v116.SemiBold textBox.Visible = false arg2:Bind(textBox, "TextColor3", "TextColor") textBox.Parent = frame local textLabel2 = Instance.new("TextLabel") textLabel2.AnchorPoint = Vector2.new(v86[63], v86[101]) textLabel2.Position = UDim2.new(1, -v86[143], 0.5, v86[186]) textLabel2.Size = UDim2.fromOffset(24, v86[32]) textLabel2.BackgroundTransparency = v86[105] textLabel2.BorderSizePixel = 0 textLabel2.Text = v86[18] textLabel2.TextSize = v86[181] textLabel2.FontFace = v116.Bold textLabel2.Visible = v86[153] arg2:Bind(textLabel2, "BackgroundColor3", "Accent") arg2:Bind(textLabel2, v86[167], "Accent") textLabel2.Parent = frame local instance2 = Instance.new(v86[98]) instance2.CornerRadius = UDim.new(0, 4) instance2.Parent = textLabel2 local imageButton = Instance.new("ImageButton") imageButton.AnchorPoint = Vector2.new(1, 0.5) imageButton.Position = UDim2.new(1, -v86[162], 0.5, 0) imageButton.Size = UDim2.fromOffset(16, 16) imageButton.BackgroundTransparency = 1 imageButton.BorderSizePixel = 0 imageButton.Image = "rbxassetid://116396312853810" imageButton.ImageColor3 = v119.get("Unselected") imageButton.Visible = false imageButton.AutoButtonColor = false imageButton.Parent = frame local flag19 = false local function fn37() if flag19 then return end flag19 = v86[34] textLabel.Visible = false textBox.Visible = true textBox:CaptureFocus() arg:Tween(frame, { Size = UDim2.fromOffset(page.SearchExpandedWidth, page.SearchHeight) }, tweenInfo) arg:Tween(uiStroke, { Color = v119.get(v86[139]), Transparency = v86[186] }, tweenInfo) arg:Tween(imageLabel, { ImageColor3 = v119.get(v86[139]) }, tweenInfo) end local function fn38() if not flag19 then return end flag19 = false textBox:ReleaseFocus() textBox.Text = "" textBox.Visible = false textLabel.Visible = not v120.IsCompact imageButton.Visible = false textLabel2.Visible = false arg:Tween(frame, { Size = UDim2.fromOffset(page.SearchCollapsedWidth, page.SearchHeight) }, tweenInfo) arg:Tween(uiStroke, { Color = v119.get("TabHighlight"), Transparency = v86[186] }, tweenInfo) arg:Tween(imageLabel, { ImageColor3 = v119.get(v86[96]) }, tweenInfo) arg:HideSearchResults() end local instance3 = Instance.new(v86[92]) instance3.Size = UDim2.fromScale(1, v86[63]) instance3.BackgroundTransparency = 1 instance3.Text = "" instance3.ZIndex = v86[186] instance3.AutoButtonColor = v86[153] instance3.Parent = frame arg3:Connect(instance3.MouseButton1Click, fn37) arg3:Connect(textBox:GetPropertyChangedSignal("Text"), function() local text = textBox.Text local visible = text ~= "" imageButton.Visible = visible local v121 = arg:SearchQuery(text) textLabel2.Text = tostring(v121) textLabel2.Visible = visible and v121 > v86[186] if visible then arg:ShowSearchResults(frame) else arg:HideSearchResults() end end) arg3:Connect(textBox.FocusLost, function() if textBox.Text == "" then fn38() end end) arg3:Connect(imageButton.MouseButton1Click, function() textBox.Text = "" textBox:CaptureFocus() end) return { Expand = fn37, Collapse = fn38 } end tbl18.create = function(arg, arg2, parent, arg3, text, text2) local page = v117.get().Page local horizontalInset = page.HorizontalInset local headerHeight = page.HeaderHeight local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.Size = UDim2.fromScale(1, 1) frame.BorderSizePixel = 0 frame.Parent = parent local textLabel = nil local frame2 = nil local textLabel2 = nil local v120 = nil if page.HasTitleBlock then frame2 = Instance.new("Frame") frame2.BackgroundColor3 = Color3.fromRGB(255, 255, 255) frame2.Size = UDim2.new(1, 0, v86[186], headerHeight) frame2.BorderSizePixel = 0 frame2.Parent = frame local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = v86[45] v115.bindSurfaceGradient(arg2, uiGradient, { v86[134], "GradientMid", "GradientDark" }) uiGradient.Parent = frame2 local frame3 = Instance.new("Frame") frame3.Position = UDim2.new(0, 1, 1, -1) frame3.Size = UDim2.new(1, -1, 0, 1) frame3.BorderSizePixel = 0 arg2:Bind(frame3, "BackgroundColor3", "Outline") frame3.Parent = frame2 local frame4 = Instance.new("Frame") frame4.BackgroundTransparency = v86[63] frame4.Position = UDim2.fromOffset(horizontalInset, v86[186]) frame4.Size = UDim2.new(v86[63], -horizontalInset, 0, headerHeight) frame4.BorderSizePixel = 0 frame4.Parent = frame2 local instance = Instance.new(v86[128]) instance.BackgroundTransparency = 1 instance.AnchorPoint = Vector2.new(0, 0.5) instance.Position = UDim2.fromScale(v86[186], 0.5) instance.BorderSizePixel = 0 instance.AutomaticSize = Enum.AutomaticSize.XY instance.Parent = frame4 local uiListLayout = Instance.new("UIListLayout") uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.Padding = UDim.new(0, 2) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = instance textLabel = Instance.new("TextLabel") textLabel.TextSize = page.TitleTextSize textLabel.FontFace = v116.Bold textLabel.Text = text textLabel.BackgroundTransparency = 1 textLabel.BorderSizePixel = 0 textLabel.AutomaticSize = Enum.AutomaticSize.XY arg2:Bind(textLabel, v86[167], "TextColor") textLabel.Parent = instance textLabel2 = Instance.new("TextLabel") textLabel2.TextSize = page.DescriptionTextSize textLabel2.FontFace = v116.SemiBold textLabel2.Text = text2 textLabel2.BackgroundTransparency = 1 textLabel2.BorderSizePixel = 0 textLabel2.AutomaticSize = Enum.AutomaticSize.XY arg2:Bind(textLabel2, "TextColor3", "Unselected") textLabel2.Parent = instance v120 = fn36(arg, arg2, frame4, arg3) end local instance = Instance.new(v86[128]) instance.Position = UDim2.fromOffset(0, headerHeight) instance.Size = UDim2.new(v86[63], v86[186], 1, -headerHeight) instance.BorderSizePixel = 0 instance.ZIndex = 0 arg2:Bind(instance, "BackgroundColor3", "GradientDark") instance.Parent = frame local scrollingFrame = Instance.new("ScrollingFrame") scrollingFrame.BackgroundTransparency = 1 scrollingFrame.Position = UDim2.fromOffset(horizontalInset, headerHeight) scrollingFrame.Size = UDim2.new(1, -horizontalInset * 2, 0, page.TabsHeight) scrollingFrame.BorderSizePixel = v86[186] scrollingFrame.AutomaticCanvasSize = Enum.AutomaticSize.X scrollingFrame.CanvasSize = UDim2.new(v86[186], 0, v86[186], v86[186]) scrollingFrame.ScrollBarImageTransparency = 1 scrollingFrame.ScrollBarThickness = 0 scrollingFrame.ScrollingDirection = Enum.ScrollingDirection.X scrollingFrame.ElasticBehavior = Enum.ElasticBehavior.Never arg2:Bind(scrollingFrame, "ScrollBarImageColor3", "Accent") scrollingFrame.Parent = frame if not page.HasTitleBlock then scrollingFrame.Size = UDim2.new(v86[63], -horizontalInset - page.SearchCollapsedWidth + page.SearchRightInset + page.TabGap, v86[186], page.TabsHeight) local instance2 = Instance.new(v86[128]) instance2.BackgroundTransparency = 1 instance2.Size = UDim2.new(1, 0, 0, page.TabsHeight) instance2.BorderSizePixel = 0 instance2.ZIndex = scrollingFrame.ZIndex + 2 instance2.Parent = frame v120 = fn36(arg, arg2, instance2, arg3) end local uiListLayout = Instance.new("UIListLayout") uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.Padding = UDim.new(0, 4) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = scrollingFrame v118.attachOverflowCues(arg3, arg2, scrollingFrame, frame, "X") return { Holder = frame, Top = frame2, Subtabs = scrollingFrame, TitleLabel = textLabel, DescriptionLabel = textLabel2, SearchBar = assert(v120), } end return tbl18 end tbl17.ao = function() local ao = tbl17.cache.ao if not ao then ao = { c = fn35() } tbl17.cache.ao = ao end return ao.c end end do -- ap local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.s() local v117 = tbl17.v() local v118 = tbl17.A() local index2 = {} index2.__index = index2 index2.new = function(arg, parent, arg2, arg3, arg4) local rail = v117.get().Rail local instance = Instance.new(v86[92]) instance.BackgroundTransparency = 1 instance.Size = UDim2.fromOffset(rail.TabSize, rail.TabSize) instance.BorderSizePixel = 0 instance.Text = "" instance.TextTransparency = v86[63] if not rail.ShowLabels then instance.Text = arg4.Label end instance.AutoButtonColor = false arg3:Bind(instance, v86[5], "TabButtonSelected") instance.Parent = parent local imageLabel = Instance.new("ImageLabel") imageLabel.AnchorPoint = Vector2.new(v86[101], 0.5) imageLabel.Image = arg4.Icon imageLabel.BackgroundTransparency = 1 imageLabel.Position = UDim2.fromScale(v86[101], 0.5) imageLabel.Size = UDim2.fromOffset(rail.TabIconSize, rail.TabIconSize) if rail.ShowLabels then imageLabel.AnchorPoint = Vector2.new(0.5, v86[186]) imageLabel.Position = UDim2.new(0.5, 0, 0, 10) end imageLabel.BorderSizePixel = 0 imageLabel.ImageColor3 = v118.get("Unselected") imageLabel.Parent = instance local textLabel = Instance.new("TextLabel") textLabel.AnchorPoint = Vector2.new(0.5, 1) textLabel.Position = UDim2.new(0.5, v86[186], 1, -6) textLabel.Size = UDim2.new(1, -4, 0, 14) textLabel.Visible = rail.ShowLabels textLabel.BackgroundTransparency = 1 textLabel.BorderSizePixel = 0 textLabel.Text = arg4.Label textLabel.TextColor3 = v118.get("Unselected") textLabel.TextSize = 10 textLabel.FontFace = v116.Bold textLabel.TextTruncate = Enum.TextTruncate.AtEnd textLabel.TextXAlignment = Enum.TextXAlignment.Center textLabel.Parent = instance local obj = setmetatable({ _trove = arg2, _menu = arg, _selected = false, Button = instance, Clicked = arg2:Add(v115.new()), _icon = imageLabel, _label = textLabel, }, index2) arg2:Connect(instance.MouseButton1Click, function() obj.Clicked:Fire() end) if not rail.ShowLabels then arg:AttachTooltip(arg2, instance, function() return arg4.Label end) end arg3:BindStateful("Accent", function(imageColor3) if obj._selected then obj._icon.ImageColor3 = imageColor3 obj._label.TextColor3 = imageColor3 end end) arg3:BindStateful("Unselected", function(imageColor3) if not obj._selected then obj._icon.ImageColor3 = imageColor3 obj._label.TextColor3 = imageColor3 end end) return obj end index2.SetSelected = function(arg, selected) if arg._selected == selected then return end arg._selected = selected local str7 = "Unselected" if selected then str7 = "Accent" end local v119 = v118.get(str7) arg._menu:Tween(arg._icon, { ImageColor3 = v119 }) arg._menu:Tween(arg._label, { TextColor3 = v119 }) end return index2 end tbl17.ap = function() local ap = tbl17.cache.ap if not ap then ap = { c = fn35() } tbl17.cache.ap = ap end return ap.c end end do -- aq local function fn35() tbl17.k() local v115 = tbl17.F() tbl17.r() local v116 = tbl17.v() local v117 = tbl17.am() local v118 = tbl17.ap() tbl17.A() local index2 = {} index2.__index = index2 index2.new = function(arg, parent, arg2, arg3, image) local rail = v116.get().Rail local frame = Instance.new("Frame") frame.BackgroundTransparency = v86[63] frame.Size = UDim2.new(0, rail.Width, 1, 0) frame.BorderSizePixel = 0 arg3:Bind(frame, "BackgroundColor3", v86[168]) frame.Parent = parent local instance = Instance.new(v86[128]) instance.BackgroundTransparency = 0 instance.ZIndex = -1 instance.Size = UDim2.fromScale(1, v86[63]) instance.BorderSizePixel = v86[186] instance.BackgroundColor3 = Color3.fromRGB(255, 255, 255) instance.Parent = frame local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 90 v115.bindSurfaceGradient(arg3, uiGradient, { v86[134], "GradientMid", "GradientDark" }) uiGradient.Parent = instance local frame2 = Instance.new("Frame") frame2.BackgroundColor3 = Color3.fromRGB(255, 255, v86[108]) frame2.Size = UDim2.new(1, v86[186], 0, rail.HeaderHeight) frame2.BorderSizePixel = 0 frame2.Parent = frame local instance2 = Instance.new(v86[46]) instance2.Rotation = 90 v115.bindSurfaceGradient(arg3, instance2, { "GradientTop", v86[187], "GradientDark" }) instance2.Parent = frame2 local imageLabel = Instance.new("ImageLabel") imageLabel.AnchorPoint = Vector2.new(v86[101], 0.5) imageLabel.Image = image imageLabel.BackgroundTransparency = 1 imageLabel.Position = UDim2.fromScale(v86[101], v86[101]) imageLabel.Size = UDim2.fromOffset(rail.LogoSize.X, rail.LogoSize.Y) imageLabel.BorderSizePixel = v86[186] if image ~= nil and image == K.LithiumLogo then imageLabel.ImageColor3 = Color3.new(1, 1, 1) imageLabel.ScaleType = Enum.ScaleType.Fit else arg3:Bind(imageLabel, v86[156], "Accent") end imageLabel.Parent = frame2 local frame3 = Instance.new("Frame") frame3.Position = UDim2.new(0, 0, v86[63], -v86[63]) frame3.Size = UDim2.new(v86[63], 0, 0, v86[63]) frame3.BorderSizePixel = 0 arg3:Bind(frame3, v86[5], "Accent") frame3.Parent = frame2 local uiGradient2 = Instance.new("UIGradient") local numberSequence = NumberSequence.new local tbl18 = {} local v119 = NumberSequenceKeypoint.new(0, 1) local v120 = NumberSequenceKeypoint.new(v86[48], 0) local v121 = NumberSequenceKeypoint.new(0.7, 0) local new = NumberSequenceKeypoint.new tbl18[1] = v119 tbl18[2] = v120 tbl18[3] = v121 do local values = table.pack(new(1, 1)) table.move(values, 1, values.n, 4, tbl18) end uiGradient2.Transparency = numberSequence(tbl18) uiGradient2.Parent = frame3 v115.addGlow(arg3, frame3, { Amount = 2, DampingFactor = 0.78 }) local instance3 = Instance.new(v86[64]) instance3.BackgroundTransparency = v86[63] instance3.Position = UDim2.fromOffset(0, rail.TabsTop) instance3.Size = UDim2.new(v86[63], v86[186], v86[63], -rail.TabsTop) instance3.BorderSizePixel = 0 instance3.AutomaticCanvasSize = Enum.AutomaticSize.Y instance3.CanvasSize = UDim2.fromOffset(0, 0) instance3.ScrollingDirection = Enum.ScrollingDirection.Y instance3.ScrollBarImageTransparency = 1 instance3.ScrollBarThickness = 0 instance3.ElasticBehavior = Enum.ElasticBehavior.Never instance3.ClipsDescendants = true arg3:Bind(instance3, v86[154], v86[139]) instance3.Parent = frame local frame4 = Instance.new("Frame") frame4.BackgroundTransparency = v86[63] frame4.Size = UDim2.fromScale(1, 0) frame4.AutomaticSize = Enum.AutomaticSize.Y frame4.BorderSizePixel = 0 frame4.Parent = instance3 local instance4 = Instance.new(v86[4]) instance4.Padding = UDim.new(0, rail.TabGap) instance4.HorizontalAlignment = Enum.HorizontalAlignment.Center instance4.SortOrder = Enum.SortOrder.LayoutOrder instance4.Parent = frame4 local frame5 = Instance.new("Frame") frame5.BackgroundColor3 = Color3.fromRGB(255, 255, 255) frame5.BorderSizePixel = 0 frame5.Size = UDim2.fromOffset(rail.TabSize, rail.TabSize) frame5.Position = UDim2.fromScale(v86[101], v86[186]) frame5.AnchorPoint = Vector2.new(v86[101], 0) frame5.Visible = false frame5.ZIndex = 0 frame5.Parent = instance3 local instance5 = Instance.new(v86[46]) instance5.Rotation = v86[45] arg3:BindGradient(instance5, { "TabHighlight", "TabButtonSelected", v86[191] }, { 0, 0.5, 1 }) instance5.Parent = frame5 local instance6 = Instance.new(v86[98]) instance6.CornerRadius = UDim.new(0, 6) instance6.Parent = frame5 v117.attachOverflowCues(arg2, arg3, instance3, frame, v86[197]) return setmetatable({ _trove = arg2, _menu = arg, _batch = arg3, Frame = frame, _scroll = instance3, _holder = frame4, _indicator = frame5, }, index2) end index2.AddButton = function(arg, arg2, arg3) return v118.new(arg._menu, arg._holder, arg2, arg._batch, arg3) end index2.MoveIndicator = function(arg, arg2) local indicator = arg._indicator if not (n26 >= 4814) then local udim2 = UDim2.new(v86[101], 0, 0, arg2.AbsolutePosition.Y - arg._holder.AbsolutePosition.Y) v117.scrollIntoView(arg._scroll, arg2, "Y") if not indicator.Visible then indicator.Position = udim2 indicator.Visible = true return end arg._menu:Tween(indicator, { Position = udim2 }) return end -- (anti-tamper freeze trap removed) end return index2 end tbl17.aq = function() local aq = tbl17.cache.aq if not aq then aq = { c = fn35() } tbl17.cache.aq = aq end return aq.c end end do -- ar local function fn35() local v115 = tbl17.g() tbl17.k() tbl17.r() local v116 = tbl17.af() local v117 = tbl17.v() local v118 = tbl17.an() local v119 = tbl17.ao() tbl17.aq() tbl17.ap() local v120 = tbl17.A() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4) local v121 = arg3:Extend() local v122 = v120.newBatch(v121) local v123 = v117.get() local outerInset = v123.Page.OuterInset local n = v123.Rail.Width + outerInset local v124 = arg2.Panel:AddButton(v121, { Label = arg4.Label, Icon = arg4.Icon or "rbxassetid://108815781932261" }) local canvasGroup = Instance.new("CanvasGroup") canvasGroup.BackgroundTransparency = 1 canvasGroup.GroupTransparency = v86[186] canvasGroup.Visible = false canvasGroup.Position = UDim2.fromOffset(n, outerInset) canvasGroup.Size = UDim2.new(1, -n - outerInset, 1, -outerInset * 2) canvasGroup.BorderSizePixel = v86[186] canvasGroup.Parent = arg2.MenuFrame local obj = setmetatable({ _trove = v121, _menu = arg, _window = arg2, _batch = v122, Label = arg4.Label, Description = arg4.Description or "", _button = v124, _page = canvasGroup, _fadeState = { Tweening = false }, _grid = nil, _pages = false, _header = nil, _subtabs = nil, ActivePage = nil, Opened = v121:Add(v115.new()), _openedOnce = false, _pendingOpen = false, }, index2) v121:Connect(v124.Clicked, function() obj:Open() end) if arg2.ActiveTab == nil then obj:Open() end return obj end index2.Open = function(activeTab) local window = activeTab._window local activeTab2 = window.ActiveTab if activeTab2 == activeTab then return end activeTab._menu:CloseOverlays(nil, v86[34]) if activeTab2 ~= nil then activeTab2._button:SetSelected(false) activeTab._menu:FadeCanvasGroup(activeTab2._page, v86[153], activeTab2._fadeState) if activeTab2._pendingOpen then activeTab2._pendingOpen = v86[153] else activeTab2.Opened:Fire(false) end end window.Panel:MoveIndicator(activeTab._button.Button) activeTab._button:SetSelected(true) activeTab._menu:FadeCanvasGroup(activeTab._page, true, activeTab._fadeState) window.ActiveTab = activeTab if activeTab._menu.Visible then activeTab._openedOnce = v86[34] activeTab:_RealizeActive() activeTab.Opened:Fire(true) else activeTab._pendingOpen = true end end index2._FlushPendingOpen = function(arg) if not arg._pendingOpen then return end arg._pendingOpen = v86[153] arg._openedOnce = true arg:_RealizeActive() arg.Opened:Fire(v86[34]) end index2._RealizeActive = function(arg) local grid = arg._grid if grid ~= nil then grid:Realize() return end local activePage = arg.ActivePage if activePage ~= nil then activePage:_FlushPendingOpen() activePage:_MaybeRealize() end end index2.Grid = function(arg, arg2) assert(not arg._pages, "Tab:Grid() cannot be used on a tab that has sub-tabs") local grid = arg._grid if grid ~= nil then return grid end local function fn36() arg:Open() end local v121 = v116.new(arg._menu, arg._page, arg._trove, arg._batch, arg2, { TabLabel = arg.Label, PageLabel = nil, OpenTab = fn36, Open = fn36 }) arg._grid = v121 if arg._openedOnce then v121:Realize() end return v121 end index2.AddTab = function(arg, arg2) local v121 = arg assert(arg._grid == nil, "Tab:AddTab() cannot be used on a tab that has a Grid") if not arg._pages then arg._pages = true local width = v117.get().Rail.Width arg._page.Size = UDim2.new(1, -width, v86[63], 0) arg._page.Position = UDim2.fromOffset(width, 0) local v122 = v119.create(arg._menu, arg._batch, arg._page, arg._trove, arg.Label, arg.Description) arg._header = v122 arg._subtabs = v122.Subtabs arg._trove:Connect(arg.Opened, function(arg3) if arg3 then arg._menu:SetActiveSearchBar(v122.SearchBar) elseif true then v122.SearchBar.Collapse() arg._menu:SetActiveSearchBar(nil) else -- (anti-tamper freeze trap removed) end end) if arg._window.ActiveTab == arg and arg._openedOnce then arg._menu:SetActiveSearchBar(v122.SearchBar) end end return v118.new(arg._menu, v121, function() arg:Open() end, arg._trove, arg2) end index2.OnFirstOpen = function(arg, arg2) local function fn36() local thread = coroutine.create(arg2) arg._trove:Add(thread) task.spawn(thread) end if arg._openedOnce then fn36() return end local connection = nil connection = arg._trove:Connect(arg.Opened, function(arg3) if arg3 ~= v86[34] then return end connection:Disconnect() fn36() end) end index2.Destroy = function(arg) arg._page:Destroy() arg._trove:Destroy() end return index2 end tbl17.ar = function() local ar = tbl17.cache.ar if not ar then ar = { c = fn35() } tbl17.cache.ar = ar end return ar.c end end do -- as local function fn35() tbl17.g() tbl17.k() local v115 = tbl17.s() local v116 = tbl17.t() local v117 = tbl17.A() local v118 = tbl17.w() local userInputService = v116.UserInputService local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local obj = setmetatable({ _trove = arg, _layer = arg2, _positionTrove = arg:Extend(), _followTrove = arg:Extend(), _frame = nil, _label = nil, _owner = nil, _followConnection = nil, }, index2) arg:Connect(arg3, function(arg4) if not arg4 then obj:Hide(nil) end end) arg:Connect(userInputService.InputBegan, function(arg4) local userInputType = arg4.UserInputType if userInputType ~= Enum.UserInputType.MouseButton1 and userInputType ~= Enum.UserInputType.MouseButton2 and userInputType ~= Enum.UserInputType.Touch then return end obj:Hide(nil) end) return obj end local function fn36(arg) local frame = arg._frame local label = arg._label if frame ~= nil and label ~= nil then return frame, label end local v119 = v117.newBatch(arg._trove) local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = 0.05 frame2.Size = UDim2.new(0, 0, 0, 0) frame2.AutomaticSize = Enum.AutomaticSize.XY frame2.BorderSizePixel = 0 frame2.Visible = false frame2.ZIndex = 1000 v119:Bind(frame2, "BackgroundColor3", v86[168]) frame2.Parent = arg._layer arg._trove:Add(frame2) local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], 4) uiCorner.Parent = frame2 local instance = Instance.new(v86[85]) v119:Bind(instance, v86[27], v86[120]) instance.Parent = frame2 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(0, 5) uiPadding.PaddingBottom = UDim.new(0, 5) uiPadding.PaddingLeft = UDim.new(v86[186], 8) uiPadding.PaddingRight = UDim.new(0, 8) uiPadding.Parent = frame2 local instance2 = Instance.new(v86[135]) instance2.BackgroundTransparency = 1 instance2.AutomaticSize = Enum.AutomaticSize.XY instance2.Text = "" instance2.FontFace = v115.Medium instance2.TextSize = 14 instance2.TextWrapped = v86[153] v119:Bind(instance2, "TextColor3", v86[174]) instance2.Parent = frame2 arg._frame = frame2 arg._label = instance2 return frame2, instance2 end local function fn37(arg, arg2, arg3) local v119 = v118.absoluteToLayerOffset(arg._layer, arg3) arg2.Position = UDim2.fromOffset(v119.X + 14, v119.Y + v86[72]) v118.clampGuiToViewport(arg2) end local function fn38(arg, arg2) local owner = arg._owner arg._positionTrove:Clean() arg._positionTrove:Add(task.defer(function() if arg._owner == owner and arg2.Parent ~= nil and arg2.Visible then v118.clampGuiToViewport(arg2) end end)) end index2.Show = function(arg, owner, text) local v119, v120 = fn36(arg) arg._owner = owner v120.Text = text v119.Visible = true fn37(arg, v119, v118.getPointerPosition()) fn38(arg, v119) if arg._followConnection == nil then local connection = userInputService.InputChanged:Connect(function(input) if input.UserInputType ~= Enum.UserInputType.MouseMovement then return end fn37(arg, v119, v118.getPointerPosition()) end) arg._followConnection = connection arg._followTrove:Add(connection) end end index2.ShowAt = function(arg, owner, text, arg2) local v119, v120 = fn36(arg) arg._owner = owner v120.Text = text v119.Visible = true fn37(arg, v119, arg2) fn38(arg, v119) end index2.Hide = function(arg, arg2) if arg2 ~= nil and arg._owner ~= arg2 then return end arg._owner = nil arg._positionTrove:Clean() local frame = arg._frame if frame ~= nil and frame.Visible then frame.Visible = false end arg._followTrove:Clean() arg._followConnection = nil end index2.Destroy = function(arg) arg:Hide(nil) end return index2 end tbl17.as = function() local as = tbl17.cache.as if not as then local as2 = { c = fn35() } tbl17.cache.as = as2 as = as2 end return as.c end end do -- at local function fn35() local tweenService = tbl17.t().TweenService local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _live = false, Speed = v86[48], DragSpeed = 0.05, EasingStyle = Enum.EasingStyle.Quint, EasingDirection = Enum.EasingDirection.Out, }, index2) end index2.SetLive = function(arg, live) arg._live = live end index2.Snap = function(arg, arg2, arg3) for k, v115 in arg3, nil, nil do arg2[k] = v115 end end index2.Play = function(arg, arg2, arg3, arg4) if not arg._live then arg:Snap(arg2, arg3) return nil end local tween = tweenService:Create(arg2, arg4 or TweenInfo.new(arg.Speed, arg.EasingStyle, arg.EasingDirection, 0, false, 0), arg3) tween:Play() return tween end index2.DragInfo = function(arg) return TweenInfo.new(arg.DragSpeed, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out, 0, false, 0) end return index2 end tbl17.at = function() local at = tbl17.cache.at if not at then at = { c = fn35() } tbl17.cache.at = at end return at.c end end do -- au local function fn35()local I,W= tbl17 .t().RunService,{};W.__index=W;W.new=function(l)return setmetatable({_onDisplay=l,_running=false,_frames=0,_smooth=60,_displayed=-1,_connection=nil,_loopToken=0},W);end;local function l(N)local P,a=N._loopToken,os.clock();task.delay(0.5,function()if N._loopToken~=P then return;end;local P=os.clock()-a;if P>0 then local a=N._frames/P;N._smooth=N._smooth+(a-N._smooth)*0.5;end;N._frames=0;P=math.floor(N._smooth+0.5);if P~=N._displayed then N._displayed=P;N._onDisplay(P);end;l(N);end);end;W.SetRunning=function(N,P)if N._running==P then return;end;N._running=P;N._loopToken=N._loopToken+1;if not P then local P_33=N._connection;if P_33~=nil then P_33:Disconnect();N._connection=nil;end;return;end;N._frames=0;N._connection=I.RenderStepped:Connect(function()N._frames=N._frames+1;end);l(N);end;W.Destroy=function(l)l:SetRunning(false);end;return W;end tbl17.au = function() local au = tbl17.cache.au if not au then local au2 = { c = fn35() } tbl17.cache.au = au2 au = au2 end return au.c end end do -- av local function fn35() tbl17.k() tbl17.r() local v115 = tbl17.au() local v116 = tbl17.u() local v117 = tbl17.A() local index2 = {} index2.__index = index2 local function fn36(parent, layoutOrder, fontFace, arg) local textLabel = Instance.new("TextLabel") textLabel.LayoutOrder = layoutOrder textLabel.FontFace = fontFace textLabel.Text = "|" textLabel.AnchorPoint = Vector2.new(0, 0.5) textLabel.BackgroundTransparency = 1 textLabel.Position = UDim2.fromScale(0, 0.5) textLabel.BorderSizePixel = 0 textLabel.AutomaticSize = Enum.AutomaticSize.XY textLabel.TextSize = 16 arg:Bind(textLabel, v86[167], "Unselected") textLabel.Parent = parent local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(v86[186], 1) uiPadding.Parent = textLabel end local function createTextLabel(parent, layoutOrder, text, fontFace, arg) local textLabel = Instance.new("TextLabel") textLabel.LayoutOrder = layoutOrder textLabel.FontFace = fontFace textLabel.Text = text textLabel.AnchorPoint = Vector2.new(0, v86[101]) textLabel.BackgroundTransparency = 1 textLabel.Position = UDim2.fromScale(0, 0.5) textLabel.BorderSizePixel = 0 textLabel.AutomaticSize = Enum.AutomaticSize.XY textLabel.TextSize = 16 arg:Bind(textLabel, "TextColor3", "TextColor") textLabel.Parent = parent local instance = Instance.new(v86[113]) instance.PaddingTop = UDim.new(0, 1) instance.Parent = textLabel return textLabel end local function fn37(parent, layoutOrder, image, arg) local instance = Instance.new(v86[146]) instance.LayoutOrder = layoutOrder instance.Image = image instance.BackgroundTransparency = 1 instance.Size = UDim2.fromOffset(20, 20) instance.BorderSizePixel = 0 if image ~= nil and image == K.LithiumLogo then instance.ImageColor3 = Color3.new(1, 1, 1) instance.ScaleType = Enum.ScaleType.Fit else arg:Bind(instance, "ImageColor3", "Accent") end instance.Parent = parent end index2.new = function(arg, parent, arg2, arg3) local v118 = arg2:Extend() local v119 = v117.newBatch(v118) local main = arg.Fonts.Main local frame = Instance.new("Frame") frame.BackgroundTransparency = 0.04 frame.Position = UDim2.fromOffset(50, 50) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.XY v119:Bind(frame, "BackgroundColor3", v86[168]) frame.Parent = parent v118:Add(frame) local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = frame local uiStroke = Instance.new("UIStroke") uiStroke.Thickness = 1 v119:Bind(uiStroke, "Color", v86[120]) uiStroke.Parent = frame local instance = Instance.new(v86[113]) instance.PaddingTop = UDim.new(0, v86[122]) instance.PaddingBottom = UDim.new(v86[186], v86[122]) instance.PaddingRight = UDim.new(0, 11) instance.PaddingLeft = UDim.new(0, 13) instance.Parent = frame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(v86[186], 10) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.FillDirection = Enum.FillDirection.Horizontal uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center uiListLayout.Parent = frame local scale = v116.Scale if v116.IsMobile() then scale = 0.8 end if scale ~= 1 then local uiScale = Instance.new("UIScale") uiScale.Scale = scale uiScale.Parent = frame end fn37(frame, 1, arg3.Icon, v119) local v120 = createTextLabel(frame, v86[56], arg3.Title, main, v119) fn36(frame, 3, main, v119) fn37(frame, 4, "rbxassetid://83187029320661", v119) local v121 = createTextLabel(frame, 5, arg3.Username, main, v119) fn36(frame, 6, main, v119) fn37(frame, 7, "rbxassetid://113103422688495", v119) local v122 = createTextLabel(frame, 8, "60 FPS", main, v119) v122.AutomaticSize = Enum.AutomaticSize.Y v122.Size = UDim2.fromOffset(v86[7], 0) local stateData = arg:GetStateData() if stateData ~= nil then frame.Visible = stateData.ShowWatermark ~= false end arg:MakeDraggable(frame, v118, { PersistKey = "WatermarkPosition" }) local v123 = v115.new(function(arg4) v122.Text = string.format("%s FPS", tostring(arg4)) end) v118:Add(v123) v123:SetRunning(frame.Visible) return setmetatable({ _trove = v118, _menu = arg, _root = frame, _title = v120, _username = v121, _fps = v122, _clock = v123 }, index2) end index2.SetEnabled = function(arg, visible) if arg._root.Visible == visible then return end arg._root.Visible = visible arg._clock:SetRunning(visible) local stateData = arg._menu:GetStateData() if stateData ~= nil then stateData.ShowWatermark = visible arg._menu:SaveState() end end index2.IsEnabled = function(arg) return arg._root.Visible end index2.SetTitle = function(arg, text) arg._title.Text = text end index2.SetUsername = function(arg, text) arg._username.Text = text end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.av = function() local av = tbl17.cache.av if not av then local av2 = { c = fn35() } tbl17.cache.av = av2 av = av2 end return av.c end end do -- aw local function fn35() local v115 = tbl17.u() local v116 = tbl17.w() local tbl18 tbl18 = { effectiveMinSize = function(arg) local minSize = v115.MinSize if v115.IsMobile() then local min = math.min local offset = minSize.Y.Offset local floor2 = math.floor local n = arg.Y * v86[87] return math.min(minSize.X.Offset, math.floor(arg.X * 0.65)), min(offset, floor2(n)) end local min = math.min local offset = minSize.Y.Offset local floor2 = math.floor local n = arg.Y * 0.8 return math.min(minSize.X.Offset, math.floor(arg.X * 0.85)), min(offset, floor2(n)) end, resolveDefaultSize = function() local v117 = v116.currentViewportSize() local designSize = v115.DesignSize local v118, v119 = tbl18.effectiveMinSize(v117) if v115.IsMobile() then local n = math.clamp(v117.X * v86[74], v118, designSize.X.Offset) local n33 = math.clamp(v117.Y * v86[87], v119, designSize.Y.Offset) local floor2 = math.floor return UDim2.fromOffset(math.floor(n), floor2(n33)) end local n = math.clamp(v117.X * 0.8, v118, designSize.X.Offset) local n33 = math.clamp(v117.Y * 0.7, v119, designSize.Y.Offset) local floor2 = math.floor return UDim2.fromOffset(math.floor(n), floor2(n33)) end, clampSizeToViewport = function(arg, arg2) local v117 = v116.currentViewportSize() local v118, v119 = tbl18.effectiveMinSize(v117) if not (n25 < 3847) then local n = 0.98 if v115.IsMobile() then n = 0.75 end local n33 = math.floor(v117.X * n) local n34 = math.floor(v117.Y * n) return math.clamp(arg, v118, math.max(v118, n33)), math.clamp(arg2, v119, math.max(v119, n34)) end return nil -- (anti-tamper freeze trap removed) end, menuBounds = function(arg) local parent = arg.Parent if parent ~= nil and parent:IsA("GuiBase2d") then local absoluteSize = parent.AbsoluteSize if absoluteSize.X > 0 and absoluteSize.Y > 0 then return absoluteSize end end return v116.currentViewportSize() end, clampPositionToParent = function(arg, arg2, arg3, arg4, arg5) local v117 = tbl18.menuBounds(arg) local n = math.max(0, math.floor(v117.X - arg4)) local n33 = math.max(0, math.floor(v117.Y - arg5)) return math.round(math.clamp(arg2, 0, n)), math.round(math.clamp(arg3, v86[186], n33)) end, centeredInParent = function(arg, arg2, arg3) local v117 = tbl18.menuBounds(arg) return math.floor((v117.X - arg2) / v86[56]), math.floor((v117.Y - arg3) / 2) end, } return tbl18 end tbl17.aw = function() local aw = tbl17.cache.aw if not aw then local aw2 = { c = fn35() } tbl17.cache.aw = aw2 aw = aw2 end return aw.c end end do -- ax local function fn35() tbl17.k() local v115 = tbl17.F() tbl17.r() local v116 = tbl17.v() local v117 = tbl17.u() local v118 = tbl17.t() local v119 = tbl17.aq() local v120 = tbl17.ar() local v121 = tbl17.A() local v122 = tbl17.w() local v123 = tbl17.aw() local index2 = {} index2.__index = index2 local function fn36(arg, arg2) local stateData = arg:GetStateData() if stateData ~= nil then stateData.Position = { arg2.X.Offset, arg2.Y.Offset } arg:SaveState() end end local function fn37(arg) local menu = arg._menu local menuFrame = arg.MenuFrame local trove = arg._trove local batch = arg._batch local textButton = Instance.new("TextButton") textButton.AnchorPoint = Vector2.new(1, 1) textButton.Position = UDim2.fromScale(1, 1) textButton.Size = UDim2.fromOffset(18, 18) textButton.BackgroundTransparency = v86[63] textButton.BorderSizePixel = 0 textButton.Text = "" textButton.AutoButtonColor = false textButton.ZIndex = menuFrame.ZIndex + v86[54] textButton.Parent = menuFrame local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(1, v86[63]) frame.Position = UDim2.new(1, -v86[26], 1, -4) frame.Size = UDim2.fromOffset(8, 2) frame.Rotation = -45 frame.BorderSizePixel = 0 frame.ZIndex = textButton.ZIndex batch:Bind(frame, "BackgroundColor3", "Outline") frame.Parent = textButton local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(1, v86[63]) instance.Position = UDim2.new(1, -2, 1, -7) instance.Size = UDim2.fromOffset(5, 2) instance.Rotation = -45 instance.BorderSizePixel = v86[186] instance.ZIndex = textButton.ZIndex batch:Bind(instance, "BackgroundColor3", v86[120]) instance.Parent = textButton local v124 = nil local flag19 = false local v125 = trove:Extend() local vector2 = nil local function fn38(arg2) v125:Clean() vector2 = nil local v126 = flag19 flag19 = false v124 = nil if arg2 and v126 then local stateData = menu:GetStateData() if stateData ~= nil then stateData.Size = { arg.Size.X.Offset, arg.Size.Y.Offset } menu:SaveState() end end end local function fn39(arg2) if arg2.UserInputType ~= Enum.UserInputType.MouseButton1 and arg2.UserInputType ~= Enum.UserInputType.Touch then return end if flag19 then return end flag19 = true v124 = arg2 v125:Connect(v118.UserInputService.InputChanged, function(arg3) if not flag19 then return end if not v122.matchesPointerDrag(arg3, v124, Enum.UserInputType.MouseMovement) then return end vector2 = Vector2.new(arg3.Position.X, arg3.Position.Y) end) v125:Connect(v118.RunService.RenderStepped, function() local v126 = vector2 if v126 == nil then return end vector2 = nil local n = v126 - menuFrame.AbsolutePosition local v127, v128 = v123.clampSizeToViewport(math.floor(n.X + v86[101]), math.floor(n.Y + v86[101])) local udim2 = UDim2.fromOffset(v127, v128) if udim2 == arg.Size then return end menuFrame.Size = udim2 arg.Size = udim2 end) v125:Connect(arg2.Changed, function() if arg2.UserInputState == Enum.UserInputState.End then fn38(v86[34]) end end) end trove:Connect(textButton.InputBegan, fn39) if v117.IsMobile() then local frame2 = Instance.new("Frame") frame2.AnchorPoint = Vector2.new(1, 1) frame2.Position = UDim2.fromScale(1, 1) frame2.Size = UDim2.fromOffset(36, 36) frame2.BackgroundTransparency = 1 frame2.BorderSizePixel = 0 frame2.Active = true frame2.ZIndex = menuFrame.ZIndex + 5 frame2.Parent = menuFrame trove:Connect(frame2.InputBegan, fn39) end end index2.new = function(arg, parent, arg2, arg3) local v124 = arg2:Extend() local v125 = v121.newBatch(v124) local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(0.5, 0.5) frame.BackgroundTransparency = 0 frame.Position = UDim2.fromScale(v86[101], 0.5) frame.Size = arg3.Size or v123.resolveDefaultSize() frame.BorderSizePixel = v86[186] frame.Active = true frame.Visible = false v125:Bind(frame, "BackgroundColor3", "Background") frame.Parent = parent local v126 = v116.get() local instance = Instance.new(v86[92]) instance.BackgroundTransparency = 1 instance.Text = "" instance.Size = UDim2.new(v86[63], 0, v86[186], 20) if v126.IsCompact then instance.Size = UDim2.fromOffset(v126.Rail.Width, v126.Rail.HeaderHeight) end instance.Modal = true instance.ZIndex = 50 instance.AutoButtonColor = false instance.Parent = frame if v117.Scale ~= 1 then local uiScale = Instance.new("UIScale") uiScale.Scale = v117.Scale uiScale.Parent = frame end local instance2 = Instance.new(v86[85]) instance2.Transparency = v86[84] v125:Bind(instance2, v86[27], "Outline") instance2.Parent = frame v115.addGlow(v125, frame, { Amount = 5, DampingFactor = v86[84] }) local size = frame.Size local stateData = arg:GetStateData() local size2 = stateData and stateData.Size if type(size2) == "table" and #size2 >= 2 then local v127, v128 = v123.clampSizeToViewport(size2[1], size2[2]) size = UDim2.fromOffset(v127, v128) end local offset = size.X.Offset local offset2 = size.Y.Offset stateData = stateData and stateData.Position local udim2 if type(stateData) == "table" and #stateData >= 2 then local v127, v128 = v123.clampPositionToParent(frame, stateData[1], stateData[2], offset, offset2) udim2 = UDim2.fromOffset(v127, v128) else local v127, v128 = v123.centeredInParent(frame, offset, offset2) udim2 = UDim2.fromOffset(v127, v128) end frame.Size = size frame.AnchorPoint = Vector2.new(0, 0) frame.Position = udim2 local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 6) uiCorner.Parent = frame local instance3 = Instance.new(v86[128]) instance3.Position = UDim2.new(0, 0, 1, -8) instance3.Size = UDim2.new(1, v86[186], 0, 8) instance3.BorderSizePixel = 0 instance3.BackgroundColor3 = Color3.fromRGB(v86[108], 255, v86[108]) instance3.Parent = frame local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = v86[45] v125:BindGradient(uiGradient, { "Background", "GradientDeep" }) uiGradient.Parent = instance3 local frame2 = Instance.new("Frame") frame2.BackgroundTransparency = 1 frame2.Position = UDim2.new(0, 0, 0, 0) frame2.Size = UDim2.new(1, 0, v86[186], 5) frame2.BorderSizePixel = v86[186] frame2.ZIndex = frame.ZIndex + 1 frame2.Parent = frame local instance4 = Instance.new(v86[128]) instance4.BackgroundTransparency = 0.08 instance4.Position = UDim2.new(0, v86[186], 0, 0) instance4.Size = UDim2.new(1, 0, v86[186], 1) instance4.BorderSizePixel = 0 instance4.ZIndex = frame2.ZIndex v125:Bind(instance4, "BackgroundColor3", "Accent") instance4.Parent = frame2 local uiGradient2 = Instance.new("UIGradient") local numberSequence = NumberSequence.new local tbl18 = {} local v127 = NumberSequenceKeypoint.new(0, 1) local v128 = NumberSequenceKeypoint.new(0.06, 0.35) local v129 = NumberSequenceKeypoint.new(v86[101], v86[186]) local v130 = NumberSequenceKeypoint.new(0.94, 0.35) local new = NumberSequenceKeypoint.new local v131 = v86[63] local v132 = v86[63] tbl18[1] = v127 tbl18[2] = v128 tbl18[3] = v129 tbl18[4] = v130 do local values = table.pack(new(v131, v132)) table.move(values, 1, values.n, 5, tbl18) end uiGradient2.Transparency = numberSequence(tbl18) uiGradient2.Parent = instance4 local uiStroke = Instance.new("UIStroke") uiStroke.Transparency = 0.78 v125:Bind(uiStroke, "Color", "Outline") uiStroke.Parent = instance4 v115.addGlow(v125, instance4, { Amount = 2, DampingFactor = 0.78 }) local v133 = v119.new(arg, frame, v124, v125, arg3.Icon) local width = v116.get().Rail.Width local frame3 = Instance.new("Frame") frame3.BackgroundTransparency = 1 frame3.Position = UDim2.fromOffset(width, v86[186]) frame3.Size = UDim2.new(1, -width, 1, 0) frame3.BorderSizePixel = 0 v125:Bind(frame3, "BackgroundColor3", "Background") frame3.Parent = frame local uiCorner2 = Instance.new("UICorner") uiCorner2.CornerRadius = UDim.new(0, v86[12]) uiCorner2.Parent = frame3 local uiStroke2 = Instance.new("UIStroke") uiStroke2.Parent = frame3 v125:Bind(uiStroke2, "Color", "Outline") local obj = setmetatable({ _trove = v124, _menu = arg, _batch = v125, Title = arg3.Title, Icon = arg3.Icon, Size = size, Open = v86[153], MenuFrame = frame, Panel = v133, PageHolder = frame3, ActiveTab = nil, _modalButton = instance, _menuOpenPosition = udim2, }, index2) v124:Connect(arg:MakeDraggable(frame, v124, { OnDragEnd = function(arg4) fn36(arg, arg4) end }).DragContinue, function() obj._menuOpenPosition = frame.Position end) local uiDragDetector = Instance.new("UIDragDetector") uiDragDetector.DragStyle = Enum.UIDragDetectorDragStyle.TranslatePlane uiDragDetector.ResponseStyle = Enum.UIDragDetectorResponseStyle.CustomOffset uiDragDetector.Parent = instance local position = nil v124:Connect(uiDragDetector.DragStart, function() position = frame.Position end) v124:Connect(uiDragDetector.DragContinue, function() local v134 = position if v134 == nil then return end local dragUDim2 = uiDragDetector.DragUDim2 frame.Position = UDim2.fromOffset(math.round(v134.X.Offset + dragUDim2.X.Offset), math.round(v134.Y.Offset + dragUDim2.Y.Offset)) v122.clampGuiToViewport(frame) obj._menuOpenPosition = frame.Position end) v124:Connect(uiDragDetector.DragEnd, function() position = nil v122.clampGuiToViewport(frame) obj._menuOpenPosition = frame.Position fn36(arg, frame.Position) end) fn37(obj) local v134 = v124:Extend() local v135 = nil v122.connectCurrentCameraViewport(v124, function(arg4) if arg4 == nil then v134:Clean() v135 = nil return end if arg4 == v135 then return end v135 = arg4 v134:Clean() v134:Add(task.defer(function() local size3 = frame.Size local v136, v137 = v123.clampSizeToViewport(size3.X.Offset, size3.Y.Offset) if v136 ~= size3.X.Offset or v137 ~= size3.Y.Offset then local udim22 = UDim2.fromOffset(v136, v137) frame.Size = udim22 obj.Size = udim22 end local position2 = frame.Position local v138, v139 = v123.clampPositionToParent(frame, position2.X.Offset, position2.Y.Offset, v136, v137) if v138 ~= position2.X.Offset or v139 ~= position2.Y.Offset then local udim22 = UDim2.fromOffset(v138, v139) frame.Position = udim22 obj._menuOpenPosition = udim22 end end)) end) v124:Connect(arg.VisibilityChanged, function(arg4) if not arg4 then return end local activeTab = obj.ActiveTab if activeTab ~= nil then activeTab:_FlushPendingOpen() end end) return obj end index2.AddTab = function(arg, arg2) return v120.new(arg._menu, arg, arg._trove, arg2) end index2.SetVisible = function(arg, open) if arg.Open == open then return false end arg.Open = open arg._modalButton.Modal = open arg.MenuFrame.Visible = open return true end index2.SetTitle = function(arg, title) arg.Title = title end index2.Destroy = function(arg) arg.MenuFrame:Destroy() arg._trove:Destroy() end return index2 end tbl17.ax = function() local ax = tbl17.cache.ax if not ax then ax = { c = fn35() } tbl17.cache.ax = ax end return ax.c end end do -- ay local function fn35()local I={__mode="k"};local function W(N)if type(N)=="function"then return true;end;if type(N)=="table"then local P=getmetatable(N);if P and type( v102 (P,"__call"))=="function"then return true;end;end;return false;end;local function N(P,a)local e={};for c,c_34 in ipairs(a)do e[c_34]=c_34;end;return setmetatable(e,{__index=function(a,a_35)error(string.format("%s is not in %s!",a_35,P),2);end,__newindex=function()error(string.format("Creating new members in %s is not allowed!",P),2);end});end;local P:any;P={Kind=N("Promise.Error.Kind",{"ExecutionError","AlreadyCancelled","NotResolvedInTime","TimedOut"})};P.__index=P;P.new=function(a,e)a=a or{};return setmetatable({error=tostring(a.error)or"[This error has no error text.]",trace=a.trace,context=a.context,kind=a.kind,parent=e,createdTick=os.clock(),createdTrace=debug.traceback()},P);end;P.is=function(a)if type(a)=="table"then local e=getmetatable(a);if type(e)=="table"then return v102 (a,"error")~=nil and type( v102 (e,"extend"))=="function";end;end;return false;end;P.isKind=function(a,e)assert(e~=nil,"Argument #2 to Promise.Error.isKind must not be nil");return P.is(a)and a.kind==e;end;P.extend=function(a,e)e=e or{};e.kind=e.kind or a.kind;return P.new(e,a);end;P.getErrorChain=function(a)local e={a};while e[#e].parent do table.insert(e,e[#e].parent);end;return e;end;P.__tostring=function(a)local e={string.format("-- Promise.Error(%s) --",a.kind or"?")};for c,c_36 in ipairs(a:getErrorChain())do table.insert(e,table.concat({c_36.trace or c_36.error,c_36.context},"\10"));end;return table.concat(e,"\10");end;local function a(...)return select("#",...),{...};end;local function e(c,...)return c,select("#",...),{...};end;local function c(E)assert(E~=nil,"traceback is nil");return function(p)if type(p)=="table"then return p;end;return P.new({error=p,kind=P.Kind.ExecutionError,trace=debug.traceback(tostring(p),2),context="Promise created at:\10\10"..E});end;end;local function E(p,T,...)return e(xpcall(T,c(p),...));end;local function e_37(c,p,T,t)return function(...)local x,S,J=E(c,p,...);if x then T(unpack(J,1,S));else t(J[1]);end;end;end;local function c_38(p)return next(p)==nil;end;local p:any={Error=P,Status=N("Promise.Status",{"Started","Resolved","Rejected","Cancelled"}),_getTime=os.clock,_timeEvent=game:GetService("RunService").Heartbeat,_unhandledRejectionCallbacks={},prototype={}};p.__index=p.prototype;p._new=function(N,T,t)if t~=nil and not p.is(t)then error("Argument #2 to Promise.new must be a promise or nil",2);end;local x={_thread=nil,_source=N,_status=p.Status.Started,_values=nil,_valuesLength=-1,_unhandledRejection=true,_queuedResolve={},_queuedReject={},_queuedFinally={},_cancellationHook=nil,_parent=t,_consumers=setmetatable({},I)};if t and t._status==p.Status.Started then t._consumers[x]=true;end;setmetatable(x,p);local function I(...)x:_resolve(...);end;local function N_39(...)x:_reject(...);end;local function t_40(S)if S then if x._status==p.Status.Cancelled then S();else x._cancellationHook=S;end;end;return x._status==p.Status.Cancelled;end;x._thread=coroutine.create(function()local S,_J,J_41=E(x._source,T,I,N_39,t_40);if not S then N_39(J_41[1]);end;end);task.spawn(x._thread);return x;end;p.new=function(I)return p._new(debug.traceback(nil,2),I);end;p.__tostring=function(I)return string.format("Promise(%s)",I._status);end;p.defer=function(I)local N=debug.traceback(nil,2);return(p._new(N,function(T,t,x)local S;S=p._timeEvent:Connect(function()S:Disconnect();local S,_J_42,J_43=E(N,I,T,t,x);if not S then t(J_43[1]);end;end);end));end;p.async=p.defer;p.resolve=function(...)local I,N=a(...);return p._new(debug.traceback(nil,2),function(E)E(unpack(N,1,I));end);end;p.reject=function(...)local I,N=a(...);return p._new(debug.traceback(nil,2),function(E,E_44)E_44(unpack(N,1,I));end);end;p._try=function(I,N,...)local E,T=a(...);return p._new(I,function(I)I(N(unpack(T,1,E)));end);end;p.try=function(I,...)return p._try(debug.traceback(nil,2),I,...);end;p._all=function(I,N,E)if type(N)~="table"then error(string.format("Please pass a list of promises to %s","Promise.all"),3);end;for T,t in pairs(N)do if not p.is(t)then error(string.format("Non-promise value passed into %s at index %s","Promise.all",tostring(T)),3);end;end;if#N==0 or E==0 then return p.resolve({});end;return p._new(I,function(I,T,t)local x,S,J,B,X={},{},0,0,false;local function H()for k,k_45 in ipairs(S)do k_45:cancel();end;end;local function k(D,...)if X then return;end;J+=1;if E==nil then x[D]=...;else x[J]=...;end;if J>=(E or#N)then X=true;I(x);H();end;end;t(H);for I,t in ipairs(N)do S[I]=t:andThen(function(...)k(I,...);end,function(...)B+=1;if E==nil or#N-B=#I then N(T);end;end;E_46(function()for N,N_47 in ipairs(t)do N_47:cancel();end;end);for N,E in ipairs(I)do t[N]=E:finally(function(...)S(N,...);end);end;end);end;p.race=function(I)assert(type(I)=="table",string.format("Please pass a list of promises to %s","Promise.race"));for N,E in pairs(I)do assert(p.is(E),string.format("Non-promise value passed into %s at index %s","Promise.race",tostring(N)));end;return p._new(debug.traceback(nil,2),function(N,E,T)local t,x={},false;local function S()for J,J_48 in ipairs(t)do J_48:cancel();end;end;local function J(B)return function(...)S();x=true;return B(...);end;end;if T((J(E)))then return;end;for T,B in ipairs(I)do t[T]=B:andThen(J(N),(J(E)));end;if x then S();end;end);end;p.each=function(I,N)assert(type(I)=="table",string.format("Please pass a list of promises to %s","Promise.each"));assert(W(N),string.format("Please pass a handler function to %s!","Promise.each"));return p._new(debug.traceback(nil,2),function(E,T,t)local x,S,J={},{},false;local function B()for X,X_49 in ipairs(S)do X_49:cancel();end;end;t(function()J=true;B();end);t={};for X,H in ipairs(I)do if p.is(H)then if H:getStatus()==p.Status.Cancelled then B();return T(P.new({error="Promise is cancelled",kind=P.Kind.AlreadyCancelled,context=string.format("The Promise that was part of the array at index %d passed into Promise.each was already cancelled when Promise.each began.\10\10That Promise was created at:\10\10%s",X,H._source)}));elseif H:getStatus()==p.Status.Rejected then B();return T(select(2,H:await()));end;local I=H:andThen(function(...)return...;end);table.insert(S,I);t[X]=I;else t[X]=H;end;end;for I,X in ipairs(t)do if p.is(X)then local t_50;t_50,X=X:await();if not t_50 then B();return T(X);end;end;if J then return;end;local t_51=p.resolve(N(X,I));table.insert(S,t_51);local N,S_52=t_51:await();if not N then B();return T(S_52);end;x[I]=S_52;end;E(x);return nil end);end;p.is=function(I)if type(I)~="table"then return false;end;local N=getmetatable(I);if N==p then return true;elseif N==nil then return W(I.andThen);elseif type(N)=="table"and type( v102 (N,"__index"))=="table"and(W( v102 ( v102 (N,"__index"),"andThen")))then return true;end;return false;end;p.promisify=function(l)return function(...)return p._try(debug.traceback(nil,2),l,...);end;end;do local l,I_53;p.delay=function(N)assert(type(N)=="number","Bad argument #1 to Promise.delay, must be a number.");if not(N>=0.016666666666666666)or N==math.huge then N=0.016666666666666666;end;return p._new(debug.traceback(nil,2),function(E,T,t)T=p._getTime();local x=T+N;local N={resolve=E,startTime=T,endTime=x};if I_53==nil then l=N;I_53=p._timeEvent:Connect(function()local S=p._getTime();while l~=nil and l.endTime1 then warn((string.format("When returning a Promise from andThen, extra arguments are discarded! See:\10\10%s",l._source)));end;local I=...;local N=I:andThen(function(...)l:_resolve(...);end,function(...)local e=I._values[1];e=if I._error then(P.new({error=I._error,kind=P.Kind.ExecutionError,context="No stack trace available as this Promise originated from an older version of the Promise library (< v2)"}))else e;if P.isKind(e,P.Kind.ExecutionError)then return l:_reject(e:extend({error="This Promise was chained to a Promise that errored.",trace="",context=string.format("The Promise at:\10\10%s\10...Rejected because it was chained to the following Promise, which encountered an error:\10",l._source)}));end;l:_reject(...);return nil end);if N._status==p.Status.Cancelled then l:cancel();elseif N._status==p.Status.Started then l._parent=N;N._consumers[l]=true;end;return;end;l._status=p.Status.Resolved;l._valuesLength,l._values=a(...);for I,I_56 in ipairs(l._queuedResolve)do coroutine.wrap(I_56)(...);end;l:_finalize();end;p.prototype._reject=function(l,...)if l._status~=p.Status.Started then return;end;l._status=p.Status.Rejected;l._valuesLength,l._values=a(...);if not c_38(l._queuedReject)then for I,I_57 in ipairs(l._queuedReject)do coroutine.wrap(I_57)(...);end;else local I=tostring(...);coroutine.wrap(function()p._timeEvent:Wait();if not l._unhandledRejection then return;end;local N=string.format("Unhandled Promise rejection:\10\10%s\10\10%s",I,l._source);for I,I_58 in ipairs(p._unhandledRejectionCallbacks)do task.spawn(I_58,l,unpack(l._values,1,l._valuesLength));end;if p.TEST then return;end;warn(N);end)();end;l:_finalize();end;p.prototype._finalize=function(l)for I,I_59 in ipairs(l._queuedFinally)do coroutine.wrap(I_59)(l._status);end;l._queuedFinally=nil;l._queuedReject=nil;l._queuedResolve=nil;if not p.TEST then l._parent=nil;l._consumers=nil;end;task.defer(coroutine.close,l._thread);end;p.prototype.now=function(l,I)local N=debug.traceback(nil,2);if l._status==p.Status.Resolved then return l:_andThen(N,function(...)return...;end);else return p.reject(I==nil and(P.new({kind=P.Kind.NotResolvedInTime,error="This Promise was not resolved in time for :now()",context=":now() was called at:\10\10"..N}))or I);end;end;p.retry=function(l,I,...)assert(W(l),"Parameter #1 to Promise.retry must be a function");assert(type(I)=="number","Parameter #2 to Promise.retry must be a number");local N,P={...},select("#",...);return p.resolve(l(...)):catch(function(...)if I>0 then return p.retry(l,I-1,unpack(N,1,P));else return p.reject(...);end;end);end;p.retryWithDelay=function(l,I,N,...)assert(W(l),"Parameter #1 to Promise.retry must be a function");assert(type(I)=="number","Parameter #2 (times) to Promise.retry must be a number");assert(type(N)=="number","Parameter #3 (seconds) to Promise.retry must be a number");local W,P={...},select("#",...);return p.resolve(l(...)):catch(function(...)if I>0 then p.delay(N):await();return p.retryWithDelay(l,I-1,N,unpack(W,1,P));else return p.reject(...);end;end);end;p.fromEvent=function(l,I)I=I or function()return true;end;return p._new(debug.traceback(nil,2),function(W,N,N_60)local P;local a=false;local function e()P:Disconnect();P=nil;end;P=l:Connect(function(...)local l=I(...);if l==true then W(...);if P then e();else a=true;end;elseif type(l)~="boolean"then error("Promise.fromEvent predicate should always return a boolean");end;end);if a and P then e();return;end;N_60(e);end);end;p.onUnhandledRejection=function(l)table.insert(p._unhandledRejectionCallbacks,l);return function()local I=table.find(p._unhandledRejectionCallbacks,l);if I then table.remove(p._unhandledRejectionCallbacks,I);end;end;end;return p;end tbl17.ay = function() local ay = tbl17.cache.ay if not ay then local ay2 = { c = fn35() } tbl17.cache.ay = ay2 ay = ay2 end return ay.c end end do -- az local function fn35() local v115 = tbl17.b() local v116 = tbl17.ay() local v117 = tbl17.a() local v118 = tbl17.e() local v119 = cloneref(game:GetService(v86[182])) local tbl18 = { Arial = Enum.Font.Arial, Roboto = Enum.Font.Roboto, Ubuntu = Enum.Font.Ubuntu, Inconsolata = Enum.Font.Code, } local tbl19 = { Minecraftia = { Url = "https://github.com/kiciahook-org/v3-assets/raw/refs/heads/main/Minecraftia-Regular.ttf", FileName = "Minecraftia-Regular.ttf", Weight = Enum.FontWeight.Regular, Style = Enum.FontStyle.Normal, }, [v86[43]] = { Url = "https://github.com/kiciahook-org/v3-assets/raw/refs/heads/main/Proggy-Clean.ttf", FileName = "Proggy-Clean.ttf", Weight = Enum.FontWeight.Regular, Style = Enum.FontStyle.Normal, }, [v86[125]] = { Url = "https://github.com/kiciahook-org/v3-assets/raw/refs/heads/main/Proggy-Tiny.ttf", FileName = "Proggy-Tiny.ttf", Weight = Enum.FontWeight.Regular, Style = Enum.FontStyle.Normal, }, } local font = Font.fromEnum(Enum.Font.SourceSans) local index2 = { Order = { "Minecraftia", "Proggy Clean", v86[125], "Arial", v86[24], "Ubuntu", "Inconsolata" }, } index2.__index = index2 local function fn36(arg) return arg == Enum.FontStyle.Italic and "italic" or "normal" end local function fn37(arg, arg2) return v116.new(function(arg3) local str7 = string.format("%s/%s", "kiciarebuild/fonts", tostring(arg2.FileName)) if not isfile(str7) then local v120, v121 = v107(function() return game:HttpGet(arg2.Url) end) if not v120 or type(v121) ~= "string" then local v122 = tostring arg3(v117.err("Fonts", "fetch", string.format("HttpGet failed for %s: %s", tostring(arg2.Url), v122(v121)))) return end local v122, v123 = v107(writefile, str7, v121) if not v122 then local v124 = tostring arg3(v117.err("Fonts", "write", string.format("writefile failed for %s: %s", tostring(str7), v124(v123)))) return end end local v120, v121 = v107(getcustomasset, str7) local flag19 = not v120 if not flag19 then local v122 = v86[165] flag19 = type(v121) ~= v122 end if flag19 then local v122 = tostring arg3(v117.err("Fonts", "asset", string.format("getcustomasset failed for %s: %s", tostring(str7), v122(v121)))) return end local tbl20 = { name = arg, faces = { { name = "Regular", weight = arg2.Weight.Value, style = fn36(arg2.Style), assetId = v121 } }, } local str8 = string.format("%s/%s.json", "kiciarebuild/fonts", tostring(arg)) local v122, v123 = v107(writefile, str8, v119:JSONEncode(tbl20)) if not v122 then local v124 = tostring arg3(v117.err("Fonts", v86[166], string.format("writefile failed for %s: %s", tostring(str8), v124(v123)))) return end local v124, v125 = v107(getcustomasset, str8) if not v124 or type(v125) ~= "string" then local v126 = tostring arg3(v117.err(v86[104], v86[151], string.format("getcustomasset failed for %s: %s", tostring(str8), v126(v125)))) return end arg3(v117.ok(Font.new(v125, arg2.Weight, arg2.Style))) end) end index2._New = function() return setmetatable({ _initialized = false, _fontByName = {} }, index2) end index2.Initialize = function(arg) if arg._initialized then return v117.VoidOk end arg._initialized = true for k, v120 in tbl18, nil, nil do arg._fontByName[k] = Font.fromEnum(v120) end v118("kiciarebuild/fonts") local tbl20 = {} local flag19 = true for k, v120 in tbl19, nil, nil do table.insert(tbl20, fn37(k, v120):andThen(function(arg2) if arg2.Ok then arg._fontByName[k] = arg2.Value else arg._fontByName[k] = font flag19 = false v115.get():Report(arg2.Error) end end)) end v116.all(tbl20):await() return flag19 and v117.VoidOk or v117.err("Fonts", "Initialize", "Failed to load all fonts") end index2.Get = function(arg, arg2) return arg._fontByName[arg2] or font end return index2._New() end tbl17.az = function() local az = tbl17.cache.az if not az then az = { c = fn35() } tbl17.cache.az = az end return az.c end end do -- aA local function fn35() local v115 = tbl17.k() local tweenService = tbl17.t().TweenService local index2 = {} index2.__index = index2 local tweenInfo = TweenInfo.new(0.1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tweenInfo2 = TweenInfo.new(0.07, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tweenInfo3 = TweenInfo.new(0.12, Enum.EasingStyle.Quad, Enum.EasingDirection.In) local function fn36(arg) return math.ceil(arg * 1.25) + 10 end local tbl18 = { ["&"] = "&", ["<"] = "<", [">"] = ">" } local function fn37(arg) return (arg:gsub("[&<>]", tbl18)) end local function fn38(arg, arg2, arg3) if type(arg) == "string" then return arg end local v116 = table.create(#arg) for k, v117 in arg, nil, nil do local v118 = (v117.Accent and arg3 or v117.Color or arg2):ToHex() local v119 = fn37(v117.Text) v116[k] = string.format("%s", tostring(v118), tostring(v119)) end return table.concat(v116, "") end local function fn39(arg, arg2) return UDim2.new(arg, 0, 0.5, arg2) end index2.new = function(arg, arg2, arg3, arg4, arg5) local v116 = v115.new() local v117 = v116:Extend() local alignX = arg.AlignX local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.Size = UDim2.new(v86[63], v86[186], 0, fn36(arg3.Size)) frame.LayoutOrder = arg.Order v116:Add(frame) local instance = Instance.new(v86[128]) instance.BackgroundColor3 = arg3.Background instance.BackgroundTransparency = 1 instance.BorderSizePixel = 0 instance.AnchorPoint = Vector2.new(alignX, 0.5) instance.Position = fn39(alignX, -v86[9]) instance.Size = UDim2.fromOffset(v86[186], 0) instance.AutomaticSize = Enum.AutomaticSize.XY instance.Parent = frame local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[26]) uiCorner.Parent = instance local uiStroke = Instance.new("UIStroke") uiStroke.Color = arg3.Accent uiStroke.Transparency = 1 uiStroke.Parent = instance local instance2 = Instance.new(v86[113]) instance2.PaddingTop = UDim.new(0, 5) instance2.PaddingBottom = UDim.new(v86[186], 5) instance2.PaddingLeft = UDim.new(v86[186], 10) instance2.PaddingRight = UDim.new(v86[186], v86[133]) instance2.Parent = instance local textLabel = Instance.new("TextLabel") textLabel.BackgroundTransparency = 1 textLabel.BorderSizePixel = 0 textLabel.Size = UDim2.fromOffset(0, 0) textLabel.AutomaticSize = Enum.AutomaticSize.XY textLabel.FontFace = arg3.Font textLabel.RichText = true textLabel.Text = fn38(arg2, arg3.TextColor, arg3.Accent) textLabel.TextColor3 = arg3.TextColor textLabel.TextSize = arg3.Size textLabel.TextTransparency = v86[63] textLabel.TextXAlignment = Enum.TextXAlignment.Left textLabel.TextYAlignment = Enum.TextYAlignment.Center textLabel.Parent = instance frame.Parent = arg.Parent local tbl19 = { _trove = v116, _motionTrove = v117, _ghost = frame, _bar = instance, _stroke = uiStroke, _label = textLabel, _alignX = alignX, _dismissing = false, _destroyed = false, _onDestroyed = arg5, } setmetatable(tbl19, index2) tbl19:_AnimateIn() if arg4 > 0 then v116:Add(task.delay(arg4, function() tbl19:Dismiss() end)) end return tbl19 end index2._AnimateIn = function(arg) local trove = arg._trove local motionTrove = arg._motionTrove local bar = arg._bar trove:Add(tweenService:Create(bar, tweenInfo, { BackgroundTransparency = 0.4 })):Play() trove:Add(tweenService:Create(arg._stroke, tweenInfo, { Transparency = 0.4 })):Play() trove:Add(tweenService:Create(arg._label, tweenInfo, { TextTransparency = v86[186] })):Play() local v116 = motionTrove:Add(tweenService:Create(bar, tweenInfo, { Position = fn39(arg._alignX, 4) })) motionTrove:Connect(v116.Completed, function() if arg._dismissing then return end motionTrove:Add(tweenService:Create(bar, tweenInfo2, { Position = fn39(arg._alignX, v86[186]) })):Play() end) v116:Play() end index2.SetLayout = function(arg, arg2) if arg._destroyed then return end arg._motionTrove:Clean() arg._alignX = arg2.AlignX arg._ghost.LayoutOrder = arg2.Order arg._bar.AnchorPoint = Vector2.new(arg2.AlignX, v86[101]) if arg._dismissing then arg:_AnimateOut() else arg._bar.Position = fn39(arg2.AlignX, 0) end end index2._AnimateOut = function(arg) local v116 = arg._motionTrove:Add(tweenService:Create(arg._bar, tweenInfo3, { Position = fn39(arg._alignX, -v86[9]), BackgroundTransparency = v86[63] })) arg._motionTrove:Connect(v116.Completed, function() arg:Destroy() end) v116:Play() end index2.Dismiss = function(arg) if arg._dismissing then return end arg._dismissing = true arg._trove:Add(tweenService:Create(arg._stroke, tweenInfo3, { Transparency = 1 })):Play() -- (fix) decompiler dropped the receiver: v116 was never assigned, so this crashed on Dismiss arg._trove:Add(tweenService:Create(arg._label, tweenInfo3, { TextTransparency = v86[63] })):Play() arg:_AnimateOut() end index2.Destroy = function(arg) if arg._destroyed then return end arg._destroyed = true arg._trove:Destroy() arg._onDestroyed() end return index2 end tbl17.aA = function() local aa = tbl17.cache.aA if not aa then local aa2 = { c = fn35() } tbl17.cache.aA = aa2 aa = aa2 end return aa.c end end do -- aB local function fn35() tbl17.r() local v115 = tbl17.aA() local v116 = tbl17.t() local v117 = tbl17.k() local v118 = tbl17.w() local index2 = {} index2.__index = index2 local function fn36() local currentCamera = workspace.CurrentCamera if currentCamera == nil then return 16, 16, 16, 16 end local insetArea = v116.GuiService:GetInsetArea(Enum.ScreenInsets.CoreUISafeInsets) local viewportSize = currentCamera.ViewportSize local n = v86[13] + math.max(0, insetArea.Min.X) local n33 = v86[13] + math.max(0, insetArea.Min.Y) local n34 = 16 + math.max(0, viewportSize.X - insetArea.Max.X) return n33, v86[13] + math.max(v86[186], viewportSize.Y - insetArea.Max.Y), n, n34 end local tbl18 = { TopLeft = { AlignX = 0, Valign = Enum.VerticalAlignment.Top }, TopRight = { AlignX = 1, Valign = Enum.VerticalAlignment.Top }, BottomLeft = { AlignX = 0, Valign = Enum.VerticalAlignment.Bottom }, BottomRight = { AlignX = 1, Valign = Enum.VerticalAlignment.Bottom }, Center = { AlignX = v86[101], Valign = Enum.VerticalAlignment.Top }, Crosshair = { AlignX = 0.5, Valign = Enum.VerticalAlignment.Center, Crosshair = true }, } index2.SideSpecs = { "TopLeft", "TopRight", "BottomLeft", v86[52], "Center", "Crosshair" } local tbl19 = { success = Color3.fromRGB(72, 199, v86[15]), warning = Color3.fromRGB(255, 183, v86[109]), error = Color3.fromRGB(v86[79], v86[58], 82), } local v119 = nil index2.use = function(arg, arg2, arg3, arg4, displayOrder) if v119 ~= nil then return v119 end local v120 = v117.new() local v121 = v120:Add(Instance.new("ScreenGui")) v121.IgnoreGuiInset = true v121.ZIndexBehavior = Enum.ZIndexBehavior.Sibling v121.DisplayOrder = displayOrder v121.Parent = K.hudParent() local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.Size = UDim2.fromScale(v86[63], 1) frame.Parent = v121 local uiPadding = Instance.new("UIPadding") uiPadding.PaddingTop = UDim.new(v86[186], v86[13]) uiPadding.PaddingBottom = UDim.new(0, 16) uiPadding.PaddingLeft = UDim.new(0, 16) uiPadding.PaddingRight = UDim.new(0, 16) uiPadding.Parent = frame local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(0, v86[54]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.Parent = frame local tbl20 = { _trove = v120, _config = arg, _pathByKey = { Enabled = v118.appendPath(arg2, "Enabled"), Side = v118.appendPath(arg2, "Side"), Size = v118.appendPath(arg2, "Size"), Font = v118.appendPath(arg2, v86[59]), Offset = v118.appendPath(arg2, "Offset"), ThemeAccent = v118.appendPath(arg3, "Accent"), ThemeBackground = v118.appendPath(arg3, "Background"), ThemeText = v118.appendPath(arg3, "TextColor"), TextColor = v118.appendPath(arg3, "TextColor"), }, _resolveFont = arg4, _container = frame, _margin = uiPadding, _list = uiListLayout, _stack = {}, _counter = v86[186], _destroyed = false, } setmetatable(tbl20, index2) v120:Connect(arg:GetPropertyChangedSignal(tbl20._pathByKey.Side), function() tbl20:_ApplyLayout() end) v120:Connect(arg:GetPropertyChangedSignal(tbl20._pathByKey.Offset), function() tbl20:_ApplyLayout() end) v120:Connect(arg:GetPropertyChangedSignal(tbl20._pathByKey.Enabled), function() if not tbl20:_ApplyLayout() then tbl20:Clear() end end) v118.connectCurrentCameraViewport(v120, function() tbl20:_ApplyLayout() end) v119 = tbl20 return tbl20 end index2.get = function() assert(v119, "Notifications is not ready yet") return v119 end index2.template = function(arg, arg2) local tbl20 = {} local n = 1 while v86[34] do local pos, v120, v121 = arg:find("%%(%w+)%%", n) if not (pos == nil or v120 == nil or v121 == nil) then if n < pos then table.insert(tbl20, { Text = arg:sub(n, pos - 1) }) end local v122 = arg2[v121] if v122 ~= nil then table.insert(tbl20, { Text = v122, Accent = v86[34] }) else table.insert(tbl20, { Text = arg:sub(pos, v120) }) end n = v120 + 1 continue end break end if n <= #arg then table.insert(tbl20, { Text = arg:sub(n) }) end return tbl20 end index2._Get = function(arg, arg2) local _p = arg._pathByKey[arg2] if _p == nil then return nil end return arg._config:Get(_p, true) end index2._SideSpec = function(arg) return tbl18[arg:_Get(v86[50])] or tbl18.TopRight end index2._ResolveTheme = function(arg, arg2) local color = arg2.Color local intent = arg2.Intent if color == nil and intent ~= nil then color = tbl19[intent] end return { Accent = color or arg:_Get("ThemeAccent"), Background = arg:_Get("ThemeBackground"), TextColor = arg:_Get(v86[57]), Font = arg._resolveFont(arg:_Get("Font")), Size = arg:_Get(v86[29]), } end index2._ApplyLayout = function(arg) local v120 = arg:_SideSpec() local n, n33, v121, v122 = fn36() if v120.Crosshair then n33 = 16 n = 16 end arg._margin.PaddingTop = UDim.new(0, n) arg._margin.PaddingBottom = UDim.new(0, n33) arg._margin.PaddingLeft = UDim.new(0, v121) arg._margin.PaddingRight = UDim.new(v86[186], v122) local visible = arg:_Get(v86[44]) == true arg._container.Visible = visible if v120.Crosshair then local Offset = arg:_Get("Offset") or 0 if Offset >= 0 then arg._list.VerticalAlignment = Enum.VerticalAlignment.Top arg._container.Position = UDim2.new(0, v86[186], 0.5, Offset) arg._container.Size = UDim2.new(1, 0, 0.5, -Offset) else arg._list.VerticalAlignment = Enum.VerticalAlignment.Bottom arg._container.Position = UDim2.fromScale(v86[186], 0) arg._container.Size = UDim2.new(v86[63], 0, 0.5, Offset) end else arg._list.VerticalAlignment = v120.Valign arg._container.Position = UDim2.fromScale(0, 0) arg._container.Size = UDim2.fromScale(1, 1) end for k, v123 in arg._stack, nil, nil do v123:SetLayout({ Parent = arg._container, Order = arg._list.VerticalAlignment == Enum.VerticalAlignment.Bottom and k or -k, AlignX = v120.AlignX, }) end return visible end index2.Notify = function(arg, arg2, arg3) if arg._destroyed or not arg:_Get("Enabled") then return end arg3 = arg3 or {} local v120 = arg:_SideSpec() arg._counter = arg._counter + 1 local tbl20 = { Parent = arg._container, Order = arg._list.VerticalAlignment == Enum.VerticalAlignment.Bottom and arg._counter or -arg._counter, AlignX = v120.AlignX, } local lifetime = arg3.Lifetime or 6 local new = nil local function fn37() local v121 = table.find(arg._stack, new) if v121 ~= nil then table.remove(arg._stack, v121) end end new = v115.new new = new(tbl20, arg2, arg:_ResolveTheme(arg3), lifetime, fn37) table.insert(arg._stack, new) while #arg._stack > v86[160] do arg._stack[v86[63]]:Destroy() end end index2.Clear = function(arg) if arg._destroyed then return end for _, v120 in table.clone(arg._stack) do v120:Dismiss() end end index2.Destroy = function(arg) if arg._destroyed then return end arg._destroyed = true for _, v120 in table.clone(arg._stack) do v120:Destroy() end table.clear(arg._stack) arg._trove:Destroy() if v119 == arg then v119 = nil end end return index2 end tbl17.aB = function() local ab = tbl17.cache.aB if not ab then ab = { c = fn35() } tbl17.cache.aB = ab end return ab.c end end do -- aC local function fn35() tbl17.ab() tbl17.r() local v115 = tbl17.az() tbl17.af() local v116 = tbl17.aB() tbl17.an() local v117 = tbl17.u() tbl17.ar() local v118 = tbl17.A() tbl17.k() local v119 = tbl17.w() local tbl18 = { { Key = v86[139], Label = "Accent" }, { Key = "Background", Label = "Background" }, { Key = "ElementBackground", Label = "Element Background" }, { Key = "Outline", Label = "Outline" }, { Key = "TabButtonSelected", Label = "Selected Tab" }, { Key = "TextColor", Label = "Text" }, { Key = v86[96], Label = v86[136] }, { Key = "ToggleCircleUnselected", Label = "Toggle Circle" }, { Key = "ToggleBackgroundUnselected", Label = "Toggle Background" }, } local function fn36(arg, arg2, arg3) local v120 = arg3:AddSection({ Title = "Menu", Side = "left" }) local stateData = arg:GetStateData() if not v117.IsMobile() then local v121 = v120:AddKeybind({ Label = v86[106], Modes = { v86[194], v86[3] }, InKeybindList = true, ListLabel = "Menu", RegistrationKey = "settings/menu/keybind", }) v121:SetFeatureEnabled(true) v121:SetShowInList(stateData == nil or stateData.MenuKeybindInList ~= false, true) v121:Set({ Key = arg.Keybind, Mode = v121.Value.Mode }, true) v121:Connect(v121.ShowInListChanged, function(menuKeybindInList) if stateData ~= nil then stateData.MenuKeybindInList = menuKeybindInList arg:SaveState() end end) v121:OnChanged(function(arg4) local keybind = arg4.Key if typeof(keybind) ~= "EnumItem" then return end arg.Keybind = keybind if stateData ~= nil then local v122 = v119.serializeKey(keybind) if v122 ~= nil then stateData.Keybind = v122 end arg:SaveState() end end) end if not v117.IsMobile() then v120:AddToggle({ Label = "Show Keybinds", Default = arg2.IsKeybindListEnabled(), OnChanged = arg2.SetKeybindListEnabled, }) end v120:AddToggle({ Label = v86[129], Default = arg2.IsWatermarkEnabled(), OnChanged = arg2.SetWatermarkEnabled }) if v117.WantsMobileButtons() then v120:AddToggle({ Label = "Hide Floating Menu Button", Default = stateData ~= nil and stateData.HideMobileMenuButton == true, OnChanged = arg2.SetMenuPillHidden, }) v120:AddButton({ Label = "Edit On-screen Keybinds", OnClick = arg2.EnterMobileButtonDragMode }) end end local function fn37(arg, arg2) if arg.Ok then return false end local str7 = tostring(arg.Error.Detail) v116.get():Notify({ { Text = arg2 .. " failed: " }, { Text = str7 } }) return true end local function fn38(arg, arg2, arg3) local persistence = arg:GetPersistence() local stateData = arg:GetStateData() local v120 = arg3:AddSection({ Title = "Whole-Menu Profiles", Side = v86[42] }) local v121 = arg3:AddSection({ Title = "Transfer", Side = "right" }) local v122 = arg3:AddSection({ Title = "Automation", Side = "right" }) local function fn39() if persistence ~= nil then return persistence:AllConfigs() end return {} end local v123 = fn39() local v124 = v120:AddTextBox({ Label = "Config Name" }) local v125 = v120:AddButton({ Label = "Create Config" }) local v126 = v120:AddList({ Label = "Configs", Options = v123, Height = 140, Search = true }) local function fn40() v126:SetOptions(fn39()) end v125:Connect(v125.Clicked, function() local str7 = v124.Value:gsub("%s+", "") if str7 == "" then return end if fn37(persistence:CreateDefault(str7), "Creating config") then return end fn40() v126:Set(str7) end) local v127 = v120:AddButton({ Label = "Refresh List" }) v120:AddButton({ Label = "Load Selected Config", Confirm = true, OnClick = function() local value = v126.Value if type(value) == "string" then fn37(persistence:LoadFromFile(value), "Loading config") end end, }) v120:AddButton({ Label = "Save to Selected Config", Confirm = v86[34], OnClick = function() local value = v126.Value if type(value) == "string" and value ~= "" then fn37(persistence:SaveToFile(value), "Saving config") end end, }) local v128 = v120:AddButton({ Label = "Delete Selected Config", Confirm = true }) v121:AddButton({ Label = "Export to Clipboard", OnClick = function() local v129 = persistence:ExportToJson() if v129.Ok then setclipboard(v129.Value) v116.get():Notify("Copied your current config to the clipboard") else fn37(v129, "Exporting config") end end, }) local v129 = v121:AddTextBox({ Label = "Import (paste config)", FocusLostOnly = true }) v121:AddButton({ Label = "Import Config", Confirm = true, OnClick = function() local value = v129.Value if value ~= "" then fn37(persistence:LoadFromJson(value), "Importing config") end end, }) local v130 = v122:AddToggle({ Label = "Auto Save" }) local v131 = v122:AddDropdown({ Label = "Profile to Auto Save", Options = v123, GetOptions = fn39, CloseOnSelect = true }) local v132 = v122:AddToggle({ Label = "Auto Load" }) local v133 = v122:AddDropdown({ Label = "Profile to Auto Load", Options = v123, GetOptions = fn39, CloseOnSelect = true }) v128:Connect(v128.Clicked, function() local value = v126.Value if type(value) ~= "string" then return end if fn37(persistence:DeleteFile(value), "Deleting config") then return end if stateData ~= nil then if stateData.AutoSaveConfigName == value then stateData.AutoSaveConfigName = nil v131:Set(nil, true) end if stateData.AutoLoadConfigName == value then stateData.AutoLoadConfigName = nil v133:Set(nil, true) end arg:SaveState() end fn40() end) local function fn41() if stateData == nil then return end v130:Set(stateData.AutoSave, true) v131:Set(stateData.AutoSaveConfigName, true) v132:Set(stateData.AutoLoad, true) v133:Set(stateData.AutoLoadConfigName, true) local autoSaveConfigName = stateData.AutoSaveConfigName or stateData.AutoLoadConfigName if autoSaveConfigName ~= nil then v126:Set(autoSaveConfigName, true) end end v127:Connect(v127.Clicked, function() fn40() fn41() end) fn41() local function fn42() if stateData == nil then return end stateData.AutoSave = v130.Value stateData.AutoLoad = v132.Value local value = v131.Value stateData.AutoSaveConfigName = type(value) == "string" and value ~= "" and value or nil local value2 = v133.Value stateData.AutoLoadConfigName = type(value2) == "string" and value2 ~= "" and value2 or nil arg:SaveState() end v130:OnChanged(fn42) v131:OnChanged(fn42) v132:OnChanged(fn42) v133:OnChanged(fn42) local flag19 = v86[153] local v134 = arg2:Extend() arg2:Connect(persistence.Reloaded, function() flag19 = false v134:Clean() end) arg2:Connect(persistence.Changed, function() if flag19 then return end flag19 = v86[34] v134:Clean() v134:Add(task.defer(function() flag19 = false if stateData == nil or not stateData.AutoSave then return end local autoSaveConfigName = stateData.AutoSaveConfigName if autoSaveConfigName ~= nil then fn37(persistence:SaveToFile(autoSaveConfigName), "Auto-saving config") end end)) end) end local function fn39(arg, arg2, arg3, arg4, arg5) local v120 = arg4:AddTab({ Label = "Theme" }) local v121 = v120:Grid({ Columns = 1 }) local v122 = v121:AddSection({ Title = "Theme Colors", Side = "full" }) local config = arg:GetConfig() local function fn40(arg6, arg7) if arg6 == "Accent" then arg2.SetAccent(arg7) else v118.refresh(arg6, arg7) end end for _, v123 in tbl18, nil, nil do local v124 = v118.get(v123.Key) local v125 if config ~= nil then local v126 = config:Get(v119.appendPath(arg5, v123.Key)) if typeof(v126) ~= "Color3" then v125 = v124 else v125 = v126 end else v125 = v124 end fn40(v123.Key, v125) local v126 = v122:AddColor({ Label = v123.Label, Default = { Rgb = v125, Alpha = 1 }, OnChanged = function(arg6) if config ~= nil then local rgb = arg6.Rgb config:Set(v119.appendPath(arg5, v123.Key), rgb) else fn40(v123.Key, arg6.Rgb) end end, }) if config ~= nil then arg3:Connect(config:Changed(v119.appendPath(arg5, v123.Key)), function(arg6) if typeof(arg6) ~= "Color3" then return end fn40(v123.Key, arg6) v126:Set({ Rgb = arg6, Alpha = 1 }, true) end) end end return { Page = v120, Grid = v121 } end local function KiciaQueueTeleport() local qf = K.fn("queue_on_teleport") or K.fn("queueonteleport") if type(qf) ~= "function" then return end local best, bestLen = nil, -1 for level = 0, 40 do local ok, info = pcall(debug.getinfo, level, "S") if not ok or type(info) ~= "table" then break end local s = info.source or info.short_src or "" if type(s) == "string" and s:sub(1, 1) == "@" then local ok2, content = pcall(readfile, s:sub(2)) if ok2 and type(content) == "string" and #content > bestLen then best, bestLen = content, #content end end end if best ~= nil then pcall(qf, best) end end local function fn40(arg, arg2, arg3) local t = arg:AddToggle({ Label = "Re-run After Teleport", Config = arg3 }) pcall(function() t:OnChanged(function(v) if v then KiciaQueueTeleport() end end) end) pcall(function() if arg2:GetConfig():Get(arg3) then KiciaQueueTeleport() end end) local stateData = arg2:GetStateData() arg:AddToggle({ Label = v86[142], Default = stateData ~= nil and stateData.SilentLoad == true, OnChanged = function(silentLoad) if stateData ~= nil then stateData.SilentLoad = silentLoad arg2:SaveState() end end, }) end local function fn41(arg, arg2) arg:AddToggle({ Label = "Enable Notifications", Config = v119.appendPath(arg2, "Enabled") }) arg:AddDropdown({ Label = v86[189], Options = v116.SideSpecs, Config = v119.appendPath(arg2, v86[50]) }) arg:AddSlider({ Label = "Crosshair Offset", Tooltip = "Distance from screen center for the Crosshair side. Negative is above, positive below.", Min = -500, Max = 500, Default = 0, Suffix = "px", Config = v119.appendPath(arg2, "Offset"), }) arg:AddSlider({ Label = "Text Size", Min = v86[133], Max = 28, Config = v119.appendPath(arg2, "Size") }) arg:AddDropdown({ Label = "Font", Options = v115.Order, Config = v119.appendPath(arg2, v86[59]) }) end return function(arg, arg2, arg3, arg4, arg5, arg6, arg7) local v120 = arg2:AddTab({ Label = "General", Icon = "rbxassetid://106205298246017" }) local v121 = v120:Grid({ Columns = 2 }) fn36(arg, arg4, v121) local v122 = arg2:AddTab({ Label = "Config Profiles" }) local v123 = v122:Grid({ Columns = 2 }) fn38(arg, arg3, v123) local v124 = fn39(arg, arg4, arg3, arg2, arg5) fn40(v121:AddSection({ Title = "Startup", Side = "left" }), arg, arg7) fn41(v121:AddSection({ Title = "Notifications", Side = "right" }), arg6) v121:AddSection({ Title = v86[199], Side = "right" }):AddButton({ Label = "Unload KiciaHook", Confirm = true, OnClick = arg4.Unload }) return { General = { Page = v120, Grid = v121 }, ConfigProfiles = { Page = v122, Grid = v123 }, Theme = v124 } end end tbl17.aC = function() local ac = tbl17.cache.aC if not ac then local ac2 = { c = fn35() } tbl17.cache.aC = ac2 ac = ac2 end return ac.c end end do -- aD local function fn35() tbl17.r() local v115 = tbl17.ag() local v116 = tbl17.ac() local v117 = tbl17.s() local v118 = tbl17.ae() local v119 = tbl17.ah() local v120 = tbl17.ai() local v121 = tbl17.aj() local v122 = tbl17.ak() local v123 = tbl17.u() local v124 = tbl17.x() local v125 = tbl17.al() local v126 = tbl17.t() local v127 = tbl17.g() tbl17.ar() local v128 = tbl17.A() local v129 = tbl17.as() local v130 = tbl17.k() local v131 = tbl17.at() local v132 = tbl17.w() local v133 = tbl17.av() local v134 = tbl17.ax() local v135 = tbl17.aC() local userInputService = v126.UserInputService local runService = v126.RunService local index2 = {} index2.__index = index2 local semiBold = v117.SemiBold local function fn36(arg) local chrome = arg._chrome assert(chrome ~= nil, "menu chrome accessed during construction") return chrome end local function createScreenGui(displayOrder, enabled) local screenGui = Instance.new("ScreenGui") screenGui.Enabled = enabled screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling screenGui.IgnoreGuiInset = true screenGui.DisplayOrder = displayOrder screenGui.OnTopOfCoreBlur = true return screenGui end local function fn37(arg) local chrome = arg._chrome if chrome == nil then return end local menuFrame = chrome.Window.MenuFrame local v136 = v132.onScreenKeyboardTop() if v136 == nil then local keyboardBaseY = arg._keyboardBaseY if keyboardBaseY ~= nil then arg._keyboardBaseY = nil if not arg.Dragging then arg:Tween(menuFrame, { Position = UDim2.fromOffset(menuFrame.Position.X.Offset, keyboardBaseY) }) end end return end if arg.Dragging then return end local focusedTextBox = userInputService:GetFocusedTextBox() if focusedTextBox == nil or not focusedTextBox:IsDescendantOf(menuFrame) then return end local n = v132.absoluteToLayerOffset(arg._gui, focusedTextBox.AbsolutePosition).Y + focusedTextBox.AbsoluteSize.Y + 8 - v136 if n <= v86[186] then return end local offset = menuFrame.Position.Y.Offset if arg._keyboardBaseY == nil then arg._keyboardBaseY = offset end local n33 = math.max(0, math.floor(offset - n + 0.5)) if n33 ~= offset then arg:Tween(menuFrame, { Position = UDim2.fromOffset(menuFrame.Position.X.Offset, n33) }) end end index2.new = function(arg) local v136 = v130.new() local directory = arg.Directory v132.ensureStorageDirectories(directory) local state = arg.State local stateData = arg.StateData if state == nil or stateData == nil then state = v118.new(directory) stateData = state:Load() end local v137 = createScreenGui(v86[45], v86[34]) local v138 = createScreenGui(v86[91], true) local v139 = createScreenGui(110, false) local v140 = v136:Add(v127.new()) local v141 = v122.new(v136, v139, v140) local Default = semiBold if arg.ResolveFont ~= nil then Default = arg.ResolveFont("Default") end local obj = setmetatable({ _trove = v136, Title = arg.Title or "khook.lua", Icon = arg.Icon or "rbxassetid://118838006164746", Directory = directory, ConfigVersion = arg.ConfigVersion or v86[63], Fonts = { Main = Default }, Visible = false, Dragging = false, Keybind = Enum.KeyCode.RightShift, AccentChanged = v136:Add(v127.new()), FontChanged = v136:Add(v127.new()), VisibilityChanged = v140, _gui = v138, _hud = v137, _overlay = v139, _tweener = v131.new(), _overlays = v141, _cursor = v136:Add(v115.new(v136)), _chrome = nil, _dialog = nil, _config = arg.Config, _colorAnimation = arg.ColorAnimation, _persistence = arg.Persistence, _state = state, _stateData = stateData, _themePath = arg.ThemePath or { "Theme" }, _notificationPath = arg.NotificationPath or { "Notifications" }, _autoExecuteEnabledPath = arg.AutoExecuteEnabledPath or { "AutoExecuteScript", "Enabled" }, _onUnload = arg.OnUnload, _watermarkUsername = v126.Players.LocalPlayer and v126.Players.LocalPlayer.Name or "Username", _updateCallbackById = {}, _nextUpdateId = 0, _updateCount = 0, _renderConnection = nil, _tooltip = nil, _keybindCapture = nil, _keybindList = nil, _mobileButtons = nil, _menuPill = nil, _keyboardBaseY = nil, }, index2) local v142 = v132.deserializeKey(stateData and stateData.Keybind) if typeof(v142) == "EnumItem" then obj.Keybind = v142 end local v143 = getthreadidentity() setthreadidentity(8) for _, v144 in { v137, v138, v139 }, nil, nil do v136:Add(v144) v144.Parent = v126.CoreGui end setthreadidentity(v143) local tbl18 = { Title = obj.Title, Icon = obj.Icon, Username = obj._watermarkUsername } obj._chrome = { Window = v134.new(obj:View(), v138, v136, tbl18), Watermark = v133.new(obj:View(), v137, v136, tbl18), SearchPalette = v125.new(obj:View(), v136), } if not v123.IsMobile() then obj._keybindList = v120.new(obj:View(), v137, v136) end if v123.WantsMobileButtons() then local menuToggle = obj:RegisterMobileButton("menu_toggle", "Menu", "Toggle", function(arg2) obj:SetVisible(arg2) end) obj._menuPill = menuToggle if menuToggle ~= nil then if stateData ~= nil and stateData.HideMobileMenuButton then menuToggle:SetInvisible(v86[34]) end v136:Connect(v140, function(arg2) menuToggle:SetActive(arg2) end) end end v136:Connect(v140, function(enabled) obj._cursor:Set(enabled) obj._overlay.Enabled = enabled end) v136:Connect(userInputService.InputBegan, function(arg2, arg3) if arg3 then return end if obj:ShouldBlockKeybindCapture(arg2) then return end local userInputType = arg2.UserInputType if arg2.UserInputType == Enum.UserInputType.Keyboard then userInputType = arg2.KeyCode end if userInputType == obj.Keybind then obj:SetVisible(not obj.Visible) end end) if v123.IsMobile() then local function fn38() fn37(obj) end v132.connectOnScreenKeyboard(v136, fn38) v136:Connect(userInputService.TextBoxFocused, fn38) end return obj end index2.View = function(arg) return arg end index2.AddTab = function(arg, arg2) return fn36(arg).Window:AddTab(arg2) end index2.Dialog = function(arg, arg2, arg3) local dialog = arg._dialog if dialog ~= nil then dialog:Close() end if not arg.Visible then arg:SetVisible(true, true) end local v136 = nil local trove = arg._trove local v137 = v116.new(arg:View(), fn36(arg).Window.MenuFrame, trove, arg2, function() if arg._dialog == v136 then arg._dialog = nil end end) v136 = v137 arg._dialog = v137 if arg3 ~= nil then local v138, v139 = v107(arg3, v137) if not v138 then v137:Destroy() error(v139, 2) end end v137:_Open() return v137 end index2.AddSettingsTab = function(arg) local v136 = arg:AddTab({ Label = "Settings", Icon = "rbxassetid://106205298246017", Description = "Menu preferences, config management, and theme customization.", }) local trove = arg._trove return v136, (v135(arg:View(), v136, trove, { SetAccent = function(arg2) arg:SetAccent(arg2) end, SetWatermarkEnabled = function(arg2) arg:SetWatermarkEnabled(arg2) end, IsWatermarkEnabled = function() return arg:IsWatermarkEnabled() end, SetKeybindListEnabled = function(arg2) arg:SetKeybindListEnabled(arg2) end, IsKeybindListEnabled = function() return arg:IsKeybindListEnabled() end, SetMenuPillHidden = function(arg2) arg:SetMenuPillHidden(arg2) end, EnterMobileButtonDragMode = function() arg:EnterMobileButtonDragMode(function() arg:SetVisible(v86[34]) end) end, Unload = function() arg:Unload() end, }, arg._themePath, arg._notificationPath, arg._autoExecuteEnabledPath)) end index2.SetTitle = function(arg, title) arg.Title = title local v136 = fn36(arg) v136.Window:SetTitle(title) v136.Watermark:SetTitle(title) return arg end index2.SetWatermarkUsername = function(arg, watermarkUsername) arg._watermarkUsername = watermarkUsername fn36(arg).Watermark:SetUsername(watermarkUsername) return arg end index2.SetWatermarkEnabled = function(arg, arg2) fn36(arg).Watermark:SetEnabled(arg2) end index2.IsWatermarkEnabled = function(arg) return fn36(arg).Watermark:IsEnabled() end index2.SetKeybindListEnabled = function(arg, arg2) local keybindList = arg._keybindList if keybindList ~= nil then keybindList:SetEnabled(arg2) end end index2.IsKeybindListEnabled = function(arg) local keybindList = arg._keybindList return keybindList ~= nil and keybindList:IsEnabled() end index2.AddKeybindHudEntry = function(arg) local keybindList = arg._keybindList if keybindList == nil then return nil end return keybindList:AddEntry() end local function fn38(arg) local mobileButtons = arg._mobileButtons if mobileButtons ~= nil then return mobileButtons end local hud = arg._hud local trove = arg._trove local v136 = v121.new(arg:View(), hud, trove) arg._mobileButtons = v136 return v136 end index2.RegisterMobileButton = function(arg, arg2, arg3, arg4, arg5) if not v123.WantsMobileButtons() then return nil end return fn38(arg):Register(arg2, arg3, arg4, arg5) end index2.RegisterSearchSection = function(arg, arg2, arg3, arg4) fn36(arg).SearchPalette:Register(arg2, arg3, arg4) end index2.InvalidateSearch = function(arg) fn36(arg).SearchPalette:Invalidate() end index2.SearchQuery = function(arg, arg2) return fn36(arg).SearchPalette:Search(arg2) end index2.ShowSearchResults = function(arg, arg2) fn36(arg).SearchPalette:ShowAt(arg2) end index2.HideSearchResults = function(arg) fn36(arg).SearchPalette:Hide() end index2.SetActiveSearchBar = function(arg, arg2) fn36(arg).SearchPalette:SetActiveBar(arg2) end index2.EnterMobileButtonDragMode = function(arg, arg2) local mobileButtons = arg._mobileButtons if mobileButtons == nil then return end arg:SetVisible(false) mobileButtons:EnterDragMode(arg2) end index2.SetMenuPillHidden = function(arg, hideMobileMenuButton) local menuPill = arg._menuPill if menuPill ~= nil then menuPill:SetInvisible(hideMobileMenuButton) end local stateData = arg._stateData if stateData ~= nil then stateData.HideMobileMenuButton = hideMobileMenuButton arg:SaveState() end end index2.SetVisible = function(arg, visible, arg2) local v136 = v86[116] assert(type(visible) == v136, "Menu.SetVisible(state) -> expected boolean") local window = fn36(arg).Window local flag19 = arg.Visible ~= visible if arg2 then window:SetVisible(visible) arg._tweener:SetLive(v86[34]) arg.Visible = visible arg:_SyncConfigActive(visible) if flag19 then arg.VisibilityChanged:Fire(visible) end return end arg._tweener:SetLive(true) if not window:SetVisible(visible) then return end arg.Visible = visible arg:_SyncConfigActive(visible) arg.VisibilityChanged:Fire(visible) end index2._SyncConfigActive = function(arg, arg2) local config = arg._config if config == nil then return end local setActive = config.SetActive if setActive ~= nil then setActive(config, arg2) end end index2.SetAccent = function(arg, arg2) v128.refresh(v86[139], arg2) arg.AccentChanged:Fire(arg2) end index2.GetConfig = function(arg) return arg._config end index2.GetColorAnimation = function(arg) return arg._colorAnimation end index2.GetPersistence = function(arg) return arg._persistence end index2.GetStateData = function(arg) return arg._stateData end index2.SaveState = function(arg) local state = arg._state local stateData = arg._stateData if state ~= nil and stateData ~= nil then state:Save(stateData) end end index2.GetOverlayLayer = function(arg) return arg._overlay end local function fn39(arg) local keybindCapture = arg._keybindCapture if keybindCapture ~= nil then return keybindCapture end local v136 = v119.new(arg._trove) arg._keybindCapture = v136 if not (n26 > 4823) then return v136 end return nil -- (anti-tamper freeze trap removed) end index2.CaptureKey = function(arg, arg2) return fn39(arg):Begin(arg2) end index2.ShouldBlockKeybindCapture = function(arg, arg2) local keybindCapture = arg._keybindCapture return keybindCapture ~= nil and keybindCapture:ShouldBlockMenuToggle(arg2) end local function fn40(arg) local tooltip = arg._tooltip if tooltip ~= nil then return tooltip end local v136 = v129.new(arg._trove, arg._overlay, arg.VisibilityChanged) arg._tooltip = v136 arg._overlays:SetBeforeOpen(function() v136:Hide(nil) end) return v136 end index2.AttachTooltip = function(arg, arg2, arg3, arg4) local v136 = fn40(arg) arg2:Connect(arg3.MouseEnter, function() local v137 = arg4() if v137 ~= nil and v137 ~= "" then v136:Show(arg3, v137) end end) arg2:Connect(arg3.MouseLeave, function() v136:Hide(arg3) end) if v123.HasTouch() then local v137 = arg2:Extend() arg2:Connect(arg3.InputBegan, function(arg5) if arg5.UserInputType ~= Enum.UserInputType.Touch then return end local position = arg5.Position v137:Clean() v137:Add(task.delay(0.45, function() if not arg.Visible or arg5.UserInputState == Enum.UserInputState.End or arg5.UserInputState == Enum.UserInputState.Cancel then return end local n = arg5.Position.X - position.X local n33 = arg5.Position.Y - position.Y if n * n + n33 * n33 > 100 then return end local v138 = arg4() if v138 ~= nil and v138 ~= "" then v136:ShowAt(arg3, v138, Vector2.new(arg5.Position.X, arg5.Position.Y)) v124.suppressActivation(arg5) end end)) end) end end index2.OnPreRender = function(arg, arg2) local nextUpdateId = arg._nextUpdateId arg._nextUpdateId = arg._nextUpdateId + 1 arg._updateCallbackById[nextUpdateId] = arg2 arg._updateCount = arg._updateCount + 1 if arg._renderConnection == nil then arg._renderConnection = runService.RenderStepped:Connect(function(deltaTime) if not arg.Visible then return end for _, v136 in arg._updateCallbackById, nil, nil do v136(deltaTime) end end) end return function() if arg._updateCallbackById[nextUpdateId] == nil then return end arg._updateCallbackById[nextUpdateId] = nil arg._updateCount = arg._updateCount - 1 if arg._updateCount <= v86[186] and arg._renderConnection ~= nil then arg._renderConnection:Disconnect() arg._renderConnection = nil end end end index2.Tween = function(arg, arg2, arg3, arg4) return arg._tweener:Play(arg2, arg3, arg4) end index2.DragTweenInfo = function(arg) return arg._tweener:DragInfo() end local tbl18 = {} setmetatable(tbl18, { __mode = "k" }) local function fn41(arg, arg2, arg3) local transparency = tbl18[arg2] if transparency == nil then transparency = arg2.Transparency tbl18[arg2] = transparency end local v136 = arg._tweener:Play(arg2, { Transparency = arg3 and transparency or 1 }) if v136 == nil then arg2.Transparency = transparency return nil end arg2.Transparency = arg3 and 1 or transparency v136.Completed:Once(function() if arg2.Parent == nil then return end if not arg3 then arg2.Transparency = transparency end end) return v136 end index2.FadeCanvasGroup = function(arg, arg2, visible, arg3) local tbl19 = arg3 or { Tweening = false } tbl19._fadeToken = (tbl19._fadeToken or v86[186]) + 1 local fadeToken = tbl19._fadeToken for _, v136 in arg2:GetChildren() do if v136:IsA("UIStroke") then fn41(arg, v136, visible) end end if visible then arg2.Visible = v86[34] end local groupTransparency = v86[63] if visible then groupTransparency = 0 end local v136 = arg._tweener:Play(arg2, { GroupTransparency = groupTransparency }) if v136 == nil then arg2.GroupTransparency = groupTransparency arg2.Visible = visible tbl19.Tweening = v86[153] return end tbl19.Tweening = true v136.Completed:Once(function() if tbl19._fadeToken ~= fadeToken then return end tbl19.Tweening = v86[153] arg2.Visible = visible end) end index2.RegisterOverlay = function(arg, arg2, arg3) return arg._overlays:Register(arg2, arg3) end index2.UnregisterOverlay = function(arg, arg2) arg._overlays:Unregister(arg2) end index2.ToggleOverlay = function(arg, arg2) arg._overlays:Toggle(arg2) end index2.SetOverlayOpen = function(arg, arg2, arg3) arg._overlays:SetOpen(arg2, arg3) end index2.CloseOverlays = function(arg, arg2, arg3) arg._overlays:CloseAll(arg2, arg3) end index2.CloseOverlayDescendants = function(arg, arg2) arg._overlays:CloseDescendants(arg2) end index2.MakeDraggable = function(arg, parent, arg2, arg3) local persistKey = arg3 and arg3.PersistKey local function fn42() local stateData = arg._stateData if stateData == nil or persistKey == nil then return end local position = parent.Position local watermarkPosition = { position.X.Offset, position.Y.Offset } if persistKey == "WatermarkPosition" then stateData.WatermarkPosition = watermarkPosition else stateData.KeybindsListPosition = watermarkPosition end arg:SaveState() end if persistKey ~= nil then local stateData = arg._stateData if stateData ~= nil then local keybindsListPosition = stateData.KeybindsListPosition if persistKey == "WatermarkPosition" then if true then keybindsListPosition = stateData.WatermarkPosition else -- (anti-tamper freeze trap removed) end end if keybindsListPosition ~= nil and #keybindsListPosition >= 2 then parent.Position = UDim2.fromOffset(math.round(keybindsListPosition[v86[63]]), math.round(keybindsListPosition[2])) end end local function fn43() if parent.Parent ~= nil and v132.clampGuiToViewport(parent) then fn42() end end arg2:Add(task.defer(fn43)) arg2:Add(task.defer(fn43)) end local uiDragDetector = Instance.new("UIDragDetector") uiDragDetector.DragStyle = Enum.UIDragDetectorDragStyle.TranslatePlane uiDragDetector.ResponseStyle = Enum.UIDragDetectorResponseStyle.CustomOffset uiDragDetector.Enabled = arg.Visible uiDragDetector.Parent = parent arg2:Connect(arg.VisibilityChanged, function(enabled) uiDragDetector.Enabled = enabled end) local position = nil arg2:Connect(uiDragDetector.DragStart, function() position = parent.Position arg.Dragging = v86[34] local chrome = arg._chrome if chrome ~= nil and parent == chrome.Window.MenuFrame then arg._keyboardBaseY = nil end arg._overlays:CloseAll(nil, true) end) arg2:Connect(uiDragDetector.DragContinue, function() local v136 = position if v136 == nil then return end local dragUDim2 = uiDragDetector.DragUDim2 parent.Position = v132.snapPosition(UDim2.new(v136.X.Scale, v136.X.Offset + dragUDim2.X.Offset, v136.Y.Scale, v136.Y.Offset + dragUDim2.Y.Offset)) v132.clampGuiToViewport(parent) end) arg2:Connect(uiDragDetector.DragEnd, function() position = nil arg.Dragging = false v132.clampGuiToViewport(parent) fn42() local onDragEnd = arg3 and arg3.OnDragEnd if onDragEnd ~= nil then onDragEnd(parent.Position) end end) local v136 = arg2:Extend() v132.connectCurrentCameraViewport(arg2, function(arg4) v136:Clean() if arg4 == nil or parent.Parent == nil then return end v136:Add(task.defer(function() if parent.Parent ~= nil then v132.clampGuiToViewport(parent) end end)) end) return uiDragDetector end index2.Unload = function(arg) local onUnload = arg._onUnload if onUnload ~= nil then onUnload() end end index2.Destroy = function(arg) arg:SaveState() arg._cursor:Set(false) if arg._renderConnection ~= nil then arg._renderConnection:Disconnect() arg._renderConnection = nil end arg._trove:Destroy() end return index2 end tbl17.aD = function() local ad = tbl17.cache.aD if not ad then local ad2 = { c = fn35() } tbl17.cache.aD = ad2 ad = ad2 end return ad.c end end do -- aE local function fn35() tbl17.C() local v115 = tbl17.N() tbl17.M() tbl17.ab() tbl17.r() tbl17.ac() tbl17.Q() tbl17.H() local v116 = tbl17.ae() tbl17.af() tbl17.R() tbl17.T() tbl17.U() tbl17.V() local v117 = tbl17.aD() tbl17.X() local v118 = tbl17.aB() tbl17.Y() tbl17.an() local v119 = tbl17.u() tbl17.J() tbl17.B() tbl17.Z() tbl17.K() tbl17.ar() tbl17._() tbl17.S() tbl17.aa() return { Menu = v117, Notifications = v118, GeneralState = v116, ColorBinding = v115, ForceMobileLayout = v119.ForceMobileLayout, } end tbl17.aE = function() local ae = tbl17.cache.aE if not ae then ae = { c = fn35() } tbl17.cache.aE = ae end return ae.c end end do -- aH local function fn35() tbl17 .aG();local l,I={Class="Standard",HitboxSet={HitboxHead=true,HitboxBody=true},CriticalDamageHitboxes={HitboxHead=true}},{Sniper={Class="Small",HitboxSet={HitboxHeadSmall=true,HitboxBodySmall=true},CriticalDamageHitboxes={HitboxHeadSmall=true}}};return{DefaultProfile=l,HitboxClassOptions={Standard={"HitboxHead","HitboxBody"},Small={"HitboxHeadSmall","HitboxBodySmall"}},resolveProfile=function(W)return W~=nil and(I[W]or l)or l;end};end tbl17.aH = function() local ah = tbl17.cache.aH if not ah then ah = { c = fn35() } tbl17.cache.aH = ah end return ah.c end end do -- aI local function fn35() local tbl18 = {} return { profile = function(arg) setmetatable(arg, tbl18) return arg end, isProfile = function(I)return type(I)=="table"and getmetatable(I)== tbl18 ;end, } end tbl17.aI = function() local ai = tbl17.cache.aI if not ai then ai = { c = fn35() } tbl17.cache.aI = ai end return ai.c end end do -- aJ local function fn35() tbl17.aF() local profile = tbl17.aI().profile local atomic = tbl17.i().atomic return function(arg) local targetHitboxes = arg.TargetHitboxes local targetHitboxes2 if targetHitboxes.Kind == "Stateful" then targetHitboxes2 = {} for k, v115 in targetHitboxes.Classes, nil, nil do local tbl18 = {} for k2, v116 in v115, nil, nil do tbl18[k2] = atomic(table.clone(v116)) end targetHitboxes2[k] = tbl18 end else targetHitboxes2 = {} for k, v115 in targetHitboxes.Classes, nil, nil do targetHitboxes2[k] = atomic(table.clone(v115)) end end local tbl18 = { Enabled = false, Keybind = { State = false, Kind = "Always", Bind = nil, ShowInList = true, Invisible = false }, TargetLock = { Enabled = false, Mode = "ToggleLock", Bind = Enum.KeyCode.Y, BindShowInList = true, BindInvisible = false, }, SwitchDelay = v86[186], ReactionTime = v86[186], Mode = { Type = "Linear", Speed = 0.1 }, } local fov = { Radius = 150 } local circle = { Visible = false, Stroke = { Gradient = ColorSequence.new(Color3.fromRGB(255, 0, 0)), Transparency = 0, Thickness = 1 }, } local fill = { Enabled = false } local colorSequence = ColorSequence.new local tbl19 = {} local v115 = ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 245, 238)) local v116 = ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 200, 180)) local new = ColorSequenceKeypoint.new local color = Color3.fromRGB tbl19[1] = v115 tbl19[2] = v116 do local values = table.pack(new(1, color(255, 140, 105))) table.move(values, 1, values.n, 3, tbl19) end fill.Gradient = colorSequence(tbl19) fill.Transparency = 0.15 circle.Fill = fill circle.Animated = { Enabled = false, Speed = 90 } circle.FollowTarget = { Enabled = false, Speed = 20, Damper = 1, SnapDistance = 5 } fov.Circle = circle tbl18.Fov = fov tbl18.ActivationConditions = atomic(table.clone(arg.ActivationConditions.Options)) tbl18.TargetConditions = atomic(table.clone(arg.TargetConditions.Options)) tbl18.TargetHitboxes = targetHitboxes2 tbl18.HitboxSelection = { Type = "ClosestToCrosshair", Random = table.clone(arg.RandomHitboxPercentages.Options) } tbl18.HitboxPoint = { Type = "Center", Surface = { SizeReductionPercentage = v86[160], PreserveDepth = false } } local extension = arg.Extension if extension ~= nil then for k, v117 in extension, nil, nil do assert(tbl18[k] == nil, string.format("Build failed: '%s' already exists.", tostring(k))) tbl18[k] = v117 end end if arg.GetWeaponProfiles ~= nil then profile(tbl18) end return tbl18 end end tbl17.aJ = function() local aj = tbl17.cache.aJ if not aj then local aj2 = { c = fn35() } tbl17.cache.aJ = aj2 aj = aj2 end return aj.c end end do -- aR local function fn35() return function(arg, arg2, arg3, arg4) local tbl18 if typeof(arg2) ~= "string" then tbl18 = arg2 else tbl18 = { arg2 } end for _, v115 in tbl18, nil, nil do local v116 if arg4 ~= nil then v116 = arg:WaitForChild(v115, arg4) if v116 == nil then return nil end else local _t0 = os.clock() while true do v116 = arg:WaitForChild(v115, 5) if v116 ~= nil then break end print("[Kicia] waiting for " .. arg:GetFullName() .. " -> " .. tostring(v115) .. " (" .. math.floor(os.clock() - _t0) .. "s)") if os.clock() - _t0 > 60 then error("[Kicia] timed out waiting for " .. arg:GetFullName() .. " -> " .. tostring(v115) .. ". Wrong game? This script is built for Rivals.", 2) end end end arg = cloneref(v116) end if arg3 then local _ok, _res = pcall(require, arg) if _ok then return _res end for _try = 1, 4 do task.wait(2) _ok, _res = pcall(require, arg) if _ok then return _res end end return require(arg) end return cloneref(arg) end end tbl17.aR = function() local ar = tbl17.cache.aR if not ar then ar = { c = fn35() } tbl17.cache.aR = ar end return ar.c end end do -- aS local function fn35() tbl17.aP() tbl17.aL() tbl17.aN() tbl17.aM() tbl17.aQ() tbl17.aO() local v115 = tbl17.aR() local v116 = cloneref(game:GetService("Players")) local v117 = cloneref(game:GetService("ReplicatedStorage")) local localPlayer = v116.LocalPlayer local playerScripts = v115(localPlayer, "PlayerScripts") local controllers = v115(playerScripts, "Controllers") local modules = v115(v117, "Modules") local modules2 = v115(playerScripts, "Modules") local clientReplicatedClasses = v115(modules2, "ClientReplicatedClasses") local remotes = v115(v117, "Remotes") local replication = v115(remotes, "Replication") local v118 = v115(replication, { "Fighter", "UseItem" }) local v119 = v115(replication, { "Fighter", "RegisterQuickAttack" }) local v120 = v115(replication, { "Fighter", "UpdateState" }) local v121 = v115(replication, { "Fighter", "PickWeapons" }) local v122 = v115(replication, { "Fighter", "UpdateCameraRotation" }) local v123 = v115(remotes, { "Duels", "RespawnNow" }) local v124 = v115(remotes, { "Duels", "Vote" }) local v125 = v115(remotes, { "Misc", "RequestProfile" }) local shootingRangeTrashItems = v115(v115(remotes, "Misc"), "ShootingRangeTrashItems") local replicatedController = v115(modules2, "ReplicatedController", true) local controlsController = v115(controllers, "ControlsController", true) local fighterController = v115(controllers, "FighterController", true) local mechanicsController = v115(controllers, "MechanicsController", true) local enemyController = v115(controllers, "EnemyController", true) local shootingRangeController = v115(controllers, "ShootingRangeController", true) local arcadeController = v115(controllers, "ArcadeController", v86[34]) local cameraController = v115(controllers, "CameraController", true) local duelController = v115(controllers, "DuelController", true) local complianceController = v115(controllers, "ComplianceController", true) local userInterface = v115(modules2, "UserInterface") local equipment = v115(userInterface, "Equipment", v86[34]) local lobby = v115(userInterface, "Lobby") local module = require(lobby) local pages = v115(userInterface, "Pages", true) local matchmaking = v115(lobby, "Matchmaking", true) local constants = v115(modules, "CONSTANTS", true) local enumLibrary = v115(modules, "EnumLibrary", true) local inputLibrary = v115(modules, "InputLibrary", true) local seasonLibrary = v115(modules, "SeasonLibrary", true) local cosmeticLibrary = v115(modules, "CosmeticLibrary", true) local itemLibrary = v115(modules, "ItemLibrary", true) local duelLibrary = v115(modules, "DuelLibrary", true) local utility = v115(modules, "Utility", true) local playerDataUtility = v115(modules, "PlayerDataUtility", true) local taskLibrary = v115(modules, "TaskLibrary", true) local replicatedClass = v115(modules, "ReplicatedClass", true) local outOfBoundsMachine = v115(modules, "OutOfBoundsMachine", true) local playerDataController = v115(controllers, "PlayerDataController", true) local matchmakingController = v115(controllers, "MatchmakingController", true) local leaderboardController = v115(controllers, "LeaderboardController", v86[34]) local clientEntity = v115(clientReplicatedClasses, "ClientEntity", true) local clientDueler = v115(clientReplicatedClasses, "ClientDueler", true) local v126 = v115(clientReplicatedClasses, { "ClientFighter", "ClientFighterCharacter" }, true) local v127 = v115(clientReplicatedClasses, { "ClientFighter", "ClientFighterCharacter", "Joints" }, true) local v128 = v115(clientReplicatedClasses, { "ClientFighter", "ClientFighterCharacter", "Visibility" }, true) local v129 = v115(clientReplicatedClasses, { "ClientFighter", "ClientItem" }, v86[34]) local v130 = v115(clientReplicatedClasses, { "ClientFighter", "ClientItem", "ClientViewModel" }, true) local v131 = v115(clientReplicatedClasses, { "ClientFighter", "ClientItem", "ClientViewModel", "ViewModelAnimator" }, true) local v132 = v115(clientReplicatedClasses, { "ClientFighter", "ClientItem", "ItemInterface", "Other" }, v86[34]) local v133 = v115(clientReplicatedClasses, { "ClientFighter", "ClientItem", "ItemInterface", "Mouse", "Scope" }, true) local cosmeticSlot = v115(modules2, "CosmeticSlot", true) local crosshair = v115(modules2, "Crosshair", true) local cosmeticViewportFrame = v115(modules2, "CosmeticViewportFrame", true) local v134 = v115(modules2, { "ItemTypes", "Gun" }, true) local v135 = v115(modules2, { "ItemTypes", "Throwable" }, v86[34]) local pages2 = v115(modules2, "Pages") local equipEmote = v115(pages2, "EquipEmote", true) local pickEmote = v115(pages2, "PickEmote", true) local viewProfile = v115(pages2, "ViewProfile", true) local v136 = v115(v117, { "Modules", "Emotes" }) local v137 = v115(v117, { "Modules", "Finishers" }) local v138 = v115(v117, { "Modules", "ServerOsTime" }, v86[34]) return { Modules = modules, Controllers = controllers, UserInterface = userInterface, Equipment = equipment, Lobby = module, MatchmakingInterface = matchmaking, MatchmakingController = matchmakingController, LeaderboardController = leaderboardController, UseItemRemote = v118, QuickAttackFunction = v119, UpdateStateRemote = v120, PickWeaponsRemote = v121, UpdateCameraRotationRemote = v122, ShootingRangeTrashItemsEvent = shootingRangeTrashItems, RespawnNowRemote = v123, VoteEvent = v124, PagesModule = pages, RequestProfileFunction = v125, Constants = constants, TaskLibrary = taskLibrary, ReplicatedController = replicatedController, ControlsController = controlsController, PlayerDataController = playerDataController, FighterController = fighterController, MechanicsController = mechanicsController, EnemyController = enemyController, ShootingRangeController = shootingRangeController, ArcadeController = arcadeController, CameraController = cameraController, DuelController = duelController, ComplianceController = complianceController, EnumLibrary = enumLibrary, InputLibrary = inputLibrary, SeasonLibrary = seasonLibrary, CosmeticLibrary = cosmeticLibrary, ItemLibrary = itemLibrary, DuelLibrary = duelLibrary, Utility = utility, PlayerDataUtility = playerDataUtility, ReplicatedClass = replicatedClass, OutOfBoundsMachine = outOfBoundsMachine, ClientEntity = clientEntity, ClientDueler = clientDueler, ClientFighterCharacter = v126, ClientFighterCharacterJoints = v127, ClientFighterCharacterVisibility = v128, Gun = v134, Throwable = v135, ClientItem = v129, ClientViewModel = v130, ViewModelAnimator = v131, ItemInterfaceOther = v132, Scope = v133, Crosshair = crosshair, CosmeticSlot = cosmeticSlot, CosmeticViewportFrame = cosmeticViewportFrame, Pages = pages2, EquipEmote = equipEmote, PickEmote = pickEmote, ViewProfile = viewProfile, Emotes = v136, Finishers = v137, PlayerModule = v115(localPlayer, { "PlayerScripts", "PlayerModule" }, v86[34]), ServerOsTime = v138, } end tbl17.aS = function() local as = tbl17.cache.aS if not as then as = { c = fn35() } tbl17.cache.aS = as end return as.c end end do -- aT local function fn35() tbl17.aK() local tbl18 = {} for k in next, v102(tbl17.aS().ItemLibrary, "Items"), nil do if k ~= "MISSING_WEAPON" then table.insert(tbl18, k) end end table.sort(tbl18) return table.freeze(tbl18) end tbl17.aT = function() local at = tbl17.cache.aT if not at then local at2 = { c = fn35() } tbl17.cache.aT = at2 at = at2 end return at.c end end do -- aU local function fn35() tbl17.aF() tbl17.aG() local v115 = tbl17.aH() local v116 = tbl17.aJ() local function fn36() local tbl18 = {} for k, v117 in v115.HitboxClassOptions, nil, nil do local tbl19 = {} for _, v118 in v117, nil, nil do tbl19[v118] = v86[34] end tbl18[k] = { Air = table.clone(tbl19), Ground = table.clone(tbl19) } end return tbl18 end local tbl18 = { GetWeaponProfiles = function() local v117 = tbl17.aT() return table.clone(v117) end, TargetLock = { Enabled = v86[153], Mode = "ToggleLock", Bind = Enum.KeyCode.Y, BindShowInList = true, BindInvisible = v86[153], }, ActivationConditions = { Options = { NotReloading = true, ScopedIn = v86[153] }, Labels = { NotReloading = "Not Reloading", ScopedIn = "Scoped In" }, }, TargetConditions = { Options = { Visible = true, Vulnerable = true, NotDeflecting = true, NotShielded = true, WithinFov = true, }, Labels = { WithinFov = "Within FOV" }, }, TargetHitboxes = { Kind = "Stateful", Classes = fn36() }, RandomHitboxPercentages = { Options = { Head = v86[160] }, Labels = { Head = "Head %" } }, } return { BuildSpec = tbl18, buildConfig = function() return v116(tbl18) end, } end tbl17.aU = function() local au = tbl17.cache.aU if not au then au = { c = fn35() } tbl17.cache.aU = au end return au.c end end do -- aV local function fn35() tbl17.aF() local atomic = tbl17.i().atomic local profile = tbl17.aI().profile return function(arg) local targetHitboxes = arg.TargetHitboxes local targetHitboxes2 if targetHitboxes.Kind == "Stateful" then targetHitboxes2 = {} for k, v115 in targetHitboxes.Classes, nil, nil do local tbl18 = {} for k2, v116 in v115, nil, nil do tbl18[k2] = atomic(table.clone(v116)) end targetHitboxes2[k] = tbl18 end else targetHitboxes2 = {} for k, v115 in targetHitboxes.Classes, nil, nil do targetHitboxes2[k] = atomic(table.clone(v115)) end end local tbl18 = { Enabled = v86[153], Keybind = { State = false, Kind = "Always", Bind = nil, ShowInList = v86[34], Invisible = false }, ReactionTime = 0, SwitchDelay = v86[186], } local fov = { Radius = 150 } local circle = { Visible = false, Stroke = { Gradient = ColorSequence.new(Color3.fromRGB(255, 0, 0)), Transparency = 0, Thickness = v86[63], }, } local fill = { Enabled = v86[153] } local colorSequence = ColorSequence.new local tbl19 = {} local v115 = ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 245, 238)) local v116 = ColorSequenceKeypoint.new(v86[101], Color3.fromRGB(255, 200, 180)) local new = ColorSequenceKeypoint.new local color = Color3.fromRGB tbl19[1] = v115 tbl19[2] = v116 do local values = table.pack(new(1, color(255, 140, 105))) table.move(values, 1, values.n, 3, tbl19) end fill.Gradient = colorSequence(tbl19) fill.Transparency = v86[126] circle.Fill = fill circle.Animated = { Enabled = false, Speed = v86[45] } circle.FollowTarget = { Enabled = false, Speed = 20, Damper = v86[63], SnapDistance = v86[175] } fov.Circle = circle tbl18.Fov = fov tbl18.ActivationConditions = atomic(table.clone(arg.ActivationConditions.Options)) tbl18.ActivationChance = arg.ActivationChance tbl18.TargetConditions = atomic(table.clone(arg.TargetConditions.Options)) tbl18.TargetHitboxes = targetHitboxes2 tbl18.HitboxSelection = { Type = "ClosestToCrosshair", Random = table.clone(arg.RandomHitboxPercentages.Options) } tbl18.HitboxPoint = { Type = "Center", Surface = { SizeReductionPercentage = 50, PreserveDepth = false } } local extension = arg.Extension if extension ~= nil then for k, v117 in extension, nil, nil do assert(tbl18[k] == nil, string.format("Build failed: '%s' already exists.", tostring(k))) tbl18[k] = v117 end end if arg.GetWeaponProfiles ~= nil then profile(tbl18) end return tbl18 end end tbl17.aV = function() local av = tbl17.cache.aV if not av then local av2 = { c = fn35() } tbl17.cache.aV = av2 av = av2 end return av.c end end do -- aW local function fn35() tbl17.aF() tbl17.aG() tbl17.aE() local v115 = tbl17.aH() local v116 = tbl17.aV() local function fn36() local tbl18 = {} for k, v117 in v115.HitboxClassOptions, nil, nil do local tbl19 = {} for _, v118 in v117, nil, nil do tbl19[v118] = v86[34] end tbl18[k] = { Air = table.clone(tbl19), Ground = table.clone(tbl19) } end return tbl18 end local tbl18 = { GetWeaponProfiles = function() local v117 = tbl17.aT() return table.clone(v117) end, ActivationConditions = { Options = { NotReloading = true, ScopedIn = v86[153] }, Labels = { NotReloading = "Not Reloading", ScopedIn = "Scoped In" }, }, ActivationChance = 100, TargetConditions = { Options = { Visible = true, Vulnerable = v86[34], NotDeflecting = true, NotShielded = true, WithinFov = true, }, Labels = { NotDeflecting = "Not Deflecting", NotShielded = "Not Shielded", WithinFov = "Within FOV" }, }, TargetHitboxes = { Kind = "Stateful", Classes = fn36() }, RandomHitboxPercentages = { Options = { Head = 50 }, Labels = { Head = "Head %" } }, Extension = { Manipulate = { Enabled = false, Mode = "OnBestTarget", ShowIndicator = true } }, ExpandActivationSection = function(arg) local v117 = arg:AddGroup({ Source = arg:AddToggle({ Label = "Manipulate", Config = { "SilentAim", "Manipulate", "Enabled" } }), }) v117:AddDropdown({ Label = "Manipulation Check", Options = { "OnBestTarget", "OnAllTargets" }, Config = { "SilentAim", "Manipulate", v86[55] }, Labels = { OnBestTarget = "On Best Target", OnAllTargets = "On All Targets" }, }) v117:AddToggle({ Label = "Show Indicator", Config = { "SilentAim", "Manipulate", "ShowIndicator" } }) end, } return { BuildSpec = tbl18, buildConfig = function() return v116(tbl18) end, } end tbl17.aW = function() local aw = tbl17.cache.aW if not aw then aw = { c = fn35() } tbl17.cache.aW = aw end return aw.c end end do -- aX local function fn35() tbl17.aF() local atomic = tbl17.i().atomic local profile = tbl17.aI().profile return function(arg) local targetHitboxes = arg.TargetHitboxes local tbl18 if targetHitboxes.Kind == "Stateful" then tbl18 = {} for k, v115 in targetHitboxes.Classes, nil, nil do local tbl19 = {} for k2, v116 in v115, nil, nil do tbl19[k2] = atomic(table.clone(v116)) end tbl18[k] = tbl19 end else tbl18 = {} for k, v115 in targetHitboxes.Classes, nil, nil do tbl18[k] = atomic(table.clone(v115)) end end local tbl19 = { Enabled = false, Keybind = { State = v86[153], Kind = "Always", Bind = nil, ShowInList = true, Invisible = false }, ActivationConditions = atomic(table.clone(arg.ActivationConditions.Options)), TargetConditions = atomic(table.clone(arg.TargetConditions.Options)), TargetHitboxes = tbl18, } local extension = arg.Extension if extension ~= nil then for k, v115 in extension, nil, nil do assert(tbl19[k] == nil, string.format("Build failed: '%s' already exists.", tostring(k))) tbl19[k] = v115 end end if arg.GetWeaponProfiles ~= nil then profile(tbl19) end return tbl19 end end tbl17.aX = function() local ax = tbl17.cache.aX if not ax then local ax2 = { c = fn35() } tbl17.cache.aX = ax2 ax = ax2 end return ax.c end end do -- aY local function fn35() tbl17.aF() tbl17.aG() local v115 = tbl17.aH() local v116 = tbl17.aX() local function fn36() local tbl18 = {} for k, v117 in v115.HitboxClassOptions, nil, nil do local tbl19 = {} for _, v118 in v117, nil, nil do tbl19[v118] = v86[34] end tbl18[k] = { Air = table.clone(tbl19), Ground = table.clone(tbl19) } end return tbl18 end local tbl18 = { GetWeaponProfiles = function() local v117 = tbl17.aT() return table.clone(v117) end, ActivationConditions = { Options = { NotReloading = v86[34], ScopedIn = false }, Labels = { NotReloading = "Not Reloading", ScopedIn = "Scoped In" }, }, TargetConditions = { Options = { Vulnerable = true, NotDeflecting = true, NotShielded = true }, Labels = {} }, TargetHitboxes = { Kind = "Stateful", Classes = fn36() }, Extension = { ReactionTime = 0, ReleaseTime = 0 }, } return { BuildSpec = tbl18, buildConfig = function() return v116(tbl18) end, } end tbl17.aY = function() local ay = tbl17.cache.aY if not ay then local ay2 = { c = fn35() } tbl17.cache.aY = ay2 ay = ay2 end return ay.c end end do -- a2 local function fn35() return (table.freeze({ Desktop = "MouseKeyboard", Mobile = "Touch", Console = "Gamepad", VR = "VR" })) end tbl17.a2 = function() local a2 = tbl17.cache.a2 if not a2 then a2 = { c = fn35() } tbl17.cache.a2 = a2 end return a2.c end end do -- a6 local function fn35() return function(arg, arg2) local v115 = table.clone(arg) table.move(arg2, 1, #arg2, #arg + 1, v115) return v115 end end tbl17.a6 = function() local a6 = tbl17.cache.a6 if not a6 then a6 = { c = fn35() } tbl17.cache.a6 = a6 end return a6.c end end do -- a7 local function fn35() return function(arg) local tbl18 = {} for k, v115 in next, arg, nil do if v115 then table.insert(tbl18, k) end end return tbl18 end end tbl17.a7 = function() local a7 = tbl17.cache.a7 if not a7 then a7 = { c = fn35() } tbl17.cache.a7 = a7 end return a7.c end end do -- a8 local function fn35()local I,W,N= tbl17 .a6(), tbl17 .a7(),{Ghost=Enum.Material.ForceField,Flat=Enum.Material.Neon,Foil=Enum.Material.Foil,Custom=Enum.Material.SmoothPlastic,Reflective=Enum.Material.Glass};local l=W(N);return{List=I({"Original"},l),Names=l,Map=N};end tbl17.a8 = function() local a8 = tbl17.cache.a8 if not a8 then a8 = { c = fn35() } tbl17.cache.a8 = a8 end return a8.c end end do -- bc local function fn35() local v115 = tbl17.m() local tbl18 = { "KeyCode", "UserInputType" } local tbl19 = {} local function fn36(arg, arg2) return Enum[arg][arg2] end local function fn37(arg) for _, v116 in tbl18, nil, nil do local v117, v118 = v107(fn36, v116, arg) if v117 and v118 ~= nil then return { __type = "EnumItem", EnumType = v116, Name = v118.Name } end end return nil end local fn38 = nil fn38 = function(arg, arg2) for k, v116 in arg, nil, nil do local flag19 = k == "Bind" if flag19 then local v117 = v86[165] flag19 = type(v116) == v117 end if flag19 then local v117 = fn37(v116) arg[k] = v117 if v117 == nil then table.insert(tbl19, arg2 .. "Bind") end elseif type(v116) == "table" then local v117 = v86[165] if type(v116.__type) == v117 then if not v107(v115.parse, { v116 }) then arg[k] = nil table.insert(tbl19, arg2 .. tostring(k)) end else fn38(v116, arg2 .. tostring(k) .. ".") end end end end return { deserialize = function(arg) fn38(arg, "") return v115.parse(arg) end, takeDroppedPaths = function() tbl19 = {} return tbl19 end, } end tbl17.bc = function() local bc = tbl17.cache.bc if not bc then local bc2 = { c = fn35() } tbl17.cache.bc = bc2 bc = bc2 end return bc.c end end do -- bd local function fn35() tbl17 .o();local I= tbl17 .i().atomic;return{AutoPickupDrops={Enabled=false,Types=I({})},AutoRespawn={Enabled=false},AntiKatana={Enabled=true},SubspaceTripmines={AutoTrigger=false,TeamTrigger=false},AutoQueue={Enabled=false,Queue="1v1"},AutoVote={Enabled=false,Maps=I({})},AutoBan={Enabled=false,FirstWeapons=I({}),SecondWeapons=I({})},AutoLoadout={Enabled=false,PerMap=false,MultipleLoadouts=false,Loadouts=I({})},HackerDetector={Enabled=false,Notify=false,Color=Color3.fromRGB(250,170,70)},ModDetector={Enabled=false,Moderators=I({}),ModFriends=I({}),Color=Color3.fromRGB(250,170,70)}};end tbl17.bd = function() local bd = tbl17.cache.bd if not bd then local bd2 = { c = fn35() } tbl17.cache.bd = bd2 bd = bd2 end return bd.c end end do -- be local function fn35()local I= tbl17 .i().atomic; tbl17 .aZ();local W,N,P= tbl17 .aU(), tbl17 .aW(), tbl17 .aY();return{Aimbot=W.buildConfig(),SilentAim=N.buildConfig(),Triggerbot=P.buildConfig(),Ragebot={Enabled=false,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false},Stability=0.15,ShootFrames=1,PrioritizeHackers=false,Weapons={Priority=I({"Primary","Secondary","Melee"}),Enabled={Primary=true,Secondary=true,Melee=true},OnEmpty="SwapOrReload"},Evasion={Mode="Random",Random={AnchorFromCharacter=false,BaseRadius=100,RadiusRandomFactor=0.5},ProjectileBreaker={DepthForward={Min=0,Max=4},DepthForwardFrequency=5,DepthUp={Min=0,Max=5.5},DepthUpFrequency=5,RepositionInterval=0.3,FallbackAnchorFromCharacter=false,FallbackBaseRadius=100,FallbackRadiusRandomFactor=0.5},Translocate={Offset=-5}},UtilizeHealthLead=false},Flickbot={Enabled=false,Keybind={State=false,Kind="Hold",Bind=nil,ShowInList=true,Invisible=false},Shoot=false,ShotDelay=0,Cooldown=250,FlickDuration=110,Curvature=12,Humanness=30}};end tbl17.be = function() local be = tbl17.cache.be if not be then local be2 = { c = fn35() } tbl17.cache.be = be2 be = be2 end return be.c end end do -- bf local function fn35() tbl17 .a_();local I= tbl17 .i().atomic;return{UserServer={ShowActive=false,ShareSkins=false},UnlockAll={Enabled=false,Cosmetics=I({}),Rarities=I({})}};end tbl17.bf = function() local bf = tbl17.cache.bf if not bf then bf = { c = fn35() } tbl17.cache.bf = bf end return bf.c end end do -- bg local function fn35() tbl17 .a0();local I,W= tbl17 .i().atomic, tbl17 .d();local function l()return{Enabled=false,Kind="Shimmer",Shimmer={Speed=0.65,Color=Color3.fromRGB(40,40,40)},Perimeter={Speed=1,Color=ColorSequence.new({ColorSequenceKeypoint.new(0,Color3.fromRGB(255,255,255)),ColorSequenceKeypoint.new(0.5,Color3.fromRGB(0,200,255)),ColorSequenceKeypoint.new(1,Color3.fromRGB(255,255,255))})},PingPong={Speed=1,BackgroundColor=Color3.fromRGB(20,20,20),MainColor=Color3.fromRGB(0,200,255),Rotation=0}};end;local N={Enabled=false,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false},Name={Enabled=false,Color=Color3.fromRGB(255,255,255),Transparency=0,Animation=l()},Box={Enabled=false,Style="Full",Color=Color3.fromRGB(255,255,255),Animation=l()},FilledBox={Enabled=false,Color=ColorSequence.new(Color3.new(1,1,1)),Transparency=0.8,Animate=false},BoxImage={Enabled=false,Name="",Transparency=0},HealthBar={Enabled=false,Color=ColorSequence.new(Color3.new(1,1,1),Color3.new(0,1,0)),ColorMode="Reactive",Animate=false},HealthNumber={Enabled=false,Color=Color3.new(1,1,1)},HeldWeapon={Enabled=false,Color=Color3.new(1,1,1),Transparency=0,Animation=l()},AmmoBar={Enabled=false,Color=ColorSequence.new(Color3.new(1,1,1),Color3.new(0,1,0)),ColorMode="Reactive",Animate=false},Distance={Enabled=false,Color=Color3.new(1,1,1),Animation=l()},Rank={Enabled=false,Color=Color3.new(1,1,1),Animation=l()},Winstreak={Enabled=false,Color=Color3.new(1,1,1),Animation=l()},Deflecting={Enabled=false,Color=Color3.new(1,1,1),Transparency=0,Animation=l()},Chams={Enabled=false,Kind="Legacy",InnerColor=Color3.fromRGB(255,0,0),InnerTransparency=0,OutlineColor=Color3.fromRGB(100,0,0),OutlineTransparency=0.6,Glow=false,GlowColor=Color3.fromRGB(255,0,0)},Skeleton={Enabled=false,Color=ColorSequence.new(Color3.new(1,1,1)),Transparency=0,Thickness=1},HeadMarker={Enabled=false,Shape="Cross",Filled=true,Outline=false,Color=Color3.fromRGB(255,80,80),Transparency=0,OutlineColor=Color3.new(0,0,0),OutlineTransparency=0},Tracer={Enabled=false,Color=ColorSequence.new(Color3.new(1,1,1)),Transparency=0,Thickness=1,Origin="Bottom",Target="Feet",Outline=false,OutlineColor=Color3.new(0,0,0),OutlineTransparency=0,OutlineThickness=1}};return{Esp={Main={Enabled=false,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false},Mode="Static"},Enemy=N,Team=W(N),Settings={UseDisplayName=false,Font="Inconsolata",FlagFont="Inconsolata",FontSize=16,FlagFontSize=12,TextCase="Standard",FlagTextCase="UPPERCASE",OverrideRectSize={Enabled=false,Width=1,Height=1},Spacing={Left=1,Top=1,Right=1,Bottom=1},TextSurround="None",FlagTextSurround="None",DistanceScaling=false,DistanceScalingRef=50},RankSpoof={Enabled=false,Text="Radiant",Icon="★"}},SoundVisualizer={Enabled=false,Source="All",Types=I({Footsteps=true,Other=true}),MinVolume=0,Footsteps={Mode="Circle",UseLoudnessColor=true,Color=Color3.fromRGB(0,255,100)},Other={Mode="Origin",UseLoudnessColor=true,Color=Color3.fromRGB(0,200,255)}}};end tbl17.bg = function() local bg = tbl17.cache.bg if not bg then local bg2 = { c = fn35() } tbl17.cache.bg = bg2 bg = bg2 end return bg.c end end do -- bh local function fn35() tbl17 .bb();return{PerProfile={Overrides={}}};end tbl17.bh = function() local bh = tbl17.cache.bh if not bh then bh = { c = fn35() } tbl17.cache.bh = bh end return bh.c end end do -- bi local function fn35() tbl17 .a3();return{Movement={WalkSpeed={Enabled=false,Speed=2,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false}},JumpPower={Enabled=false,Speed=2,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=false,Invisible=false}},Flight={Enabled=false,Speed=100,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false}},Sliding={Enabled=false,Speed=10,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false}},Noclip={Enabled=false,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false}},AutoStrafe={Enabled=false,Speed=50,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false}},LongJump={Enabled=false,Keybind={State=false,Kind="Tap",Bind=nil,ShowInList=true,Invisible=false},Mode="Under Feet",Force=60,UpwardVelocity=20,Behind=8},MovementRecorder={Enabled=false,HideUI=false,HideNotifications=false,OpenDistance=3,RenderDistance=50,LookAlignSpeed=180,AlignSnapDistance=0.2,LookSmoothing=35,Record={Keybind={State=false,Kind="Toggle",Bind=nil,ShowInList=true,Invisible=false}},Replay={Keybind={State=false,Kind="Toggle",Bind=nil,ShowInList=true,Invisible=false}}}},Removables={NoFlashbang=false,NoBurnEffect=false,NoAdsVignette=false,NoScopeOverlay=false,NoScopeReticle=false,NoGunTracers=false,NoMuzzleFlash=false,NoHitmarker=false},ThirdPerson={Enabled=false,Keybind={State=false,Kind="Always",Bind=nil,ShowInList=true,Invisible=false},ShowReplica=false,RayCheck=false,X=3,Y=2,Z=6},CameraFov={Enabled=false,Value=70},StretchedResolution={Enabled=false,X=13,Y=10},CustomCrosshair={Enabled=false,Style="Lines",Image={Name="",Size=32,Transparency=0},Length=12,Thickness=2,Gap=6,Outline={Enabled=false,Color=Color3.fromRGB(0,0,0),Thickness=1},Animation={Enabled=false,Kind="Shimmer",Speed=1,Shimmer={Color=Color3.fromRGB(40,40,40)},Perimeter={Color=ColorSequence.new(Color3.fromRGB(255,0,0),Color3.fromRGB(0,0,255))},PingPong={BackgroundColor=Color3.fromRGB(0,0,0),MainColor=Color3.fromRGB(255,255,255),Rotation=0}},Rotation={Enabled=false,Angle=0,Speed=90},Spread={Enabled=false,Range={Min=4,Max=16},Speed=3},Top={Enabled=true,Color=ColorSequence.new(Color3.fromRGB(255,255,255))},Bottom={Enabled=true,Color=ColorSequence.new(Color3.fromRGB(255,255,255))},Left={Enabled=true,Color=ColorSequence.new(Color3.fromRGB(255,255,255))},Right={Enabled=true,Color=ColorSequence.new(Color3.fromRGB(255,255,255))},Text={Enabled=false,Content="",Font="Inconsolata",Size=14,Offset=24,Color=ColorSequence.new(Color3.fromRGB(255,255,255)),Outline={Enabled=false,Color=Color3.fromRGB(0,0,0),Thickness=1},Animation={Enabled=false,Kind="Shimmer",Speed=1,Shimmer={Color=Color3.fromRGB(40,40,40)},Perimeter={Color=ColorSequence.new(Color3.fromRGB(255,0,0),Color3.fromRGB(0,0,255))},PingPong={BackgroundColor=Color3.fromRGB(0,0,0),MainColor=Color3.fromRGB(255,255,255),Rotation=0}}},FollowTarget={Enabled=false,Mode="Crosshair",Speed=20,Damper=1,SnapDistance=5}},AnimationPlayer={Enabled=false,Animation="Cat Girl Bounce",CustomId="",Speed=1,Start=0,End=100},DeviceSpoof={Enabled=false,SpoofType="VR"},PlayerSpoofer={LocalPlayer={Name={Enabled=false,Value="Nosniy"},DisplayName={Enabled=false,Value="Nosniy"},Avatar={Enabled=false,Value="20349956"},Ping={Enabled=false,Value="Low"},Keys={Enabled=false,Value=999},EventCurrency={Enabled=false,Value=9999},Winstreak={Enabled=false,Value=999},Level={Enabled=false,Value=999},CasualWins={Enabled=false,Value=99999},RankedWins={Enabled=false,Value=9999},CasualWinPercent={Enabled=false,Value=100},RankedWinPercent={Enabled=false,Value=100},RankedElo={Enabled=false,Value=3600},LeaderboardRank={Enabled=false,Value=1},FavoriteMap={Enabled=false,Value="Arena"},NametagStatus={Enabled=false,Value="Prime"},Influencer={Enabled=false,Value=true},RobloxEmployee={Enabled=false,Value=true},NosniyTeam={Enabled=false}},OtherPlayers={Name={Enabled=false,Value=""},DisplayName={Enabled=false,Value=""},Avatar={Enabled=false,Value=""},Winstreak={Enabled=false,Value=0},Level={Enabled=false,Value=0},CasualWins={Enabled=false,Value=0},RankedWins={Enabled=false,Value=0},CasualWinPercent={Enabled=false,Value=0},RankedWinPercent={Enabled=false,Value=0},RankedElo={Enabled=false,Value=0},LeaderboardRank={Enabled=false,Value=200},FavoriteMap={Enabled=false,Value=""},NametagStatus={Enabled=false,Value="Prime"},Influencer={Enabled=false},RobloxEmployee={Enabled=false},NosniyTeam={Enabled=false}}}};end tbl17.bi = function() local bi = tbl17.cache.bi if not bi then local bi2 = { c = fn35() } tbl17.cache.bi = bi2 bi = bi2 end return bi.c end end do -- bj local function fn35() tbl17 .a5();return{ColorAnimations={Entries= tbl17 .i().atomic({})},Notifications={Enabled=true,Side="TopLeft",Size=15,Font="Inconsolata",Offset=0},Theme={Accent=Color3.fromRGB(197,59,59),Outline=Color3.fromRGB(24,25,24),Background=Color3.fromRGB(0,0,0),ElementBackground=Color3.fromRGB(6,6,6),TabButtonSelected=Color3.fromRGB(51,65,70),Unselected=Color3.fromRGB(75,72,72),TextColor=Color3.fromRGB(197,197,197),ToggleCircleUnselected=Color3.fromRGB(70,85,87),ToggleBackgroundUnselected=Color3.fromRGB(12,13,13)},AutoExecuteScript={Enabled=false}};end tbl17.bj = function() local bj = tbl17.cache.bj if not bj then bj = { c = fn35() } tbl17.cache.bj = bj end return bj.c end end do -- bk local function fn35() tbl17 .a9();return{ItemModifiers={NoMotion=false,NoCameraShake=false,NoCameraSway=false,NoShootAnimation=false,NoSprintAnimation=false,NoEquipAnimation=false,NoReloadAnimation=false,NoSpread=false,AimCooldown={Enabled=false,Percentage=50},Recoil={Enabled=false,Percentage=75},FireCooldown={Enabled=false,Percentage=25},AimSpeed={Enabled=false,Percentage=300},MeleeCooldown={Enabled=false,Percentage=25},DashCooldown={Enabled=false,Percentage=25},ExtendMeleeRange={Enabled=false,Range=10},InfiniteDoubleJumps=false,AlwaysBackstab=false,FastShoot=false,FastProjectile=false,FullAuto=false,FireRate={Enabled=false,Percentage=100},GrenadeFuse={Enabled=false,ExplodeOn="Impact",RemoveFuse=false}},BulletTracers={Enabled=false,Color=Color3.fromRGB(120,220,255),Width=0.06,Lifetime=0.6,FadeTime=0.35,Style="Beam",TextureLength=4,TextureSpeed=1,Emission=1,Glow=1,Expand=true,ExpandSpeed=18,ExpandDamper=0.7},ViewModelOffset={Enabled=false,X=0,Y=0,Z=0,Pitch=0,Yaw=0,Roll=0},Chams={Character={Enabled=false,Material="Ghost",Color=Color3.fromRGB(255,255,255),Transparency=0,StripTextures=false},Arms={Enabled=false,Material="Ghost",Color=Color3.fromRGB(255,255,255),Transparency=0,StripTextures=true},Item={Enabled=false,Material="Ghost",Color=Color3.fromRGB(255,255,255),Transparency=0,StripTextures=false}},ViewModelHighlight={Arms={Enabled=false,AlwaysOnTop=false,FillColor=Color3.fromRGB(255,255,255),FillTransparency=0.5,OutlineColor=Color3.fromRGB(255,255,255),OutlineTransparency=0},Item={Enabled=false,AlwaysOnTop=false,FillColor=Color3.fromRGB(255,255,255),FillTransparency=0.5,OutlineColor=Color3.fromRGB(255,255,255),OutlineTransparency=0}},ViewModelWireframe={Arms={Enabled=false,Color=Color3.fromRGB(255,255,255),Width=0.0025},Item={Enabled=false,Color=Color3.fromRGB(255,255,255),Width=0.0025}},PlayerHit={Enabled=false,Sound={Enabled=false,DisableGameSound=false,HeadName=nil,BodyName=nil,HeadVolume=1,HeadPitch=1,BodyVolume=1,BodyPitch=1},Notification={Enabled=false,Text="Hit %DNAME% (%NAME%) for %DMG% in %PART%"},Chams={Enabled=false,Color=Color3.fromRGB(255,0,0),Transparency=0,Duration=0.8,Material="Ghost"},HitFlash={Enabled=false,Color=Color3.fromRGB(90,170,255),Duration=1.35}},PlayerElimination={Enabled=false,Sound={Enabled=false,Name=nil,Volume=1,Pitch=1},Notification={Enabled=false,Text="Eliminated %DNAME% (%NAME%)"},Chams={Enabled=false,Color=Color3.fromRGB(255,0,0),Transparency=0,Duration=0.8,Material="Ghost"},KillFlash={Enabled=false,Color=Color3.fromRGB(90,170,255),Duration=1.35}}};end tbl17.bk = function() local bk = tbl17.cache.bk if not bk then local bk2 = { c = fn35() } tbl17.cache.bk = bk2 bk = bk2 end return bk.c end end do -- bl local function fn35() tbl17 .ba();return{Lighting={Enabled=false,Ambient={Enabled=false,Indoor=Color3.new(0.231373,0.796078,1),Outdoor=Color3.new(0.003922,0.4,0.545098)},ClockTime={Enabled=false,Value=12},Brightness={Enabled=false,Value=2},ColorShift={Enabled=false,Top=Color3.fromRGB(100,160,255),Bottom=Color3.fromRGB(20,40,90)},EnvironmentDiffuseScale={Enabled=false,Value=0},EnvironmentSpecularScale={Enabled=false,Value=0},ExposureCompensation={Enabled=false,Value=0},Fog={Enabled=false,Color=Color3.fromRGB(192,192,192),Start=0,End=100000},GeographicLatitude={Enabled=false,Value=41.733},DisableGlobalShadows=false,ShadowSoftness={Enabled=false,Value=0.5},LightingStyle={Enabled=false,Value="Realistic"},ShadowColor={Enabled=false,Value=Color3.new(0.7,0.7,0.72)},PrioritizeLightingQuality=false},Skybox={Enabled=false,Preset=""},Bloom={Enabled=false,Intensity=0.4,Size=24,Threshold=0.95},ColorCorrection={Enabled=false,TintColor=Color3.new(1,1,1),Saturation=0,Brightness=0,Contrast=0},ColorGrading={Enabled=false,TonemapperPreset="Default"},DepthOfField={Enabled=false,FarIntensity=0.75,FocusDistance=0.05,InFocusRadius=10,NearIntensity=0.75},SunRays={Enabled=false,Intensity=0.25,Spread=1},Atmosphere={Enabled=false,Color=Color3.new(0.7843,0.6667,0.4235),Decay=Color3.new(0.3608,0.2353,0.0549),Density=0.395,Offset=0,Glare=0,Haze=0},MotionBlur={Enabled=false,Intensity=10,Sensitivity=1},Weather={Enabled=false,Preset="Snow",Intensity=1,Rate=1,Height=45,Color=Color3.fromRGB(255,255,255),Lightning={Enabled=false,Color=ColorSequence.new(Color3.fromRGB(214,230,255)),Interval=2,Distance=80,Height=220,Thickness=4,Jaggedness=7,Branches=12,Flash=8,Sparks={Enabled=true,Color=ColorSequence.new(Color3.fromRGB(238,246,255)),Count=18,Thickness=2.2,Distance=22,Speed=22,Jaggedness=4},Explosion={Enabled=true,Size=0.45,Bolts=14,Color=ColorSequence.new(Color3.fromRGB(150,200,255))},Sound={Enabled=true,Volume=1,Delay=true,SoundId=""}},Wind={Strength=0,Angle=0},Speed=1,Glow=0.6,Size=1,Spread=25},Ambience={Enabled=false,Sound="",CustomSound="",Volume=1}};end tbl17.bl = function() local bl = tbl17.cache.bl if not bl then bl = { c = fn35() } tbl17.cache.bl = bl end return bl.c end end do -- bm local function fn35() local v115 = tbl17.bd() local v116 = tbl17.be() tbl17.bb() local v117 = tbl17.bf() local v118 = tbl17.bg() local v119 = tbl17.bh() local v120 = tbl17.bi() local v121 = tbl17.bj() local tbl18 = { v116, v118, tbl17.bk(), v120, tbl17.bl(), v115, v117, v121, v119 } local tbl19 = {} for _, v122 in tbl18, nil, nil do for k, v123 in v122, nil, nil do assert(tbl19[k] == nil, string.format("Duplicate default configuration key '%s'", tostring(k))) tbl19[k] = v123 end end return (table.freeze(tbl19)) end tbl17.bm = function() local bm = tbl17.cache.bm if not bm then local bm2 = { c = fn35() } tbl17.cache.bm = bm2 bm = bm2 end return bm.c end end do -- bn local function fn35() local tbl18 = { "Box", "Name", "HeldWeapon", "Distance", "Rank", "Winstreak", "Deflecting" } local function fn36(arg) if type(arg) ~= "table" then return end if arg.Min == nil then arg.Min = tonumber(arg.min) end if arg.Max == nil then arg.Max = tonumber(arg.max) end arg.min = nil arg.max = nil end local function fn37(arg) local v115 = v86[68] if type(arg) ~= v115 then return end local evasion = arg.Evasion local projectileBreaker = type(evasion) == "table" and evasion.ProjectileBreaker or nil if type(projectileBreaker) == "table" then fn36(projectileBreaker.DepthForward) fn36(projectileBreaker.DepthUp) end local weapons = arg.Weapons local enabled = type(weapons) == "table" and weapons.Enabled or nil local v116 = v86[68] if type(enabled) == v116 then enabled.Hitscan = nil enabled.Projectile = nil end arg.HitscanOffsets = nil arg.MeleeOffsets = nil end local function fn38(arg) if type(arg) ~= "table" then return end for _, v115 in { "Enemy", "Team" }, nil, nil do local v116 = arg[v115] if type(v116) == "table" then for _, v117 in tbl18, nil, nil do local v118 = v116[v117] if type(v118) == "table" then local animation = v118.Animation if type(animation) == "table" and type(animation.Enabled) ~= "boolean" then animation.Enabled = v118.Animate == true end v118.Animate = nil end end end end end local function fn39(arg) if type(arg) == "table" then arg.Title = nil end end local function fn40(arg) if type(arg) ~= "table" then return end fn39(arg.Notification) local sound = arg.Sound local v115 = v86[68] if type(sound) ~= v115 then return end local headVolume = tonumber(sound.Volume) if headVolume ~= nil then if sound.HeadVolume == nil then sound.HeadVolume = headVolume end if sound.BodyVolume == nil then sound.BodyVolume = headVolume end end sound.Volume = nil end return function(arg) if type(arg) ~= "table" then return arg end local misc = arg.Misc if type(misc) == "table" then for k, v115 in misc, nil, nil do if arg[k] == nil then arg[k] = v115 end end end arg.Misc = nil local movementRecorder = arg.MovementRecorder if type(movementRecorder) == "table" then if type(arg.Movement) ~= "table" then arg.Movement = {} end if arg.Movement.MovementRecorder == nil then arg.Movement.MovementRecorder = movementRecorder end end arg.MovementRecorder = nil fn37(arg.Ragebot) fn38(arg.ESP) fn40(arg.PlayerHit) if type(arg.PlayerElimination) == "table" then fn39(arg.PlayerElimination.Notification) end if type(arg.StretchedResolution) == "table" then arg.StretchedResolution.Value = nil end arg.RiotShieldGod = nil return arg end end tbl17.bn = function() local bn = tbl17.cache.bn if not bn then local bn2 = { c = fn35() } tbl17.cache.bn = bn2 bn = bn2 end return bn.c end end do -- bo local function fn35() local tbl18 = { { R = 30, G = 30, B = 38 }, { R = 40, G = 32, B = 44 } } local tbl19 = { { R = 100, G = 102, B = 120 }, { R = 108, G = 100, B = 114 } } local tbl20 = { R = 104, G = 104, B = 122 } local tbl21 = { R = 136, G = 138, B = 156 } local function fn36(arg, arg2) if type(arg) ~= "table" or arg.__type ~= v86[115] then return v86[153] end if type(arg.R) ~= "number" or type(arg.G) ~= "number" or type(arg.B) ~= "number" then return v86[153] end return math.abs(arg.R - arg2.R / 255) <= 1e-06 and math.abs(arg.G - arg2.G / 255) <= 1e-06 and math.abs(arg.B - arg2.B / v86[108]) <= 1e-06 end local function fn37(arg) return { __type = "Color3", R = arg.R / 255, G = arg.G / 255, B = arg.B / 255 } end local function fn38(arg, arg2, arg3, arg4) for _, v115 in arg3, nil, nil do if fn36(arg[arg2], v115) then arg[arg2] = fn37(arg4) return end end end return function(arg) local flag19 = type(arg) ~= "table" local flag20 if flag19 then flag20 = flag19 else local v115 = v86[68] flag20 = type(arg.Theme) ~= v115 end if flag20 then return arg end fn38(arg.Theme, "Outline", tbl18, tbl20) fn38(arg.Theme, v86[96], tbl19, tbl21) return arg end end tbl17.bo = function() local bo = tbl17.cache.bo if not bo then local bo2 = { c = fn35() } tbl17.cache.bo = bo2 bo = bo2 end return bo.c end end do -- bp local function fn35() local function fn36(arg, arg2) arg2(arg) local perProfile = arg.PerProfile if type(perProfile) ~= "table" then return end local defaultProfile = perProfile.DefaultProfile if type(defaultProfile) == "table" then arg2(defaultProfile) end local profiles = perProfile.Profiles if type(profiles) ~= "table" then return end for _, v115 in profiles, nil, nil do if type(v115) == "table" then arg2(v115) end end end local function fn37(arg) local customCrosshair = arg.CustomCrosshair local v115 = v86[68] if type(customCrosshair) ~= v115 or type(customCrosshair.Image) ~= "table" then return end local image = customCrosshair.Image if type(image.Name) ~= "string" then local v116 = v86[165] image.Name = type(image.Path) == v116 and image.Path or "" end image.Path = nil end local function fn38(arg) local esp = arg.ESP if type(esp) ~= "table" then return end for _, v115 in { "Enemy", "Team" }, nil, nil do local v116 = esp[v115] local boxImage = type(v116) == "table" and v116.BoxImage or nil local v117 = v86[68] if type(boxImage) == v117 then local v118 = v86[165] if type(boxImage.Name) ~= v118 then boxImage.Name = type(boxImage.Path) == "string" and boxImage.Path or "" end boxImage.Path = nil end end end local function fn39(arg) local v115 = v86[68] local viewModelWireframe = type(arg.ViewModelWireframe) == v115 and arg.ViewModelWireframe or nil local v116 = v86[68] local wireframe = type(arg.Wireframe) == v116 and arg.Wireframe or nil local viewModelItemWireframe = type(arg.ViewModelItemWireframe) == "table" and arg.ViewModelItemWireframe or nil if viewModelWireframe == nil and wireframe == nil and viewModelItemWireframe == nil then return end viewModelWireframe = viewModelWireframe or {} if viewModelWireframe.Arms == nil and wireframe ~= nil and type(wireframe.Arms) == "table" then viewModelWireframe.Arms = wireframe.Arms end if viewModelWireframe.Item == nil then if wireframe ~= nil and type(wireframe.Item) == "table" then viewModelWireframe.Item = wireframe.Item elseif viewModelItemWireframe ~= nil then viewModelWireframe.Item = viewModelItemWireframe end end arg.ViewModelWireframe = viewModelWireframe arg.ViewModelItemWireframe = nil arg.Wireframe = nil end local function fn40(arg) fn37(arg) fn38(arg) fn39(arg) end return function(arg) if type(arg) ~= "table" then return arg end fn36(arg, fn40) return arg end end tbl17.bp = function() local bp = tbl17.cache.bp if not bp then local bp2 = { c = fn35() } tbl17.cache.bp = bp2 bp = bp2 end return bp.c end end do -- bq local function fn35() return function(arg, arg2, arg3) arg3(arg[arg2]) local perProfile = arg.PerProfile if type(perProfile) ~= "table" then return end local defaultProfile = perProfile.DefaultProfile if type(defaultProfile) == "table" then arg3(defaultProfile[arg2]) end local profiles = perProfile.Profiles if type(profiles) ~= "table" then return end for _, v115 in profiles, nil, nil do local v116 = v86[68] if type(v115) == v116 then arg3(v115[arg2]) end end end end tbl17.bq = function() local bq = tbl17.cache.bq if not bq then local bq2 = { c = fn35() } tbl17.cache.bq = bq2 bq = bq2 end return bq.c end end do -- br local function fn35() local v115 = tbl17.bq() local function fn36(arg) if type(arg) ~= "table" then return end local manipulate = arg.Manipulate if type(manipulate) ~= "table" then manipulate = {} arg.Manipulate = manipulate end if manipulate.Enabled == nil then manipulate.Enabled = v86[153] end if manipulate.Mode == nil then manipulate.Mode = "OnBestTarget" end if manipulate.ShowIndicator == nil then manipulate.ShowIndicator = true end end return function(arg) if type(arg) ~= "table" then return arg end v115(arg, "SilentAim", fn36) return arg end end tbl17.br = function() local br = tbl17.cache.br if not br then br = { c = fn35() } tbl17.cache.br = br end return br.c end end do -- bs local function fn35() local fn36 = nil fn36 = function(arg) if type(arg) ~= "table" then return arg end local tbl18 = {} for k, v115 in arg, nil, nil do tbl18[fn36(k)] = fn36(v115) end return tbl18 end local fn37 = nil fn37 = function(arg, arg2) if type(arg) ~= type(arg2) then return false end if type(arg) ~= "table" then return arg == arg2 end for k, v115 in arg, nil, nil do if not fn37(v115, arg2[k]) then return v86[153] end end for k in arg2, nil, nil do if arg[k] == nil then return false end end return true end local function fn38(arg) return type(arg) == "table" and type(arg.__type) ~= "string" end local fn39 = nil fn39 = function(arg, arg2) if arg == nil then return nil end if not fn38(arg) or not fn38(arg2) then if fn37(arg, arg2) then return nil end return fn36(arg) end local tbl18 = {} for k, v115 in arg, nil, nil do local v116 = fn39(v115, arg2[k]) if v116 ~= nil then tbl18[k] = v116 end end if next(tbl18) == nil then return nil end return tbl18 end return function(arg) local v115 = v86[68] if type(arg) ~= v115 then return arg end local perProfile = arg.PerProfile local v116 = v86[68] if type(perProfile) ~= v116 then arg.PerProfile = { Overrides = {} } return arg end local defaultProfile = perProfile.DefaultProfile local profiles = perProfile.Profiles local enabled = perProfile.Enabled local active = perProfile.Active local tbl18 = {} local v117 = v86[68] if type(defaultProfile) == v117 then for k, v118 in defaultProfile, nil, nil do if type(v118) == "table" then arg[k] = v118 if not (type(profiles) ~= "table" or type(enabled) ~= "table" or enabled[k] ~= true) then for k2, v119 in profiles, nil, nil do if not (type(v119) ~= "table" or type(v119[k]) ~= "table") then if not (type(active) ~= "table" or type(active[k2]) ~= "table") then if active[k2][k] == v86[34] then local v120 = fn39(v119[k], v118) if v120 ~= nil then local tbl19 = tbl18[k2] if tbl19 == nil then tbl19 = {} tbl18[k2] = tbl19 end tbl19[k] = v120 end end end end end end end end end arg.PerProfile = { Overrides = tbl18 } return arg end end tbl17.bs = function() local bs = tbl17.cache.bs if not bs then local bs2 = { c = fn35() } tbl17.cache.bs = bs2 bs = bs2 end return bs.c end end do -- bt local function fn35() local tbl18 = { "Aimbot", "SilentAim", "Triggerbot" } local tbl19 = { "Air", "Ground" } local tbl20 = { "HitboxHead", "HitboxBody" } local tbl21 = { "HitboxHeadSmall", "HitboxBodySmall" } local tbl22 = { HitboxHead = "HitboxHeadSmall", HitboxBody = "HitboxBodySmall" } local tbl23 = { HitboxHead = true, HitboxBody = true } local tbl24 = { HitboxHeadSmall = true, HitboxBodySmall = true } local function fn36(arg) return arg.Standard ~= nil or arg.Small ~= nil end local function fn37(arg) if type(arg) ~= "table" or fn36(arg) then return arg end local flag19 = false for _, v115 in tbl19, nil, nil do if type(arg[v115]) == "table" then flag19 = true break end end if not flag19 then return arg end local tbl25 = { Standard = {}, Small = {} } for _, v115 in tbl19, nil, nil do local v116 = arg[v115] if type(v116) == "table" then local tbl26 = {} local tbl27 = {} for _, v117 in tbl20, nil, nil do if v116[v117] == true then tbl26[v117] = true end end local flag20 = false for _, v117 in tbl21, nil, nil do if v116[v117] == true then tbl27[v117] = true flag20 = true end end if not flag20 then for k, v117 in tbl22, nil, nil do if tbl26[k] == true then tbl27[v117] = true end end end tbl25.Standard[v115] = tbl26 tbl25.Small[v115] = tbl27 end end return tbl25 end local function fn38(arg) if type(arg) ~= "table" or fn36(arg) then return arg end local tbl25 = {} for _, v115 in tbl19, nil, nil do local v116 = arg[v115] if type(v116) == "table" then for k, v117 in v116, nil, nil do local v118 = v86[116] if type(v117) == v118 then local str7 if tbl23[k] then str7 = "Standard" else if not tbl24[k] then continue end str7 = "Small" end local tbl26 = tbl25[str7] if tbl26 == nil then tbl26 = {} tbl25[str7] = tbl26 end local tbl27 = tbl26[v115] if tbl27 == nil then tbl27 = {} tbl26[v115] = tbl27 end tbl27[k] = v117 end end end end if next(tbl25) == nil then return nil end return tbl25 end return function(arg) local v115 = v86[68] if type(arg) ~= v115 then return arg end for _, v116 in tbl18, nil, nil do local v117 = arg[v116] local v118 = v86[68] if type(v117) == v118 then v117.TargetHitboxes = fn37(v117.TargetHitboxes) end end local perProfile = arg.PerProfile if type(perProfile) ~= "table" or type(perProfile.Overrides) ~= "table" then return arg end for _, v116 in perProfile.Overrides, nil, nil do if type(v116) == "table" then for _, v117 in tbl18, nil, nil do local v118 = v116[v117] if type(v118) == "table" and v118.TargetHitboxes ~= nil then v118.TargetHitboxes = fn38(v118.TargetHitboxes) end end end end return arg end end tbl17.bt = function() local bt = tbl17.cache.bt if not bt then local bt2 = { c = fn35() } tbl17.cache.bt = bt2 bt = bt2 end return bt.c end end do -- bu local function fn35() local function fn36(arg) if type(arg) ~= "table" then return end if arg.Esp == nil then arg.Esp = arg.ESP end arg.ESP = nil end return function(arg) local v115 = v86[68] if type(arg) ~= v115 then return arg end fn36(arg) local perProfile = arg.PerProfile local overrides = type(perProfile) == "table" and perProfile.Overrides or nil if type(overrides) == "table" then for _, v116 in overrides, nil, nil do fn36(v116) end end return arg end end tbl17.bu = function() local bu = tbl17.cache.bu if not bu then bu = { c = fn35() } tbl17.cache.bu = bu end return bu.c end end do -- bv local function fn35() return function(arg, arg2) return { __type = v86[93], Keypoints = { { Time = 0, R = arg.R, G = arg.G, B = arg.B }, { Time = 1, R = arg2.R, G = arg2.G, B = arg2.B } }, } end end tbl17.bv = function() local bv = tbl17.cache.bv if not bv then local bv2 = { c = fn35() } tbl17.cache.bv = bv2 bv = bv2 end return bv.c end end do -- bw local function fn35() local v115 = tbl17.bv() local function fn36(arg, arg2) return arg.R == arg2.R and arg.G == arg2.G and arg.B == arg2.B end local function fn37(arg) local startColor = arg.StartColor local endColor = arg.EndColor local gradient = arg.Gradient local flag19 = type(gradient) == "table" and gradient.Enabled == v86[34] if flag19 then local v116 = v86[68] flag19 = type(gradient.Color) == v116 end if flag19 then arg.Color = gradient.Color arg.ColorMode = "Gradient" elseif type(startColor) == "table" and type(endColor) == "table" then arg.Color = v115(startColor, endColor) arg.ColorMode = fn36(startColor, endColor) and "Solid" or "Reactive" end arg.StartColor = nil arg.EndColor = nil arg.Gradient = nil end local fn38 = nil fn38 = function(arg) local v116 = v86[68] if type(arg) ~= v116 then return end for _, v117 in arg, nil, nil do fn38(v117) end if arg.StartColor ~= nil and arg.EndColor ~= nil then fn37(arg) end end return function(arg) fn38(arg) return arg end end tbl17.bw = function() local bw = tbl17.cache.bw if not bw then local bw2 = { c = fn35() } tbl17.cache.bw = bw2 bw = bw2 end return bw.c end end do -- bx local function fn35() local fn36 fn36 = function(arg) if type(arg) ~= "table" then return end for _, v115 in arg, nil, nil do fn36(v115) end if arg.Type ~= "Linear" or arg.Strength == nil then return end arg.Speed = math.min(v86[63], math.max(0.01, tonumber(arg.Speed) or v86[186]) / math.max(0.01, tonumber(arg.Smoothing) or 1) * math.max(0.01, tonumber(arg.Strength) or 0)) arg.Strength = nil end return function(arg) fn36(arg) return arg end end tbl17.bx = function() local bx = tbl17.cache.bx if not bx then bx = { c = fn35() } tbl17.cache.bx = bx end return bx.c end end do -- by local function fn35() local function fn36(arg) if type(arg) ~= "table" then return end local weapons = arg.Weapons local v115 = v86[68] if type(weapons) ~= v115 then return end if arg.FirstWeapons == nil then arg.FirstWeapons = weapons end if arg.SecondWeapons == nil then arg.SecondWeapons = {} end arg.Weapons = nil end return function(arg) if type(arg) ~= "table" then return arg end local misc = arg.Misc local v115 = v86[68] if type(misc) == v115 then fn36(misc.AutoBan) end fn36(arg.AutoBan) return arg end end tbl17.by = function() local by = tbl17.cache.by if not by then local by2 = { c = fn35() } tbl17.cache.by = by2 by = by2 end return by.c end end do -- bz local function fn35() local fn36 = nil fn36 = function(arg) local v115 = v86[68] if type(arg) ~= v115 then return end for _, v116 in arg, nil, nil do fn36(v116) end if arg.Actions == nil then return end arg.Moderators = arg.Actions arg.ModFriends = {} arg.Actions = nil end return function(arg) fn36(arg) return arg end end tbl17.bz = function() local bz = tbl17.cache.bz if not bz then bz = { c = fn35() } tbl17.cache.bz = bz end return bz.c end end do -- bA local function fn35() local v115 = tbl17.d() local fn36 = nil fn36 = function(arg, arg2) for k, v116 in arg2, nil, nil do if type(v116) == "table" and type(arg[k]) == "table" then fn36(arg[k], v116) else arg[k] = v116 end end end return function(arg) local perProfile = { Enabled = {}, Active = {}, DefaultProfile = {}, Profiles = {} } for k, v116 in arg, nil, nil do local flag19 = k == "GunSpecific" local flag20 if flag19 then flag20 = flag19 else local v117 = v86[68] flag20 = type(v116) ~= v117 end if not flag20 then local gunSpecific = v116.GunSpecific local v117 = v86[68] if type(gunSpecific) == v117 and gunSpecific.Enabled ~= nil then if gunSpecific.Enabled == true then perProfile.Enabled[k] = true end v116.GunSpecific = nil perProfile.DefaultProfile[k] = v115(v116) end end end local gunSpecific = arg.GunSpecific if type(gunSpecific) == "table" then for k, v116 in gunSpecific, nil, nil do if type(v116) == "table" then for k2, v117 in v116, nil, nil do if k2 == "Active" then local v118 = v86[68] if type(v117) == v118 then for k3, v119 in v117, nil, nil do if v119 == true then local tbl18 = perProfile.Active[k] if tbl18 == nil then tbl18 = {} perProfile.Active[k] = tbl18 end tbl18[k3] = true end end end elseif type(v117) == "table" then local tbl18 = perProfile.Profiles[k] if tbl18 == nil then tbl18 = {} perProfile.Profiles[k] = tbl18 end local v118 = arg[k2] local tbl19 = {} if type(v118) == "table" then tbl19 = v115(v118) end fn36(tbl19, v117) tbl18[k2] = tbl19 end end end end end arg.GunSpecific = nil arg.PerProfile = perProfile return arg end end tbl17.bA = function() local ba = tbl17.cache.bA if not ba then local ba2 = { c = fn35() } tbl17.cache.bA = ba2 ba = ba2 end return ba.c end end do -- bB local function fn35() local v115 = tbl17.bv() local v116 = tbl17.bq() local tbl18 = { "Enemy", "Team" } local tbl19 = { "Skeleton", "Tracer" } local function fn36(arg) if arg.Gradient == true and type(arg.GradientColor) == "table" then arg.Color = arg.GradientColor elseif type(arg.Color) == "table" and arg.Color.__type == "Color3" then arg.Color = v115(arg.Color, arg.Color) end arg.Gradient = nil arg.GradientColor = nil end local function fn37(arg) if type(arg) ~= "table" then return end for _, v117 in tbl18, nil, nil do local v118 = arg[v117] if type(v118) == "table" then for _, v119 in tbl19, nil, nil do local v120 = v118[v119] if type(v120) == "table" then fn36(v120) end end end end end local function fn38(arg) if type(arg) ~= "table" then return 0 end local keypoints = arg.Keypoints if #keypoints == v86[186] then return 0 end return keypoints[v86[63]].Value end local function fn39(arg) local gradient = arg.Gradient if gradient.Animate == nil then return end if gradient.Enabled == true and type(gradient.Color) == "table" then arg.Color = gradient.Color end arg.Animate = gradient.Animate == true arg.Transparency = fn38(arg.Transparency) arg.Gradient = nil end local fn40 = nil fn40 = function(arg) if type(arg) ~= "table" then return end for _, v117 in arg, nil, nil do fn40(v117) end if type(arg.Gradient) == "table" then fn39(arg) end end return function(arg) v116(arg, "ESP", fn37) fn40(arg) return arg end end tbl17.bB = function() local bb = tbl17.cache.bB if not bb then bb = { c = fn35() } tbl17.cache.bB = bb end return bb.c end end do -- bC local function fn35() local v115 = tbl17.d() local v116 = tbl17.bq() local function fn36(arg) local mode = arg.Mode if type(mode) ~= "table" then return end local num = tonumber(mode.Smoothing) local num2 = tonumber(mode.Strength) if mode.Type == "Spring" and num ~= nil then mode.Speed = 1 / math.max(0.01, num) * 10 elseif mode.Type == "Linear" and num2 ~= nil then mode.Speed = math.min(1, math.max(0.01, tonumber(mode.Speed) or v86[186]) / math.max(0.01, num or 1) * math.max(0.01, num2)) end mode.Smoothing = nil mode.Strength = nil end local function fn37(arg) local v117 = v86[68] if type(arg) ~= v117 then return end if arg.LockOnly == v86[34] then arg.Mode = "LockOnly" end arg.LockOnly = nil end local function fn38(arg) local target = arg.Target if type(target) ~= "table" then return false end local partSelection = target.PartSelection local n = 50 local str7 = "ClosestToCrosshair" if type(partSelection) == "table" then if partSelection.Type == "Random" then str7 = "Random" end n = tonumber(partSelection.HeadPercent) n = n or 50 end local surface = target.Surface if type(surface) ~= "table" then surface = { ReductionPercentage = 50, Center = false } end arg.TargetConditions = target.Conditions arg.TargetHitboxes = target.TargetParts arg.HitboxSelection = { Type = str7, Random = { Head = n } } arg.HitboxPoint = { Type = target.Type == "Surface" and "Surface" or "Center", Surface = surface } if type(arg.FovSettings) == "table" then arg.Fov = arg.FovSettings end arg.Target = nil arg.FovSettings = nil return true end local function fn39(arg) if type(arg) ~= "table" then return end if fn38(arg) then arg.ActivationConditions = { NotReloading = arg.DisableOnReload == true, ScopedIn = arg.EnableOnlyOnScope == true } arg.DisableOnReload = nil arg.EnableOnlyOnScope = nil end fn36(arg) end local function fn40(arg) if type(arg) ~= "table" or not fn38(arg) then return end arg.ActivationConditions = { NotReloading = true, ScopedIn = false } end local function fn41(arg) if type(arg) ~= "table" then return end if not (arg.TargetParts ~= nil or arg.DisableOnReload ~= nil or arg.ActivateOnScope ~= nil or arg.NotDeflecting ~= nil or arg.NotShielded ~= nil) then return end local notDeflecting = arg.NotDeflecting if type(notDeflecting) ~= "boolean" then notDeflecting = true end local notShielded = arg.NotShielded if type(notShielded) ~= "boolean" then notShielded = true end arg.ActivationConditions = { NotReloading = arg.DisableOnReload == true, ScopedIn = arg.ActivateOnScope == true } arg.TargetConditions = { Vulnerable = v86[34], NotDeflecting = notDeflecting, NotShielded = notShielded } if type(arg.TargetParts) == "table" then arg.TargetHitboxes = arg.TargetParts end arg.DisableOnReload = nil arg.ActivateOnScope = nil arg.NotDeflecting = nil arg.NotShielded = nil arg.TargetParts = nil end return function(arg) if type(arg) ~= "table" then return arg end local targetLock = arg.TargetLock v116(arg, "Aimbot", function(arg2) local v117 = v86[68] if type(arg2) ~= v117 then return end if arg2.TargetLock == nil and type(targetLock) == "table" then arg2.TargetLock = v115(targetLock) end fn37(arg2.TargetLock) end) arg.TargetLock = nil v116(arg, "Aimbot", fn39) v116(arg, "SilentAim", fn40) v116(arg, "Triggerbot", fn41) return arg end end tbl17.bC = function() local bc = tbl17.cache.bC if not bc then bc = { c = fn35() } tbl17.cache.bC = bc end return bc.c end end do -- bD local function fn35() local v115 = tbl17.d() local v116 = tbl17.bq() local function fn36(arg, arg2) local followTarget = arg.FollowTarget local flag19 = arg2 == v86[34] local v117 = v86[175] local n = 1 local n33 = 20 if type(followTarget) ~= "boolean" then if type(followTarget) ~= "table" then followTarget = flag19 else local flag20 = followTarget.Enabled == true n33 = tonumber(followTarget.Speed) or n33 n = tonumber(followTarget.Damper) n = n or 1 local num = tonumber(followTarget.SnapDistance) if num then followTarget = flag20 v117 = num else followTarget = flag20 end end end arg.FollowTarget = { Enabled = followTarget, Speed = n33, Damper = n, SnapDistance = v117 } end local function fn37(arg) local v117 = v86[68] if type(arg) ~= v117 then return end local fov = arg.Fov if type(fov) ~= "table" then return end local targetConditions = arg.TargetConditions local v118 = v86[68] if type(targetConditions) ~= v118 then targetConditions = {} arg.TargetConditions = targetConditions end if type(targetConditions.WithinFov) ~= "boolean" then targetConditions.WithinFov = fov.Enabled ~= v86[153] end local circle = fov.Circle if type(circle) == "table" then fov.Radius = tonumber(fov.Radius) or tonumber(circle.Radius) or 150 circle.Radius = nil fn36(circle, true) circle.FromMuzzle = nil else fov.Radius = tonumber(fov.Radius) or 150 end fov.Enabled = nil fov.Kind = nil fov.Custom = nil end local function fn38(arg) if type(arg) == "table" then local hitboxPoint = arg.HitboxPoint local surface = type(hitboxPoint) == "table" and hitboxPoint.Surface or nil if type(surface) ~= "table" then return end if surface.SizeReductionPercentage == nil then surface.SizeReductionPercentage = tonumber(surface.ReductionPercentage) or 50 end local v117 = v86[116] if type(surface.PreserveDepth) ~= v117 then surface.PreserveDepth = surface.Center == v86[34] end surface.ReductionPercentage = nil surface.Center = nil return end if n29(1386) > -20 then return end -- (anti-tamper freeze trap removed) end local function fn39(arg) local targetLock = type(arg) == "table" and arg.TargetLock or nil if type(targetLock) ~= "table" then return end local mode = targetLock.Mode if mode == "Lock" then targetLock.Mode = "ToggleLock" elseif mode == "Unlock" then targetLock.Mode = "AutoLock" elseif mode == "LockOnly" then targetLock.Mode = "ManualOnly" end end return function(arg) if type(arg) ~= "table" then return arg end local targetLock = arg.TargetLock v116(arg, "Aimbot", function(arg2) local v117 = v86[68] if type(arg2) ~= v117 then return end if arg2.TargetLock == nil and type(targetLock) == "table" then arg2.TargetLock = v115(targetLock) end fn39(arg2) fn37(arg2) end) arg.TargetLock = nil v116(arg, "SilentAim", fn37) v116(arg, "Aimbot", fn38) v116(arg, "SilentAim", fn38) return arg end end tbl17.bD = function() local bd = tbl17.cache.bD if not bd then local bd2 = { c = fn35() } tbl17.cache.bD = bd2 bd = bd2 end return bd.c end end do -- bE local function fn35() local v115 = tbl17.bq() local function fn36(arg) local followTarget = arg.FollowTarget local num = v86[63] local n = 5 local n33 = 20 if type(followTarget) ~= "boolean" then local v116 = v86[68] local flag19 = false if type(followTarget) ~= v116 then followTarget = flag19 else local flag20 = followTarget.Enabled == true n33 = tonumber(followTarget.Speed) n33 = n33 or 20 num = tonumber(followTarget.Damper) or num n = tonumber(followTarget.SnapDistance) local n34 = 5 if n then followTarget = flag20 else followTarget = flag20 n = n34 end end end arg.FollowTarget = { Enabled = followTarget, Speed = n33, Damper = num, SnapDistance = n } end return function(arg) if type(arg) ~= "table" then return arg end local function fn37(arg2) local v116 = v86[68] local fov = type(arg2) == v116 and arg2.Fov or nil local circle = type(fov) == "table" and fov.Circle or nil local v117 = v86[68] if type(circle) == v117 then fn36(circle) end end v115(arg, "Aimbot", fn37) v115(arg, "SilentAim", fn37) return arg end end tbl17.bE = function() local be = tbl17.cache.bE if not be then local be2 = { c = fn35() } tbl17.cache.bE = be2 be = be2 end return be.c end end do -- bF local function fn35() tbl17.f() local v115 = tbl17.bn() local v116 = tbl17.bo() local v117 = tbl17.bp() local v118 = tbl17.br() local v119 = tbl17.bs() local v120 = tbl17.bt() local v121 = tbl17.bu() return { tbl17.bw(), tbl17.bx(), tbl17.by(), [v86[26]] = tbl17.bz(), [v86[175]] = tbl17.bA(), [v86[54]] = tbl17.bB(), [7] = tbl17.bC(), [8] = tbl17.bD(), [9] = tbl17.bE(), [10] = v115, [11] = v116, [v86[12]] = v117, [13] = v118, [14] = v119, [15] = v120, [16] = v121, } end tbl17.bF = function() local bf = tbl17.cache.bF if not bf then bf = { c = fn35() } tbl17.cache.bF = bf end return bf.c end end do -- bG local function fn35() local v115 = tbl17.l() local v116 = tbl17.m() local v117 = tbl17.n() tbl17.bb() local v118 = tbl17.bc() return (v117:Add(v115.new({ DefaultConfig = tbl17.bm(), CurrentVersion = 17, LegacyVersion = 1, SavePath = "kiciahook/rivals_v3/configs/", Migrations = tbl17.bF(), Serialize = v116.normalize, Deserialize = v118.deserialize, }))) end tbl17.bG = function() local bg = tbl17.cache.bG if not bg then bg = { c = fn35() } tbl17.cache.bG = bg end return bg.c end end do -- bI local function fn35() return { Notifications = v86[133], Fov = 70, Esp = 80, Crosshair = 85, TextIndicatorList = 88, CombatFeedback = 89, } end tbl17.bI = function() local bi = tbl17.cache.bI if not bi then local bi2 = { c = fn35() } tbl17.cache.bI = bi2 bi = bi2 end return bi.c end end do -- bK local function fn35() local v115 = tbl17.g() local v116 = tbl17.k() local v117 = cloneref(game:GetService("Players")) local index2 = {} index2.__index = index2 index2.new = function() local registry = v116.new("registry") local tbl18 = { _trove = registry, _playerSet = {}, PlayerAdded = registry:Add(v115.new()), PlayerRemoved = registry:Add(v115.new()) } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Connect(v117.PlayerAdded, function(arg2) arg._playerSet[arg2] = v86[34] arg.PlayerAdded:Fire(arg2) end) arg._trove:Connect(v117.PlayerRemoving, function(arg2) if arg._playerSet[arg2] == nil then return end arg.PlayerRemoved:Fire(arg2) arg._playerSet[arg2] = nil end) for _, v118 in v117:GetPlayers() do arg._playerSet[v118] = true end end index2.ObservePlayers = function(arg, arg2, arg3) local ObservePlayers = v116.new("registry.ObservePlayers") for k in arg._playerSet, nil, nil do arg2(k) end ObservePlayers:Connect(arg.PlayerAdded, arg2) ObservePlayers:Connect(arg.PlayerRemoved, arg3) return ObservePlayers end index2.GetPlayers = function(arg) local tbl18 = {} for k in arg._playerSet, nil, nil do table.insert(tbl18, k) end return tbl18 end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.bK = function() local bk = tbl17.cache.bK if not bk then bk = { c = fn35() } tbl17.cache.bK = bk end return bk.c end end do -- bL local function fn35() tbl17.bK() local v115 = tbl17.g() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local identities = v116.new("identities") local tbl18 = { _trove = identities, _identityByPlayer = {}, IdentityRegistered = identities:Add(v115.new()), IdentityChanged = identities:Add(v115.new()), IdentityRemoved = identities:Add(v115.new()), } setmetatable(tbl18, index2) tbl18:_Initialize(arg) return tbl18 end index2._Initialize = function(arg, arg2) arg._trove:Add(arg2:ObservePlayers(function(arg3) local tbl18 = { Name = arg3.Name, DisplayName = arg3.DisplayName } arg._identityByPlayer[arg3] = tbl18 arg.IdentityRegistered:Fire(arg3, tbl18) end, function(arg3) arg.IdentityRemoved:Fire(arg3) arg._identityByPlayer[arg3] = nil end)) end index2.SetPresented = function(arg, arg2, presentedName) local v117 = arg._identityByPlayer[arg2] if v117.PresentedName == presentedName then return end v117.PresentedName = presentedName arg.IdentityChanged:Fire(arg2, v117) end index2.SetPresentedDisplay = function(arg, arg2, presentedDisplayName) local v117 = arg._identityByPlayer[arg2] if v117.PresentedDisplayName == presentedDisplayName then return end v117.PresentedDisplayName = presentedDisplayName arg.IdentityChanged:Fire(arg2, v117) end index2.ClearPresented = function(arg, arg2) local v117 = arg._identityByPlayer[arg2] if v117 == nil or v117.PresentedName == nil then return end v117.PresentedName = nil arg.IdentityChanged:Fire(arg2, v117) end index2.ClearPresentedDisplay = function(arg, arg2) local v117 = arg._identityByPlayer[arg2] if v117 == nil or v117.PresentedDisplayName == nil then return end v117.PresentedDisplayName = nil arg.IdentityChanged:Fire(arg2, v117) end index2.GetPresented = function(arg, arg2) local v117 = arg._identityByPlayer[arg2] local flag19 = v117 ~= nil local presentedName if flag19 then presentedName = v117.PresentedName or v117.Name else presentedName = flag19 end return presentedName or arg2.Name end index2.GetPresentedDisplay = function(arg, arg2) local v117 = arg._identityByPlayer[arg2] if v117 == nil then return arg2.DisplayName end return v117.PresentedDisplayName or v117.DisplayName end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.bL = function() local bl = tbl17.cache.bL if not bl then local bl2 = { c = fn35() } tbl17.cache.bL = bl2 bl = bl2 end return bl.c end end do -- bM local function fn35() tbl17.bK() local v115 = tbl17.g() local v116 = tbl17.k() local index2 = {} index2.__index = index2 local tbl18 = { Hacker = true, Moderator = true, ModFriend = v86[34] } index2.new = function(arg) local tags = v116.new("tags") local tbl19 = {} for k in tbl18, nil, nil do tbl19[k] = {} end local tbl20 = { _trove = tags, _tagSetByPlayer = {}, _playersByTag = tbl19, TagAdded = tags:Add(v115.new()), TagRemoved = tags:Add(v115.new()), } setmetatable(tbl20, index2) tbl20:_Initialize(arg) return tbl20 end index2._Initialize = function(arg, arg2) arg._trove:Connect(arg2.PlayerRemoved, function(arg3) local v117 = arg._tagSetByPlayer[arg3] if v117 == nil then return end for k in v117, nil, nil do arg:_RemoveFromTagBucket(arg3, k) arg.TagRemoved:Fire(arg3, k) end arg._tagSetByPlayer[arg3] = nil end) end index2.Add = function(arg, arg2, arg3) local tbl19 = arg._tagSetByPlayer[arg2] if tbl19 == nil then tbl19 = {} arg._tagSetByPlayer[arg2] = tbl19 end if tbl19[arg3] then return false end table.insert(arg._playersByTag[arg3], arg2) tbl19[arg3] = true arg.TagAdded:Fire(arg2, arg3) return true end index2.Remove = function(arg, arg2, arg3) local v117 = arg._tagSetByPlayer[arg2] if v117 == nil or not v117[arg3] then return false end arg:_RemoveFromTagBucket(arg2, arg3) v117[arg3] = nil arg.TagRemoved:Fire(arg2, arg3) return true end index2.Has = function(arg, arg2, arg3) local v117 = arg._tagSetByPlayer[arg2] return v117 ~= nil and v117[arg3] ~= nil end index2.GetPlayersWith = function(arg, arg2) return arg._playersByTag[arg2] end index2.GetTags = function(arg, arg2) local v117 = arg._tagSetByPlayer[arg2] if v117 == nil then return {} end local tbl19 = {} for k in v117, nil, nil do table.insert(tbl19, k) end return tbl19 end index2._RemoveFromTagBucket = function(arg, arg2, arg3) local v117 = arg._playersByTag[arg3] for k, v118 in v117, nil, nil do if v118 ~= arg2 then continue end local n = #v117 v117[k] = v117[n] v117[n] = nil return end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.bM = function() local bm = tbl17.cache.bM if not bm then local bm2 = { c = fn35() } tbl17.cache.bM = bm2 bm = bm2 end return bm.c end end do -- bN local function fn35() local v115 = tbl17.j() local isAtomic = tbl17.i().isAtomic local isProfile = tbl17.aI().isProfile tbl17.a4() local v116 = tbl17.g() local v117 = tbl17.k() local v118 = tbl17.d() local index2 = {} index2.__index = index2 local function fn36(arg) local v119 = v86[68] if type(arg) == v119 then return v118(arg) end return arg end local function fn37(arg, arg2) local v119 = table.create(#arg2 + 3) v119[1] = "PerProfile" v119[2] = "Overrides" v119[3] = arg table.move(arg2, 1, #arg2, 4, v119) return v119 end local function fn38(l,I)return#l>#I and string.byte(l,#I+1)==46 and string.sub(l,1,#I)==I;end local fn39 = nil fn39 = function(arg, arg2, arg3, arg4) for k, v119 in arg2, nil, nil do if type(k) == "string" then local v120 = arg[k] if v120 ~= nil then local n = #arg3 + 1 arg3[n] = k if type(v120) == "table" and not isAtomic(v120) then local v121 = v86[68] if type(v119) == v121 then fn39(v120, v119, arg3, arg4) end elseif type(v120) == "table" then local v121 = v86[68] if type(v119) == v121 then arg4(arg3, v119) end else arg4(arg3, v119) end arg3[n] = nil end end end end local fn40 = nil fn40 = function(arg, arg2) for k, v119 in arg2, nil, nil do local v120 = arg[k] if v120 == nil then arg[k] = fn36(v119) else local v121 = v86[68] if type(v120) == v121 and type(v119) == "table" then fn40(v120, v119) end end end end local fn41 = nil fn41 = function(arg, arg2, arg3) for k, v119 in arg2, nil, nil do local v120 = arg[k] local v121 = v86[165] local flag19 if type(k) ~= v121 or v120 == nil then flag19 = true elseif type(v120) == "table" then if type(v119) ~= "table" then flag19 = true elseif isAtomic(v120) then local v122 = v86[68] if type(arg3) == v122 and type(arg3[k]) == "table" then v120 = arg3[k] end fn40(v119, v120) flag19 = false else local v122 = nil if type(arg3) == "table" then v122 = arg3[k] end flag19 = not fn41(v120, v119, v122) end else local v122 = v86[68] flag19 = false if type(v119) == v122 then flag19 = true end end if flag19 then arg2[k] = nil end end return next(arg2) ~= nil end local fn42 = nil fn42 = function(arg, arg2) for k, v119 in arg2, nil, nil do local v120 = arg[k] if type(v120) == "table" and not isAtomic(v120) and type(v119) == "table" then if not fn42(v120, v119) then arg2[k] = nil end end end return next(arg2) ~= nil end index2.new = function(arg) local default = arg.Default local tbl18 = {} v115.ForEachEntry(default, function(arg2, arg3) if isProfile(arg3) then local v119 = v115.PathToKey(arg2) tbl18[v119] = { Path = table.clone(arg2), Key = v119, Schema = v115.NavigateTo(default, arg2) } end end) local StoreProfiles = v117.new("StoreProfiles") local tbl19 = { _trove = StoreProfiles, _reactiveStore = arg, _profileBranchByKey = tbl18, _context = nil, _appliedPinByPathKey = {}, ContextChanged = StoreProfiles:Add(v116.new()), PinsChanged = StoreProfiles:Add(v116.new()), } setmetatable(tbl19, index2) local data = arg.Data local perProfile = data.PerProfile if type(perProfile) ~= "table" or type(perProfile.Overrides) ~= "table" then data.PerProfile = { Overrides = {} } end return tbl19 end index2.GetContext = function(arg) return arg._context end index2.IsProfiledPath = function(arg, arg2) return arg._profileBranchByKey[arg2[v86[63]]] ~= nil end index2.CanPin = function(I,W)if I._context==nil then return false;end;local N=I._profileBranchByKey[W[1]];if N==nil then return false;end;local I_61=N.Schema;for N_62=2,#W,1 do if type(I_61)~="table"or( isAtomic (I_61))then return false;end;I_61=I_61[W[N_62]];end;if I_61==nil then return false;end;if type(I_61)~="table"then return true;end;return isAtomic (I_61);end index2.IsPinned = function(arg, arg2) if arg._context == nil then return false end return arg._appliedPinByPathKey[v115.PathToKey(arg2)] ~= nil end index2._HasContextOverrides = function(l,I)if I==nil then return false;end;local W=l._reactiveStore.Data.PerProfile.Overrides[I];return type(W)=="table"and next(W)~=nil;end index2._AssertPinValue = function(I,W,N)local P=I._reactiveStore;I= fn36 (N);if P:RebaseLiveOverride(W.Path,I)then return;end; v115 .Set(P.Data,W.Path,I);P:PublishPath(W.Path);end index2._ApplyPin = function(arg, arg2, arg3) local v119 = v115.PathToKey(arg2) local tbl18 = arg._appliedPinByPathKey[v119] if tbl18 == nil then tbl18 = { Path = table.clone(arg2), Base = arg._reactiveStore:GetBase(arg2) } arg._appliedPinByPathKey[v119] = tbl18 elseif type(arg3) ~= "table" and v115.NavigateTo(arg._reactiveStore.Data, tbl18.Path, true) == arg3 then return end arg:_AssertPinValue(tbl18, arg3) end index2._ClearPin = function(arg, arg2) local v119 = arg._appliedPinByPathKey[arg2] if v119 == nil then return end arg._appliedPinByPathKey[arg2] = nil local reactiveStore = arg._reactiveStore if reactiveStore:RebaseLiveOverride(v119.Path, v119.Base) then return end v115.Set(reactiveStore.Data, v119.Path, v119.Base) reactiveStore:PublishPath(v119.Path) end index2._ForEachOverrideUnit = function(arg, arg2, arg3) local v119 = arg._reactiveStore.Data.PerProfile.Overrides[arg2] if type(v119) ~= "table" then return end for k, v120 in v119, nil, nil do local v121 = arg._profileBranchByKey[k] if v121 ~= nil and type(v120) == "table" then fn39(v121.Schema, v120, { k }, arg3) end end end index2._SyncContextPins = function(arg) local tbl18 = {} local tbl19 = {} local context = arg._context if context ~= nil then arg:_ForEachOverrideUnit(context, function(arg2, arg3) local v119 = v115.PathToKey(arg2) tbl18[v119] = arg3 tbl19[v119] = table.clone(arg2) end) end for k in arg._appliedPinByPathKey, nil, nil do if tbl18[k] == nil then arg:_ClearPin(k) end end for k, v119 in tbl18, nil, nil do arg:_ApplyPin(tbl19[k], v119) end end index2.SetContext = function(l,I)if l._context==I then return;end;l._context=I;if next(l._appliedPinByPathKey)==nil and not l:_HasContextOverrides(I)then l.ContextChanged:Fire(I);return;end;l:_SyncContextPins();l.ContextChanged:Fire(I);l.PinsChanged:Fire();end index2.Pin = function(arg, arg2) if not arg:CanPin(arg2) then return end local context = arg._context local v119 = fn36(arg._reactiveStore:GetBase(arg2)) arg._reactiveStore:Set(fn37(context, arg2), v119) end index2.Unpin = function(arg, arg2) local context = arg._context if context == nil or not arg:IsPinned(arg2) then return end arg._reactiveStore:Set(fn37(context, arg2), nil) end index2._NormalizeOverrides = function(arg) local data = arg._reactiveStore.Data local overrides = data.PerProfile.Overrides for k, v119 in overrides, nil, nil do local flag19 = type(k) ~= "string" if not flag19 then local v120 = v86[68] flag19 = type(v119) ~= v120 end if flag19 then overrides[k] = nil else for k2, v120 in v119, nil, nil do local v121 = arg._profileBranchByKey[k2] if not (v121 ~= nil and type(v120) == "table" and fn41(v121.Schema, v120, data[k2]) and fn42(v121.Schema, v120)) then v119[k2] = nil end end if next(v119) == nil then overrides[k] = nil end end end end index2._PruneContext = function(arg, arg2) local overrides = arg._reactiveStore.Data.PerProfile.Overrides local v119 = overrides[arg2] if type(v119) ~= "table" then return end for k, v120 in v119, nil, nil do local v121 = arg._profileBranchByKey[k] if not (v121 ~= nil and type(v120) == "table" and fn42(v121.Schema, v120)) then v119[k] = nil end end if next(v119) == nil then overrides[arg2] = nil end end index2.Set = function(I,W,N)if W[1]=="PerProfile"then if#W==1 then if type(N)~="table"or type(N.Overrides)~="table"then return{Overrides={}};end;return N;end;if W[2]=="Overrides"and type(N)=="table"then return v118 (N);end;return N;end;local P=I._appliedPinByPathKey;if next(P)==nil or I._profileBranchByKey[W[1]]==nil then return N;end;local a,e= v115 .PathToKey(W),I._context;for c in P,nil,nil do if c==a or( fn38 (a,c))then v115 .Set(I._reactiveStore.Data, fn37 (e,W), fn36 (N));break;end;end;return N;end index2.SetApplied = function(I,W,N)if W[1]=="PerProfile"then if#W==1 then I:_NormalizeOverrides();I:_SyncContextPins();I.PinsChanged:Fire();return;end;if W[2]~="Overrides"then return;end;local N_63=I._context;if N_63==nil then return;end;if W[3]~=nil and W[3]~=N_63 then return;end;I:_SyncContextPins();I:_PruneContext(N_63);I.PinsChanged:Fire();return;end;local N_64=I._appliedPinByPathKey;if next(N_64)==nil or I._profileBranchByKey[W[1]]==nil then return;end;local P,a,e= v115 .PathToKey(W),I._reactiveStore.Data,I._context;for c,E in N_64,nil,nil do if fn38 (c,P)then E.Base= v115 .NavigateTo(a,E.Path,true);W= v115 .NavigateTo(a, fn37 (e,E.Path),true);if W~=nil then I:_AssertPinValue(E,W);end;end;end;end index2.Loaded = function(arg) table.clear(arg._appliedPinByPathKey) arg:_NormalizeOverrides() if arg:_HasContextOverrides(arg._context) then arg:_SyncContextPins() end arg.PinsChanged:Fire() end index2.Persistable = function(arg, arg2, arg3) if next(arg._appliedPinByPathKey) == nil then return arg2 end if arg3 then arg2 = v118(arg2) end for _, v119 in arg._appliedPinByPathKey, nil, nil do v115.Set(arg2, v119.Path, v119.Base) end return arg2 end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.bN = function() local bn = tbl17.cache.bN if not bn then bn = { c = fn35() } tbl17.cache.bN = bn end return bn.c end end do -- bP local function fn35() local v115 = tbl17.ay() local v116 = cloneref(game:GetService("HttpService")) local function fn36(arg, arg2) return v115.new(function(arg3, arg4) local v117 = arg if arg2 ~= nil then local v118 = v116:UrlEncode(arg2) v117 ..= string.format("%scursor=%s", tostring(arg:find("?", 1, v86[34]) and "&" or "?"), tostring(v118)) end local v118, v119 = v107(function() return game:HttpGetAsync(v117) end) if not v118 then arg4(v119) return end local v120, v121 = v107(v116.JSONDecode, v116, v119) if not v120 then arg4(v121) return end arg3(v121, v121.nextPageCursor) end) end return { scanPagesAsync = function(arg, arg2, arg3) local n = arg3 or 1000 return v115.new(function(arg4, arg5, arg6) local v117 = nil arg6(function() if v117 ~= nil then v117:cancel() end end) local v118 = v86[186] local v119 = nil while true do if n <= v118 then arg5(string.format("PageScanner exceeded its %s-page limit", tostring(n))) return else v117 = fn36(arg, v119) local v120, v121 v120, v121, v119 = v117:await() if not v120 then arg5(v121) return end arg2(v121) v118 += 1 if v119 == nil or v119 == "" then break end end end arg4() end) end } end tbl17.bP = function() local bp = tbl17.cache.bP if not bp then local bp2 = { c = fn35() } tbl17.cache.bP = bp2 bp = bp2 end return bp.c end end do -- bQ local function fn35() local v115 = tbl17.bP() local v116 = tbl17.ay() local v117 = cloneref(game:GetService("HttpService")) local function fn36(arg) return v116.new(function(arg2, arg3) local v118, v119 = v107(function() return v117:JSONDecode(game:HttpGetAsync(string.format("%s/v1/groups/%s/roles", "https://groups.roblox.com", tostring(arg)))) end) if not v118 then arg3(v119) return end arg2(v119) end) end return function(arg, arg2, arg3) local tbl18 = {} return fn36(arg):andThen(function(arg4) local tbl19 = {} for _, v118 in arg4.roles, nil, nil do if v118.rank >= arg2 and v118.memberCount > 0 then table.insert(tbl19, v118) end end return v116.each(tbl19, function(arg5) return v115.scanPagesAsync(string.format("%s/v1/groups/%s/roles/%s/users?limit=%s&sortOrder=Asc", "https://groups.roblox.com", tostring(arg), tostring(arg5.id), "100"), function(arg6) for _, v118 in arg6.data, nil, nil do local userId = v118.userId if userId ~= nil and not tbl18[userId] then tbl18[userId] = true arg3(userId) end end end) end) end):andThen(function() return tbl18 end) end end tbl17.bQ = function() local bq = tbl17.cache.bQ if not bq then bq = { c = fn35() } tbl17.cache.bQ = bq end return bq.c end end do -- bR local function fn35() local v115 = tbl17.bG() local v116 = tbl17.aB() tbl17.bK() tbl17.bM() local v117 = tbl17.ay() local v118 = tbl17.k() local v119 = tbl17.bQ() local v120 = cloneref(game:GetService("Players")) local localPlayer = v120.LocalPlayer local v121 = cloneref(game:GetService("GroupService")) local v122 = cloneref(game:GetService("ExperienceService")) local tbl18 = { Moderator = " is a moderator", ModFriend = " is friends with a moderator" } local index2 = {} index2.__index = index2 local function fn36(arg) return { Notify = arg.Notify == true, Kick = arg.Kick == v86[34], ToLobby = arg.ToLobby == v86[34] } end local function fn37(arg) return v117.new(function(arg2, arg3) local v123, v124 = v107(v121.GetGroupsAsync, v121, arg.UserId) if not v123 then arg3(v124) return end for _, v125 in v124, nil, nil do if v125.Id == 3461453 and v125.Rank >= v86[91] then arg2(true) return end end arg2(false) end) end local function fn38(arg) return v117.new(function(arg2, arg3) local v123, v124 = v107(v120.GetFriendsAsync, v120, arg) if not v123 then arg3(v124) return end local tbl19 = {} local v125 while true do if v86[34] then for _, v126 in v124:GetCurrentPage() do tbl19[v126.Id] = true end if v124.IsFinished then arg2(tbl19) return end local v126 v126, v125 = v107(v124.AdvanceToNextPageAsync, v124) if not v126 then break end else arg2(tbl19) return end end arg3(v125) end) end index2.new = function(arg, arg2) local modDetector = v115.Data.ModDetector local tbl19 = { _trove = v118.new("mod_detector"), _registry = arg2, _playerTags = arg, _isEnabled = modDetector.Enabled, _moderatorActions = fn36(modDetector.Moderators), _modFriendActions = fn36(modDetector.ModFriends), _color = modDetector.Color, _notifiedPlayerSetByTag = { Moderator = {}, ModFriend = {} }, _hasEvacuated = false, _moderatorCheckPromiseByPlayer = {}, _friendFetchPromiseByPlayer = {}, _friendUserIdSetByPlayer = {}, _moderatorUserIdSet = {}, _moderatorUserIdSetPromise = nil, } setmetatable(tbl19, index2) tbl19:_Initialize() return tbl19 end index2._Initialize = function(arg) arg._trove:Connect(arg._registry.PlayerAdded, function(arg2) arg:_TryClassify(arg2) end) arg._trove:Connect(arg._registry.PlayerRemoved, function(arg2) arg._notifiedPlayerSetByTag.Moderator[arg2] = nil arg._notifiedPlayerSetByTag.ModFriend[arg2] = nil arg:_CancelPlayer(arg2) end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "ModDetector", "Enabled" }), function(isEnabled) arg._isEnabled = isEnabled if isEnabled then arg:_ScanCurrentPlayers() else arg:_CancelAll() end end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "ModDetector", "Moderators" }), function() arg._moderatorActions = fn36(v115.Data.ModDetector.Moderators) arg:_BackfillActions("Moderator", arg._moderatorActions) end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "ModDetector", "ModFriends" }), function() arg._modFriendActions = fn36(v115.Data.ModDetector.ModFriends) if arg:_IsModFriendsActive() then arg:_BackfillActions("ModFriend", arg._modFriendActions) for _, v123 in arg._registry:GetPlayers() do arg:_TryClassifyModFriend(v123) end else arg:_CancelFriendWork() end end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "ModDetector", v86[27] }), function(color) arg._color = color end) if arg._isEnabled then arg:_ScanCurrentPlayers() end end index2._IsModFriendsActive = function(arg) local modFriendActions = arg._modFriendActions local isEnabled = arg._isEnabled if isEnabled then isEnabled = modFriendActions.Notify or modFriendActions.Kick or modFriendActions.ToLobby end return isEnabled end index2._ScanCurrentPlayers = function(arg) for _, v123 in arg._registry:GetPlayers() do arg:_TryClassify(v123) end end index2._TryClassify = function(arg, arg2) if not arg._isEnabled or arg2 == localPlayer then return end if not arg._playerTags:Has(arg2, "Moderator") and arg._moderatorCheckPromiseByPlayer[arg2] == nil then local v123 = fn37(arg2) arg._moderatorCheckPromiseByPlayer[arg2] = v123 v123:andThen(function(arg3) arg._moderatorCheckPromiseByPlayer[arg2] = nil if arg3 then arg:_Classify(arg2, "Moderator", arg._moderatorActions) end end):catch(function() arg._moderatorCheckPromiseByPlayer[arg2] = nil end) end arg:_TryClassifyModFriend(arg2) end index2._TryClassifyModFriend = function(arg, arg2) if not arg:_IsModFriendsActive() or arg2 == localPlayer then return end if arg._playerTags:Has(arg2, "ModFriend") or arg._friendUserIdSetByPlayer[arg2] ~= nil or arg._friendFetchPromiseByPlayer[arg2] ~= nil then return end arg:_EnsureModeratorUserIdSet() local v123 = fn38(arg2.UserId) arg._friendFetchPromiseByPlayer[arg2] = v123 v123:andThen(function(arg3) arg._friendFetchPromiseByPlayer[arg2] = nil arg:_OnFriendUserIdSetFetched(arg2, arg3) end):catch(function() arg._friendFetchPromiseByPlayer[arg2] = nil end) end index2._EnsureModeratorUserIdSet = function(arg) if arg._moderatorUserIdSetPromise ~= nil then return end arg._moderatorUserIdSet = {} local v123 = v119(3461453, 100, function(arg2) arg._moderatorUserIdSet[arg2] = true arg:_OnModeratorFound(arg2) end) arg._moderatorUserIdSetPromise = v123 v123:catch(function() if arg._moderatorUserIdSetPromise == v123 then arg._moderatorUserIdSetPromise = nil end end) end index2._OnModeratorFound = function(arg, arg2) local tbl19 = nil for k, v123 in arg._friendUserIdSetByPlayer, nil, nil do if v123[arg2] and not arg._playerTags:Has(k, "ModFriend") then tbl19 = tbl19 or {} table.insert(tbl19, k) end end if tbl19 ~= nil then for _, v123 in tbl19, nil, nil do arg:_Classify(v123, "ModFriend", arg._modFriendActions) end end end index2._OnFriendUserIdSetFetched = function(arg, arg2, arg3) arg._friendUserIdSetByPlayer[arg2] = arg3 for k in arg._moderatorUserIdSet, nil, nil do if arg3[k] then arg:_Classify(arg2, "ModFriend", arg._modFriendActions) return end end end index2._Classify = function(arg, arg2, arg3, arg4) arg._playerTags:Add(arg2, arg3) arg:_ApplyActions(arg2, arg3, arg4) end index2._ApplyActions = function(arg, arg2, arg3, arg4) if arg4.Notify and not arg._notifiedPlayerSetByTag[arg3][arg2] then arg._notifiedPlayerSetByTag[arg3][arg2] = true v116.get():Notify({ { Text = arg2.DisplayName, Accent = true }, { Text = tbl18[arg3] } }, { Color = arg._color }) end if (arg4.Kick or arg4.ToLobby) and not arg._hasEvacuated then arg._hasEvacuated = true if arg4.Kick then localPlayer:Kick(arg2.DisplayName .. tbl18[arg3]) else v122:LaunchExperience({ placeId = 17625359962 }) end end end index2._BackfillActions = function(arg, arg2, arg3) for _, v123 in arg._playerTags:GetPlayersWith(arg2) do arg:_ApplyActions(v123, arg2, arg3) end end index2._CancelPlayer = function(arg, arg2) local v123 = arg._moderatorCheckPromiseByPlayer[arg2] if v123 ~= nil then v123:cancel() arg._moderatorCheckPromiseByPlayer[arg2] = nil end local v124 = arg._friendFetchPromiseByPlayer[arg2] if v124 ~= nil then v124:cancel() arg._friendFetchPromiseByPlayer[arg2] = nil end arg._friendUserIdSetByPlayer[arg2] = nil end index2._CancelAll = function(arg) for _, v123 in arg._moderatorCheckPromiseByPlayer, nil, nil do v123:cancel() end table.clear(arg._moderatorCheckPromiseByPlayer) arg:_CancelFriendWork() end index2._CancelFriendWork = function(arg) for _, v123 in arg._friendFetchPromiseByPlayer, nil, nil do v123:cancel() end table.clear(arg._friendFetchPromiseByPlayer) table.clear(arg._friendUserIdSetByPlayer) arg:_CancelModeratorUserIdSetBuild() end index2._CancelModeratorUserIdSetBuild = function(arg) local moderatorUserIdSetPromise = arg._moderatorUserIdSetPromise if moderatorUserIdSetPromise == nil or moderatorUserIdSetPromise:getStatus() == "Resolved" then return end moderatorUserIdSetPromise:cancel() arg._moderatorUserIdSetPromise = nil end index2.Destroy = function(arg) arg:_CancelAll() arg._trove:Destroy() end return index2 end tbl17.bR = function() local br = tbl17.cache.bR if not br then local br2 = { c = fn35() } tbl17.cache.bR = br2 br = br2 end return br.c end end do -- bU local function fn35() tbl17.k() local v115 = tbl17.aR() local v116 = cloneref(game:GetService("CoreGui")) local v117 = cloneref(game:GetService("Players")) local localPlayer = v117.LocalPlayer local tbl18 = { { Parent = v116, Path = "RobloxGui" }, { Parent = v116, Path = "ExperienceChat" }, { Parent = localPlayer, Path = { "PlayerGui", "MainGui" } }, } return function(arg, arg2) for _, v118 in tbl18, nil, nil do arg:Add(task.spawn(function() arg2(v115(v118.Parent, v118.Path), arg) end)) end arg:Add(task.spawn(function() local playerGui = v115(localPlayer, "PlayerGui") local function fn36(arg3) local name = arg3.Name if name == "LeaderboardGui" then arg:Add(task.spawn(function() arg2(v115(arg3, { "List", "Container" }), arg) end)) elseif name:match("^QueuePadBoardGuiQueue") then arg:Add(task.spawn(function() arg2(v115(arg3, { "MainFrame", "TeamSlotContainer" }), arg) end)) end end for _, v118 in playerGui:QueryDescendants("SurfaceGui") do fn36(v118) end arg:Connect(playerGui.ChildAdded, function(arg3) if arg3:IsA("SurfaceGui") then fn36(arg3) end end) end)) local tbl19 = {} local function fn36(arg3) if tbl19[arg3] then return end local v118 = arg:Extend() tbl19[arg3] = v118 if arg3.Character ~= nil then arg2(arg3.Character, v118) end v118:Connect(arg3.CharacterAdded, function(arg4) arg2(arg4, v118) end) end local function fn37(arg3) local v118 = tbl19[arg3] if v118 == nil then return end tbl19[arg3] = nil arg:Remove(v118) end for _, v118 in v117:GetPlayers() do fn36(v118) end arg:Connect(v117.PlayerAdded, fn36) arg:Connect(v117.PlayerRemoving, fn37) end end tbl17.bU = function() local bu = tbl17.cache.bU if not bu then local bu2 = { c = fn35() } tbl17.cache.bU = bu2 bu = bu2 end return bu.c end end do -- bV local function fn35() tbl17.bL() local v115 = tbl17.k() local v116 = tbl17.bU() local _v117 = cloneref(game:GetService("Players")) local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _playerIdentities = arg }, index2) end index2.SetEnabled = function(arg, arg2) if (arg._restore ~= nil) == arg2 then return end if arg2 then arg:_Load() else arg:_Revert() end end index2._Load = function(arg) if arg._restore ~= nil then return end local GuiNameSpoofer = v115.new("player_spoofer.GuiNameSpoofer") local tbl18 = {} local tbl19 = {} local playerIdentities = arg._playerIdentities local function fn36() table.clear(tbl19) for _, _p in ipairs(game:GetService("Players"):GetPlayers()) do table.insert(tbl19, { Player = _p, Kind = "Name", Name = _p.Name }) table.insert(tbl19, { Player = _p, Kind = "DisplayName", Name = _p.DisplayName }) end end local function fn37(I,W)if W=="Name"then return playerIdentities :GetPresented(I);end;return playerIdentities :GetPresentedDisplay(I);end local function fn38(l,I,W)local N,P,a={},1,0;while true do local e,c=l:find(I,P,true);if e==nil or c==nil then break;end;if P0 then W[P.Player]=true;N=a;end;end;return W,N;end local function fn40(label) if label == nil then return end pcall(function() local N = tbl18[label] if N == nil then fn43(label) return end local _orig = (N.Tracked and N.Tracked.OriginalText) or label.Text _fn42(label, false) label.Text = _orig fn43(label) end) end local function fn41(label, tracked) if tracked ~= nil and tracked.OriginalText ~= nil and tracked.SpoofedText ~= tracked.OriginalText and label.Text == tracked.SpoofedText then label.Text = tracked.OriginalText end end local function _fn42(I,W)local N= tbl18 [I];if N==nil then return;end; tbl18 [I]=nil;if N.TextChangedConnection~=nil then N.TextChangedConnection:Disconnect();end;if N.DestroyingConnection~=nil then N.DestroyingConnection:Disconnect();end;if W and N.Tracked~=nil then fn41 (I,N.Tracked);end;end local function fn43(label) _fn42(label, false) local _affected, _newText = _fn39(label.Text) local _entry = { Tracked = { PlayerSet = _affected, OriginalText = label.Text, SpoofedText = _newText } } if _newText ~= label.Text then label.Text = _newText end _entry.TextChangedConnection = label:GetPropertyChangedSignal("Text"):Connect(function() if label.Text == _entry.Tracked.SpoofedText then return end fn43(label) end) _entry.DestroyingConnection = label.Destroying:Connect(function() _fn42(label, false) end) tbl18[label] = _entry end fn36() local _roots = {} v116(GuiNameSpoofer, function(arg2, arg3) table.insert(_roots, arg2) for _, v118 in arg2:QueryDescendants("TextLabel,TextButton") do fn43(v118) end arg3:Connect(arg2.DescendantAdded, function(arg4) if arg4:IsA("TextLabel") or arg4:IsA("TextButton") then fn43(arg4) end pcall(function() for _, _d in ipairs(arg4:GetDescendants()) do if _d:IsA("TextLabel") or _d:IsA("TextButton") then fn43(_d) end end end) end) end) local _ppg = game:GetService("Players").LocalPlayer:FindFirstChild("PlayerGui") if _ppg ~= nil then GuiNameSpoofer:Connect(_ppg.DescendantAdded, function(arg4) if arg4:IsA("TextLabel") or arg4:IsA("TextButton") then fn43(arg4) end pcall(function() for _, _d in ipairs(arg4:GetDescendants()) do if _d:IsA("TextLabel") or _d:IsA("TextButton") then fn43(_d) end end end) end) end local _cg = game:GetService("CoreGui") GuiNameSpoofer:Connect(_cg.DescendantAdded, function(arg4) if arg4:IsA("TextLabel") or arg4:IsA("TextButton") then fn43(arg4) end pcall(function() for _, _d in ipairs(arg4:GetDescendants()) do if _d:IsA("TextLabel") or _d:IsA("TextButton") then fn43(_d) end end end) end) local function _rescanAll() for _, _r in ipairs(_roots) do pcall(function() for _, _l in ipairs(_r:QueryDescendants("TextLabel,TextButton")) do fn43(_l) end end) end if _ppg ~= nil then pcall(function() for _, _l in ipairs(_ppg:QueryDescendants("TextLabel,TextButton")) do fn43(_l) end end) end pcall(function() for _, _l in ipairs(_cg:QueryDescendants("TextLabel,TextButton")) do fn43(_l) end end) end GuiNameSpoofer:Connect(playerIdentities.IdentityRegistered, function() fn36() _rescanAll() for k in tbl18, nil, nil do fn40(k) end end) GuiNameSpoofer:Connect(playerIdentities.IdentityChanged, function(arg2) _rescanAll() for k, v118 in tbl18, nil, nil do if v118.Tracked ~= nil and v118.Tracked.PlayerSet[arg2] then fn40(k) end end end) GuiNameSpoofer:Connect(playerIdentities.IdentityRemoved, function(arg2) fn36() _rescanAll() for k, v118 in tbl18, nil, nil do if v118.Tracked ~= nil and v118.Tracked.PlayerSet[arg2] then fn40(k) end end end) arg._restore = { Trove = GuiNameSpoofer, WatchEntryByTextObject = tbl18, Candidates = tbl19 } end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil restore.Trove:Destroy() for k, v118 in restore.WatchEntryByTextObject, nil, nil do v118.TextChangedConnection:Disconnect() v118.DestroyingConnection:Disconnect() local tracked = v118.Tracked if tracked ~= nil and tracked.SpoofedText ~= tracked.OriginalText and k.Text == tracked.SpoofedText then k.Text = tracked.OriginalText end end table.clear(restore.WatchEntryByTextObject) table.clear(restore.Candidates) end index2.Destroy = function(arg) arg:_Revert() end return index2 end tbl17.bV = function() local bv = tbl17.cache.bV if not bv then local bv2 = { c = fn35() } tbl17.cache.bV = bv2 bv = bv2 end return bv.c end end do -- bW local function fn35() local v115 = cloneref(game:GetService("Players")) local localPlayer = v115.LocalPlayer return function(arg, arg2) local flag19 = arg == "LocalPlayer" for _, v116 in v115:GetPlayers() do if (v116 == localPlayer) == flag19 then arg2(v116) end end end end tbl17.bW = function() local bw = tbl17.cache.bW if not bw then bw = { c = fn35() } tbl17.cache.bW = bw end return bw.c end end do -- bX local function fn35() local v115 = tbl17.bG() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer return function(arg) local playerSpoofer = v115.Data.PlayerSpoofer return (arg == localPlayer or arg == localPlayer.UserId) and playerSpoofer.LocalPlayer or playerSpoofer.OtherPlayers end end tbl17.bX = function() local bx = tbl17.cache.bX if not bx then local bx2 = { c = fn35() } tbl17.cache.bX = bx2 bx = bx2 end return bx.c end end do -- bY local function fn35() local v115 = tbl17.bG() tbl17.k() local tbl18 = { "LocalPlayer", "OtherPlayers" } local tbl19 = { "Enabled", "Value" } return function(arg, arg2, arg3, arg4) local v116 = arg4 or tbl18 for _, v117 in v116, nil, nil do for _, v118 in tbl19, nil, nil do arg:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", v117, arg2, v118 }), function() arg3(v117) end) end end end end tbl17.bY = function() local by = tbl17.cache.bY if not by then local by2 = { c = fn35() } tbl17.cache.bY = by2 by = by2 end return by.c end end do -- bZ local function fn35() local v115 = tbl17.bG() local v116 = tbl17.bV() tbl17.bL() local v117 = tbl17.k() local v118 = tbl17.bW() local v119 = tbl17.bX() local v120 = tbl17.bY() local v121 = cloneref(game:GetService("Players")) local index2 = {} index2.__index = index2 index2.new = function(arg) local nameSpoofer = v117.new("player_spoofer.name_spoofer") local tbl18 = { _trove = nameSpoofer, _playerIdentities = arg, _gui = nameSpoofer:Add(v116.new(arg)) } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local function fn36(arg2) return arg2.Name.Enabled and arg2.Name.Value ~= "" or arg2.DisplayName.Enabled and arg2.DisplayName.Value ~= "" end local function fn37() local playerSpoofer = v115.Data.PlayerSpoofer arg._gui:SetEnabled(fn36(playerSpoofer.LocalPlayer) or fn36(playerSpoofer.OtherPlayers)) end local function fn38(arg2) fn37() v118(arg2, function(arg3) arg:_Apply(arg3) end) end v120(arg._trove, "Name", fn38) v120(arg._trove, "DisplayName", fn38) for _, v122 in v121:GetPlayers() do arg:_Apply(v122) end fn37() arg._trove:Connect(arg._playerIdentities.IdentityRegistered, function(arg2) arg:_Apply(arg2) end) end index2._Apply = function(arg, arg2) local v122 = v119(arg2) if v122.Name.Enabled and v122.Name.Value ~= "" then arg._playerIdentities:SetPresented(arg2, v122.Name.Value) else arg._playerIdentities:ClearPresented(arg2) end if v122.DisplayName.Enabled and v122.DisplayName.Value ~= "" then arg._playerIdentities:SetPresentedDisplay(arg2, v122.DisplayName.Value) else arg._playerIdentities:ClearPresentedDisplay(arg2) end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.bZ = function() local bz = tbl17.cache.bZ if not bz then bz = { c = fn35() } tbl17.cache.bZ = bz end return bz.c end end do -- b_ local function fn35() local v115 = tbl17.ad() local v116 = tbl17.ay() local v117 = tbl17.a() local v118 = tbl17.k() local v119 = cloneref(game:GetService("Players")) local tbl18 = { "Accessory", "Shirt", "Pants", "ShirtGraphic" } local tbl19 = { "Decal", "SurfaceAppearance", "SpecialMesh" } local function fn36(arg, arg2) for _, v120 in arg2, nil, nil do if arg:IsA(v120) then return true end end return false end local function fn37(arg) return fn36(arg, tbl18) end local function fn38(arg) return fn36(arg, tbl19) end local function fn39(arg) for _, v120 in arg:GetChildren() do if v120:IsA("Weld") or v120:IsA("WeldConstraint") or v120:IsA("ManualWeld") then v120:Destroy() end end end local function fn40(arg) for _, v120 in arg:GetChildren() do if v120:IsA("Attachment") then return v120 end end return nil end local function fn41(arg, arg2) for _, v120 in arg:GetChildren() do if not v120:IsA("BasePart") then continue end local v121 = v120:FindFirstChild(arg2) if v121 ~= nil and v121:IsA("Attachment") then return v121 end end return nil end local function fn42(arg, parent) local handle = arg:FindFirstChild("Handle") if handle == nil or not handle:IsA("BasePart") then arg.Parent = parent return end local v120 = fn40(handle) if v120 == nil then arg.Parent = parent return end local v121 = fn41(parent, v120.Name) if v121 == nil then arg.Parent = parent return end handle.Anchored = false local weld = Instance.new("Weld") weld.Name = "AccessoryWeld" weld.Part0 = handle weld.Part1 = v121.Parent weld.C0 = v120.CFrame weld.C1 = v121.CFrame weld.Parent = handle arg.Parent = parent end local function fn43(arg, arg2) local handle = arg:FindFirstChild("Handle") if handle ~= nil then fn39(handle) end fn42(arg, arg2) end local function fn44(arg, arg2) local humanoid = arg:FindFirstChildOfClass("Humanoid") if humanoid ~= nil then return v116.resolve(humanoid) end return v116.fromEvent(arg.ChildAdded, function(arg3) return arg3:IsA("Humanoid") end):timeout(arg2, "timed out waiting for Humanoid") end local function fn45(arg, arg2, arg3) local v120 = arg:FindFirstChild(arg2) if v120 ~= nil and v120:IsA("BasePart") then return v116.resolve(v120) end return (v116.fromEvent(arg.ChildAdded, function(arg4) return arg4.Name == arg2 and arg4:IsA("BasePart") end):timeout(arg3, string.format("timed out waiting for part %s", tostring(arg2)))) end local function fn46(arg, arg2, arg3) local v120 = fn41(arg, arg2) if v120 ~= nil then return (v116.resolve(v120)) end return (v116.fromEvent(arg.DescendantAdded, function(arg4) if not arg4:IsA("Attachment") or arg4.Name ~= arg2 then return false end local parent = arg4.Parent return parent ~= nil and parent.Parent == arg and parent:IsA("BasePart") end):timeout(arg3, string.format("timed out waiting for attachment %s", tostring(arg2)))) end local function fn47(arg, arg2, arg3) local tbl20 = {} local tbl21 = {} local tbl22 = {} for _, v120 in arg2:GetChildren() do if v120:IsA("Accessory") then local handle = v120:FindFirstChild("Handle") if handle ~= nil and handle:IsA("BasePart") then local v121 = fn40(handle) if v121 ~= nil and not tbl22[v121.Name] then tbl22[v121.Name] = v86[34] table.insert(tbl20, fn46(arg, v121.Name, arg3)) end end elseif v120:IsA("BasePart") and not tbl21[v120.Name] then tbl21[v120.Name] = true table.insert(tbl20, fn45(arg, v120.Name, arg3)) end end return v116.all(tbl20) end local function fn48(arg, arg2) return (v116.new(function(arg3, arg4, arg5) local flag19 = false arg5(function() flag19 = true end) task.spawn(function() local v120, v121 = v107(function() return v119:CreateHumanoidModelFromDescriptionAsync(arg, arg2) end) if not v120 then arg4(v121) return end if flag19 then v121:Destroy() return end arg3(v121) end) end)) end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local v120 = v115.new() local tbl20 = { _trove = v118.new("player_spoofer.CharacterSpoof"), _character = arg, _description = arg2, _errorReporter = v120, _isDestroyed = false, _spoofedInstanceSet = {}, _stashedInstanceSet = {}, _spoofedHeadDecor = {}, _stashedHeadDecorSet = {}, _originalBodyColorByPart = {}, _originalHead = nil, _readyPromise = v116.resolve(), } setmetatable(tbl20, index2) tbl20:_Start() return tbl20 end index2.WhenReady = function(arg) return arg._readyPromise end index2._Start = function(arg) arg._trove:Connect(arg._character.ChildAdded, function(arg2) arg:_OnChildAdded(arg2) end) for _, v120 in arg._character:GetChildren() do arg:_OnChildAdded(v120) end arg:_RunApply() end index2._OnChildAdded = function(arg, arg2) if arg._spoofedInstanceSet[arg2] then return end if arg2:IsA("BasePart") then if arg._originalBodyColorByPart[arg2] == nil then arg._originalBodyColorByPart[arg2] = arg2.Color end return end if not fn37(arg2) then return end task.defer(function() if arg._isDestroyed then return end if arg._spoofedInstanceSet[arg2] then return end if arg2.Parent ~= arg._character then return end arg:_Stash(arg._stashedInstanceSet, arg2) end) end index2._Stash = function(arg, arg2, arg3) arg3.Parent = nil arg2[arg3] = true arg._trove:Connect(arg3.Destroying, function() arg2[arg3] = nil end) end index2._RunApply = function(arg) local character = arg._character local v120 = fn44(character, 10):andThen(function(arg2) return fn48(arg._description, arg2.RigType) end):andThen(function(arg2) return fn47(character, arg2, 10):andThen(function() arg:_ApplySource(arg2) end):finally(function() arg2:Destroy() end) end):catch(function(arg2) arg._errorReporter:ReportResult(v117.err("CharacterSpoof", "apply", tostring(arg2))) end) arg._readyPromise = v120 arg._trove:AddPromise(v120) end index2._ApplySource = function(arg, arg2) local head = arg._character:FindFirstChild("Head") if head ~= nil and head:IsA("BasePart") then local originalHead = { Transparency = head.Transparency } if head:IsA("MeshPart") then originalHead.MeshId = head.MeshId originalHead.TextureId = head.TextureID end arg._originalHead = originalHead end for _, v120 in arg2:GetChildren() do if v120:IsA("Accessory") then v120.Parent = nil arg._spoofedInstanceSet[v120] = true fn43(v120, arg._character) elseif v120:IsA("Shirt") or v120:IsA("Pants") or v120:IsA("ShirtGraphic") then arg._spoofedInstanceSet[v120] = v86[34] v120.Parent = arg._character elseif v120:IsA("BasePart") then local v121 = arg._character:FindFirstChild(v120.Name) if v121 ~= nil and v121:IsA("BasePart") then v121.Color = v120.Color end end end local head2 = arg2:FindFirstChild("Head") local head3 = arg._character:FindFirstChild("Head") if head2 ~= nil and head3 ~= nil and head2:IsA("BasePart") and head3:IsA("BasePart") then for _, v120 in head3:GetChildren() do if fn38(v120) then arg:_Stash(arg._stashedHeadDecorSet, v120) end end for _, v120 in head2:GetChildren() do if fn38(v120) then table.insert(arg._spoofedHeadDecor, v120) v120.Parent = head3 end end head3.Transparency = head2.Transparency if head2:IsA("MeshPart") and head3:IsA("MeshPart") then head3.MeshId = head2.MeshId head3.TextureID = head2.TextureID end end end index2._Restore = function(arg) local character = arg._character if character.Parent == nil then for k in arg._stashedInstanceSet, nil, nil do k:Destroy() end for k in arg._stashedHeadDecorSet, nil, nil do k:Destroy() end return end for _, v120 in character:GetChildren() do if arg._spoofedInstanceSet[v120] then v120:Destroy() end end for k in arg._stashedInstanceSet, nil, nil do if k:IsA("Accessory") then fn43(k, character) else k.Parent = character end end for k, v120 in arg._originalBodyColorByPart, nil, nil do if k.Parent ~= nil then k.Color = v120 end end for _, v120 in arg._spoofedHeadDecor, nil, nil do v120:Destroy() end local originalHead = arg._originalHead local head = character:FindFirstChild("Head") if head ~= nil and head:IsA("BasePart") then for k in arg._stashedHeadDecorSet, nil, nil do k.Parent = head end if originalHead ~= nil then head.Transparency = originalHead.Transparency if head:IsA("MeshPart") and originalHead.MeshId ~= nil and originalHead.TextureId ~= nil then head.MeshId = originalHead.MeshId head.TextureID = originalHead.TextureId end end end end index2.Destroy = function(arg) if arg._isDestroyed then return end arg._isDestroyed = true arg._trove:Destroy() arg:_Restore() end return index2 end tbl17.b_ = function() if true then local b = tbl17.cache.b_ if not b then local b2 = { c = fn35() } tbl17.cache.b_ = b2 b = b2 end return b.c end return nil -- (anti-tamper freeze trap removed) end end do -- b0 local function fn35() local v115 = tbl17.bG() return function(arg) local playerSpoofer = v115.Data.PlayerSpoofer arg = arg and playerSpoofer.LocalPlayer.Avatar or playerSpoofer.OtherPlayers.Avatar if not arg.Enabled then return nil end return tonumber(arg.Value) end end tbl17.b0 = function() local b0 = tbl17.cache.b0 if not b0 then local b02 = { c = fn35() } tbl17.cache.b0 = b02 b0 = b02 end return b0.c end end do -- b1 local function fn35() local v115 = tbl17.b_() local v116 = tbl17.bG() local v117 = tbl17.ay() local v118 = tbl17.k() local v119 = tbl17.b0() local v120 = cloneref(game:GetService("Players")) local localPlayer = v120.LocalPlayer local index2 = {} index2.__index = index2 index2.new = function(arg) local player = arg.Player local tbl18 = { _trove = v118.new("player_spoofer.AvatarDecorator"), _model = arg.Model, _resettle = arg.Resettle, _descriptionByUserId = arg.DescriptionByUserId, _isLocal = player == localPlayer, _desiredUserId = nil, _spoof = nil, } setmetatable(tbl18, index2) tbl18._desiredUserId = v119(tbl18._isLocal) tbl18:_WatchConfig() return tbl18 end index2._ScopeKey = function(arg) return arg._isLocal and "LocalPlayer" or "OtherPlayers" end index2._WatchConfig = function(arg) local v121 = arg:_ScopeKey() for _, v122 in { "Enabled", "Value" }, nil, nil do arg._trove:Connect(v116:GetPropertyChangedSignal({ "PlayerSpoofer", v121, "Avatar", v122 }), function() arg:_OnConfigChanged() end) end end index2._OnConfigChanged = function(arg) local v121 = v119(arg._isLocal) if v121 == arg._desiredUserId then return end arg._desiredUserId = v121 arg._resettle() end index2.ApplyAsync = function(arg) local desiredUserId = arg._desiredUserId if desiredUserId == nil then return v117.resolve() end return arg:_GetDescriptionAsync(desiredUserId):andThen(function(arg2) if arg._desiredUserId ~= desiredUserId then return end local v121 = v115.new(arg._model, arg2) arg._spoof = v121 return v121:WhenReady() end) end index2._GetDescriptionAsync = function(arg, arg2) local v121 = arg._descriptionByUserId[arg2] if v121 ~= nil then return v117.resolve(v121) end return v117.new(function(arg3, arg4) task.spawn(function() local v122, v123 = v107(v120.GetHumanoidDescriptionFromUserIdAsync, v120, arg2) if not v122 then arg4(v123) return end arg._descriptionByUserId[arg2] = v123 arg3(v123) end) end) end index2.Restore = function(arg) local spoof = arg._spoof if spoof == nil then return end arg._spoof = nil spoof:Destroy() end index2.Destroy = function(arg) arg:Restore() arg._trove:Destroy() end return index2 end tbl17.b1 = function() local b1 = tbl17.cache.b1 if not b1 then local b12 = { c = fn35() } tbl17.cache.b1 = b12 b1 = b12 end return b1.c end end do -- b2 local function fn35() return function(arg, arg2) return compareinstances ~= nil and compareinstances(arg, arg2) or arg == arg2 end end tbl17.b2 = function() local b2 = tbl17.cache.b2 if not b2 then b2 = { c = fn35() } tbl17.cache.b2 = b2 end return b2.c end end do -- b3 local function fn35() return function(arg, ...) local v115 = getthreadidentity() setthreadidentity(v86[56]) local pack = table.pack local v116 = v107 local v117 = table.pack(...) v117.n = 2 + v117.n - 1 table.move(v117, 1, v117.n, 2, v117) v117[1] = arg local v118 = pack(v116(table.unpack(v117, 1, v117.n))) setthreadidentity(v115) if not v118[1] then error(v118[v86[56]], 2) end return unpack(v118, 2, v118.n) end end tbl17.b3 = function() local b3 = tbl17.cache.b3 if not b3 then b3 = { c = fn35() } tbl17.cache.b3 = b3 end return b3.c end end do -- b4 local function fn35() local v115 = tbl17.a() local v116 = tbl17.b2() local v117 = tbl17.b3() local v118 = cloneref(game:GetService("Players")) local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _isArmed = false, _dummy = Color3.new(), _spoofsByPlayer = {}, _spoofsByUserId = {}, _restore = nil, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local tbl18 = { GetHumanoidDescriptionFromUserIdAsync = function(arg2, arg3) return v118:GetHumanoidDescriptionFromUserIdAsync(arg._spoofsByUserId[arg3] or arg3) end, CreateHumanoidModelFromDescriptionAsync = function(arg2, arg3, arg4, arg5) return v118:CreateHumanoidModelFromDescriptionAsync(arg3, arg4, arg5) end, } v110(arg._dummy, { __index = function(arg2, arg3) return tbl18[arg3] end }) end index2.Arm = function(arg) arg._isArmed = true if next(arg._spoofsByPlayer) == nil then return v115.VoidOk end local v119 = arg:_Load() for k in arg._spoofsByPlayer, nil, nil do arg:_RefreshPlayer(k) end return v119 end index2.SetSpoof = function(arg, arg2, arg3) if arg._spoofsByPlayer[arg2] == arg3 then return end arg._spoofsByPlayer[arg2] = arg3 table.clear(arg._spoofsByUserId) for k, v119 in arg._spoofsByPlayer, nil, nil do arg._spoofsByUserId[k.UserId] = v119 end if next(arg._spoofsByPlayer) == nil then arg:_RefreshPlayer(arg2) arg:_Revert() else arg:_Load() arg:_RefreshPlayer(arg2) end end index2._Load = function(arg) if not arg._isArmed or arg._restore ~= nil then return v115.VoidOk end local v119 = v102(tbl17.aS().ClientDueler, "_PreloadCharacterModel") if v119 == nil then return v115.err("DuelerCloneSpoof", "method_lookup", "Failed to look up _PreloadCharacterModel") end local v120 = nil local v121 = nil for k, v122 in debug.getupvalues(v119) do if typeof(v122) == "Instance" and v116(v122, v118) then v120 = k v121 = v122 break else v120 = nil v121 = nil end end if v120 == nil or v121 == nil then return v115.err("DuelerCloneSpoof", "upvalue_scan", "Failed to find Players") end debug.setupvalue(v119, v120, arg._dummy) arg._restore = { Method = v119, Index = v120, Old = v121 } return v115.VoidOk end index2._RefreshPlayer = function(arg, arg2) if arg._restore == nil then return end if not (n26 >= 4820) then for _, v119 in v102(tbl17.aS().DuelController, "Objects") do for _, v120 in v102(v119, "Duelers") do if v102(v120, "Player") == arg2 then arg:_RebuildPreloadedModel(v120) end end end return end -- (anti-tamper freeze trap removed) end index2._RebuildPreloadedModel = function(arg, arg2) local restore = arg._restore if restore == nil then return end local v119 = v102(arg2, "_preloaded_character_model") if v119 == nil or v102(arg2, "_destroyed") then return end local clientDuel = v102(arg2, "ClientDuel") if clientDuel == nil then return end local data = v102(clientDuel, "Data") if data == nil or v102(data, "IsSpectating") ~= true then return end arg2._preloaded_character_model = nil arg2._is_preloading_character_model = false v119:Destroy() task.spawn(function() v117(restore.Method, arg2) end) end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil debug.setupvalue(restore.Method, restore.Index, restore.Old) end index2.Destroy = function(arg) arg:_Revert() end return index2 end tbl17.b4 = function() local b4 = tbl17.cache.b4 if not b4 then local b42 = { c = fn35() } tbl17.cache.b4 = b42 b4 = b42 end return b4.c end end do -- b5 local function fn35() local v115 = tbl17.k() local v116 = tbl17.bU() local index2 = {} index2.__index = index2 local function _fn36(l,I)local W;if l:sub(1,11)=="rbxthumb://"then W="id";else local N=l:find("roblox%.com/[%w%-]+%-thumbnail",1,false);if N~=nil then W="userId";else return nil;end;end;local N=false;local P=l:gsub(W.."=(%d+)",function(l)local a=tonumber(l);if a~=nil then local e=I[a];if e~=nil then N=true;return W.."="..e;end;end;return W.."="..l;end);if not N then return nil;end;return P;end index2.new = function() return setmetatable({ _spoofsByPlayer = {}, _spoofsByUserId = {}, _loaded = nil }, index2) end index2.SetSpoof = function(arg, arg2, arg3) if arg._spoofsByPlayer[arg2] == arg3 then return end arg._spoofsByPlayer[arg2] = arg3 table.clear(arg._spoofsByUserId) for k, v117 in arg._spoofsByPlayer, nil, nil do arg._spoofsByUserId[k.UserId] = v117 end if next(arg._spoofsByPlayer) == nil then arg:_Revert() return end if arg._loaded == nil then arg:_Load() else arg._loaded.RescanAll() end end index2.Destroy = function(arg) arg:_Revert() table.clear(arg._spoofsByPlayer) table.clear(arg._spoofsByUserId) end index2._Load = function(arg) if arg._loaded ~= nil then return end local GuiThumbnailSpoofer = v115.new("player_spoofer.GuiThumbnailSpoofer") local tbl18 = {} local function fn37(img) local N = tbl18[img] local orig = (N and N.OriginalImage) or img.Image _fn39(img, false) img.Image = orig fn40(img) end local function fn38(img, entry) if entry ~= nil and entry.OriginalImage ~= nil and entry.SpoofedImage ~= entry.OriginalImage and img.Image == entry.SpoofedImage then img.Image = entry.OriginalImage end end local function _fn39(I,W)local N= tbl18 [I];if N==nil then return;end; tbl18 [I]=nil;N.ImageChangedConnection:Disconnect();N.DestroyingConnection:Disconnect();if W then fn38 (I,N);end;end local function fn40(img) _fn39(img, false) local newUrl = _fn36(img.Image, arg._spoofsByUserId) if newUrl == nil or newUrl == img.Image then return end local entry = { OriginalImage = img.Image, SpoofedImage = newUrl } img.Image = newUrl entry.ImageChangedConnection = img:GetPropertyChangedSignal("Image"):Connect(function() if img.Image == entry.SpoofedImage then return end fn40(img) end) entry.DestroyingConnection = img.Destroying:Connect(function() _fn39(img, false) end) tbl18[img] = entry end arg._loaded = { Trove = GuiThumbnailSpoofer, WatchEntryByImageObject = tbl18, RescanAll = function()for I in pairs(tbl18) do fn37 (I);end;end, } v116(GuiThumbnailSpoofer, function(arg2, arg3) for _, v117 in arg2:QueryDescendants("ImageLabel,ImageButton") do fn40(v117) end arg3:Connect(arg2.DescendantAdded, function(arg4) if arg4:IsA("ImageLabel") or arg4:IsA(v86[121]) then fn40(arg4) end pcall(function() for _, _d in ipairs(arg4:GetDescendants()) do if _d:IsA("ImageLabel") or _d:IsA(v86[121]) then fn40(_d) end end end) end) end) local _ppg = game:GetService("Players").LocalPlayer:FindFirstChild("PlayerGui") local function _scanImages(root) pcall(function() for _, _l in ipairs(root:QueryDescendants("ImageLabel,ImageButton")) do fn40(_l) end end) end if _ppg ~= nil then _scanImages(_ppg) GuiThumbnailSpoofer:Connect(_ppg.DescendantAdded, function(arg4) if arg4:IsA("ImageLabel") or arg4:IsA(v86[121]) then fn40(arg4) end pcall(function() for _, _d in ipairs(arg4:GetDescendants()) do if _d:IsA("ImageLabel") or _d:IsA(v86[121]) then fn40(_d) end end end) end) end local _cg = game:GetService("CoreGui") _scanImages(_cg) GuiThumbnailSpoofer:Connect(_cg.DescendantAdded, function(arg4) if arg4:IsA("ImageLabel") or arg4:IsA("ImageButton") then fn40(arg4) end pcall(function() for _, _d in ipairs(arg4:GetDescendants()) do if _d:IsA("ImageLabel") or _d:IsA("ImageButton") then fn40(_d) end end end) end) end index2._Revert = function(arg) local loaded = arg._loaded if loaded == nil then return end arg._loaded = nil loaded.Trove:Destroy() for k, v117 in loaded.WatchEntryByImageObject, nil, nil do v117.ImageChangedConnection:Disconnect() v117.DestroyingConnection:Disconnect() local originalImage = v117.OriginalImage local spoofedImage = v117.SpoofedImage if originalImage ~= nil and spoofedImage ~= nil and spoofedImage ~= originalImage and k.Image == spoofedImage then k.Image = originalImage end end table.clear(loaded.WatchEntryByImageObject) end return index2 end tbl17.b5 = function() local b5 = tbl17.cache.b5 if not b5 then b5 = { c = fn35() } tbl17.cache.b5 = b5 end return b5.c end end do -- b6 local function fn35() local v115 = tbl17.b1() tbl17.bJ() local v116 = tbl17.b4() local v117 = tbl17.b5() tbl17.bK() local v118 = tbl17.k() local v119 = tbl17.b0() local v120 = tbl17.bY() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 index2.new = function(arg) local avatarSpoofer = v118.new("player_spoofer.avatar_spoofer") local tbl18 = { _trove = avatarSpoofer, _thumbnailSpoofer = avatarSpoofer:Add(v117.new()), _duelerCloneSpoof = avatarSpoofer:Add(v116.new()), _descriptionByUserId = {}, } setmetatable(tbl18, index2) tbl18:_InitializeSpoofers(arg) return tbl18 end index2._InitializeSpoofers = function(arg, arg2) local function fn36(arg3) local v121 = v119(arg3 == localPlayer) arg._thumbnailSpoofer:SetSpoof(arg3, v121) arg._duelerCloneSpoof:SetSpoof(arg3, v121) end arg._trove:Add(arg2:ObservePlayers(fn36, function(arg3) arg._thumbnailSpoofer:SetSpoof(arg3, nil) arg._duelerCloneSpoof:SetSpoof(arg3, nil) end)) v120(arg._trove, "Avatar", function() for _, v121 in arg2:GetPlayers() do fn36(v121) end end) end index2.Arm = function(arg) arg._duelerCloneSpoof:Arm() end index2.GetDecoratorFactory = function(arg) return function(arg2, arg3, arg4) return (v115.new({ Player = arg2, Model = arg3, Resettle = arg4, DescriptionByUserId = arg._descriptionByUserId })) end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.b6 = function() local b6 = tbl17.cache.b6 if not b6 then b6 = { c = fn35() } tbl17.cache.b6 = b6 end return b6.c end end do -- b9 local function fn35() return { compute = function(l,I,W)local N=I-l;l=N.Magnitude;if l<1 then return nil;end;return N.Unit*math.min(l,W);end, } end tbl17.b9 = function() local b9 = tbl17.cache.b9 if not b9 then b9 = { c = fn35() } tbl17.cache.b9 = b9 end return b9.c end end do -- cb local function fn35()return{Fm={1.04148555,-7.31470346,260.25164795,0.78539002,42.90404892,-89.04760742,1975.32495117,1.418E-5,-2.125E-5,0.25296983,0.00198651,512.86315918},Fs={439.23733521,100.2024765,367.82281494,2.48278117,2860.34350586,765.34002686,2207.97900391,0.01001292,0.01000869,0.21624292,0.01095532,648.22216797},Tm={1.045E-5,-7.18E-5,0.56350559},Ts={2.88572407,0.82672387,0.23866774}};end tbl17.cb = function() local cb = tbl17.cache.cb if not cb then local cb2 = { c = fn35() } tbl17.cache.cb = cb2 cb = cb2 end return cb.c end end do -- cc local function fn35() local v115 = tbl17.ca() local v116 = tbl17.cb() local v117 = table.create(12, 0) local v118 = table.create(v86[12], 0) local v119 = table.create(96, 0) local v120 = table.create(96, 0) local v121 = table.create(64, 0) local v122 = table.create(3, 0) local function fn36(l,I,W)local N,P,a=I.W,I.B,I.Is;for e=1,I.Os,1 do local I_65=P[e];for P_66=1,a,1 do local c=(e-1)*a+P_66;I_65+=l[P_66]*N[c];end;W[e]=I_65;end;end local function fn37(l,I)for W=1,I,1 do if l[W]<0 then l[W]=0;end;end;end local function fn38(I)local W= v116 .Fm;local N= v116 .Fs;for P=1,12,1 do v118 [P]=(I[P]-W[P])/N[P];end; fn36 ( v118 , v115 [1], v119 ); fn37 ( v119 ,96); fn36 ( v119 , v115 [2], v120 ); fn37 ( v120 ,96); fn36 ( v120 , v115 [3], v121 ); fn37 ( v121 ,64); fn36 ( v121 , v115 [4], v122 );N,I= v116 .Tm, v116 .Ts;return Vector2.new( v122 [1]*I[1]+N[1], v122 [2]*I[2]+N[2]);end return { compute = function(arg, arg2, arg3, arg4) if v115 == nil then local d = arg2 - arg local m = d.Magnitude if m < 1 then return nil end return d.Unit * math.min(m, arg4 * 10) end local n = arg2 - arg local magnitude = n.Magnitude if magnitude < 3 then return n.Unit end local v123 = math.atan2(n.Y, n.X) v117[1] = n.X v117[2] = n.Y v117[v86[155]] = magnitude v117[v86[26]] = v123 v117[11] = arg3 return fn38(v117) * 20 * arg4 end } end tbl17.cc = function() local cc = tbl17.cache.cc if not cc then local cc2 = { c = fn35() } tbl17.cache.cc = cc2 cc = cc2 end return cc.c end end do -- cd local function fn35() local index2 = {} index2.__index = index2 local function fn36(arg) local n = arg < 0 and -1 or v86[63] local n33 = math.abs(arg) local n34 = 1 / (1 + 0.3275911 * n33) return n * (1 - (0.254829592 * n34 - 0.284496736 * n34 * n34 + 1.421413741 * n34 ^ v86[155] - 1.453152027 * n34 ^ 4 + 1.061405429 * n34 ^ 5) * math.exp(-n33 * n33)) end local function fn37(arg) return 0.5 * (1 + fn36(arg / 1.4142135623730951)) end local function fn38(arg, arg2, arg3, arg4) if arg <= arg2 then return 0 end return fn37((math.log(arg - arg2) - arg3) / arg4) end local function fn39(arg, arg2, arg3, arg4) if arg <= arg2 then return 0 end local n = arg - arg2 local n33 = (math.log(n) - arg3) / arg4 return 1 / arg4 * 2.5066282746310002 * n * math.exp(-0.5 * n33 * n33) end local function fn40(arg) if arg <= 0 or arg >= v86[63] then return v86[186] end return arg * arg * (1 - arg) * (1 - arg) * (1 - arg) / 0.03456 end local function fn41(arg) return v86[101] + 0.8 * math.abs(math.sin(arg)) - 0.15 * math.abs(math.cos(arg)) end local function fn42(arg, arg2, arg3) local n = arg:NextNumber() local v115 = arg:NextNumber() if n < 1e-15 then n = 1e-15 end return arg2 + arg3 * math.sqrt(-v86[56] * math.log(n)) * math.cos(6.2831853071795862 * v115) end local function fn43(arg, arg2, arg3) local n = 1 if arg2 < 1 then n = arg:NextNumber() ^ (1 / arg2) arg2 += 1 end local n33 = arg2 - 0.33333333333333331 local n34 = v86[63] / math.sqrt(v86[170] * n33) local n35 while true do local v115 = fn42(arg, 0, 1) n35 = (1 + n34 * v115) ^ v86[155] if not (v86[186] < n35) then continue end local n36 = arg:NextNumber() if n36 < 1e-15 then n36 = 1e-15 end local flag19 = n36 < 1 - 0.0331 * v115 * v115 * v115 * v115 local flag20 if flag19 then flag20 = flag19 else local n37 = v86[101] * v115 * v115 flag20 = math.log(n36) < n37 + n33 * (1 - n35 + math.log(n35)) end if not flag20 then continue end break end return n33 * n35 * arg3 * n end index2.new = function() return setmetatable({ _fittsA = v86[160], _fittsB = 100, _target_width = 20, _undershoot_min = 0.92, _undershoot_max = 0.97, _peak_time_ratio = 0.35, _primary_sigma_min = 0.18, _primary_sigma_max = 0.28, _overshoot_prob = 0.15, _overshoot_min = 1.02, _overshoot_max = 1.08, _correction_sigma_min = 0.12, _correction_sigma_max = 0.2, _second_correction_prob = 0.25, _curvature_scale = 0.025, _ou_theta = 3.5, _ou_sigma = 1.2, _tremor_freq_min = v86[162], _tremor_freq_max = v86[12], _tremor_amp_min = v86[126], _tremor_amp_max = 0.55, _sdn_k = 0.04, _sample_dt_mean = 7.8, _gamma_shape = 3.5, _trajectory = nil, _trajectoryIndex = v86[63], _elapsed = v86[186], _lastTargetX = 0, _lastTargetY = 0, _rng = Random.new(), }, index2) end index2.Generate = function(arg, arg2, arg3, arg4, arg5) local rng = arg._rng local function fn44(arg6, arg7) return arg6 + rng:NextNumber() * (arg7 - arg6) end local function fn45(arg6, arg7) return fn42(rng, arg6, arg7) end local n = arg4 - arg2 local n33 = arg5 - arg3 local v115 = math.sqrt(n * n + n33 * n33) local v116 = math.atan2(n33, n) if v115 < 1 then return { { X = arg2, Y = arg3, T = 0 }, { X = arg4, Y = arg5, T = v86[160] } } end local n34 = n / v115 local n35 = n33 / v115 local n36 = -n35 local n37 = math.max((arg._fittsA + arg._fittsB * math.log(v115 / arg._target_width + v86[63]) / 0.69314718055994529) * math.exp(fn45(0, 0.08)), 80) local overshootProb = arg._overshoot_prob local n38 = v115 * (fn44(0, 1) < overshootProb and fn44(arg._overshoot_min, arg._overshoot_max) or fn44(arg._undershoot_min, arg._undershoot_max)) local v117 = fn44(arg._primary_sigma_min, arg._primary_sigma_max) local n39 = math.log(n37 * fn44(arg._peak_time_ratio - 0.03, arg._peak_time_ratio + 0.03)) + v117 * v117 local tbl18 = {} local n40 = v115 - n38 if math.abs(n40) > 0.5 then local n41 = n40 > 0 and 1 or -1 local n42 = math.abs(n40) * fn44(0.88, 1.02) local v118 = fn44(arg._correction_sigma_min, arg._correction_sigma_max) local n43 = n37 * fn44(0.12, 0.18) table.insert(tbl18, { D = n42, T0 = n37 * fn44(0.55, 0.68), Mu = math.log(n43) + v118 * v118, Sigma = v118, DirX = n34 * n41, DirY = n35 * n41, }) local n44 = n40 - n42 * n41 local v119 = v86[48] local flag19 = math.abs(n44) > v119 if flag19 then local secondCorrectionProb = arg._second_correction_prob flag19 = fn44(v86[186], v86[63]) < secondCorrectionProb end if flag19 then local n45 = n44 > 0 and 1 or -1 local n46 = math.abs(n44) * fn44(0.85, 1.05) local v120 = fn44(0.1, 0.16) local n47 = n37 * fn44(0.08, 0.12) table.insert(tbl18, { D = n46, T0 = n37 * fn44(0.78, 0.88), Mu = math.log(n47) + v120 * v120, Sigma = v120, DirX = n34 * n45, DirY = n35 * n45, }) end end local n41 = v115 * arg._curvature_scale * fn41(v116) * fn45(v86[186], 1) local v118 = fn44(arg._tremor_freq_min, arg._tremor_freq_max) local v119 = fn44(arg._tremor_amp_min, arg._tremor_amp_max) local v120 = fn44(0, 6.2831853071795862) local v121 = fn44(0, 6.2831853071795862) local v122 = v86[186] local n42 = n37 * 1.15 local n43 = arg._sample_dt_mean / arg._gamma_shape local tbl19 = { 0 } local n44 = 0 while n44 < n42 do n44 += math.clamp(fn43(rng, arg._gamma_shape, n43), 2, 25) if n44 <= n42 + v86[149] then table.insert(tbl19, n44) end end local tbl20 = {} local n45 = 0 for k, v123 in tbl19, nil, nil do local n46 if k > v86[63] then n46 = v123 - tbl19[k - 1] else n46 = arg._sample_dt_mean end local n47 = n46 / 1000 local v124 = fn38(v123, 0, n39, v117) local n48 = arg2 + n34 * n38 * v124 + n36 * n41 * fn40(v124) local n49 = arg3 + n35 * n38 * v124 + n34 * n41 * fn40(v124) for _, v125 in tbl18, nil, nil do local v126 = fn38(v123, v125.T0, v125.Mu, v125.Sigma) n48 += v125.DirX * v125.D * v126 n49 += v125.DirY * v125.D * v126 end local n50 = n38 * fn39(v123, 0, n39, v117) for _, v125 in tbl18, nil, nil do n50 += v125.D * fn39(v123, v125.T0, v125.Mu, v125.Sigma) end v122 += -arg._ou_theta * v122 * n47 + arg._ou_sigma * math.sqrt(n47) * fn45(0, 1) n45 += -arg._ou_theta * n45 * n47 + arg._ou_sigma * math.sqrt(n47) * fn45(0, 1) local n51 = v123 / 1000 local n52 = 1 / (1 + n50 * 0.3) local n53 = v119 * n52 * math.sin(6.2831853071795862 * v118 * n51 + v120) local n54 = v119 * n52 * math.sin(6.2831853071795862 * v118 * n51 + v121) table.insert(tbl20, { X = n48 + v122 + n53 + arg._sdn_k * n50 * fn45(0, 1), Y = n49 + n45 + n54 + arg._sdn_k * n50 * fn45(0, 1), T = v123, }) end return tbl20 end index2._NeedsRegeneration = function(arg, arg2, arg3) if not arg._trajectory or #arg._trajectory == 0 then return v86[34] end local n = arg2 - arg._lastTargetX local n33 = arg3 - arg._lastTargetY return n * n + n33 * n33 > 9 end index2.Compute = function(arg, arg2, arg3, arg4) local n = arg3 - arg2 if n.Magnitude < v86[63] then return n end if arg:_NeedsRegeneration(arg3.X, arg3.Y) then arg._trajectory = arg:Generate(arg2.X, arg2.Y, arg3.X, arg3.Y) arg._trajectoryIndex = 1 arg._elapsed = v86[186] arg._lastTargetX = arg3.X arg._lastTargetY = arg3.Y end local trajectory = arg._trajectory if not trajectory or #trajectory < 2 then return n end arg._elapsed = arg._elapsed + arg4 * 1000 local trajectoryIndex = arg._trajectoryIndex while trajectoryIndex < #trajectory and trajectory[trajectoryIndex + v86[63]].T <= arg._elapsed do trajectoryIndex += 1 end arg._trajectoryIndex = trajectoryIndex if #trajectory <= trajectoryIndex then arg._trajectory = nil return n end local v115 = trajectory[trajectoryIndex] local v116 = trajectory[trajectoryIndex + v86[63]] local n33 = v116.T - v115.T local n34 = 1 if n33 > 0 then n34 = math.clamp((arg._elapsed - v115.T) / n33, 0, v86[63]) end return Vector2.new(v115.X + (v116.X - v115.X) * n34 - arg2.X, v115.Y + (v116.Y - v115.Y) * n34 - arg2.Y) end index2.ApplyFlickProfile = function(arg, arg2) local n = math.max(arg2.DurationMs, 20) arg._fittsA = n / v86[26] arg._fittsB = n / v86[26] arg._target_width = v86[53] arg._peak_time_ratio = 0.32 arg._primary_sigma_min = 0.2 arg._primary_sigma_max = 0.26 arg._undershoot_min = 0.97 arg._undershoot_max = 1 arg._overshoot_prob = v86[147] arg._overshoot_min = 1.01 arg._overshoot_max = 1.04 arg._second_correction_prob = 0 arg._correction_sigma_min = 0.1 arg._correction_sigma_max = 0.14 arg._curvature_scale = math.clamp(arg2.Curvature, v86[186], 50) / 1000 local v115 = v86[192] local n33 = math.clamp(arg2.Humanness, 0, 100) / v115 arg._ou_sigma = 0.5 * n33 arg._tremor_amp_min = 0.05 * n33 arg._tremor_amp_max = 0.18 * n33 arg._sdn_k = 0.02 end return index2 end tbl17.cd = function() local cd = tbl17.cache.cd if not cd then cd = { c = fn35() } tbl17.cache.cd = cd end return cd.c end end do -- ce local function fn35() local function fn36(arg, arg2, arg3, arg4, arg5) local n = 2 / arg4 local n33 = n * arg5 local n34 = 1 / (1 + n33 + 0.48 * n33 * n33 + 0.235 * n33 * n33 * n33) local n35 = arg - arg2 local n36 = (arg3 + n * n35) * arg5 local n37 = (arg3 - n * n36) * n34 local n38 = arg2 + (n35 + n36) * n34 if (arg2 - arg > 0) ~= (n38 > arg2) then arg2 = n38 else n37 = (arg2 - arg2) / arg5 end return arg2, n37 end local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _previousVelocityX = 0, _previousVelocityY = 0 } setmetatable(tbl18, index2) return tbl18 end index2.Compute = function(arg, arg2, arg3, arg4, arg5) local n = math.max(arg4, 1 / arg5 * v86[133]) local v115, v116 = fn36(arg2.X, arg3.X, arg._previousVelocityX, n, arg4) local v117, v118 = fn36(arg2.Y, arg3.Y, arg._previousVelocityY, n, arg4) arg._previousVelocityX = v116 arg._previousVelocityY = v118 return Vector2.new(v115, v117) - arg2 end return index2 end tbl17.ce = function() local ce = tbl17.cache.ce if not ce then local ce2 = { c = fn35() } tbl17.cache.ce = ce2 ce = ce2 end return ce.c end end do -- cf local function fn35() tbl17.p() local v115 = tbl17.b9() local v116 = tbl17.cc() local v117 = tbl17.cd() local v118 = tbl17.ce() local compute = v115.compute local compute2 = v116.compute local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _spring = v118.new(), _sigma = v117.new(), _getAimOrigin = arg or function()return workspace.CurrentCamera.ViewportSize/2;end, _move = arg2, } setmetatable(tbl18, index2) return tbl18 end index2._Lock = function(arg, arg2) local n = arg2 - arg._getAimOrigin() arg._move(n.X, n.Y) end index2._Linear = function(I,W,N)local P= compute (I._getAimOrigin(),W,N*10);if P~=nil then I._move(P.X,P.Y);end;end index2._Ai = function(I,W,N,P)local a= compute2 (I._getAimOrigin(),W,N,P);if a~=nil then I._move(a.X,a.Y);end;end index2._Spring = function(l,I,W,N)local P=l._getAimOrigin();local a=l._spring:Compute(P,I,W,N);if a~=nil then l._move(a.X,a.Y);end;end index2._SigmaMouse = function(l,I,W)local N=l._getAimOrigin();local P=l._sigma:Compute(N,I,W);if P~=nil then l._move(P.X,P.Y);end;end index2.Apply = function(l,I,W,N,P)if N.Type=="Lock"then l:_Lock(I);elseif N.Type=="Linear"then l:_Linear(I,N.Speed);elseif N.Type=="AI"then if P then l:_Ai(I,W,N.Speed);else l:_Linear(I,N.Speed);end;elseif N.Type=="Spring"then l:_Spring(I,W,N.Speed);elseif N.Type=="SigmaMouse"then l:_SigmaMouse(I,W);end;end return index2 end tbl17.cf = function() local cf = tbl17.cache.cf if not cf then local cf2 = { c = fn35() } tbl17.cache.cf = cf2 cf = cf2 end return cf.c end end do -- ci local function fn35() tbl17.ch() tbl17.cg() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local tbl18 = { _targetProvider = arg, _measurer = arg2, _targetComparator = arg3, _hitboxSelectionMode = { Kind = "ClosestToCrosshair" }, _unpreferred = {}, } setmetatable(tbl18, index2) return tbl18 end index2.SetHitboxSelectionMode = function(arg, hitboxSelectionMode) arg._hitboxSelectionMode = hitboxSelectionMode end index2.SetMeasure = function(arg, measurer) arg._measurer = measurer end index2.SetTargetComparator = function(arg, targetComparator) arg._targetComparator = targetComparator end index2._SelectTarget = function(l,I,W,N,P)local a=l._hitboxSelectionMode;if a.Kind=="Random"then return l:_SelectRandomHitbox(I,W,a.Prefer,P,N);else return l:_SelectClosestHitbox(I,W,N);end;end index2._SelectClosestHitbox = function(l,I,W,N)local P,a=l._targetProvider,l._measurer;l=P:ResolveHitboxes(W);if#l==0 then return nil,math.huge;end;local W_67,e=math.huge, nil;for c,E in l,nil,nil do c=a(I,E.Position);if c==nil or c>=W_67 then continue;end;if N~=true and N~=E and not P:HitboxMeetsConditions(E,false)then continue;end;W_67,e=c,E;end;return e,W_67;end index2._SelectRandomHitbox = function(l,I,W,N,P,a)local e,c=l._targetProvider,l._measurer;local E=e:ResolveHitboxes(W);W=#E;if W==0 then return nil,math.huge;end;if P~=nil and table.find(E,P)~=nil then local p=c(I,P.Position);if p~=nil then if a or(e:HitboxMeetsConditions(P,false))then return P,p;end;end;end;local p=W-1;local T,t,x=math.random(0,p),math.random(),l._unpreferred;table.clear(x);for S=0,p,1 do l=E[(T+S)%W+1];if l==P then continue;end;if not N(t,l)then table.insert(x,l);continue;end;S=c(I,l.Position);if S==nil then continue;end;if not a and not e:HitboxMeetsConditions(l,false)then continue;end;return l,S;end;for W,W_68 in x,nil,nil do l=c(I,W_68.Position);if l==nil then continue;end;if not a and not e:HitboxMeetsConditions(W_68,false)then continue;end;return W_68,l;end;return nil,math.huge;end index2.SelectBest = function(l,I)local W=l._targetProvider;W:PreScan();if W.CheckHitboxConditionsOnBestFirst then return l:_SelectWithBestFirstCheck(I);else return l:_SelectBest(I);end;end index2._SelectBest = function(l,I)local W,N,P,a=l._targetProvider,l._targetComparator,workspace.CurrentCamera, nil;local e,c=math.huge, nil;for E,E_69 in W:GetTargets()do if not W:TargetMeetsConditions(E_69)then continue;end;local W_70,p=l:_SelectTarget(P,E_69,false,I);if W_70==nil then continue;end;if a~=nil and not N(E_69,p,a,e)then continue;end;a,e,c=E_69,p,W_70;end;return a,c;end index2._SelectWithBestFirstCheck = function(l,I)local W,N,P=l._targetProvider,l._targetComparator,workspace.CurrentCamera;W:PreScan();local a=W:GetTargets();local e;local c,E=math.huge, nil;for p,p_71 in a,nil,nil do if not W:TargetMeetsConditions(p_71)then continue;end;local T,t=l:_SelectTarget(P,p_71,true,I);if T==nil then continue;end;if e~=nil and not N(p_71,t,e,c)then continue;end;e,c,E=p_71,t,T;end;if E==nil then return nil,nil;end;if W:HitboxMeetsConditions(E,true)then return e,E;end;local p,T=e,E;e,c,E=nil,math.huge,nil;for t,x in a,nil,nil do if x==p then continue;end;t,W=l:_SelectTarget(P,x,T,I);if t==nil then continue;end;if e~=nil and not N(x,W,e,c)then continue;end;e,c,E=x,W,t;end;return e,E;end index2.SelectTarget = function(l,I,W)local N=l._targetProvider;if not N:TargetMeetsConditions(I)then return nil;end;N:PreScan();return(l:_SelectTarget(workspace.CurrentCamera,I,false,W));end return index2 end tbl17.ci = function() local ci = tbl17.cache.ci if not ci then local ci2 = { c = fn35() } tbl17.cache.ci = ci2 ci = ci2 end return ci.c end end do -- cj local function fn35() return function(arg) return function(I,W)local N=W.Name;return(N=="HitboxHead"or N=="HitboxHeadSmall")==(I< arg );end end end tbl17.cj = function() local cj = tbl17.cache.cj if not cj then cj = { c = fn35() } tbl17.cache.cj = cj end return cj.c end end do -- ck local function fn35() tbl17.cg() return function(l)local I,W,N,P=l*l,-1,-1,0;return function(l,a)local e,c,E=l.ViewportSize.Y,l.FieldOfView, nil;if e~=W or c~=N then W,N=e,c;local W=e/2/math.tan(math.rad(c)/2);local N=W*W;E=N/(N+I);P=E;else E=P;end;e=l.CFrame;l=a-e.Position;a=l:Dot(e.LookVector);if a<=0 then return nil;end;e,c=l:Dot(l),a*a;if c arg2 then return v86[34] end end return false end, } end tbl17.co = function() local co = tbl17.cache.co if not co then co = { c = fn35() } tbl17.cache.co = co end return co.c end end do -- cp local function fn35() local cameraController = tbl17.aS().CameraController local setRotation = v102(v102(getmetatable(cameraController), "__index"), "SetRotation") return { get = function() return v102(cameraController, "Rotation") or Vector2.zero end, set = function(I)coroutine.wrap( setRotation )( cameraController ,I);end } end tbl17.cp = function() local cp = tbl17.cache.cp if not cp then local cp2 = { c = fn35() } tbl17.cache.cp = cp2 cp = cp2 end return cp.c end end do -- cq local function fn35() local index2 = {} index2.__index = index2 index2.new = function(displayOrder, arg, arg2, arg3) local screenGui = Instance.new("ScreenGui") screenGui.Enabled = false screenGui.IgnoreGuiInset = v86[34] screenGui.DisplayOrder = displayOrder screenGui.Parent = K.hudParent() local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(0.5, v86[101]) instance.BorderSizePixel = 0 instance.Position = UDim2.fromScale(0.5, v86[101]) instance.Parent = screenGui local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(1, 0) uiCorner.Parent = instance local uiAspectRatioConstraint = Instance.new("UIAspectRatioConstraint") uiAspectRatioConstraint.AspectRatio = 1 uiAspectRatioConstraint.Parent = instance local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = 45 uiGradient.Parent = instance local uiStroke = Instance.new("UIStroke") uiStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border uiStroke.Color = Color3.new(1, v86[63], v86[63]) uiStroke.Parent = instance local instance2 = Instance.new(v86[46]) instance2.Rotation = 45 instance2.Parent = uiStroke local tbl18 = { _canAnimate = arg3 ~= false, _properties = arg2, _parent = screenGui, _circle = instance, _stroke = uiStroke, _fillGradient = uiGradient, _strokeGradient = instance2, _visible = v86[153], _debounce = false, } setmetatable(tbl18, index2) tbl18:SetRadius(arg) tbl18:SetProperties(arg2) return tbl18 end index2.SetRadius = function(arg, arg2) local n = arg2 * 2 arg._circle.Size = UDim2.fromOffset(n, n) end index2.SetProperties = function(arg, properties) arg._properties = properties local fill = properties.Fill local stroke = properties.Stroke arg._circle.BackgroundTransparency = fill.Enabled and fill.Transparency or v86[63] local stroke2 = arg._stroke stroke2.Transparency = stroke.Transparency stroke2.Thickness = stroke.Thickness local fillGradient = arg._fillGradient fillGradient.Enabled = fill.Enabled fillGradient.Color = fill.Gradient arg._strokeGradient.Color = stroke.Gradient end index2.SetVisible = function(l,I)if l._visible==I then return;end;l._visible=I;l._parent.Enabled=I;end index2.Update = function(l,I)if not l._visible then return;end;local W,N,P=l._properties,l._strokeGradient,l._fillGradient;local a=W.Animated;if not l._canAnimate or not a.Enabled then if l._debounce then l._debounce=false;N.Rotation=45;P.Rotation=45;end;return;end;W=a.Speed*I;N.Rotation=(N.Rotation+W)%360;P.Rotation=(P.Rotation-W)%360;l._debounce=true;end index2.SetPosition = function(arg, position) arg._circle.Position = position end index2.Destroy = function(arg) arg._parent:Destroy() end return index2 end tbl17.cq = function() local cq = tbl17.cache.cq if not cq then cq = { c = fn35() } tbl17.cache.cq = cq end return cq.c end end do -- cr local function fn35() local v115 = tbl17.g() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local CharacterContext = v116.new("fighters.CharacterContext") local tbl18 = { _trove = CharacterContext, _player = arg, State = { Alive = false }, Created = CharacterContext:Add(v115.new()), Died = CharacterContext:Add(v115.new()), } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local v117 = arg._trove:Extend() local function fn36() local state = arg.State if state.Alive then v117:Clean() arg.State = { Alive = false } arg.Died:Fire(state) end end local function fn37(arg2) local humanoid = arg2:WaitForChild("Humanoid", math.huge) if humanoid.Health <= 0 then return end local humanoidRootPart = arg2:WaitForChild("HumanoidRootPart", math.huge) local hitboxHead = arg2:WaitForChild("HitboxHead", math.huge) local hitboxBody = arg2:WaitForChild("HitboxBody", math.huge) local hitboxHeadSmall = arg2:WaitForChild("HitboxHeadSmall", math.huge) local hitboxBodySmall = arg2:WaitForChild("HitboxBodySmall", math.huge) v117:Connect(humanoid:GetPropertyChangedSignal("Health"), function() local health = humanoid.Health if arg.State.Alive then if health > 0 then arg.State.Health = health else fn36() end end end) v117:Connect(humanoid:GetPropertyChangedSignal("MaxHealth"), function() local maxHealth = humanoid.MaxHealth if arg.State.Alive then if maxHealth > 0 then arg.State.MaxHealth = maxHealth else fn36() end end end) local state = { Alive = v86[34], Health = humanoid.Health, MaxHealth = humanoid.MaxHealth, Model = arg2, Humanoid = humanoid, RootPart = humanoidRootPart, HitboxHead = hitboxHead, HitboxBody = hitboxBody, TargetPartsByName = { HitboxHead = hitboxHead, HitboxBody = hitboxBody, HitboxHeadSmall = hitboxHeadSmall, HitboxBodySmall = hitboxBodySmall }, _lastPosition = nil, Velocity = Vector3.zero, } arg.State = state arg.Created:Fire(state) end arg._trove:Connect(arg._player.CharacterAdded, fn37) arg._trove:Connect(arg._player.CharacterRemoving, fn36) local character = arg._player.Character if character ~= nil then task.spawn(fn37, character) end end index2.Update = function(l,I)l:_UpdateVelocity(I);end index2._UpdateVelocity = function(l,I)local W=l.State;if not W.Alive then return;end;local l_74,N=W.RootPart.Position,W._lastPosition;if N==nil then W._lastPosition=l_74;return;end;W.Velocity=(l_74-N)/I;W._lastPosition=l_74;end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cr = function() local cr = tbl17.cache.cr if not cr then cr = { c = fn35() } tbl17.cache.cr = cr end return cr.c end end do -- cs local function fn35() local v115 = cloneref(game:GetService("RunService")) local v116 = cloneref(game:GetService(v86[182])) local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _rootPart = arg, _boundId = v116:GenerateGUID(v86[153]) } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) v115:BindToRenderStep(arg._boundId, Enum.RenderPriority.First.Value, function() arg:_RenderStepUpdate() end) end index2.SetServerCFrame = function(arg, cframe) arg._cframe = cframe local oldCFrame = arg._oldCFrame if oldCFrame ~= nil then arg._rootPart.CFrame = cframe or oldCFrame end end index2.GetServerCFrame = function(arg) return arg._cframe or arg._rootPart.CFrame end index2.GetClientCFrame = function(arg) return arg._oldCFrame or arg._rootPart.CFrame end index2._RenderStepUpdate = function(arg) local oldCFrame = arg._oldCFrame if oldCFrame ~= nil then arg._rootPart.CFrame = oldCFrame arg._oldCFrame = nil end end index2.HeartbeatUpdate = function(arg) local cframe = arg._cframe if cframe == nil then return end local rootPart = arg._rootPart if arg._oldCFrame == nil then arg._oldCFrame = rootPart.CFrame end rootPart.CFrame = cframe end index2.Destroy = function(arg) arg:_RenderStepUpdate() v115:UnbindFromRenderStep(arg._boundId) end return index2 end tbl17.cs = function() local cs = tbl17.cache.cs if not cs then cs = { c = fn35() } tbl17.cache.cs = cs end return cs.c end end do -- ct local function fn35() return tbl17.g().new().Connect end tbl17.ct = function() local ct = tbl17.cache.ct if not ct then local ct2 = { c = fn35() } tbl17.cache.ct = ct2 ct = ct2 end return ct.c end end do -- cu local function fn35() tbl17.g() local v115 = tbl17.ct() return function(arg, arg2) return v115(arg, function(...) local v116 = getthreadidentity() setthreadidentity(8) arg2(...) setthreadidentity(v116) end) end end tbl17.cu = function() local cu = tbl17.cache.cu if not cu then cu = { c = fn35() } tbl17.cache.cu = cu end return cu.c end end do -- cv local function fn35() tbl17.aM() return function(arg, arg2) return v102(v102(arg, "Data"), arg2) end end tbl17.cv = function() local cv = tbl17.cache.cv if not cv then cv = { c = fn35() } tbl17.cache.cv = cv end return cv.c end end do -- cw local function fn35() local v115 = tbl17.cr() tbl17.aM() tbl17.aO() local v116 = tbl17.g() local v117 = tbl17.k() local v118 = tbl17.cu() local v119 = tbl17.ct() local v120 = tbl17.cv() local v121 = tbl17.b3() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local LocalFighterState = v117.new("fighters.LocalFighterState") local v122 = v102(getmetatable(arg2), "__index") local v123 = v102(arg2, "Data") local obj = setmetatable({ _trove = LocalFighterState, _data = v123, _inputFn = v102(v122, "Input"), _quickAttackFn = v102(v122, "QuickAttack"), Inner = arg2, Player = arg, Character = LocalFighterState:Add(v115.new(arg)), ObjectId = v102(v123, "ObjectID"), EnvironmentId = arg:GetAttribute("EnvironmentID"), IsSpectating = v120(arg2, "IsSpectating") == true, EnvironmentIdChanged = LocalFighterState:Add(v116.new()), IsSpectatingChanged = LocalFighterState:Add(v116.new()), EntityAdded = LocalFighterState:Add(v116.new()), EntityRemoved = LocalFighterState:Add(v116.new()), }, index2) obj._trove:Connect(arg:GetAttributeChangedSignal("EnvironmentID"), function() local attribute = arg:GetAttribute("EnvironmentID") obj.EnvironmentId = attribute obj.EnvironmentIdChanged:Fire(attribute) end) obj._trove:Add(v119(v121(arg2.GetDataChangedSignal, arg2, "IsSpectating"), function() local isSpectating = v120(arg2, "IsSpectating") == true if isSpectating == obj.IsSpectating then return end obj.IsSpectating = isSpectating obj.IsSpectatingChanged:Fire(isSpectating) end)) local inner = obj.Inner obj._trove:Add(v119(v102(inner, "EntityAdded"), function(arg3) obj.EntityAdded:Fire(arg3) end)) obj._trove:Add(v119(v102(inner, "EntityRemoved"), function(arg3) obj.EntityRemoved:Fire(arg3) end)) local entity = v102(inner, "Entity") if entity ~= nil then obj.EntityAdded:Fire(entity) end return obj end index2.GetEntity = function(arg) return v102(arg.Inner, "Entity") end index2.GetItems = function(arg) return v102(arg.Inner, "Items") end index2.GetEquippedItem = function(arg) return v102(arg.Inner, "EquippedItem") end index2.IsInvincible = function(arg) local entity = v102(arg.Inner, "Entity") local data = entity and v102(entity, "Data") return data ~= nil and v102(data, "IsInvincible") == true end index2.IsCrouching = function(arg) local data = v102(arg.Inner, "Data") return data ~= nil and v102(data, "IsCrouching") == true end index2.FindItemByObjectId = function(arg, arg2) local v122 = next local items, v123 = arg:GetItems() for _, v124 in v122, items, v123 do if arg2 == v102(v102(v124, "Data"), "ObjectID") then return v124 end end return nil end index2.OnItemAddedSignal = function(arg, arg2) return v118(v102(arg.Inner, "ItemAdded"), arg2) end index2.OnItemRemovedSignal = function(arg, arg2) return v118(v102(arg.Inner, "ItemRemoved"), arg2) end index2.OnEquippedItemChangedSignal = function(arg, arg2) return v118(v102(arg.Inner, "EquippedItemChanged"), function() arg2(arg:GetEquippedItem()) end) end index2.Input = function(arg, arg2) v121(arg._inputFn, arg.Inner, arg2) end index2.QuickAttack = function(arg, arg2) if not arg.Character.State.Alive then return end task.spawn(v121, arg._quickAttackFn, arg.Inner, arg2) end index2.Update = function(l,I)l.Character:Update(I);end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cw = function() local cw = tbl17.cache.cw if not cw then local cw2 = { c = fn35() } tbl17.cache.cw = cw2 cw = cw2 end return cw.c end end do -- cx local function fn35() local seasonLibrary = tbl17.aS().SeasonLibrary return function(arg, arg2) if arg2 == nil then return "Unranked" end local name = v102(v102(v102(seasonLibrary, "CurrentSeason"), "RankProfile"), "Name") local v115 = v102(v102(seasonLibrary, "RankProfiles"), name) if v115 == nil then return "Unranked" end local ranksOrder = v102(v115, "RanksOrder") local ranks = v102(v115, "Ranks") local v116 = rawlen(ranksOrder) for k, v117 in next, ranksOrder, nil do local v118 = v102(ranks, v117) if v118 == nil then continue end if arg2 < v102(v118, "RequiredELO") and v102(v118, "RequiredELOLeaderboardRanking") == nil then local v119 = v102(ranksOrder, math.clamp(k - 1, 1, v116)) if v119 ~= nil then return v119 end end end for i = v116, 1, -1 do local v117 = v102(ranksOrder, i) if v117 ~= nil then local v118 = v102(ranks, v117) if v118 ~= nil and v102(v118, "RequiredELOLeaderboardRanking") == nil then return v117 end end end return "Unranked" end end tbl17.cx = function() local cx = tbl17.cache.cx if not cx then cx = { c = fn35() } tbl17.cache.cx = cx end return cx.c end end do -- cy local function fn35() local v115 = tbl17.k() local v116 = tbl17.cx() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v115.new("fighters.RankTracker"), Rank = "Unranked" } setmetatable(tbl18, index2) tbl18:_Initialize(arg) return tbl18 end index2._Initialize = function(arg, arg2) arg._trove:Connect(arg2:GetAttributeChangedSignal("DisplayELO"), function() local v117 = arg local userId = arg2.UserId local attribute = arg2:GetAttribute("DisplayELO") v117.Rank = v116(userId, attribute) end) local userId = arg2.UserId local attribute = arg2:GetAttribute("DisplayELO") arg.Rank = v116(userId, attribute) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cy = function() local cy = tbl17.cache.cy if not cy then cy = { c = fn35() } tbl17.cache.cy = cy end return cy.c end end do -- cz local function fn35() tbl17.aO() local index2 = {} index2.__index = index2 index2.Type = "CustomView" index2.new = function(arg) local info2 = v102(arg, "Info") local tbl18 = { _data = v102(arg, "Data"), Info = info2, Inner = arg, Name = v102(arg, "Name") } setmetatable(tbl18, index2) return tbl18 end index2.IsEquipped = function(arg) return v102(arg.Inner, "IsEquipped") end return index2 end tbl17.cz = function() local cz = tbl17.cache.cz if not cz then cz = { c = fn35() } tbl17.cache.cz = cz end return cz.c end end do -- cA local function fn35() tbl17.aO() local index2 = {} index2.__index = index2 index2.Type = "GunView" index2.new = function(arg) local info2 = v102(arg, "Info") return setmetatable({ _data = v102(arg, "Data"), Inner = arg, Name = v102(arg, "Name"), IsRaycast = v102(info2, "IsRaycast"), MaxAmmo = v102(info2, "MaxAmmo"), }, index2) end index2.GetAmmo = function(arg) return v102(arg._data, "Ammo") end index2.GetReloadTimeRemaining = function(arg) local now2 = tick() local n = v86[186] local v115 = v102(arg.Inner, "_reload_cooldown") if v115 ~= nil then n = math.max(v115 - now2, 0) end local v116 = v102(arg.Inner, "_shoot_cooldown_no_ammo") local n33 if v116 == nil then n33 = n else n33 = math.max(n, v116 - now2) end return n33 end return index2 end tbl17.cA = function() local ca = tbl17.cache.cA if not ca then local ca2 = { c = fn35() } tbl17.cache.cA = ca2 ca = ca2 end return ca.c end end do -- cB local function fn35() tbl17.aO() local index2 = {} index2.__index = index2 index2.Type = "MeleeView" index2.new = function(arg) return setmetatable({ _info = v102(arg, "Info"), _data = v102(arg, "Data"), Inner = arg, Name = v102(arg, "Name") }, index2) end index2.IsDeflecting = function(arg) local v115 = v102(arg.Inner, "_deflect_cooldown") if v115 == nil then return false end local deflectCooldown = v102(arg._info, "DeflectCooldown") return deflectCooldown ~= nil and tick() < v115 - deflectCooldown end index2.IsAttacking = function(arg) local v115 = v102(arg.Inner, "_attack_cooldown") if v115 == nil then return v86[153] end return tick() < v115 end return index2 end tbl17.cB = function() local cb = tbl17.cache.cB if not cb then local cb2 = { c = fn35() } tbl17.cache.cB = cb2 cb = cb2 end return cb.c end end do -- cC local function fn35() tbl17.aO() local index2 = {} index2.__index = index2 index2.Type = "ThrowableView" index2.new = function(arg) return setmetatable({ _data = v102(arg, "Data"), Inner = arg, Name = v102(arg, "Name") }, index2) end return index2 end tbl17.cC = function() local cc = tbl17.cache.cC if not cc then cc = { c = fn35() } tbl17.cache.cC = cc end return cc.c end end do -- cD local function fn35() local v115 = tbl17.cz() tbl17.aM() local v116 = tbl17.cA() tbl17.aO() local v117 = tbl17.cB() local v118 = tbl17.g() local v119 = tbl17.cC() local v120 = tbl17.k() local v121 = tbl17.ct() local index2 = {} index2.__index = index2 index2.new = function(arg) local remoteItemObserver = v120.new("fighters.remote_item_observer") local tbl18 = { _trove = remoteItemObserver, _inner = arg, _items = {}, ItemChanged = remoteItemObserver:Add(v118.new()) } setmetatable(tbl18, index2) tbl18:_BindToGameEvents() return tbl18 end index2._BindToGameEvents = function(arg) local itemAdded = v102(arg._inner, "ItemAdded") local itemRemoved = v102(arg._inner, "ItemRemoved") arg._trove:Add(v121(itemAdded, function(arg2) arg:_AddItem(arg2) end)) arg._trove:Add(v121(itemRemoved, function(arg2) arg:_RemoveItem(arg2) end)) arg._trove:Add(v121(v102(arg._inner, "EquippedItemChanged"), function() local equippedItem = v102(arg._inner, "EquippedItem") arg.ItemChanged:Fire(equippedItem) if equippedItem == nil then arg._equippedItem = nil return end arg._equippedItem = arg:_GetViewByInner(equippedItem) end)) for _, v122 in v102(arg._inner, "Items") do arg:_AddItem(v122) end local equippedItem = v102(arg._inner, "EquippedItem") if equippedItem ~= nil then arg._equippedItem = arg:_GetViewByInner(equippedItem) end end index2._AddItem = function(arg, arg2) if arg2.Info.Type == "Gun" then table.insert(arg._items, v116.new(arg2)) elseif arg2.Info.Type == "Melee" then table.insert(arg._items, v117.new(arg2)) elseif arg2.Info.Type == "Custom" then table.insert(arg._items, v115.new(arg2)) elseif arg2.Info.Type == "Throwable" then table.insert(arg._items, v119.new(arg2)) end end index2._GetViewByInner = function(arg, arg2) for _, v122 in arg._items, nil, nil do if v122.Inner == arg2 then return v122 end end return nil end index2._RemoveItem = function(arg, arg2) for k, v122 in arg._items, nil, nil do if v122.Inner == arg2 then table.remove(arg._items, k) break end end end index2.GetItems = function(arg) return arg._items end index2.GetEquippedItem = function(arg) return arg._equippedItem end index2.EquippedItemAsGun = function(arg) local equippedItem = arg._equippedItem if equippedItem ~= nil and equippedItem.Type == "GunView" then return equippedItem end return nil end index2.EquippedItemAsMelee = function(arg) local equippedItem = arg._equippedItem if equippedItem ~= nil and equippedItem.Type == "MeleeView" then return equippedItem end return nil end index2.EquippedItemAsCustom = function(arg) local equippedItem = arg._equippedItem if equippedItem ~= nil and equippedItem.Type == "CustomView" then return equippedItem end return nil end index2.GetEquippedAmmoState = function(arg) local equippedItem = arg._equippedItem if equippedItem == nil then return nil end if equippedItem.Type == "GunView" then return equippedItem:GetAmmo() > 0 end return nil end index2.FindByObjectId = function(arg, arg2) for _, v122 in next, arg._items, nil do if arg2 == v102(v122._data, "ObjectID") then return v122 end end return nil end index2.Destroy = function(arg) arg._trove:Destroy() if not flag2 then return end end return index2 end tbl17.cD = function() local cd = tbl17.cache.cD if not cd then local cd2 = { c = fn35() } tbl17.cache.cD = cd2 cd = cd2 end return cd.c end end do -- cE local function fn35() local v115 = tbl17.cr() tbl17.aM() tbl17.aO() tbl17.cw() local v116 = tbl17.cy() local v117 = tbl17.cD() local v118 = tbl17.g() local v119 = tbl17.k() tbl17.cv() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local RemoteFighterState = v119.new("fighters.RemoteFighterState") local tbl18 = { _trove = RemoteFighterState, _localBindingTrove = RemoteFighterState:Extend(), _data = v102(arg2, "Data"), Inner = arg2, Player = arg, Character = RemoteFighterState:Add(v115.new(arg)), ItemObserver = RemoteFighterState:Add(v117.new(arg2)), _rankTracker = RemoteFighterState:Add(v116.new(arg)), EnvironmentId = arg:GetAttribute("EnvironmentID"), EnvironmentIdChanged = RemoteFighterState:Add(v118.new()), IsEnemy = false, EnemyChanged = RemoteFighterState:Add(v118.new()), } tbl18._trove:Connect(arg:GetAttributeChangedSignal("EnvironmentID"), function() local attribute = arg:GetAttribute("EnvironmentID") tbl18.EnvironmentId = attribute tbl18.EnvironmentIdChanged:Fire(attribute) end) return setmetatable(tbl18, index2) end index2.SetLocalFighter = function(arg, arg2) arg._localBindingTrove:Clean() local localBindingTrove = arg._localBindingTrove local function fn36() local environmentId = arg.EnvironmentId local isEnemy if environmentId == nil or environmentId ~= arg2.EnvironmentId then isEnemy = false else local attribute = arg.Player:GetAttribute("TeamID") local attribute2 = arg2.Player:GetAttribute("TeamID") isEnemy = attribute2 == nil or attribute ~= attribute2 end if isEnemy == arg.IsEnemy then return end arg.IsEnemy = isEnemy arg.EnemyChanged:Fire(isEnemy) end fn36() localBindingTrove:Connect(arg2.EnvironmentIdChanged, fn36) localBindingTrove:Connect(arg2.Player:GetAttributeChangedSignal("TeamID"), fn36) localBindingTrove:Connect(arg.EnvironmentIdChanged, fn36) localBindingTrove:Connect(arg.Player:GetAttributeChangedSignal("TeamID"), fn36) end index2.GetRank = function(l)return l._rankTracker.Rank;end index2.IsInvincible = function(arg) local entity = v102(arg.Inner, "Entity") local data = entity and v102(entity, "Data") return data ~= nil and v102(data, "IsInvincible") == true end index2.GetCameraRotation = function(arg) local value = arg._data and v102(arg._data, "CameraRotation") return typeof(value) == "Vector2" and value or Vector2.zero end index2.IsCrouching = function(arg) return arg._data ~= nil and v102(arg._data, "IsCrouching") == true end index2.Update = function(l,I)l.Character:Update(I);end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cE = function() local ce = tbl17.cache.cE if not ce then local ce2 = { c = fn35() } tbl17.cache.cE = ce2 ce = ce2 end return ce.c end end do -- cF local function fn35() tbl17.aM() tbl17.aO() local v115 = tbl17.k() local fighterController = tbl17.aS().FighterController local v116 = tbl17.cw() local v117 = tbl17.cE() local v118 = tbl17.g() local v119 = tbl17.ct() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 index2.new = function() local fighters = v115.new("fighters") local tbl18 = { _trove = fighters, LocalState = nil, StateByPlayer = {}, StateByModel = {}, EnemyByPlayer = {}, LocalStateSet = fighters:Add(v118.new()), LocalStateRemoved = fighters:Add(v118.new()), RemoteStateAdded = fighters:Add(v118.new()), RemoteStateRemoved = fighters:Add(v118.new()), RemoteEntityAdded = fighters:Add(v118.new()), RemoteEntityRemoved = fighters:Add(v118.new()), } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local objectAdded = v102(fighterController, "ObjectAdded") local objectRemoved = v102(fighterController, "ObjectRemoved") local v120 = v102(fighterController, "_player_to_fighter") local v121 = getthreadidentity local v122 = setthreadidentity local function fn36(arg2) local state = arg2.Character.State if state.Alive then arg.StateByModel[state.Model] = nil end end local function fn37(arg2) local v123 = v121() v122(8) local player = v102(arg2, "Player") if player == localPlayer then if arg.LocalState ~= nil then arg.LocalStateRemoved:Fire(arg.LocalState) arg._trove:Remove(arg.LocalState) arg.LocalState = nil end arg:_BuildLocalFighter(player, arg2) v122(v123) return end local v124 = arg.StateByPlayer[player] if v124 then arg.RemoteStateRemoved:Fire(v124) fn36(v124) arg._trove:Remove(v124) end arg:_BuildRemoteFighter(player, arg2) v122(v123) end local function fn38(arg2) if true then local v123 = v121() v122(8) local localState = arg.LocalState if localState and localState.Inner == arg2 then arg._trove:Remove(localState) arg.LocalState = nil arg.LocalStateRemoved:Fire(localState) v122(v123) return end local player = v102(arg2, "Player") local v124 = arg.StateByPlayer[player] if v124 and v124.Inner == arg2 then fn36(v124) arg._trove:Remove(v124) arg.StateByPlayer[player] = nil arg.EnemyByPlayer[player] = nil arg.RemoteStateRemoved:Fire(v124) v122(v123) return end v122(v123) else -- (anti-tamper freeze trap removed) end end arg._trove:Add(v119(objectAdded, fn37)) arg._trove:Add(v119(objectRemoved, fn38)) for _, v123 in next, v120, nil do fn37(v123) end end index2._BuildLocalFighter = function(arg, arg2, arg3) local v120 = arg._trove:Add(v116.new(arg2, arg3)) arg.LocalState = v120 for _, v121 in arg.StateByPlayer, nil, nil do v121:SetLocalFighter(v120) end arg.LocalStateSet:Fire(v120) end index2._BuildRemoteFighter = function(arg, arg2, arg3) local v120 = arg._trove:Add(v117.new(arg2, arg3)) v120._trove:Connect(v120.Character.Created, function(arg4) arg.StateByModel[arg4.Model] = v120 end) v120._trove:Connect(v120.Character.Died, function(arg4) arg.StateByModel[arg4.Model] = nil end) local state = v120.Character.State if state.Alive then arg.StateByModel[state.Model] = v120 end local entityAdded = v102(arg3, "EntityAdded") local entityRemoved = v102(arg3, "EntityRemoved") v120._trove:Add(v119(entityAdded, function(arg4) arg.RemoteEntityAdded:Fire(v120, arg4) end)) v120._trove:Add(v119(entityRemoved, function(arg4) arg.RemoteEntityRemoved:Fire(v120, arg4) end)) v120._trove:Connect(v120.EnemyChanged, function(arg4) arg.EnemyByPlayer[arg2] = arg4 and v120 or nil end) arg.StateByPlayer[arg2] = v120 arg.EnemyByPlayer[arg2] = v120.IsEnemy and v120 or nil local localState = arg.LocalState if localState ~= nil then v120:SetLocalFighter(localState) end arg.RemoteStateAdded:Fire(v120) local entity = v102(arg3, "Entity") if entity ~= nil then arg.RemoteEntityAdded:Fire(v120, entity) end end index2.ObserveRemoteStates = function(arg, arg2, arg3) local ObserveRemoteStates = v115.new("fighters.ObserveRemoteStates") for _, v120 in arg.StateByPlayer, nil, nil do arg2(v120) end ObserveRemoteStates:Connect(arg.RemoteStateAdded, arg2) ObserveRemoteStates:Connect(arg.RemoteStateRemoved, arg3) return ObserveRemoteStates end index2.ObserveAllStates = function(arg, arg2, arg3, arg4, arg5) local ObserveAllStates = v115.new("fighters.ObserveAllStates") local localState = arg.LocalState if localState then arg2(localState) end ObserveAllStates:Connect(arg.LocalStateSet, arg2) ObserveAllStates:Connect(arg.LocalStateRemoved, arg3) for _, v120 in arg.StateByPlayer, nil, nil do arg4(v120) end ObserveAllStates:Connect(arg.RemoteStateAdded, arg4) ObserveAllStates:Connect(arg.RemoteStateRemoved, arg5) return ObserveAllStates end index2.ObserveRemoteEntities = function(arg, arg2, arg3) local ObserveRemoteEntities = v115.new("fighters.ObserveRemoteEntities") for _, v120 in arg.StateByPlayer, nil, nil do local entity = v102(v120.Inner, "Entity") if entity ~= nil then arg2(v120, entity) end end ObserveRemoteEntities:Connect(arg.RemoteEntityAdded, arg2) ObserveRemoteEntities:Connect(arg.RemoteEntityRemoved, arg3) return ObserveRemoteEntities end index2.Update = function(l,I)local W=l.LocalState;if W then W:Update(I);end;for W,W_75 in l.StateByPlayer,nil,nil do W_75:Update(I);end;end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cF = function() local cf = tbl17.cache.cF if not cf then local cf2 = { c = fn35() } tbl17.cache.cF = cf2 cf = cf2 end return cf.c end end do -- cG local function fn35() tbl17.cr() tbl17.cF() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local tbl18 tbl18 = { getServerOriginOffset = function(arg) return Vector3.new(0, arg and 0.25 or 1.75, v86[186]) end, getServerOrigin = function(arg, arg2) return arg.RootPart.Position + tbl18.getServerOriginOffset(arg2:IsCrouching()) end, getOneWayPing = function() return 0.5 * localPlayer:GetNetworkPing() end, getEstimatedReplicationDelay = function() return tbl18.getOneWayPing() + 0.05 end, getEstimatedRemoteDelay = function() return tbl18.getOneWayPing() + 0.016666666666666666 end, } return tbl18 end tbl17.cG = function() local cg = tbl17.cache.cG if not cg then cg = { c = fn35() } tbl17.cache.cG = cg end return cg.c end end do -- cH local function fn35() local tbl18 tbl18 = { encodeCameraRotation = function(arg) if arg ~= arg then return utf8.char(0) .. utf8.char(0) end local n = math.clamp(math.floor(arg.X % math.tau / 3.1415926535897931 / 2 * 256 + 0.5), 0, 255) local n33 = math.clamp(math.floor(arg.Y % math.tau / 3.1415926535897931 / 2 * 256 + 0.5), 0, v86[108]) return utf8.char(n) .. utf8.char(n33) end, encodeSingle = function(arg) if arg ~= arg then return utf8.char(0) end local v115 = v86[186] local v116 = v86[108] return utf8.char(math.clamp(math.floor(arg % math.tau / 3.1415926535897931 / 2 * v86[137] + 0.5), v115, v116)) end, decodeSingle = function(arg) local v115 = v86[56] return utf8.codepoint(arg) * 3.1415926535897931 * v115 / 256 end, fromXYToCameraRotation = function(arg, arg2) return Vector2.new(arg, arg2) * 3.1415926535897931 * 2 / 256 end, decodeCameraRotation = function(arg) local v115, v116 = utf8.codepoint(arg, 1, #arg) return tbl18.fromXYToCameraRotation(v115, v116) end, } return tbl18 end tbl17.cH = function() local ch = tbl17.cache.cH if not ch then local ch2 = { c = fn35() } tbl17.cache.cH = ch2 ch = ch2 end return ch.c end end do -- cI local function fn35() tbl17.aM() local v115 = tbl17.a() local v116 = tbl17.k() local fighterController = tbl17.aS().FighterController local clientFighterCharacterJoints = tbl17.aS().ClientFighterCharacterJoints local updateCameraRotationRemote = tbl17.aS().UpdateCameraRotationRemote local get = tbl17.cp().get local v117 = tbl17.cH() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 local function fn36(arg) if arg.Kind == "Unnormalized" then return utf8.char(math.clamp(arg.Pitch, v86[186], 255)) .. utf8.char(math.clamp(arg.Yaw, 0, 255)) end return v117.encodeSingle(math.rad(arg.Pitch)) .. v117.encodeSingle(math.rad(arg.Yaw)) end local function fn37(arg) if arg.Kind == "Unnormalized" then return v117.fromXYToCameraRotation(arg.Pitch, arg.Yaw) end local v118 = v117.decodeSingle(v117.encodeSingle(math.rad(arg.Pitch))) local v119 = v117.decodeSingle(v117.encodeSingle(math.rad(arg.Yaw))) return Vector2.new(v118, v119) end index2.new = function() return setmetatable({ _restoreTrove = v116.new("view_angle_driver.restore"), _restoreTask = nil, _payloadBySlot = {}, _winning = nil, _fullySuppressed = v86[153], _dirty = false, }, index2) end index2._LoadJointsHook = function(arg) if arg._jointsRestore ~= nil then return v115.VoidOk end local update = v102(clientFighterCharacterJoints, "Update") if update == nil then return v115.err("ViewAngleDriver", "function_lookup", "Joints.Update method not found") end v103(clientFighterCharacterJoints, "Update", function(arg2, arg3, arg4) local clientFighterCharacter = v102(arg2, "ClientFighterCharacter") local clientFighter = clientFighterCharacter and v102(clientFighterCharacter, "ClientFighter") if clientFighter == nil then return update(arg2, arg3, arg4) end if v102(clientFighter, "IsLocalPlayer") == true then local winning = arg._winning if winning ~= nil then v103(arg4, "CameraRotationRaw", fn37(winning)) end end return update(arg2, arg3, arg4) end) arg._jointsRestore = { JointsUpdateMethod = update } return v115.VoidOk end index2._LoadReplicationHook = function(arg) if arg._replicationRestore ~= nil then return v115.VoidOk end local v118 = getmetatable(fighterController) if v118 == nil then return v115.err("ViewAngleDriver", "get_metatable", "FighterController metatable not found") end local v119 = v102(v118, "__index") if type(v119) ~= "table" then return v115.err("ViewAngleDriver", "get_prototype", "FighterController prototype not found") end local v120 = v102(v119, "_CameraReplicationLoop") if type(v120) ~= "function" then return v115.err("ViewAngleDriver", "function_lookup", "FighterController._CameraReplicationLoop method not found") end local v121 = nil local v122 = nil for k, v123 in debug.getupvalues(v120) do if type(v123) ~= "table" then v121 = nil v122 = nil else local v124 = getmetatable(v123) if v124 == nil then v121 = nil v122 = nil else local v125 = v102(v124, "__index") if type(v125) ~= "table" then v121 = nil v122 = nil elseif type(v102(v125, "EncodeCameraRotation")) == "function" then v121 = k v122 = v123 break else v121 = nil v122 = nil end end end end if v121 == nil or v122 == nil then return v115.err("ViewAngleDriver", "upvalue_search", "Utility upvalue index not found") end debug.setupvalue(v120, v121, { EncodeCameraRotation = function(arg2, arg3) if next(arg._payloadBySlot) ~= nil or arg._fullySuppressed then v103(fighterController, "_replication_stopped", false) return v102(fighterController, "_last_encoded_camera_rotation") or v117.encodeCameraRotation(arg3) end return v117.encodeCameraRotation(arg3) end }) arg._replicationRestore = { CameraReplicationLoopMethod = v120, UtilityIndex = v121, Utility = v122 } return v115.VoidOk end index2._Resolve = function(arg) local n = -math.huge local v118 = nil for k, v119 in arg._payloadBySlot, nil, nil do if k > n then n = k v118 = v119 end end arg._winning = v118 end index2._CancelRestore = function(arg) local restoreTask = arg._restoreTask if restoreTask ~= nil then arg._restoreTask = nil arg._restoreTrove:Remove(restoreTask) end end index2.SendViewAngles = function(arg, arg2, arg3) if arg._payloadBySlot[arg2] == arg3 then return v115.VoidOk end arg._payloadBySlot[arg2] = arg3 arg._dirty = true arg:_Resolve() arg:_CancelRestore() if arg._winning == nil then return v115.VoidOk end local v118 = arg:_LoadJointsHook() if not v118.Ok then return v118 end return arg:_LoadReplicationHook() end index2.SendRawCameraRotation = function(arg, arg2) fireServer2(updateCameraRotationRemote, arg2, nil) end index2.Suppress = function(arg, fullySuppressed) if arg._fullySuppressed == fullySuppressed then return v115.VoidOk end arg._fullySuppressed = fullySuppressed if fullySuppressed then arg:_CancelRestore() return arg:_LoadReplicationHook() end return v115.VoidOk end index2.ClearAll = function(arg) arg:_CancelRestore() table.clear(arg._payloadBySlot) arg._winning = nil arg._dirty = v86[153] end index2.Flush = function(arg) if not arg._dirty then return end if arg._fullySuppressed then return end local winning = arg._winning if winning == nil then arg._dirty = false arg._restoreTask = arg._restoreTrove:Add(task.delay(0.05 + localPlayer:GetNetworkPing(), function() if arg._winning ~= nil or arg._fullySuppressed then return end fireServer2(updateCameraRotationRemote, v117.encodeCameraRotation(get()), nil) end)) return end arg._dirty = false fireServer2(updateCameraRotationRemote, fn36(winning), nil) end index2._RevertHooks = function(arg) local jointsRestore = arg._jointsRestore if jointsRestore ~= nil then arg._jointsRestore = nil v103(clientFighterCharacterJoints, "Update", jointsRestore.JointsUpdateMethod) end local replicationRestore = arg._replicationRestore if replicationRestore ~= nil then arg._replicationRestore = nil debug.setupvalue(replicationRestore.CameraReplicationLoopMethod, replicationRestore.UtilityIndex, replicationRestore.Utility) end end index2.Destroy = function(arg) arg._restoreTrove:Destroy() arg._restoreTask = nil arg:_RevertHooks() end return index2 end tbl17.cI = function() local ci = tbl17.cache.cI if not ci then ci = { c = fn35() } tbl17.cache.cI = ci end return ci.c end end do -- cJ local function fn35() tbl17.cr() local mechanicsController = tbl17.aS().MechanicsController local v115 = tbl17.cs() local v116 = tbl17.cG() local v117 = tbl17.k() local v118 = tbl17.cI() local index2 = {} index2.__index = index2 index2.new = function(arg) local characterController = v117.new("context.character_controller") local tbl18 = { _trove = characterController, _context = arg, _viewAngleDriver = characterController:Add(v118.new()) } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local function fn36(arg2) arg._rootDesync = arg._trove:Add(v115.new(arg2.RootPart)) end arg._trove:Connect(arg._context.Created, fn36) arg._trove:Connect(arg._context.Died, function() arg._viewAngleDriver:ClearAll() local rootDesync = arg._rootDesync if rootDesync ~= nil then arg._trove:Remove(rootDesync) arg._rootDesync = nil end end) local state = arg._context.State if state.Alive then fn36(state) end end index2.SetServerCFrame = function(arg, arg2) local rootDesync = arg._rootDesync if rootDesync == nil then return end rootDesync:SetServerCFrame(arg2) end index2.GetServerCFrame = function(arg) local rootDesync = arg._rootDesync if rootDesync == nil then return nil end return rootDesync:GetServerCFrame() end index2.IsCrouching = function() local v119 = v86[34] return v102(mechanicsController, "IsCrouching") == v119 end if not flag3 then return end index2.GetServerOriginAnchor = function(arg) local v119 = arg:IsCrouching() local rootDesync = arg._rootDesync local v120 = v116.getServerOriginOffset(v119) return rootDesync ~= nil and rootDesync:GetServerCFrame() + v120 or nil, v119 end index2.GetServerHeadOrigin = function(arg) return (arg:GetServerOriginAnchor()) end index2.GetClientCFrame = function(arg) local rootDesync = arg._rootDesync if rootDesync == nil then return nil end return rootDesync:GetClientCFrame() end index2.SendViewAngles = function(arg, arg2, arg3) arg._viewAngleDriver:SendViewAngles(arg2, arg3) end index2.SendRawCameraRotation = function(arg, arg2) arg._viewAngleDriver:SendRawCameraRotation(arg2) end index2.SuppressCameraReplication = function(arg, arg2) arg._viewAngleDriver:Suppress(arg2) end index2.FlushViewAngles = function(arg) arg._viewAngleDriver:Flush() end index2.HeartbeatUpdate = function(arg) local rootDesync = arg._rootDesync if rootDesync == nil then return end rootDesync:HeartbeatUpdate() end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cJ = function() local cj = tbl17.cache.cJ if not cj then cj = { c = fn35() } tbl17.cache.cJ = cj end return cj.c end end do -- cK local function fn35() local enumLibrary = tbl17.aS().EnumLibrary local v115 = v102(enumLibrary, "_to_enum") local v116 = v102(enumLibrary, "_from_enum") return { encode = function(arg) return v102(v115, arg) end, decode = function(arg) return v102(v116, arg) end, } end tbl17.cK = function() local ck = tbl17.cache.cK if not ck then local ck2 = { c = fn35() } tbl17.cache.cK = ck2 ck = ck2 end return ck.c end end do -- cL local function fn35() tbl17.aO() local v115 = tbl17.g() local v116 = tbl17.k() local v117 = tbl17.ct() local index2 = {} index2.__index = index2 index2.new = function(arg) local ItemInterfaceAdapter = v116.new("ItemInterfaceAdapter") local tbl18 = { _trove = ItemInterfaceAdapter, Instance = v102(arg, "ItemInterface"), Created = ItemInterfaceAdapter:Add(v115.new()) } setmetatable(tbl18, index2) ItemInterfaceAdapter:Add(v117(v102(arg, "InterfaceAdded"), function(instance) tbl18.Instance = instance tbl18.Created:Fire(instance) end)) return tbl18 end index2.Destroy = function(arg) arg.Instance = nil arg._trove:Destroy() end return index2 end tbl17.cL = function() local cl = tbl17.cache.cL if not cl then local cl2 = { c = fn35() } tbl17.cache.cL = cl2 cl = cl2 end return cl.c end end do -- cM local function fn35() local v115 = tbl17.cK() tbl17.aM() local v116 = tbl17.cL() tbl17.aO() local v117 = tbl17.b3() local useItemRemote = tbl17.aS().UseItemRemote local index2 = {} index2.__index = index2 index2.__type = "Custom" index2.new = function(arg, arg2) local info2 = v102(arg, "Info") local data = v102(arg, "Data") local tbl18 = { Index = arg2, _data = data, Info = info2, _clientFighter = v102(arg, "ClientFighter"), ItemInterface = v116.new(arg), Inner = arg, Name = v102(arg, "Name"), ObjectId = v102(data, "ObjectID"), } setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) arg.ItemInterface:Destroy() end index2.Equip = function(arg) if arg:IsEquipped() then return end local clientFighter = arg._clientFighter task.spawn(v117, clientFighter.EquipItem, clientFighter, arg.Index) end index2.IsEquipped = function(arg) return v102(arg.Inner, "IsEquipped") end index2.Reload = function(arg) local ammo = arg:GetAmmo() local ammoReserve = arg:GetAmmoReserve() if ammo == nil or ammoReserve == nil or arg:IsReloading() or ammoReserve <= 0 or arg:IsMagFull() then return end local flag19 = ammo == 0 local animations = v102(v102(v102(arg.Inner, "ViewModel"), "Info"), "Animations") local flag20 = (v102(animations, "EmptyReload") ~= nil or v102(animations, "EmptyReloadStart") ~= nil) and flag19 local str7 = "Reload" if flag20 then str7 = "EmptyReload" end local v118 = v102(arg.Info, animations[str7]) if v118 == nil then return end local length = v118.Length local n = tick() + length local inner = arg.Inner v103(inner, "_reload_cooldown", n) v103(inner, "_reload_cancel_cooldown", flag19 and n or tick() + 0.25) local actionTimestamp = v118.ActionTimestamp v103(inner, "_reload_cancel_expiration", tick() + actionTimestamp) local tbl18 = { ["\1"] = v115.encode(str7) } fireServer(useItemRemote, arg.ObjectId, v115.encode("StartReloading"), tbl18, nil) end index2.IsAmmoBased = function(arg) return v102(arg._data, "Ammo") ~= nil end index2.GetAmmo = function(arg) return v102(arg._data, "Ammo") end index2.GetAmmoReserve = function(arg) return v102(arg._data, "AmmoReserve") end index2.IsMagFull = function(arg) local ammo = arg:GetAmmo() if ammo == nil then return nil end local maxAmmo = v102(arg.Info, "MaxAmmo") return maxAmmo ~= nil and ammo >= maxAmmo end index2.IsReloading = function(arg) local v118 = v102(arg.Inner, "_reload_cooldown") return v118 ~= nil and tick() < v118 end return index2 end tbl17.cM = function() local cm = tbl17.cache.cM if not cm then cm = { c = fn35() } tbl17.cache.cM = cm end return cm.c end end do -- cN local function fn35() return { encode = function(arg) local v115, v116, v117 = arg:ToOrientation() return { ["\0"] = arg.X, ["\1"] = arg.Y, ["\2"] = arg.Z, ["\3"] = v115, ["\4"] = v116, ["\5"] = v117 } end, decode = function(arg) local v115 = v86[68] if type(arg) ~= v115 then return nil end local v116 = arg["\0"] local v117 = arg["\1"] local v118 = arg["\2"] local v119 = arg["\3"] local v120 = arg["\4"] local v121 = arg["\5"] local flag19 = type(v116) ~= "number" if not flag19 then local v122 = v86[95] flag19 = type(v117) ~= v122 end if flag19 or type(v118) ~= "number" or type(v119) ~= "number" or type(v120) ~= "number" or type(v121) ~= "number" then return nil end return CFrame.new(v116, v117, v118) * CFrame.fromOrientation(v119, v120, v121) end, } end tbl17.cN = function() local cn = tbl17.cache.cN if not cn then local cn2 = { c = fn35() } tbl17.cache.cN = cn2 cn = cn2 end return cn.c end end do -- cO local function fn35() return function(arg, arg2, arg3) local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Include raycastParams.FilterDescendantsInstances = { arg2 } local hit = workspace:Raycast(arg, arg3 - arg, raycastParams) if hit == nil then return nil end local v115 = arg2.CFrame:PointToObjectSpace(hit.Position) if v115 == Vector3.zero then return nil end return v115 end end tbl17.cO = function() local co = tbl17.cache.cO if not co then co = { c = fn35() } tbl17.cache.cO = co end return co.c end end do -- cP local function fn35() local v115 = tbl17.cN() local v116 = tbl17.cO() return function(arg, arg2) if arg2 == nil then return nil, nil end local position = arg.Position local part = arg2.Part local objectSpace = arg2.ObjectSpace or v116(position, part, part.Position) if objectSpace == nil or objectSpace == Vector3.zero then return nil, nil end return part, objectSpace ~= nil and v115.encode(CFrame.new(objectSpace)) or v115.encode(CFrame.new(part:GetClosestPointOnSurface(position))) end end tbl17.cP = function() local cp = tbl17.cache.cP if not cp then cp = { c = fn35() } tbl17.cache.cP = cp end return cp.c end end do -- cQ local function fn35() local itemLibrary = tbl17.aS().ItemLibrary return function(arg) local v115 = v102(v102(itemLibrary, "Items"), arg) return v115 ~= nil and v102(v115, "EquipCooldown") or nil end end tbl17.cQ = function() local cq = tbl17.cache.cQ if not cq then cq = { c = fn35() } tbl17.cache.cQ = cq end return cq.c end end do -- cR local function fn35() local v115 = tbl17.cN() local v116 = tbl17.cK() tbl17.aM() tbl17.aO() local useItemRemote = tbl17.aS().UseItemRemote local v117 = tbl17.cL() local v118 = tbl17.cG() local v119 = tbl17.cP() local v120 = tbl17.cQ() local v121 = tbl17.b3() local index2 = {} index2.__index = index2 index2.__type = "Gun" index2.new = function(arg, arg2) local info2 = v102(arg, "Info") local data = v102(arg, "Data") local tbl18 = { Index = arg2, _data = data, Info = info2, _clientFighter = v102(arg, "ClientFighter"), _aimScopePercent = v102(info2, "AimScopePercent"), _equipRequestedAt = nil, _expectedAmmoRaw = v102(data, "Ammo"), _nextLikelyShotRequestAt = 0, _outstandingAmmoSpend = 0, _outstandingAmmoSpendDeadline = nil, ItemInterface = v117.new(arg), Inner = arg, Name = v102(arg, "Name"), ObjectId = v102(data, "ObjectID"), IsRaycast = v102(info2, "IsRaycast"), MaxAmmo = v102(info2, "MaxAmmo"), ShotRequestCount = 0, EquipCooldown = v120(v102(arg, "Name")) or 0, } setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) arg.ItemInterface:Destroy() end index2._ClearPendingShots = function(arg) arg._expectedAmmoRaw = arg:GetAmmo() arg._nextLikelyShotRequestAt = v86[186] arg._outstandingAmmoSpend = v86[186] arg._outstandingAmmoSpendDeadline = nil end index2._ReconcilePendingShots = function(arg, arg2) local ammo = arg:GetAmmo() local expectedAmmoRaw = arg._expectedAmmoRaw if ammo > expectedAmmoRaw then arg:_ClearPendingShots() return end if ammo < expectedAmmoRaw then arg._outstandingAmmoSpend = math.max(arg._outstandingAmmoSpend - expectedAmmoRaw - ammo, v86[186]) arg._expectedAmmoRaw = ammo if arg._outstandingAmmoSpend <= 0 then arg._outstandingAmmoSpendDeadline = nil end end local outstandingAmmoSpendDeadline = arg._outstandingAmmoSpendDeadline if outstandingAmmoSpendDeadline ~= nil and arg2 >= outstandingAmmoSpendDeadline then arg._outstandingAmmoSpend = 0 arg._nextLikelyShotRequestAt = 0 arg._outstandingAmmoSpendDeadline = nil end end index2._RecordPendingShot = function(arg) local now2 = os.clock() arg:_ReconcilePendingShots(now2) if now2 < arg._nextLikelyShotRequestAt then return end local n = math.max(arg._expectedAmmoRaw - arg._outstandingAmmoSpend, 0) if n <= v86[186] then return end local n33 = math.max(arg.Info.ShootBurst or 1, 1) arg._outstandingAmmoSpend = arg._outstandingAmmoSpend + math.min(n33, n) arg._outstandingAmmoSpendDeadline = now2 + v118.getEstimatedRemoteDelay() + v118.getEstimatedReplicationDelay() local quickShotCooldown = arg:IsFanFired() and v102(arg.Info, "QuickShotCooldown") or nil if quickShotCooldown ~= nil then arg._nextLikelyShotRequestAt = now2 + quickShotCooldown return end local shootBurstCooldown = arg.Info.ShootBurstCooldown or 0 arg._nextLikelyShotRequestAt = now2 + (n33 - 1) * shootBurstCooldown + math.max(arg.Info.ShootCooldown or 0, shootBurstCooldown) end index2.Equip = function(arg) if arg:IsEquipped() then arg._equipRequestedAt = nil return end local now2 = tick() local equipRequestedAt = arg._equipRequestedAt if equipRequestedAt ~= nil and now2 < equipRequestedAt + arg.EquipCooldown then return end arg:_ClearPendingShots() arg._equipRequestedAt = now2 local clientFighter = arg._clientFighter task.spawn(v121, clientFighter.EquipItem, clientFighter, arg.Index) end index2.IsEquipped = function(arg) return (v102(arg.Inner, "IsEquipped")) end index2.IsFanFired = function(arg) return arg.Name == "Revolver" end index2.ShootAt = function(arg, arg2, arg3, arg4) local v122, v123 = v119(arg2, arg4) arg:ShootEncoded(v115.encode(arg2), v115.encode(arg3), v122, v123) end index2.ShootEncoded = function(arg, arg2, arg3, arg4, arg5) local tbl18 = { ["\0"] = arg2, ["\1"] = arg3, ["\2"] = arg4, ["\3"] = arg5, ["\4"] = arg:IsFanFired() or nil } local tbl19 = arg.IsRaycast and { ["\1"] = tbl18, ["\2"] = true } or { ["\1"] = tbl18 } fireServer(useItemRemote, arg.ObjectId, v116.encode("StartShooting"), tbl19, nil) arg.ShotRequestCount = arg.ShotRequestCount + 1 arg:_RecordPendingShot() end index2.IsFullyAiming = function(arg) local isAiming = v102(arg._data, "IsAiming") local aimScopePercent = arg._aimScopePercent local currentAimValue = v102(v102(arg.Inner, "ViewModel"), "CurrentAimValue") return isAiming and (aimScopePercent == nil or currentAimValue >= aimScopePercent) end index2.Reload = function(arg) if arg:IsReloading() or arg:GetAmmoReserve() <= 0 or arg:IsMagFull() then return false end local Reload = v116.encode("Reload") fireServer(useItemRemote, arg.ObjectId, v116.encode("StartReloading"), { ["\1"] = Reload, ["\2"] = Reload }, nil) return true end index2.GetAmmo = function(arg) return v102(arg._data, "Ammo") end index2.GetExpectedAmmoAfterPendingShots = function(arg) arg:_ReconcilePendingShots(os.clock()) return math.max(arg._expectedAmmoRaw - arg._outstandingAmmoSpend, 0) end index2.GetAmmoReserve = function(arg) return v102(arg._data, "AmmoReserve") or math.huge end index2.GetShootTimeRemaining = function(arg) local v122 = v86[186] return math.max(v102(arg.Inner, "_shoot_cooldown") - tick(), v122) end index2.IsOnShootCooldown = function(arg) return arg:GetShootTimeRemaining() > 0 end index2.GetReloadTimeRemaining = function(arg) local now2 = tick() local v122 = v102(arg.Inner, "_reload_cooldown") local n = 0 if v122 ~= nil then n = math.max(v122 - now2, 0) end local v123 = v102(arg.Inner, "_shoot_cooldown_no_ammo") local n33 if v123 ~= nil then n33 = math.max(n, v123 - now2) else n33 = n end return n33 end index2.GetEquipTimeRemaining = function(arg) if not arg:IsEquipped() then local equipRequestedAt = arg._equipRequestedAt if equipRequestedAt == nil then return arg.EquipCooldown end return math.max(equipRequestedAt + arg.EquipCooldown - tick(), 0) end arg._equipRequestedAt = nil local v122 = v102(arg.Inner, "_equip_cooldown") if v122 == nil then return 0 end return math.max(v122 - tick(), 0) end index2.IsReloading = function(arg) return arg:GetReloadTimeRemaining() > 0 end index2.IsMagFull = function(arg) local maxAmmo = arg.MaxAmmo return arg:GetAmmo() >= maxAmmo end return index2 end tbl17.cR = function() local cr = tbl17.cache.cR if not cr then cr = { c = fn35() } tbl17.cache.cR = cr end return cr.c end end do -- cS local function fn35() local v115 = tbl17.cN() local v116 = tbl17.cK() tbl17.aM() local v117 = tbl17.cL() tbl17.aO() local v118 = tbl17.b3() local useItemRemote = tbl17.aS().UseItemRemote local v119 = tbl17.cP() local index2 = {} index2.__index = index2 index2.__type = "Melee" index2.new = function(arg, arg2) local info2 = v102(arg, "Info") local data = v102(arg, "Data") local tbl18 = { Index = arg2, _info = info2, _clientFighter = v102(arg, "ClientFighter"), ItemInterface = v117.new(arg), Inner = arg, Name = v102(arg, "Name"), ObjectId = v102(data, "ObjectID"), } setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) arg.ItemInterface:Destroy() end index2.Equip = function(arg) if arg:IsEquipped() then return end local clientFighter = arg._clientFighter task.spawn(v118, clientFighter.EquipItem, clientFighter, arg.Index) end index2.IsEquipped = function(arg) return (v102(arg.Inner, "IsEquipped")) end index2.IsOnDashCooldown = function(arg) local v120 = v102(arg.Inner, "_dash_cooldown") return v120 ~= nil and tick() < v120 end index2.Dash = function(arg) if v102(arg._info, "DashCooldown") == nil then if n26 > 4815 then -- (anti-tamper freeze trap removed) end return end local clientFighter = arg._clientFighter v118(clientFighter.Input, clientFighter, "StartAiming") end index2.Attack = function(arg, arg2, arg3, arg4) local v120, v121 = v119(arg2, arg4) arg:AttackEncoded(v115.encode(arg2), v115.encode(arg3), v120, v121) end index2.AttackEncoded = function(arg, arg2, arg3, arg4, arg5) local tbl18 = { ["\1"] = { ["\0"] = arg2, ["\1"] = arg3, ["\2"] = arg4, ["\3"] = arg5 }, ["\2"] = v116.encode("AttackAnimation1") or v116.encode("Attack1"), } fireServer(useItemRemote, arg.ObjectId, v116.encode("StartShooting"), tbl18, nil) end index2.HeavyAttack = function(arg, arg2, arg3, arg4) local v120, v121 = v119(arg2, arg4) arg:HeavyAttackEncoded(v115.encode(arg2), v115.encode(arg3), v120, v121) end index2.HeavyAttackEncoded = function(arg, arg2, arg3, arg4, arg5) local tbl18 = { ["\1"] = { ["\0"] = arg2, ["\1"] = arg3, ["\2"] = arg4, ["\3"] = arg5 }, ["\2"] = v116.encode("HeavyAttackAnimation1") or v116.encode("HeavyAttack1"), } fireServer(useItemRemote, arg.ObjectId, v116.encode("StartAiming"), tbl18, nil) end return index2 end tbl17.cS = function() local cs = tbl17.cache.cS if not cs then cs = { c = fn35() } tbl17.cache.cS = cs end return cs.c end end do -- cT local function fn35() local v115 = tbl17.cK() tbl17.aM() local v116 = tbl17.cL() tbl17.aO() local v117 = tbl17.b3() local useItemRemote = tbl17.aS().UseItemRemote local index2 = {} index2.__index = index2 index2.__type = "Throwable" index2.new = function(arg, arg2) local info2 = v102(arg, "Info") local data = v102(arg, "Data") local tbl18 = { Index = arg2, _data = data, _clientFighter = v102(arg, "ClientFighter"), ItemInterface = v116.new(arg), Info = info2, Inner = arg, Name = v102(arg, "Name"), ObjectId = v102(data, "ObjectID"), } setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) arg.ItemInterface:Destroy() end index2.Equip = function(arg) if arg:IsEquipped() then return end local clientFighter = arg._clientFighter task.spawn(v117, clientFighter.EquipItem, clientFighter, arg.Index) end index2.IsEquipped = function(arg) return (v102(arg.Inner, "IsEquipped")) end index2.IsOnCooldown = function(arg) local v118 = v102(arg.Inner, "_throw_cooldown") return v118 ~= nil and tick() < v118 end index2.Throw = function(arg) local inner = arg.Inner local startShooting = v117(inner.Input, inner, "StartShooting") local v118 = v102(inner, "_is_throwing") if startShooting == false or v118 == nil then return end if tick() < v118 + 0.6 then return end local v119, v120, v121, v122, v123 = v117(inner.FinishShooting, inner, false) if v119 == false then return end fireServer(useItemRemote, v102(arg._data, "ObjectID"), v115.encode(v120), { ["\0"] = v121, ["\1"] = v122, ["\2"] = v123 }, nil) end return index2 end tbl17.cT = function() local ct = tbl17.cache.cT if not ct then ct = { c = fn35() } tbl17.cache.cT = ct end return ct.c end end do -- cU local function fn35() local v115 = tbl17.cM() tbl17.cF() local v116 = tbl17.cR() tbl17.aO() local v117 = tbl17.cS() local v118 = tbl17.g() local v119 = tbl17.cT() local v120 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local itemBehaviors = v120.new("context.item_behaviors") local tbl18 = { _trove = itemBehaviors, _localFighterState = arg, _items = {}, _itemByInner = {}, _itemByObjectId = {}, _itemByName = {}, ItemAdded = itemBehaviors:Add(v118.new()), ItemRemoved = itemBehaviors:Add(v118.new()), EquippedItemChanged = itemBehaviors:Add(v118.new()), } setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) for _, v121 in arg._items, nil, nil do v121:Destroy() end arg._trove:Destroy() end index2.Initialize = function(arg) for k, v121 in arg._localFighterState:GetItems() do arg:AddItem(v121, k) end local function fn36() for k, v121 in arg._localFighterState:GetItems() do local v122 = arg:FindByInner(v121) if v122 ~= nil then arg._items[v122].Index = k end end end arg._trove:Add(arg._localFighterState:OnItemAddedSignal(function(arg2) local v121 = arg:AddItem(arg2, table.find(arg._localFighterState:GetItems(), arg2) or #arg._items) fn36() if v121 ~= nil then arg.ItemAdded:Fire(v121) end end)) arg._trove:Add(arg._localFighterState:OnItemRemovedSignal(function(arg2) local v121, v122 = arg:FindByInner(arg2) if v121 ~= nil and v122 ~= nil then table.remove(arg._items, v121) arg._itemByObjectId[v122.ObjectId] = nil arg._itemByName[arg2.Name] = nil arg._itemByInner[arg2] = nil fn36() arg.ItemRemoved:Fire(v122) v122:Destroy() end end)) local function fn37(arg2) if arg2 ~= nil then arg.EquippedItemChanged:Fire(arg._itemByInner[arg2]) else arg.EquippedItemChanged:Fire(nil) end end arg._trove:Add(arg._localFighterState:OnEquippedItemChangedSignal(fn37)) fn37(arg._localFighterState:GetEquippedItem()) end index2.AddItem = function(arg, arg2, arg3) if arg._itemByInner[arg2] then return nil end local v121 if arg2.Info.Type == "Melee" then v121 = v117.new(arg2, arg3) elseif arg2.Info.Type == "Gun" then v121 = v116.new(arg2, arg3) elseif arg2.Info.Type == "Throwable" then v121 = v119.new(arg2, arg3) else if arg2.Info.Type ~= "Custom" then return nil end v121 = v115.new(arg2, arg3) end table.insert(arg._items, v121) arg._itemByInner[arg2] = v121 arg._itemByObjectId[v121.ObjectId] = v121 arg._itemByName[v121.Name] = v121 return v121 end index2.FindByInner = function(arg, arg2) for k, v121 in arg._items, nil, nil do if v121.Inner == arg2 then return k, v121 end end return nil, nil end index2.FindByObjectId = function(arg, arg2) return arg._itemByObjectId[arg2] end index2.FindMeleeByName = function(arg, arg2) local v121 = arg._itemByName[arg2] if v121 == nil or v121.__type ~= "Melee" then return nil end return v121 end index2.FindGunByName = function(arg, arg2) local v121 = arg._itemByName[arg2] if v121 == nil or v121.__type ~= "Gun" then return nil end return v121 end index2.FindThrowableByName = function(arg, arg2, arg3) local v121 = arg._itemByName[arg2] if v121 == nil or v121.__type ~= "Throwable" then return nil end if arg3 and v121:IsOnCooldown() then return nil end return v121 end index2.FindCustomByName = function(arg, arg2) local v121 = arg._itemByName[arg2] if v121 == nil or v121.__type ~= "Custom" then return nil end return v121 end index2.GetHitscanGun = function(arg) for _, v121 in arg._items, nil, nil do if v121.__type == "Gun" and v121.IsRaycast then return v121 end end return nil end index2.GetEquipped = function(arg) local equippedItem = arg._localFighterState:GetEquippedItem() if equippedItem == nil then return nil end return arg._itemByInner[equippedItem] end index2.GetEquippedAmmoState = function(arg) local equipped = arg:GetEquipped() if equipped == nil then return nil end if equipped.__type == "Gun" then local v121 = v86[186] return equipped:GetAmmo() > v121 end return nil end index2.EquippedItemAsGun = function(arg) local equipped = arg:GetEquipped() if equipped ~= nil and equipped.__type == "Gun" then return equipped end return nil end index2.EquippedItemAsMelee = function(arg) local equipped = arg:GetEquipped() if equipped ~= nil and equipped.__type == "Melee" then return equipped end return nil end index2.EquippedItemAsThrowable = function(arg) local equipped = arg:GetEquipped() if equipped ~= nil and equipped.__type == "Throwable" then return equipped end return nil end index2.EquippedItemAsCustom = function(arg) local equipped = arg:GetEquipped() if equipped ~= nil and equipped.__type == "Custom" then return equipped end return nil end index2.HasEquippedGun = function(arg) return arg:EquippedItemAsGun() ~= nil end index2.GetEquippedGunName = function(arg) local v121 = arg:EquippedItemAsGun() return v121 ~= nil and v121.Inner.Name or nil end index2.GetItems = function(arg) return arg._items end return index2 end tbl17.cU = function() local cu = tbl17.cache.cU if not cu then cu = { c = fn35() } tbl17.cache.cU = cu end return cu.c end end do -- cV local function fn35() return tbl17.g().new().Once end tbl17.cV = function() local cv = tbl17.cache.cV if not cv then cv = { c = fn35() } tbl17.cache.cV = cv end return cv.c end end do -- cW local function fn35() tbl17.cF() local v115 = tbl17.ay() local pickWeaponsRemote = tbl17.aS().PickWeaponsRemote local shootingRangeTrashItemsEvent = tbl17.aS().ShootingRangeTrashItemsEvent tbl17.g() local v116 = tbl17.cv() local v117 = tbl17.cV() local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _fighterState = arg }, index2) end index2.PickLoadoutAsync = function(arg, arg2) local alive = arg._fighterState.Character.State.Alive if not v116(arg._fighterState.Inner, "CanPickWeapons") or not alive then return v115.reject() end if #arg._fighterState:GetItems() < 4 then return arg:_ForcePickLoadoutAsync(arg2) end if v116(arg._fighterState.Inner, "IsInShootingRange") then return arg:_TrashRangeItemsAsync():andThen(function() return arg:_ForcePickLoadoutAsync(arg2) end) end return v115.reject() end index2._ForcePickLoadoutAsync = function(arg, arg2) fireServer(pickWeaponsRemote, arg2) local v118 = nil return v115.new(function(arg3) v118 = v117(arg._fighterState.Inner.ItemAdded, function() arg3() end) end):timeout(1.5):finally(function() v118:Disconnect() end) end index2._TrashRangeItemsAsync = function(arg) fireServer(shootingRangeTrashItemsEvent) local v118 = nil return v115.new(function(arg2) v118 = v117(arg._fighterState.Inner.ItemRemoved, function() arg2() end) end):timeout(1.5):finally(function() v118:Disconnect() end) end return index2 end tbl17.cW = function() local cw = tbl17.cache.cW if not cw then local cw2 = { c = fn35() } tbl17.cache.cW = cw2 cw = cw2 end return cw.c end end do -- cX local function fn35() local v115 = tbl17.cJ() tbl17.cF() local v116 = tbl17.cU() local v117 = tbl17.cW() tbl17.cw() local v118 = tbl17.g() local v119 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local context = v119.new("context") local tbl18 = { _trove = context, _contextTrove = context:Extend(), ContextAdded = context:Add(v118.new()), ContextRemoved = context:Add(v118.new()), _fighters = arg, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._ClearContext = function(arg) local inner = arg.Inner if inner == nil then arg._contextTrove:Clean() return end arg.Inner = nil arg.ContextRemoved:Fire(inner) arg._contextTrove:Clean() end index2._Initialize = function(arg) local function fn36(arg2) arg:_ClearContext() local v120 = arg._contextTrove:Add(v115.new(arg2.Character)) local v121 = arg._contextTrove:Add(v116.new(arg2)) v121:Initialize() local inner = { CharacterController = v120, FighterState = arg2, ItemBehaviors = v121, LoadoutPicker = v117.new(arg2) } arg.Inner = inner arg.ContextAdded:Fire(inner) end arg._trove:Connect(arg._fighters.LocalStateSet, fn36) arg._trove:Connect(arg._fighters.LocalStateRemoved, function() arg:_ClearContext() end) local localState = arg._fighters.LocalState if localState then fn36(localState) end end index2.ObserveContext = function(arg, arg2, arg3) local v120 = v119.new(arg2) local v121 = v120:Extend() local function fn36() v121:Clean() end local function fn37(arg4) fn36() arg3(arg4, v121) end v120:Connect(arg.ContextAdded, fn37) v120:Connect(arg.ContextRemoved, fn36) local inner = arg.Inner if inner ~= nil then fn37(inner) end return v120 end index2.HeartbeatUpdate = function(arg) local inner = arg.Inner if inner ~= nil then inner.CharacterController:HeartbeatUpdate() end end index2.FlushViewAngles = function(arg) local inner = arg.Inner if inner ~= nil then inner.CharacterController:FlushViewAngles() end end index2.Destroy = function(arg) arg:_ClearContext() arg._trove:Destroy() end return index2 end tbl17.cX = function() local cx = tbl17.cache.cX if not cx then cx = { c = fn35() } tbl17.cache.cX = cx end return cx.c end end do -- cY local function fn35() tbl17.aN() tbl17.aM() local v115 = tbl17.k() local enemyController = tbl17.aS().EnemyController tbl17.cF() tbl17.cX() local v116 = tbl17.g() local v117 = tbl17.ct() local v118 = tbl17.cv() local function fn36(arg, arg2, arg3) local v119 = arg2[arg3] if v119 == nil then return end local n = #arg if v119 ~= n then local v120 = arg[n] arg[v119] = v120 arg2[v120] = v119 end arg[n] = nil arg2[arg3] = nil end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local EnemyRegistry = v115.new("enemies.EnemyRegistry") local tbl18 = { _trove = EnemyRegistry, _fighters = arg, _localFighterState = nil, _modelByObjectId = {}, _objectIdByModel = {}, _enemyIndexByModel = {}, _dummyIndexByModel = {}, _targetIndexByModel = {}, Enemies = {}, Dummies = {}, Targets = {}, Added = EnemyRegistry:Add(v116.new()), Removed = EnemyRegistry:Add(v116.new()), Cleared = EnemyRegistry:Add(v116.new()), } setmetatable(tbl18, index2) EnemyRegistry:Add(arg2:ObserveContext("EnemyRegistry", function(arg3, arg4) local fighterState = arg3.FighterState tbl18._localFighterState = fighterState tbl18:_Clear() tbl18:_Watch(arg4, fighterState) end)) EnemyRegistry:Connect(arg2.ContextRemoved, function() tbl18._localFighterState = nil tbl18:_Clear() end) return tbl18 end index2.FindByObjectId = function(arg, arg2) return arg._modelByObjectId[arg2] end index2._Clear = function(arg) table.clear(arg.Enemies) table.clear(arg.Dummies) table.clear(arg.Targets) table.clear(arg._modelByObjectId) table.clear(arg._objectIdByModel) table.clear(arg._enemyIndexByModel) table.clear(arg._dummyIndexByModel) table.clear(arg._targetIndexByModel) arg.Cleared:Fire() end index2._CheckEnemyEnvironment = function(arg, arg2) local localFighterState = arg._localFighterState if localFighterState == nil then return false end local model = v102(arg2, "Model") local environmentId = localFighterState.EnvironmentId return model:GetAttribute("EnvironmentID") == environmentId end index2._CheckPlayerEnvironment = function(arg, arg2) local localFighterState = arg._localFighterState if localFighterState == nil then return false end return arg2.EnvironmentId == localFighterState.EnvironmentId end index2._Watch = function(arg, arg2, arg3) local function fn37(arg4) if not arg:_CheckEnemyEnvironment(arg4) then return end local objectID = v118(arg4, "ObjectID") local model = v102(arg4, "Model") arg:_AddEnemy(objectID, model) end local function fn38(arg4) local entity = v102(arg4.Inner, "Entity") if entity == nil then return end local model = v102(entity, "Model") local v119 = arg:_CheckPlayerEnvironment(arg4) local flag19 = arg._objectIdByModel[model] ~= nil if v119 and not flag19 then arg:_AddEnemy(v118(entity, "ObjectID"), model) elseif not v119 and flag19 then arg:_RemoveEnemy(model) end end local function fn39() for _, v119 in v102(enemyController, "_model_to_enemy") do fn37(v119) end end arg2:Add(v117(v102(enemyController, "ObjectAdded"), fn37)) arg2:Add(v117(v102(enemyController, "ObjectRemoved"), function(arg4) local v119 = arg local removeEnemy = v119._RemoveEnemy local model = v102(arg4, "Model") removeEnemy(v119, model) end)) fn39() local tbl18 = {} arg2:Add(function() for _, v119 in tbl18, nil, nil do v119:Destroy() end table.clear(tbl18) end) arg2:Add(arg._fighters:ObserveRemoteStates(function(arg4) if tbl18[arg4] ~= nil then return end local EnemyRegistry = v115.new("enemies.EnemyRegistry") tbl18[arg4] = EnemyRegistry EnemyRegistry:Connect(arg4.EnvironmentIdChanged, function() fn38(arg4) end) fn38(arg4) end, function(arg4) local v119 = tbl18[arg4] if v119 ~= nil then v119:Destroy() tbl18[arg4] = nil end end)) arg2:Add(arg._fighters:ObserveRemoteEntities(function(arg4) fn38(arg4) end, function(arg4, arg5) local v119 = arg local removeEnemy = v119._RemoveEnemy local model = v102(arg5, "Model") removeEnemy(v119, model) end)) arg2:Connect(arg3.EnvironmentIdChanged, function() arg:_Clear() fn39() for k in tbl18, nil, nil do fn38(k) end end) end index2._AddEnemy = function(arg, arg2, arg3) arg._modelByObjectId[arg2] = arg3 arg._objectIdByModel[arg3] = arg2 local enemies = arg.Enemies local n = #enemies + 1 enemies[n] = arg3 arg._enemyIndexByModel[arg3] = n if arg3.Name == "Dummy" then local dummies = arg.Dummies local n33 = #dummies + v86[63] dummies[n33] = arg3 arg._dummyIndexByModel[arg3] = n33 elseif arg3.Name == "Target" then local targets = arg.Targets local n33 = #targets + 1 targets[n33] = arg3 arg._targetIndexByModel[arg3] = n33 end arg.Added:Fire(arg3) end index2._RemoveEnemy = function(arg, arg2) local v119 = arg._objectIdByModel[arg2] if v119 == nil then return end arg._modelByObjectId[v119] = nil arg._objectIdByModel[arg2] = nil fn36(arg.Enemies, arg._enemyIndexByModel, arg2) fn36(arg.Dummies, arg._dummyIndexByModel, arg2) fn36(arg.Targets, arg._targetIndexByModel, arg2) arg.Removed:Fire(arg2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cY = function() local cy = tbl17.cache.cY if not cy then local cy2 = { c = fn35() } tbl17.cache.cY = cy2 cy = cy2 end return cy.c end end do -- cZ local function fn35() tbl17.cY() tbl17.cX() local v115 = tbl17.g() local v116 = tbl17.k() local v117 = cloneref(game:GetService("CollectionService")) local function fn36(arg, arg2) local n = #arg arg[arg2] = arg[n] arg[n] = nil end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local worldInclude = v116.new("world_include") local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Include raycastParams.IgnoreWater = true local raycastParams2 = RaycastParams.new() raycastParams2.FilterType = Enum.RaycastFilterType.Include raycastParams2.IgnoreWater = true local overlapParams = OverlapParams.new() overlapParams.FilterType = Enum.RaycastFilterType.Include overlapParams.RespectCanCollide = false local tbl18 = { _trove = worldInclude, _enemyRegistry = arg2, _raycastParams = raycastParams, _mapRaycastParams = raycastParams2, _mapOverlapParams = overlapParams, _partsParamsByIncluded = setmetatable({}, { __mode = "k" }), _staticInstances = {}, _entityInstances = {}, _partsByEntity = {}, _combined = {}, _isDirty = v86[153], _isMapDirty = false, _mapRevision = v86[186], _hasContext = false, MapChanged = worldInclude:Add(v115.new()), } setmetatable(tbl18, index2) worldInclude:Add(arg:ObserveContext("world_include", function(arg3, arg4) tbl18._hasContext = true local fighterState = arg3.FighterState local v118 = arg4:Extend() tbl18:_RebuildStatic(fighterState.EnvironmentId) tbl18:_BindTagSignals(v118, fighterState.EnvironmentId) tbl18:_SeedEntities() tbl18:_BindEntities(arg4) arg4:Connect(fighterState.EnvironmentIdChanged, function(arg5) v118:Clean() tbl18:_RebuildStatic(arg5) tbl18:_BindTagSignals(v118, arg5) end) end)) worldInclude:Connect(arg.ContextRemoved, function() tbl18._hasContext = false table.clear(tbl18._staticInstances) table.clear(tbl18._entityInstances) table.clear(tbl18._partsByEntity) tbl18:_MarkIncludeDirty() tbl18:_MarkMapDirty() end) return tbl18 end index2._MarkIncludeDirty = function(arg) arg._isDirty = true for _, v118 in arg._partsParamsByIncluded, nil, nil do v118.IsDirty = v86[34] end end index2._MarkMapDirty = function(arg) arg._isMapDirty = v86[34] arg._mapRevision = arg._mapRevision + 1 arg.MapChanged:Fire() end index2._CacheEntityParts = function(arg, arg2) arg._partsByEntity[arg2] = arg2:QueryDescendants("BasePart:not(Accessory BasePart)") end index2._RebuildStatic = function(arg, arg2) arg._staticInstances = v117:GetTagged("RaycastWhitelist" .. (arg2 or "")) arg:_MarkIncludeDirty() arg:_MarkMapDirty() end index2._BindTagSignals = function(arg, arg2, arg3) local str7 = "RaycastWhitelist" .. (arg3 or "") arg2:Connect(v117:GetInstanceAddedSignal(str7), function(arg4) table.insert(arg._staticInstances, arg4) arg:_MarkIncludeDirty() arg:_MarkMapDirty() end) arg2:Connect(v117:GetInstanceRemovedSignal(str7), function(arg4) local v118 = table.find(arg._staticInstances, arg4) if v118 ~= nil then fn36(arg._staticInstances, v118) arg:_MarkIncludeDirty() arg:_MarkMapDirty() end end) end index2._SeedEntities = function(arg) table.clear(arg._entityInstances) table.clear(arg._partsByEntity) for _, v118 in arg._enemyRegistry.Enemies, nil, nil do table.insert(arg._entityInstances, v118) arg:_CacheEntityParts(v118) end arg:_MarkIncludeDirty() end index2._BindEntities = function(arg, arg2) arg2:Connect(arg._enemyRegistry.Added, function(arg3) table.insert(arg._entityInstances, arg3) arg:_CacheEntityParts(arg3) arg:_MarkIncludeDirty() end) arg2:Connect(arg._enemyRegistry.Removed, function(arg3) local v118 = table.find(arg._entityInstances, arg3) if v118 ~= nil then fn36(arg._entityInstances, v118) arg._partsByEntity[arg3] = nil arg:_MarkIncludeDirty() end end) arg2:Connect(arg._enemyRegistry.Cleared, function() table.clear(arg._entityInstances) table.clear(arg._partsByEntity) arg:_MarkIncludeDirty() end) end index2.GetParams = function(arg) if not arg._hasContext then return nil end if arg._isDirty then local combined = arg._combined table.clear(combined) local n = #arg._staticInstances table.move(arg._staticInstances, v86[63], n, 1, combined) for _, v118 in arg._entityInstances, nil, nil do local v119 = arg._partsByEntity[v118] if v119 ~= nil then for _, v120 in v119, nil, nil do n += 1 combined[n] = v120 end end end arg._raycastParams.FilterDescendantsInstances = combined arg._isDirty = false end return arg._raycastParams end index2.GetParamsIncluding = function(arg, arg2) if not arg._hasContext then return nil end local tbl18 = arg._partsParamsByIncluded[arg2] if tbl18 == nil then local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Include raycastParams.IgnoreWater = true tbl18 = { Params = raycastParams, IsDirty = v86[34], Instances = {} } arg._partsParamsByIncluded[arg2] = tbl18 end if tbl18.IsDirty then local instances = tbl18.Instances table.clear(instances) local n = #arg._staticInstances table.move(arg._staticInstances, 1, n, 1, instances) for _, v118 in arg._entityInstances, nil, nil do for k in arg2, nil, nil do local v119 = v118:FindFirstChild(k) if v119 ~= nil then n += v86[63] instances[n] = v119 end end end tbl18.Params.FilterDescendantsInstances = instances tbl18.IsDirty = false end return tbl18.Params end index2.GetMapRevision = function(arg) return arg._mapRevision end index2._RefreshMapParams = function(arg) if not arg._isMapDirty then return end arg._mapRaycastParams.FilterDescendantsInstances = arg._staticInstances arg._mapOverlapParams.FilterDescendantsInstances = arg._staticInstances arg._isMapDirty = v86[153] end index2.GetMapParams = function(arg) if not arg._hasContext then return nil end arg:_RefreshMapParams() return arg._mapRaycastParams end index2.GetMapOverlapParams = function(arg) if not arg._hasContext then return nil end arg:_RefreshMapParams() arg._mapOverlapParams.MaxParts = 0 return arg._mapOverlapParams end index2.GetStaticInstances = function(arg) return arg._staticInstances end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.cZ = function() local cz = tbl17.cache.cZ if not cz then local cz2 = { c = fn35() } tbl17.cache.cZ = cz2 cz = cz2 end return cz.c end end do -- c_ local function fn35() tbl17.cX() tbl17.cZ() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _worldInclude = arg, _playerContext = arg2, _visible = { ServerOrigin = {}, Camera = {} }, _result = { ServerOrigin = {}, Camera = {} }, } setmetatable(tbl18, index2) return tbl18 end index2.Update = function(arg) local visible = arg._visible table.clear(visible.ServerOrigin) table.clear(visible.Camera) local result = arg._result table.clear(result.ServerOrigin) table.clear(result.Camera) end index2.Check = function(arg, arg2, arg3, arg4) local v115 = nil local v116 = nil if typeof(arg2) ~= "Vector3" then v115 = arg2 arg2 = v116 end local inner = arg._playerContext.Inner if not inner then return v86[153], nil end if v115 ~= nil then local v117 = arg._visible[v115][arg3] if v117 ~= nil then return v117, arg._result[v115][arg3] end end if arg2 == nil then if v115 == "ServerOrigin" then local serverHeadOrigin = inner.CharacterController:GetServerHeadOrigin() if serverHeadOrigin == nil then return false, nil end arg2 = serverHeadOrigin.Position else arg2 = workspace.CurrentCamera.CFrame.Position end end local params = arg._worldInclude:GetParams() if not params then return v86[153], nil end local hit = workspace:Raycast(arg2, arg3.Position - arg2, params) local flag19 = false if hit ~= nil then flag19 = hit.Instance == arg3 or arg4 ~= nil and arg4:IsAncestorOf(hit.Instance) end if v115 ~= nil then local v117 = arg._visible[v115] local v118 = arg._result[v115] v117[arg3] = flag19 v118[arg3] = hit end return flag19, hit end return index2 end tbl17.c_ = function() local c = tbl17.cache.c_ if not c then c = { c = fn35() } tbl17.cache.c_ = c end return c.c end end do -- c0 local function fn35() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4) return setmetatable({ Kind = arg2, State = arg4 == true, Flag = arg, Callback = arg3 }, index2) end index2.InputBegan = function(arg) local kind = arg.Kind if kind == "Toggle" or kind == v86[3] then arg.State = not arg.State else if not (kind == "Hold" or kind == "Release") then return end arg.State = kind == "Hold" end arg.Callback(arg.State) end index2.InputEnded = function(arg) local kind = arg.Kind if kind == "Hold" or kind == "Release" then arg.State = kind == "Release" arg.Callback(arg.State) return end end index2.SetKind = function(arg, kind) if arg.Kind == kind then return end arg.Kind = kind end return index2 end tbl17.c0 = function() local c0 = tbl17.cache.c0 if not c0 then local c02 = { c = fn35() } tbl17.cache.c0 = c02 c0 = c02 end return c0.c end end do -- c1 local function fn35() tbl17.c0() local v115 = tbl17.k() local v116 = cloneref(game:GetService("UserInputService")) local function fn36(arg) if typeof(arg) ~= "EnumItem" then return nil end local enumType = arg.EnumType if enumType == Enum.KeyCode then return "KC/" .. arg.Name end local flag19 = enumType == Enum.UserInputType if flag19 then flag19 = arg == (Enum.UserInputType :: any).MouseButton1 or arg == (Enum.UserInputType :: any).MouseButton2 or arg == (Enum.UserInputType :: any).MouseButton3 end if flag19 then return "UIT/" .. arg.Name end return nil end local function fn37(arg) if true then local userInputType = arg.UserInputType if userInputType == Enum.UserInputType.Keyboard then return "KC/" .. arg.KeyCode.Name end if userInputType == Enum.UserInputType.MouseButton1 or userInputType == Enum.UserInputType.MouseButton2 or userInputType == Enum.UserInputType.MouseButton3 then return "UIT/" .. userInputType.Name end return nil end return nil -- (anti-tamper freeze trap removed) end local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _trove = v115.new("keybind_controller"), _keybindByFlagByBindKey = {}, _bindKeyByFlag = {} } setmetatable(tbl18, index2) tbl18:Initialize() return tbl18 end index2.Destroy = function(arg) arg._trove:Destroy() end local function fn38(arg, arg2) if not arg2 then return false end local userInputType = arg.UserInputType if userInputType == Enum.UserInputType.MouseButton1 or userInputType == Enum.UserInputType.MouseButton2 or userInputType == Enum.UserInputType.MouseButton3 then return false end return true end index2.Initialize = function(arg) local function each(input, method) local key = fn37(input) local set = key and arg._keybindByFlagByBindKey[key] if set == nil then return end for _, keybind in table.clone(set) do keybind[method](keybind) end end arg._trove:Connect(v116.InputBegan, function(input, processed) if fn38(input, processed) then return end each(input, "InputBegan") end) arg._trove:Connect(v116.InputEnded, function(input) each(input, "InputEnded") end) end index2.Register = function(arg, arg2, arg3) local v117 = fn36(arg2) if not v117 then return false end local tbl18 = arg._keybindByFlagByBindKey[v117] if not tbl18 then tbl18 = {} arg._keybindByFlagByBindKey[v117] = tbl18 end local flag19 = tbl18[arg3.Flag] ~= nil tbl18[arg3.Flag] = arg3 arg._bindKeyByFlag[arg3.Flag] = v117 return flag19 end index2.Remove = function(arg, arg2) local v117 = arg._bindKeyByFlag[arg2] if not v117 then return false end local v118 = arg._keybindByFlagByBindKey[v117] if not v118 then return v86[153] end v118[arg2] = nil arg._bindKeyByFlag[arg2] = nil if not next(v118) then arg._keybindByFlagByBindKey[v117] = nil end return true end index2.FindByFlag = function(arg, arg2) local v117 = arg._bindKeyByFlag[arg2] if not v117 then return nil end local v118 = arg._keybindByFlagByBindKey[v117] if not v118 then return nil end return v118[arg2] end index2.ChangeState = function(arg, arg2, state) local v117 = arg:FindByFlag(arg2) if not v117 then return false end v117.State = state return v86[34] end index2.ChangeBind = function(arg, arg2, arg3) local v117 = arg:FindByFlag(arg2) if not v117 then return false end arg:Remove(arg2) arg:Register(arg3, v117) return true end index2.ChangeKind = function(arg, arg2, arg3) local v117 = arg:FindByFlag(arg2) if not v117 then return v86[153] end v117:SetKind(arg3) return true end return index2 end tbl17.c1 = function() local c1 = tbl17.cache.c1 if not c1 then c1 = { c = fn35() } tbl17.cache.c1 = c1 end return c1.c end end do -- c2 local function fn35() local v115 = tbl17.c0() tbl17.c1() local v116 = tbl17.j() local v117 = tbl17.a() local v118 = tbl17.k() local v119 = tbl17.a6() local tbl18 = { Always = v86[34], Hold = true, Release = true, Tap = true, Toggle = true } local function fn36(arg) return type(arg) == "string" and tbl18[arg] == true end local function fn37(arg) if typeof(arg) ~= "EnumItem" then return false end if arg.EnumType == (Enum.KeyCode :: any) then return v86[34] end return arg.EnumType == (Enum.KeyCode :: any) or arg.EnumType == (Enum.UserInputType :: any) and (arg == (Enum.UserInputType :: any).MouseButton1 or arg == (Enum.UserInputType :: any).MouseButton2 or arg == (Enum.UserInputType :: any).MouseButton3) end local function fn38(arg) return "CONFIGURATION/" .. table.concat(arg, "/") end local tbl19 tbl19 = { isKeybindConfig = function(arg) if type(arg) ~= "table" then return false end local flag19 = type(arg.State) == "boolean" and fn36(arg.Kind) local flag20 if flag19 then flag20 = arg.Bind == nil or fn37(arg.Bind) else flag20 = flag19 end return flag20 end, clear = function(arg, arg2) for _, v120 in arg2, nil, nil do arg.Controller:Remove(v120.Flag) v120.Trove:Destroy() end table.clear(arg2) end, registerPath = function(arg, arg2, arg3, arg4) local v120 = v116.PathToKey(arg4) if arg2[v120] ~= nil then return v117.VoidOk end local v121 = v116.NavigateTo(arg3, arg4) if not tbl19.isKeybindConfig(v121) then local str7 = table.concat(arg4, ".") return v117.err("KeybindRegistry", "registerPath", string.format("invalid keybind configuration at path `%s`", tostring(str7))) end local v122 = fn38(arg4) local v123 = v119(arg4, { "State" }) local Registry = v118.new("keybind_controller.Registry") if v121.Kind == "Always" and v121.State ~= true then arg.Set(v123, true) end local v124 = v115.new(v122, v121.Kind, function(arg5) arg.Set(v123, arg5) end, v121.State) local bind = v121.Bind if bind ~= nil then arg.Controller:Register(bind, v124) end local function fn39(arg5) if not fn36(arg5) then return false end if v124.Kind ~= arg5 and not arg.Controller:ChangeKind(v122, arg5) then v124:SetKind(arg5) end return true end local function fn40(arg5) if arg5 == bind then return end bind = arg5 if fn37(arg5) then if not arg.Controller:ChangeBind(v122, arg5) then arg.Controller:Register(arg5, v124) end else arg.Controller:Remove(v122) end end local function fn41(state) if v124.State ~= state and not arg.Controller:ChangeState(v122, state) then v124.State = state end end local function fn42(arg5) local kind = v124.Kind if not fn39(arg5) then return end if arg5 == "Always" then arg.Set(v123, true) elseif kind == "Always" then arg.Set(v123, false) end end local function fn43() local v125 = v116.NavigateTo(arg3, arg4, v86[34]) if not tbl19.isKeybindConfig(v125) then return end fn39(v125.Kind) local state = v125.State if v125.Kind == v86[21] then arg.Set(v123, true) state = true end fn40(v125.Bind) fn41(state) end Registry:Connect(arg.GetPropertyChangedSignal(v119(arg4, { "Kind" })), fn42) Registry:Connect(arg.GetPropertyChangedSignal(v119(arg4, { "Bind" })), fn40) Registry:Connect(arg.GetPropertyChangedSignal(v123), fn41) arg2[v120] = { Flag = v122, Trove = Registry, SyncFromConfig = fn43 } return v117.VoidOk end, collectPaths = function(arg, arg2, arg3) if tbl19.isKeybindConfig(arg) then table.insert(arg3, arg2) return end for k, v120 in arg, nil, nil do if type(v120) == "table" then tbl19.collectPaths(v120, v119(arg2, { k }), arg3) end end end, } return tbl19 end tbl17.c2 = function() local c2 = tbl17.cache.c2 if not c2 then local c22 = { c = fn35() } tbl17.cache.c2 = c22 c2 = c22 end return c2.c end end do -- c3 local function fn35() local v115 = tbl17.a6() return function(arg) if arg[#arg] == "Keybind" then local tbl18 = {} table.move(arg, 1, #arg - v86[63], 1, tbl18) return tbl18, arg end return arg, v115(arg, { "Keybind" }) end end tbl17.c3 = function() local c3 = tbl17.cache.c3 if not c3 then local c32 = { c = fn35() } tbl17.cache.c3 = c32 c3 = c32 end return c3.c end end do -- c4 local function fn35() local v115 = tbl17.bG() local v116 = tbl17.ad() local v117 = tbl17.n() local v118 = tbl17.c1() local v119 = tbl17.c2() tbl17.a() local v120 = tbl17.k() local v121 = tbl17.a6() local v122 = tbl17.c3() local index2 = {} index2.__index = index2 index2.new = function() local Bridge = v120.new("keybind_controller.Bridge") local v123 = v118.new() Bridge:Add(v123) local v124 = Bridge:Add(v116.new()) local obj = setmetatable({ _trove = Bridge, _deps = { Controller = v123, GetPropertyChangedSignal = function(arg) return v115:GetPropertyChangedSignal(arg) end, Set = function(arg, arg2) v115:Set(arg, arg2) end, }, _errorReporter = v124, _registrationByPathKey = {}, }, index2) obj:_RebuildAll() Bridge:Connect(v115.Reloaded, function() obj:_RebuildAll() end) return obj end index2.Destroy = function(arg) v119.clear(arg._deps, arg._registrationByPathKey) arg._trove:Destroy() end index2._RebuildAll = function(arg) v119.clear(arg._deps, arg._registrationByPathKey) local tbl18 = {} v119.collectPaths(v115.Data, {}, tbl18) for _, v123 in tbl18, nil, nil do arg._errorReporter:ReportResult(arg:_RegisterPath(v123)) end end index2._RegisterPath = function(arg, arg2) return v119.registerPath(arg._deps, arg._registrationByPathKey, v115.Data, arg2) end index2.EnsureRegistered = function(arg, arg2) local _v123, v124 = v122(arg2) return arg:_RegisterPath(v124) end index2._GetEnabledKeybindState = function(arg, arg2, arg3) if not v115:Get(v121(arg2, { "Enabled" })) then return v86[153] end local v123 = v86[21] if v115:Get(v121(arg3, { "Kind" })) == v123 then return true end return v115:Get(v121(arg3, { "State" })) == true end index2.GetEnabledKeybindState = function(arg, arg2) local v123, v124 = v122(arg2) arg._errorReporter:ReportResult(arg:_RegisterPath(v124)) return arg:_GetEnabledKeybindState(v123, v124) end index2.ObserveEnabledKeybind = function(arg, arg2, arg3) local v123, v124 = v122(arg2) arg._errorReporter:ReportResult(arg:_RegisterPath(v124)) local Bridge = v120.new("keybind_controller.Bridge") local v125 = v121(v123, { "Enabled" }) local v126 = v121(v124, { "State" }) local v127 = v121(v124, { "Kind" }) local function fn36() arg3 ( arg :_GetEnabledKeybindState( v123 , v124 ));end Bridge:Connect(v115:GetPropertyChangedSignal(v125), fn36) Bridge:Connect(v115:GetPropertyChangedSignal(v126), fn36) Bridge:Connect(v115:GetPropertyChangedSignal(v127), fn36) fn36() return Bridge end return v117:Add(index2.new()) end tbl17.c4 = function() local c4 = tbl17.cache.c4 if not c4 then local c42 = { c = fn35() } tbl17.cache.c4 = c42 c4 = c42 end return c4.c end end do -- c6 local function fn35() local v115 = tbl17.c5() local index2 = {} index2.__index = index2 index2.new = function(arg, speed, damper, arg2) local v116 = v115.new(arg) v116.Speed = speed or 1 v116.Damper = damper or 1 local tbl18 = { _initial = arg, _snapDistancePixels = arg2 or 5, _spring = v116, _locked = false, _target = nil } setmetatable(tbl18, index2) return tbl18 end index2.SetProperties = function(arg, speed, damper, snapDistancePixels) local spring = arg._spring spring.Speed = speed spring.Damper = damper arg._snapDistancePixels = snapDistancePixels end index2.SetInitial = function(l,I)l._initial=I;end index2.SetTarget = function(l,I)if I==nil then l._locked=false;end;l._target=I;end index2.GetPosition = function(l)local I,W=l._spring,l._target;if W==nil then I.Target=l._initial;return I.Position;end;if l._locked then I:SetTarget(W,true);return I.Position;end;if(W-I.Position).Magnitude= tbl18 .FrontBlockDot and I<= tbl18 .BackBlockDot;end, } return tbl18 end tbl17.c9 = function() local c9 = tbl17.cache.c9 if not c9 then c9 = { c = fn35() } tbl17.cache.c9 = c9 end return c9.c end end do -- da local function fn35() tbl17.cF() tbl17.cU() local v115 = tbl17.cG() local v116 = tbl17.c9() local tbl18 = { ["Flare Gun"] = v86[34], ["Grenade Launcher"] = v86[34], RPG = true, Exogun = true, Distortion = true, Flamethrower = true, Spray = true, Daggers = v86[34], Bow = v86[34], Crossbow = v86[34], Slingshot = true, } local tbl19 = { ["Flare Gun"] = true, ["Grenade Launcher"] = true, RPG = true, Exogun = v86[34], Distortion = v86[34], Flamethrower = true, Spray = true, } local function fn36(l)for I,I_77 in l.ItemObserver:GetItems()do if I_77.Name=="Riot Shield"then return true;end;end;return false;end return { resolveShotConstraint = function(I,W,N)if I.__type~="Gun"or not W.Character.State.Alive then return nil;end;local P=I.Name;local I_78=W.ItemObserver:EquippedItemAsMelee();local a=false;local e=false;if not tbl19 [P]then if I_78~=nil and I_78.Name=="Riot Shield"then a=N=="Planning"or not I_78:IsAttacking();else e=( fn36 (W));end;end;N=if I_78~=nil and not tbl18 [P]then(I_78:IsDeflecting())else false;if not(a or e or N)then return nil;end;return{Look= v116 .buildLookVector(W:GetCameraRotation()),Bounds={MinDot=if N then(math.max((if a then v116 .FrontBlockDot else nil)or-math.huge, v116 .DeflectBlockDot))else if a then v116 .FrontBlockDot else nil,MaxDot=if e then v116 .BackBlockDot else nil},State=if e and N then"BackAndDeflect"else if a then"Front"else if e then"Back"else"Deflect"};end, isShielded = function(I,W,N,P,a)if not(P or a)then return false;end;if I.__type~="Gun"then return false;end;local e=W.Character.State;if not e.Alive then return false;end;local c=W.ItemObserver:EquippedItemAsMelee();local E=c~=nil and c.Name=="Riot Shield";local p= v115 .getServerOrigin(e,W);e= v116 .buildLookVector(W:GetCameraRotation());local T= v116 .computeLookDot(p,N,e);if c~=nil then if P and not tbl18 [I.Name]and(c:IsDeflecting())and T< v116 .DeflectBlockDot then return true;end;if a and not tbl19 [I.Name]and E and not c:IsAttacking()and T< v116 .FrontBlockDot then return true;end;end;if a and not E and not tbl19 [I.Name]and( fn36 (W))and T> v116 .BackBlockDot then return true;end;return false;end, canBlock = function(I,W)if I.__type~="Gun"then return false;end;local N=W.ItemObserver:EquippedItemAsMelee();local P=N~=nil and N.Name=="Riot Shield";if N~=nil and P and not tbl19 [I.Name]and not N:IsAttacking()then return true;end;if N~=nil and not tbl18 [I.Name]and(N:IsDeflecting())then return true;end;if not P and not tbl19 [I.Name]and( fn36 (W))then return true;end;return false;end, canRiotShieldBlockSoon = function(I,W)if I.__type~="Gun"or tbl19 [I.Name]then return false;end;I=W.ItemObserver:EquippedItemAsMelee();return I~=nil and I.Name=="Riot Shield"or( fn36 (W));end, } end tbl17.da = function() local da = tbl17.cache.da if not da then da = { c = fn35() } tbl17.cache.da = da end return da.c end end do -- db local function fn35() local cameraController = tbl17.aS().CameraController local getCameraCFrame = v102(v102(v111(cameraController), "__index"), "GetCameraCFrame") return function()return coroutine.wrap( getCameraCFrame )( cameraController );end end tbl17.db = function() local db = tbl17.cache.db if not db then local db2 = { c = fn35() } tbl17.cache.db = db2 db = db2 end return db.c end end do -- dc local function fn35() tbl17.cr() tbl17.aG() tbl17.c_() tbl17.cF() tbl17.cX() tbl17.cE() local v115 = tbl17.da() tbl17.ci() local v116 = tbl17.k() local v117 = tbl17.db() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local v118 = v116.new() local tbl18 = { _conditions = arg3, _hitboxes = arg4, _shooterPosition = Vector3.zero, _enemyByPlayer = arg2.EnemyByPlayer, _resolvedHitboxes = {}, _hitboxMeetsConditions = arg5, CheckHitboxConditionsOnBestFirst = v86[153], } setmetatable(tbl18, index2) v118:Add(arg:ObserveContext("TargetProviderImpl", function(innerContext) tbl18._innerContext = innerContext end)) v118:Connect(arg.ContextRemoved, function() tbl18._innerContext = nil end) return tbl18 end index2.SetConditions = function(arg, conditions) arg._conditions = conditions end index2.SetHitboxes = function(arg, hitboxes) arg._hitboxes = hitboxes end index2.UseBestFirstConditionCheck = function(arg, checkHitboxConditionsOnBestFirst) arg.CheckHitboxConditionsOnBestFirst = checkHitboxConditionsOnBestFirst end index2.GetTargets = function(l)return l._enemyByPlayer;end index2.PreScan = function(I)I._shooterPosition= v117 ().Position;end index2.TargetMeetsConditions = function(I,W)if not W.Character.State.Alive then return false;end;local N=I._conditions;if N.Vulnerable and(W:IsInvincible())then return false;end;local P=I._innerContext;if P~=nil then local a=P.ItemBehaviors:GetEquipped();if a~=nil and( v115 .isShielded(a,W,I._shooterPosition,N.NotDeflecting,N.NotShielded))then return false;end;end;return true;end index2.HitboxMeetsConditions = function(l,I,W)return l._hitboxMeetsConditions(l._shooterPosition,I,W);end index2.ResolveHitboxes = function(l,I)local W=I.Character.State;local I_79,N,P=W.TargetPartsByName,W.Humanoid:GetState()==Enum.HumanoidStateType.Freefall and l._hitboxes.Air or l._hitboxes.Ground,l._resolvedHitboxes;table.clear(P);for l in N,nil,nil do table.insert(P,I_79[l]);end;return P;end return index2 end tbl17.dc = function() local dc = tbl17.cache.dc if not dc then dc = { c = fn35() } tbl17.cache.dc = dc end return dc.c end end do -- dd local function fn35() tbl17.aG() tbl17.cU() tbl17.cX() return function(l,I)local W,N=I.NotReloading,I.ScopedIn;if not(W or N)then return false;end;if W and(l:IsReloading())then return true;end;if N and not l:IsFullyAiming()then return true;end;return false;end end tbl17.dd = function() local dd = tbl17.cache.dd if not dd then local dd2 = { c = fn35() } tbl17.cache.dd = dd2 dd = dd2 end return dd.c end end do -- de local function fn35() tbl17.aG() tbl17.cU() tbl17.cX() tbl17.dc() tbl17.k() local v115 = tbl17.aH() return function(arg, arg2, arg3, arg4, arg5) local function fn36(gunName, hitboxes) if hitboxes == nil then return end arg4:SetHitboxes(hitboxes[v115.resolveProfile(gunName).Class]) end local v116 = nil arg2:Add(arg:ObserveContext(arg3, function(arg6, arg7) v116 = arg6 local itemBehaviors = arg6.ItemBehaviors arg7:Connect(itemBehaviors.EquippedItemChanged, function() fn36(itemBehaviors:GetEquippedGunName(), arg5()) end) fn36(itemBehaviors:GetEquippedGunName(), arg5()) end)) arg2:Connect(arg.ContextRemoved, function() fn36(nil, arg5()) v116 = nil end) return function() fn36(v116 ~= nil and v116.ItemBehaviors:GetEquippedGunName() or nil, arg5()) end end end tbl17.de = function() local de = tbl17.cache.de if not flag2 then return end if not de then de = { c = fn35() } tbl17.cache.de = de end return de.c end end do -- df local function fn35() return function(l,l_80,I,I_81)return l_80= n or arg2.TimePosition < timePosition then arg2.TimePosition = timePosition end end index2._Stop = function(arg) if arg._animatorWait ~= nil then arg._animatorWait:Disconnect() arg._animatorWait = nil end if arg._loopConnection ~= nil then arg._loopConnection:Disconnect() arg._loopConnection = nil end local track = arg._track if track ~= nil then track:Stop() track:Destroy() arg._track = nil end end index2.Destroy = function(arg) arg:_Stop() arg._trove:Destroy() end return index2 end tbl17.dk = function() local dk = tbl17.cache.dk if not dk then dk = { c = fn35() } tbl17.cache.dk = dk end return dk.c end end do -- dl local function fn35() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _handleSetEnabled = arg, _handleDestroy = arg2, Enabled = v86[153] }, index2) end index2.SetHandler = function(arg, handler) arg.Handler = handler end index2.SetEnabled = function(arg, enabled) arg.Enabled = enabled arg._handleSetEnabled(enabled) end index2.Destroy = function(arg) arg._handleDestroy() end return index2 end tbl17.dl = function() local dl = tbl17.cache.dl if not dl then local dl2 = { c = fn35() } tbl17.cache.dl = dl2 dl = dl2 end return dl.c end end do -- dm local function fn35() local v115 = tbl17.dl() local v116 = tbl17.a() local useItemRemote = tbl17.aS().UseItemRemote local clientItem = tbl17.aS().ClientItem local v117 = tbl17.cK() local v118 = tbl17.ad() local v119 = tbl17.b2() local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _errorReporter = v118.new(), _inputBindings = {} }, index2) end index2.Reserve = function(arg) local new = nil local function fn36(arg2) if arg2 then arg._errorReporter:ReportResult(arg:_Load()) end end local function fn37() for k, v120 in arg._inputBindings, nil, nil do if v120 == new then table.remove(arg._inputBindings, k) break end end end new = v115.new new = new(fn36, fn37) table.insert(arg._inputBindings, new) return new end index2._Dispatch = function(arg, arg2) for _, v120 in arg._inputBindings, nil, nil do if not v120.Enabled then continue else local handler = v120.Handler if handler == nil then continue else handler(arg2) if not arg2.Block then continue end end end break end end index2._Load = function(arg) if arg._restore ~= nil then return v116.VoidOk end local input = v102(clientItem, "Input") if input == nil then return v116.err("InputHook", "function_lookup", "Failed to find Input in prototype") end for _, v120 in debug.getupvalues(input) do if type(v120) ~= "table" then continue end for k, v121 in v120, nil, nil do if typeof(v121) ~= "Instance" or not v119(v121, game:GetService("ReplicatedStorage")) then continue end v120[k] = { Remotes = { Replication = { Fighter = { UseItem = { FireServer = function(arg2, arg3, arg4, arg5, ...) local tbl18 = { Block = false, ObjectId = arg3, Type = v117.decode(arg4), Args = arg5 } arg:_Dispatch(tbl18) if tbl18.Block then return end local v122 = fireServer local args = tbl18.Args local v123 = table.pack(...) local v124 = useItemRemote v123.n = 5 + v123.n - 1 table.move(v123, 1, v123.n, 5, v123) v123[1] = v124 v123[2] = arg3 v123[3] = arg4 v123[4] = args v122(table.unpack(v123, 1, v123.n)) end }, }, }, }, } arg._restore = { Tbl = v120, Index = k, Original = v121 } return v116.VoidOk end end return v116.err("InputHook", "upvalue_scan", "Failed to find ReplicatedStorage upvalue") end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil restore.Tbl[restore.Index] = restore.Original end index2.Destroy = function(arg) arg:_Revert() arg._errorReporter:Destroy() end return index2 end tbl17.dm = function() local dm = tbl17.cache.dm if not dm then dm = { c = fn35() } tbl17.cache.dm = dm end return dm.c end end do -- dn local function fn35() local v115 = tbl17.k() local v116 = tbl17.cN() local v117 = tbl17.bG() tbl17.cF() tbl17.dm() tbl17.cX() local v118 = tbl17.da() local v119 = cloneref(game:GetService("Players")) local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local v120 = v115.new() local tbl18 = { _trove = v120, _playerContext = arg2, _fighters = arg3 } v120:Add(arg) setmetatable(tbl18, index2) v120:Connect(v117:GetPropertyChangedSignal({ "AntiKatana", "Enabled" }), function(arg4) arg:SetEnabled(arg4) end) arg:SetHandler(function(arg4) tbl18:_HandleInput(arg4) end) arg:SetEnabled(v117.Data.AntiKatana.Enabled) return tbl18 end index2._HandleInput = function(arg, arg2) if arg2.Type ~= "StartShooting" then return end local inner = arg._playerContext.Inner if inner == nil then return end local v120 = inner.ItemBehaviors:FindByObjectId(arg2.ObjectId) if v120 == nil or v120.__type ~= "Gun" then return end local v121 = arg2.Args["\1"] if type(v121) ~= "table" then return end local v122 = v116.decode(v121["\0"]) local v123 = v121["\2"] if v122 == nil or typeof(v123) ~= "Instance" or not v123:IsA("BasePart") then return end local playerFromCharacter = v119:GetPlayerFromCharacter(v123.Parent) if playerFromCharacter == nil then return end local v124 = arg._fighters.EnemyByPlayer[playerFromCharacter] if v124 == nil then return end if v118.isShielded(v120, v124, v122.Position, true, false) then arg2.Block = v86[34] end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dn = function() local dn = tbl17.cache.dn if not dn then local dn2 = { c = fn35() } tbl17.cache.dn = dn2 dn = dn2 end return dn.c end end do -- dp local function fn35() tbl17.aP() tbl17.aM() local v115 = tbl17.cv() return function(arg, arg2) local v116 = v102(v102(arg, "_duelers_by_player"), arg2) if v116 then return v116 end for _, v117 in v102(arg, "Duelers") do if v102(v117, "Player") == arg2 or v115(v117, "ObjectID") == arg2 then return v117 end end return nil end end tbl17.dp = function() local dp = tbl17.cache.dp if not dp then dp = { c = fn35() } tbl17.cache.dp = dp end return dp.c end end do -- dq local function fn35() tbl17.aP() tbl17.aM() tbl17.cw() local v115 = tbl17.k() local v116 = tbl17.b3() local pagesModule = tbl17.aS().PagesModule local v117 = tbl17.g() local v118 = tbl17.ct() local v119 = tbl17.dp() local v120 = tbl17.cv() local v121 = tbl17.cV() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 index2.new = function(arg) local LocalDuelState = v115.new("duelers.LocalDuelState") local data = v102(arg, "Data") local duelInterface = v102(arg, "DuelInterface") local finalResults = v102(duelInterface, "FinalResults") local timer = v102(duelInterface, "Timer") local activated = v102(finalResults, "Activated") local v122 = v119(arg, localPlayer) assert(v122) local v123 = LocalDuelState:Add(v117.new()) local v124 = LocalDuelState:Add(v117.new()) local timerChanged = v102(timer, "TimerChanged") LocalDuelState:Add(v118(v102(arg, "MapAdded"), function(arg2) v123:Fire(arg2) end)) local tbl18 = { _trove = LocalDuelState, _inner = arg, _data = data, _localDueler = v122, _timer = timer, FinalResultsActivated = activated, MapChanged = v123, RoundTimeRemainingChanged = v124, } setmetatable(tbl18, index2) LocalDuelState:Add(v118(timerChanged, function() v124:Fire(tbl18:GetRoundTimeRemaining()) end)) return tbl18 end index2.GetMapName = function(arg) local map = v102(arg._inner, "Map") return map ~= nil and v102(map, "Name") or nil end index2.GetRoundStatus = function(arg) return v102(arg._data, "Status") end index2.GetRoundTimeRemaining = function(arg) return (v102(arg._timer, "_time_remaining")) end index2.GetTeamId = function(arg) return v120(arg._localDueler, "TeamID") end index2.IsOptionBanned = function(arg, arg2) local voteOptions = v102(arg._data, "VoteOptions") if voteOptions == nil then return false end for _, v122 in voteOptions, nil, nil do if v102(v122, "Name") == arg2 then return v102(v122, "IsBanned") ~= nil end end return false end index2.VoteOptionsChangedSignal = function(arg) return v116(arg._inner.GetDataChangedSignal, arg._inner, "VoteOptions") end index2.RoundStatusChangedSignal = function(arg) return v116(arg._inner.GetDataChangedSignal, arg._inner, "Status") end index2.BansRemaining = function(arg) local teamId = arg:GetTeamId() if not teamId then return 0 end local v122 = arg:VoteOptionsType() local str7 if v122 == "Weapons" then str7 = "MaxWeaponBansPerTeam" else if v122 ~= "Maps" then return 0 end str7 = "MaxMapBansPerTeam" end local data = arg._data local n = v102(data, str7) or 0 local voteBansRemaining = v102(data, "VoteBansRemaining") return n - (voteBansRemaining and v102(voteBansRemaining, teamId) or v86[186]) end index2.VoteOptions = function(arg) return v102(arg._data, "VoteOptions") end index2.VoteOptionsType = function(arg) return v102(arg._data, "VoteOptionsType") end index2.CanVoteToBan = function(arg) return arg:BansRemaining() > 0 end index2.ListenReplicatedProperty = function(arg, arg2, arg3, arg4) local inner = arg._inner local function fn36() local v122 = v120(inner, arg3) if v122 == nil then return end task.spawn(arg4, v122) end fn36() return arg2:Add(v118(v116(inner.GetDataChangedSignal, inner, arg3), fn36)) end index2.ListenVoteOptionsType = function(arg, arg2, arg3) return arg:ListenReplicatedProperty(arg2, "VoteOptionsType", arg3) end index2.ListenVoteBansRemaining = function(arg, arg2, arg3) return arg:ListenReplicatedProperty(arg2, "VoteBansRemaining", arg3) end index2.ListenVoteOptions = function(arg, arg2, arg3) return arg:ListenReplicatedProperty(arg2, "VoteOptions", arg3) end index2.ListenPickWeaponsOpen = function(arg, arg2, arg3, arg4) local pageSystem = v102(pagesModule, "PageSystem") local currentPage = v102(pageSystem, "CurrentPage") local pageOpened = v102(pageSystem, "PageOpened") local function fn36(arg5) return (v102(arg5, "Name")) end local function fn37(arg5) if not arg5 or fn36(arg5):sub(1, 11) ~= "PickWeapons" then return end local function fn38() local inner = arg3.Inner return inner and v120(inner, "CanPickWeapons") and arg3.Character.State.Alive end local function fn39(arg6) task.delay(v86[149], function() arg2:Remove(arg6) end) end local fn40 = nil local fn41 = nil fn40 = function() local inner = arg3.Inner if not inner then assert(fn41)() return end local v122 = v121(v116(inner.GetDataChangedSignal, inner, "CanPickWeapons"), function() if fn38() then arg4() elseif arg3.Character.State.Alive then assert(fn40)() else assert(fn41)() end end) arg2:Add(v122) fn39(v122) end fn41 = function() local v122 = v121(arg3.Character.Created, function() if fn38() then arg4() else assert(fn40)() end end) arg2:Add(v122) fn39(v122) end if fn38() then arg4() elseif arg3.Character.State.Alive then assert(fn40)() else assert(fn41)() end end fn37(currentPage) return arg2:Add(v118(pageOpened, fn37)) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dq = function() local dq = tbl17.cache.dq if not dq then local dq2 = { c = fn35() } tbl17.cache.dq = dq2 dq = dq2 end return dq.c end end do -- dr local function fn35() tbl17.aP() tbl17.aM() local v115 = tbl17.k() local duelController = tbl17.aS().DuelController local v116 = tbl17.dq() local v117 = tbl17.g() local v118 = tbl17.ct() local v119 = tbl17.dp() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 index2.new = function() local duelers = v115.new("duelers") local tbl18 = { _trove = duelers, _duelTrove = nil, LocalState = nil, LocalDueler = nil, DuelerByPlayer = {}, LocalStateSet = duelers:Add(v117.new()), LocalStateRemoved = duelers:Add(v117.new()), RemoteDuelerAdded = duelers:Add(v117.new()), RemoteDuelerRemoved = duelers:Add(v117.new()), } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2.ObserveLocalState = function(arg, arg2, arg3) local v120 = v115.new() local v121 = v120:Extend() local v122 = nil local function fn36(arg4) if v122 == arg4 then return end v121:Clean() v122 = arg4 arg2(arg4, v121) end v120:Connect(arg.LocalStateSet, fn36) v120:Connect(arg.LocalStateRemoved, function(arg4) if v122 ~= arg4 then return end v121:Clean() v122 = nil arg3(arg4) end) local localState = arg.LocalState if localState ~= nil then fn36(localState) end return v120 end index2._Initialize = function(arg) local localPlayerJoinedDuel = v102(duelController, "LocalPlayerJoinedDuel") local localPlayerLeftDuel = v102(duelController, "LocalPlayerLeftDuel") arg._trove:Add(v118(localPlayerJoinedDuel, function(arg2) arg:_AttachDuel(arg2) end)) arg._trove:Add(v118(localPlayerLeftDuel, function(arg2) arg:_DetachDuel(arg2) end)) for _, v120 in v102(duelController, "Objects") do arg:_AttachDuel(v120) end end index2._AttachDuel = function(arg, arg2) local v120 = v119(arg2, localPlayer) if not v120 then return end arg:_Clear() local v121 = arg._trove:Extend() arg._duelTrove = v121 local v122 = v121:Add(v116.new(arg2)) arg.LocalState = v122 arg.LocalDueler = v120 arg.LocalStateSet:Fire(v122) local duelerAdded = v102(arg2, "DuelerAdded") local duelerRemoved = v102(arg2, "DuelerRemoved") v121:Add(v118(duelerAdded, function(arg3) arg:_AddRemoteDueler(arg3) end)) v121:Add(v118(duelerRemoved, function(arg3) arg:_RemoveRemoteDueler(arg3) end)) for _, v123 in v102(arg2, "Duelers") do arg:_AddRemoteDueler(v123) end end index2._DetachDuel = function(arg, arg2) local localState = arg.LocalState if not localState or localState._inner ~= arg2 then return end arg:_Clear() end index2._Clear = function(arg) local localState = arg.LocalState if not localState then return end for _, v120 in arg.DuelerByPlayer, nil, nil do arg.RemoteDuelerRemoved:Fire(v120) end table.clear(arg.DuelerByPlayer) arg.LocalState = nil arg.LocalDueler = nil if arg._duelTrove then arg._trove:Remove(arg._duelTrove) arg._duelTrove = nil end arg.LocalStateRemoved:Fire(localState) end index2._AddRemoteDueler = function(arg, arg2) local player = v102(arg2, "Player") if player == localPlayer or arg.DuelerByPlayer[player] then return end arg.DuelerByPlayer[player] = arg2 arg.RemoteDuelerAdded:Fire(arg2) end index2._RemoveRemoteDueler = function(arg, arg2) local player = v102(arg2, "Player") if arg.DuelerByPlayer[player] ~= arg2 then return end arg.DuelerByPlayer[player] = nil arg.RemoteDuelerRemoved:Fire(arg2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dr = function() local dr = tbl17.cache.dr if not dr then dr = { c = fn35() } tbl17.cache.dr = dr end return dr.c end end do -- ds local function fn35() local v115 = tbl17.bG() tbl17.dr() tbl17.cX() local v116 = tbl17.k() local voteEvent = tbl17.aS().VoteEvent local function fn36(arg, arg2) local data = v102(arg.FighterState.Inner, "Data") local weaponPool = v102(data, "WeaponPool") return v102(data, "WeaponPoolFilterType") == "Blacklist" and table.find(weaponPool, arg2) ~= nil end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _trove = v116.new("auto_duel"), _playerContext = arg, _duelers = arg2 }, index2) end index2.Initialize = function(arg) arg._trove:Add(arg._playerContext:ObserveContext("auto_duel", function(arg2, arg3) arg:_OnContext(arg2, arg3) end)) end index2.Destroy = function(arg) arg._trove:Destroy() end index2._OnContext = function(arg, arg2, arg3) local duelers = arg._duelers local v117 = nil local function fn37() if v117 then arg3:Remove(v117) v117 = nil end end local function fn38(arg4) fn37() v117 = arg3:Extend() arg:_OnDuel(arg2, v117, arg4) end arg3:Connect(duelers.LocalStateSet, fn38) arg3:Connect(duelers.LocalStateRemoved, fn37) if duelers.LocalState then fn38(duelers.LocalState) end end index2._OnDuel = function(arg, arg2, arg3, arg4) local flag19 = false local v117 = nil local v118 = nil local function fn37() local v119 = arg4:VoteOptionsType() if v119 ~= v117 then v117 = v119 v118 = nil end if v118 ~= nil and not arg4:IsOptionBanned(v118) then return end v118 = arg:_HandleVoteOpen(arg4) end arg4:ListenVoteOptionsType(arg3, fn37) arg4:ListenVoteBansRemaining(arg3, fn37) arg4:ListenVoteOptions(arg3, fn37) arg3:Connect(v115:GetPropertyChangedSignal({ "AutoVote", "Enabled" }), fn37) arg3:Connect(v115:GetPropertyChangedSignal({ "AutoBan", "Enabled" }), fn37) arg4:ListenPickWeaponsOpen(arg3, arg2.FighterState, function() if flag19 then return end flag19 = v86[34] arg:_TryAutoLoadout(arg2, arg4) end) arg3:Connect(v115:GetPropertyChangedSignal({ "AutoLoadout", "Enabled" }), function(arg5) if not arg5 or flag19 then return end flag19 = true arg:_TryAutoLoadout(arg2, arg4) end) end index2._HandleVoteOpen = function(arg, arg2) local v117 = arg2:VoteOptionsType() if v117 == nil then return nil end if not arg2:CanVoteToBan() then return nil end local v118 = arg2:VoteOptions() if v118 == nil then return nil end if next(v118) == nil then return nil end local data = v115.Data if v117 == "Weapons" and data.AutoBan.Enabled then local autoBan = data.AutoBan local tbl18 = { autoBan.FirstWeapons, autoBan.SecondWeapons } local v119 = tbl18[#tbl18 - arg2:BansRemaining() + 1] if v119 == nil or next(v119) == nil then return nil end for _, v120 in v118, nil, nil do local name = v102(v120, "Name") if name and v119[name] and not arg2:IsOptionBanned(name) then fireServer(voteEvent, name) return name end end return nil end if v117 == "Maps" and data.AutoVote.Enabled then local maps = data.AutoVote.Maps if next(maps) == nil then return nil end for _, v119 in v118, nil, nil do local name = v102(v119, "Name") if not name or arg2:IsOptionBanned(name) or not maps[name] then continue end fireServer(voteEvent, name) return name end end return nil end index2._TryAutoLoadout = function(arg, arg2, arg3) local autoLoadout = v115.Data.AutoLoadout if not autoLoadout.Enabled then return end local mapName = arg3:GetMapName() local default = autoLoadout.PerMap and mapName ~= nil and autoLoadout.Loadouts[mapName] or autoLoadout.Loadouts.Default if default == nil or next(default) == nil then return end if not autoLoadout.MultipleLoadouts then local n1 = default["1"] if n1 == nil then return end local flag19 = v86[34] for _, v117 in n1, nil, nil do if v117 == v86[96] or fn36(arg2, v117) then flag19 = false break end end if not flag19 then return end arg2.LoadoutPicker:PickLoadoutAsync(n1):catch(function() end) return end local tbl18 = {} for i = 3, 1, -1 do local v117 = default[tostring(i)] if v117 ~= nil then for k, v118 in v117, nil, nil do if not (v118 == v86[96] or fn36(arg2, v118)) then tbl18[k] = v118 end end end end if tbl18[1] == nil or tbl18[2] == nil or tbl18[3] == nil or tbl18[v86[26]] == nil then return end arg2.LoadoutPicker:PickLoadoutAsync(tbl18):catch(function() end) end return index2 end tbl17.ds = function() local ds = tbl17.cache.ds if not ds then ds = { c = fn35() } tbl17.cache.ds = ds end return ds.c end end do -- dt local function fn35() local v115 = tbl17.bG() tbl17.cX() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local obj = setmetatable({ _trove = v116.new("drops"), _playerContext = arg, _ammoHitboxSet = {}, _healthHitboxSet = {} }, index2) obj:_Initialize() return obj end index2.Destroy = function(arg) arg._trove:Destroy() end index2._Initialize = function(arg) local function fn36(arg2) if arg2.Name == "_drop" and arg2:IsA("BasePart") then arg:_OnDrop(arg2) end end for _, v117 in workspace:GetChildren() do task.spawn(fn36, v117) end arg._trove:Connect(workspace.ChildAdded, fn36) end index2._OnDrop = function(arg, arg2) local v117 = arg._trove:Extend() local function fn36(arg3) arg3[arg2] = true arg:Update() end local connection = arg2.Destroying:Once(function() arg._ammoHitboxSet[arg2] = nil arg._healthHitboxSet[arg2] = nil arg._trove:Remove(v117) end) v117:Add(connection) if arg2:FindFirstChild("AmmoBalanced") then fn36(arg._ammoHitboxSet) return end if arg2:FindFirstChild("Health") then fn36(arg._healthHitboxSet) return end local connection2 = nil connection2 = arg2.ChildAdded:Connect(function(child) if child.Name == "AmmoBalanced" then v117:Remove(connection2) fn36(arg._ammoHitboxSet) elseif child.Name == "Health" then v117:Remove(connection2) fn36(arg._healthHitboxSet) end end) v117:Add(connection2) end index2.Update = function(arg) local autoPickupDrops = v115.Data.AutoPickupDrops if not autoPickupDrops.Enabled then return end local inner = arg._playerContext.Inner if not inner then return end local state = inner.FighterState.Character.State if not state.Alive then return end local types = autoPickupDrops.Types local hitboxBody = state.HitboxBody if types.Health then if state.Health < state.MaxHealth then for k in arg._healthHitboxSet, nil, nil do firetouchinterest(k, hitboxBody, v86[186]) firetouchinterest(k, hitboxBody, v86[63]) end end end if types.Ammo then local equipped = inner.ItemBehaviors:GetEquipped() local flag19 = false if equipped ~= nil then if equipped.__type == "Gun" then flag19 = not equipped:IsMagFull() elseif equipped.__type == "Custom" then flag19 = equipped:IsMagFull() == false end end if flag19 then for k in arg._ammoHitboxSet, nil, nil do firetouchinterest(k, hitboxBody, 0) firetouchinterest(k, hitboxBody, 1) end end end end return index2 end tbl17.dt = function() local dt = tbl17.cache.dt if not dt then dt = { c = fn35() } tbl17.cache.dt = dt end return dt.c end end do -- du local function fn35() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _lastCall = v86[186], _delay = arg, _callback = arg2 }, index2) end index2.call = function(arg, ...) local lastCall = arg._lastCall if tick() - lastCall > arg._delay then arg._lastCall = tick() return arg._callback(...) end return nil end return index2 end tbl17.du = function() local du = tbl17.cache.du if not du then du = { c = fn35() } tbl17.cache.du = du end return du.c end end do -- dv local function fn35() local v115 = tbl17.dl() tbl17.aP() local v116 = tbl17.a() local replicatedController = tbl17.aS().ReplicatedController local v117 = tbl17.cK() local v118 = tbl17.ad() local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _errorReporter = v118.new(), _bindingsByEnum = {} } if not flag2 then return end return setmetatable(tbl18, index2) end index2.Reserve = function(arg, arg2) local v119 = table.create(#arg2) for _, v120 in arg2, nil, nil do local v121 = v117.encode(v120) if v121 ~= nil then table.insert(v119, v121) end end local v120 = nil v120 = v115.new(function(arg3) if arg3 then arg._errorReporter:ReportResult(arg:_Load()) end end, function() for _, v121 in v119, nil, nil do local v122 = arg._bindingsByEnum[v121] if v122 ~= nil then for k, v123 in v122, nil, nil do if v123 == v120 then table.remove(v122, k) break end end end end end) for _, v121 in v119, nil, nil do local tbl18 = arg._bindingsByEnum[v121] if tbl18 == nil then tbl18 = {} arg._bindingsByEnum[v121] = tbl18 end table.insert(tbl18, v120) end return v120 end index2._Load = function(arg) if arg._restore ~= nil then return v116.VoidOk end local v119 = v102(replicatedController, "_ObjectChanged") if v119 == nil then return v116.err("ReplicateHook", "function_lookup", "Failed to find _ObjectChanged method") end local bindingsByEnum = arg._bindingsByEnum v103(replicatedController, "_ObjectChanged", function(arg2, arg3, arg4, ...) local v120 = bindingsByEnum[arg4] if v120 == nil or type(arg3) ~= "string" then return coroutine.wrap(v119)(arg2, arg3, arg4, ...) end local v121 = v117.decode(arg4) if v121 == nil then return coroutine.wrap(v119)(arg2, arg3, arg4, ...) end local tbl18 = { Block = false, ObjectId = arg3, EnumName = v121, Args = table.pack(...) } local v122 = getthreadidentity() setthreadidentity(8) for _, v123 in v120, nil, nil do if v123.Enabled and v123.Handler then v123.Handler(tbl18) if not tbl18.Block then continue end else continue end break end setthreadidentity(v122) if tbl18.Block then return end local args = tbl18.Args local v123 = unpack local v124 = v86[63] local n = args.n return coroutine.wrap(v119)(arg2, arg3, arg4, v123(args, v124, n)) end) arg._restore = { Method = v119 } return v116.VoidOk end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil v103(replicatedController, "_ObjectChanged", restore.Method) end index2.Destroy = function(arg) arg:_Revert() arg._errorReporter:Destroy() end return index2 end tbl17.dv = function() local dv = tbl17.cache.dv if not dv then dv = { c = fn35() } tbl17.cache.dv = dv end return dv.c end end do -- dw local function fn35() tbl17.aP() local v115 = tbl17.du() local v116 = tbl17.ad() local v117 = tbl17.a() local v118 = tbl17.k() local v119 = tbl17.b3() local arcadeController = tbl17.aS().ArcadeController local v120 = tbl17.bG() local duelLibrary = tbl17.aS().DuelLibrary local v121 = tbl17.cK() local matchmakingController = tbl17.aS().MatchmakingController local matchmakingInterface = tbl17.aS().MatchmakingInterface tbl17.dv() local v122 = tbl17.ct() local index2 = {} index2.__index = index2 local function fn36() return v102(matchmakingInterface, "_current_queue_name") end local function fn37(arg) local v123, v124 = v107(function() v119(arcadeController.ToArcadeServer, arcadeController, arg) end) if not v123 then local v125 = tostring local v126 = tostring return v117.err("AutoQueue", "teleport_to_arcade", string.format("failed to teleport to arcade queue \"%s\": %s", tostring(arg), v125(v126(v124)))) end return v117.VoidOk end local function fn38(arg) local arcadeModes = v102(duelLibrary, "ArcadeModes") return arcadeModes and v102(arcadeModes, arg) end local function fn39(arg) local pendingQueueTask = arg._pendingQueueTask if pendingQueueTask == nil then return end arg._pendingQueueTask = nil arg._pendingQueueName = nil v107(task.cancel, pendingQueueTask) end index2.new = function() local v123 = v116.new() return setmetatable({ _errorReporter = v123, _trove = v118.new("auto_queue"), _arcadeTeleportDebounce = v115.new(5, function(arg) v123:ReportResult(fn37(arg)) end), }, index2) end index2.Destroy = function(arg) fn39(arg) arg._errorReporter:Destroy() arg._trove:Destroy() end index2.Initialise = function(arg, arg2) local trove = arg._trove trove:Add(v122(matchmakingInterface.VisibilityChanged, function() arg:Force() end)) trove:Connect(v120:GetPropertyChangedSignal({ "AutoQueue", "Enabled" }), function() arg:Force() end) trove:Connect(v120:GetPropertyChangedSignal({ "AutoQueue", "Queue" }), function() arg:Force() end) local IsInDuel = v121.encode("IsInDuel") local Status = v121.encode("Status") local v123 = arg2:Reserve({ "DataValueChanged" }) v123:SetHandler(function(arg3) local v124 = arg3.Args[1] if v124 == IsInDuel then if arg3.Args[2] then return end elseif v124 ~= Status or arg3.Args[2] ~= "GameOver" then return end arg:Force() end) v123:SetEnabled(v86[34]) trove:Add(v123) arg:Force() end index2.ForceQueue = function(arg, pendingQueueName) if arg._pendingQueueTask ~= nil and arg._pendingQueueName ~= pendingQueueName then fn39(arg) end local v123 = fn38(pendingQueueName) if v123 ~= nil then fn39(arg) if game.PlaceId == v123.PlaceID then return end if fn36() ~= nil then v119(matchmakingController.LeaveQueue, matchmakingController) return end arg._arcadeTeleportDebounce:call(pendingQueueName) return end local v124 = fn36() if v124 ~= nil then fn39(arg) if v124 == pendingQueueName then return end v119(matchmakingController.LeaveQueue, matchmakingController) return end if arg._pendingQueueTask == nil then arg._pendingQueueTask = task.delay(v86[63], function() arg._pendingQueueTask = nil arg._pendingQueueName = nil if not v120.Data.AutoQueue.Enabled or v120.Data.AutoQueue.Queue ~= pendingQueueName or fn36() ~= nil then return end v119(matchmakingController.QueueInto, matchmakingController, pendingQueueName) end) arg._pendingQueueName = pendingQueueName end end index2.Force = function(arg) if not v120.Data.AutoQueue.Enabled then fn39(arg) return end arg:ForceQueue(v120.Data.AutoQueue.Queue) end return index2 end tbl17.dw = function() local dw = tbl17.cache.dw if not dw then dw = { c = fn35() } tbl17.cache.dw = dw end return dw.c end end do -- dx local function fn35() local v115 = tbl17.bG() tbl17.dv() local v116 = tbl17.k() local respawnNowRemote = tbl17.aS().RespawnNowRemote local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 index2.new = function(arg) local autoRespawn = v116.new("auto_respawn") arg:SetHandler(function(arg2) if arg2.EnumName ~= "RespawnNowAnimation" or arg2.Args[1] ~= localPlayer then return end for i = 1, 5 do fireServer(respawnNowRemote) task.wait(0.1) end end) autoRespawn:Connect(v115:GetPropertyChangedSignal({ "AutoRespawn", v86[44] }), function(arg2) arg:SetEnabled(arg2) end) arg:SetEnabled(v115.Data.AutoRespawn.Enabled) return setmetatable({ _trove = autoRespawn, _replicateBinding = arg }, index2) end index2.Destroy = function(arg) arg._trove:Destroy() arg._replicateBinding:Destroy() end return index2 end tbl17.dx = function() local dx = tbl17.cache.dx if not dx then local dx2 = { c = fn35() } tbl17.cache.dx = dx2 dx = dx2 end return dx.c end end do -- dy local function fn35()return{ByName={Plain="",Beam="rbxassetid://12781852245",Lightning="rbxassetid://446111271",Trail="rbxassetid://6419989824",Zigzag="rbxassetid://1274380363",Heartrate="rbxassetid://5830549480",Chain="rbxassetid://9632168658",Glitch="rbxassetid://8089467613",Swirl="rbxassetid://5638168605"},Names={"Plain","Beam","Lightning","Trail","Zigzag","Heartrate","Chain","Glitch","Swirl"}};end tbl17.dy = function() local dy = tbl17.cache.dy if not dy then dy = { c = fn35() } tbl17.cache.dy = dy end return dy.c end end do -- dz local function fn35() local v115 = tbl17.c5() local v116 = tbl17.k() local tbl18 = { Color = Color3.fromRGB(120, 220, 255), Width = 0.06, Lifetime = v86[84], FadeTime = 0.35, Emission = 1, Brightness = 1, Texture = "", TextureLength = v86[26], TextureSpeed = 1, Expand = true, ExpandSpeed = 18, ExpandDamper = 0.7, } local index2 = {} index2.__index = index2 index2.new = function(position, position2, arg) local v117 = arg or tbl18 local v118 = v116.new() local attachment = Instance.new("Attachment") attachment.Position = position attachment.Parent = workspace.Terrain local attachment2 = Instance.new("Attachment") attachment2.Position = position attachment2.Parent = workspace.Terrain local beam = Instance.new("Beam") beam.Attachment0 = attachment beam.Attachment1 = attachment2 beam.Color = ColorSequence.new(v117.Color) beam.Width0 = v117.Width beam.Width1 = v117.Width beam.FaceCamera = true beam.LightEmission = v117.Emission beam.LightInfluence = v86[186] beam.Brightness = v117.Brightness beam.Transparency = NumberSequence.new(0) if v117.Texture ~= "" then beam.Texture = v117.Texture beam.TextureLength = v117.TextureLength beam.TextureSpeed = v117.TextureSpeed end beam.Parent = workspace.Terrain v118:Add(beam) v118:Add(attachment) v118:Add(attachment2) local v119 = v115.new(0) v119.Speed = v117.ExpandSpeed v119.Damper = v117.ExpandDamper v119.Target = v86[63] if not v117.Expand then v119:SetTarget(1, true) attachment2.Position = position2 end return setmetatable({ _trove = v118, _beam = beam, _far = attachment2, _spring = v119, _start = position, _finish = position2, _config = v117, _age = 0, _expand = v117.Expand, }, index2) end index2.SetColor = function(l,I)l._beam.Color=ColorSequence.new(I);end index2.Step = function(l,I)l._age=l._age+I;I=l._config;if l._expand then l._far.WorldPosition=l._start:Lerp(l._finish,l._spring.Position);end;local W=l._age;if W>=I.Lifetime then l._beam.Transparency=NumberSequence.new(if I.FadeTime>0 then(math.clamp((W-I.Lifetime)/I.FadeTime,0,1))else 1);end;return W>=I.Lifetime+I.FadeTime;end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dz = function() local dz = tbl17.cache.dz if not dz then dz = { c = fn35() } tbl17.cache.dz = dz end return dz.c end end do -- dA local function fn35() local v115 = tbl17.dy() local v116 = tbl17.dz() local v117 = tbl17.bG() local v118 = tbl17.cK() tbl17.cU() tbl17.cX() tbl17.dv() local v119 = tbl17.k() local v120 = tbl17.b3() local data = v117.Data local index2 = {} index2.__index = index2 local function fn36(arg) return 10000 ^ ((arg - 1) / v86[61]) end local function fn37(arg, arg2, arg3) local viewModel = v102(arg2.Inner, "ViewModel") if viewModel == nil then return end local v121 = v120(viewModel.GetMuzzlePosition, viewModel) if v121 == nil then return end local n = v121 + workspace.CurrentCamera.CFrame.LookVector * 1 local bulletTracers = v117.Data.BulletTracers local expand = bulletTracers.Expand local tbl18 = { Color = bulletTracers.Color, Width = bulletTracers.Width, Lifetime = bulletTracers.Lifetime, FadeTime = bulletTracers.FadeTime, Emission = bulletTracers.Emission, Brightness = fn36(bulletTracers.Glow), Texture = v115.ByName[bulletTracers.Style] or "", TextureLength = bulletTracers.TextureLength, TextureSpeed = bulletTracers.TextureSpeed, Expand = expand, ExpandSpeed = bulletTracers.ExpandSpeed, ExpandDamper = bulletTracers.ExpandDamper, } for _, v122 in arg3, nil, nil do table.insert(arg, v116.new(n, v122["\0"], tbl18)) end end index2.new = function(arg, arg2) local v121 = v119.new() local tbl18 = {} local v122 = arg:Reserve({ "ItemChanged" }) v122:SetHandler(function(arg3) local inner = arg2.Inner if inner == nil then return end local args = arg3.Args if v118.decode(args[v86[56]]) ~= "ShootEffect" then return end local v123 = inner.ItemBehaviors:FindByObjectId(args[1]) if v123 == nil then return end local v124 = args[3] if v124 ~= nil then fn37(tbl18, v123, v124) end end) v121:Connect(v117:GetPropertyChangedSignal({ "BulletTracers", "Enabled" }), function(arg3) v122:SetEnabled(arg3) end) v122:SetEnabled(v117.Data.BulletTracers.Enabled) v121:Add(v122) v121:Add(function() for _, v123 in tbl18, nil, nil do v123:Destroy() end table.clear(tbl18) end) local tbl19 = { _trove = v121, _tracers = tbl18, _lastColor = nil } setmetatable(tbl19, index2) return tbl19 end index2.Update = function(I,W)local N=I._tracers;if#N==0 then return;end;local P= data .BulletTracers.Color;local l=P~=I._lastColor;I._lastColor=P;for a=#N,1,-1 do I=N[a];if l then I:SetColor(P);end;if I:Step(W)then I:Destroy();local l_83=#N;N[a]=N[l_83];N[l_83]=nil;end;end;end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dA = function() local da = tbl17.cache.dA if not da then local da2 = { c = fn35() } tbl17.cache.dA = da2 da = da2 end return da.c end end do -- dB local function fn35() tbl17.cF() local v115 = tbl17.g() local v116 = tbl17.k() tbl17.bJ() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local characterAppearances = v116.new("character_appearances") local tbl18 = { _trove = characterAppearances, _stateTroveByFighter = {}, _createdEntryByFighter = {}, _decoratedModelByFighter = {}, _decoratorFactory = arg2, Decorated = characterAppearances:Add(v115.new()), } setmetatable(tbl18, index2) local function fn36(arg3) tbl18:_BindToState(arg3) end local function fn37(arg3) tbl18:_CleanupState(arg3) end characterAppearances:Add(arg:ObserveAllStates(fn36, fn37, fn36, fn37)) return tbl18 end index2._BindToState = function(arg, arg2) local characterAppearances = v116.new("character_appearances") arg._stateTroveByFighter[arg2] = characterAppearances local function fn36() arg:_ResettleFighter(arg2) end local v117 = characterAppearances:Extend() local decoratorFactory = arg._decoratorFactory local function fn37(arg3) if decoratorFactory == nil then arg._decoratedModelByFighter[arg2] = arg3 arg.Decorated:Fire(arg2, arg3) return end local tbl18 = { Decorator = v117:Add(decoratorFactory(arg2.Player, arg3, fn36)), Model = arg3, Trove = v117 } arg._createdEntryByFighter[arg2] = tbl18 arg:_ApplyDecoratorAsync(arg2, tbl18) end local player = arg2.Player characterAppearances:Connect(player.CharacterAdded, fn37) characterAppearances:Connect(player.CharacterRemoving, function() arg._createdEntryByFighter[arg2] = nil arg._decoratedModelByFighter[arg2] = nil v117:Clean() end) local character = player.Character if character then fn37(character) end end index2.FindDecoratedModel = function(arg, arg2) return arg._decoratedModelByFighter[arg2] end index2._ApplyDecoratorAsync = function(arg, arg2, arg3) arg3.Trove:AddPromise(arg3.Decorator:ApplyAsync():finally(function() if arg._createdEntryByFighter[arg2] ~= arg3 then return end arg._decoratedModelByFighter[arg2] = arg3.Model arg.Decorated:Fire(arg2, arg3.Model) end)) end index2._ResettleFighter = function(arg, arg2) local v117 = arg._createdEntryByFighter[arg2] if v117 == nil then return end arg._decoratedModelByFighter[arg2] = nil v117.Decorator:Restore() arg:_ApplyDecoratorAsync(arg2, v117) end index2._CleanupState = function(arg, arg2) local v117 = arg._stateTroveByFighter[arg2] arg._stateTroveByFighter[arg2] = nil arg._createdEntryByFighter[arg2] = nil arg._decoratedModelByFighter[arg2] = nil v117:Destroy() end index2.Destroy = function(arg) for k in arg._stateTroveByFighter, nil, nil do arg:_CleanupState(k) end arg._trove:Destroy() end return index2 end tbl17.dB = function() local db = tbl17.cache.dB if not db then db = { c = fn35() } tbl17.cache.dB = db end return db.c end end do -- dC local function fn35() local v115 = tbl17.k() local index2 = {} index2.__index = index2 local function fn36(arg) for _, v116 in arg.HiddenDecals, nil, nil do v116.Decal.Transparency = v116.Transparency end table.clear(arg.HiddenDecals) if arg.DecalTrove ~= nil then arg.DecalTrove:Clean() end local part = arg.Part for _, v116 in arg.StrippedSurfaceAppearances, nil, nil do v116.Parent = part end table.clear(arg.StrippedSurfaceAppearances) end local function fn37(arg) local part = arg.Part arg.Material = part.Material arg.Color = part.Color arg.Reflectance = part.Reflectance arg.Transparency = part.Transparency if arg.IsMesh then arg.TextureId = part.TextureID end if arg.SpecialMesh ~= nil then arg.SpecialMeshTextureId = arg.SpecialMesh.TextureId end arg.IsCaptured = true end index2.new = function(arg) local tbl18 = { _trove = v115.new("AppearanceOverride"), _root = arg, _snapshotByPart = {}, _strippedClothingSet = {}, _clothingTrove = nil, _isClothingStripped = v86[153], _spec = nil, _isWriting = false, } setmetatable(tbl18, index2) if arg:IsA("BasePart") then tbl18:_TrackPart(arg) end for _, v116 in arg:QueryDescendants("BasePart") do tbl18:_TrackPart(v116) end tbl18._trove:Connect(arg.DescendantAdded, function(arg2) tbl18:_OnDescendantAdded(arg2) end) return tbl18 end index2._OnDescendantAdded = function(arg, arg2) if arg2:IsA("BasePart") then arg:_TrackPart(arg2) return end local spec = arg._spec if arg._isWriting or spec == nil or not spec.NullTextures then return end if arg2:IsA("Decal") or arg2:IsA("Texture") then local v116 = arg._snapshotByPart[arg2.Parent] if v116 ~= nil then arg._isWriting = true arg:_HideDecal(v116, arg2) arg._isWriting = false end return end if arg2:IsA("SurfaceAppearance") then local v116 = arg._snapshotByPart[arg2.Parent] if v116 ~= nil then arg._isWriting = v86[34] arg:_DetachSurfaceAppearance(v116, arg2) arg._isWriting = false end return end if arg2:IsA("Clothing") or arg2:IsA("ShirtGraphic") then arg._isWriting = true arg:_StashClothing(arg2) arg._isWriting = false end end index2._GetDecalTrove = function(arg, arg2) local decalTrove = arg2.DecalTrove if decalTrove == nil then local v116 = arg._trove:Extend() arg2.DecalTrove = v116 decalTrove = v116 end return decalTrove end index2._DetachSurfaceAppearance = function(arg, arg2, arg3) table.insert(arg2.StrippedSurfaceAppearances, arg3) arg3.Parent = nil arg:_GetDecalTrove(arg2):Connect(arg3.Destroying, function() local v116 = table.find(arg2.StrippedSurfaceAppearances, arg3) if v116 ~= nil then table.remove(arg2.StrippedSurfaceAppearances, v116) end end) end index2._HideDecal = function(arg, arg2, arg3) table.insert(arg2.HiddenDecals, { Decal = arg3, Transparency = arg3.Transparency }) arg3.Transparency = 1 arg:_GetDecalTrove(arg2):Connect(arg3:GetPropertyChangedSignal("Transparency"), function() if arg._isWriting or arg._spec == nil or not arg._spec.NullTextures then return end arg._isWriting = true arg3.Transparency = 1 arg._isWriting = false end) end index2._StripTextures = function(arg, arg2) for _, v116 in arg2.Part:GetDescendants() do if v116:IsA("Decal") or v116:IsA("Texture") then arg:_HideDecal(arg2, v116) elseif v116:IsA("SurfaceAppearance") then arg:_DetachSurfaceAppearance(arg2, v116) end end end index2._ApplyPart = function(arg, arg2) local spec = arg._spec if spec == nil then return end local part = arg2.Part if not arg2.IsCaptured then fn37(arg2) end arg._isWriting = v86[34] if spec.NullTextures then if arg2.IsMesh and part.TextureID ~= "" then part.TextureID = "" end if arg2.SpecialMesh ~= nil and arg2.SpecialMesh.TextureId ~= "" then arg2.SpecialMesh.TextureId = "" end if not arg2.AreTexturesStripped then arg:_StripTextures(arg2) arg2.AreTexturesStripped = true end elseif arg2.AreTexturesStripped then if arg2.IsMesh then part.TextureID = arg2.TextureId end if arg2.SpecialMesh ~= nil then arg2.SpecialMesh.TextureId = arg2.SpecialMeshTextureId end fn36(arg2) arg2.AreTexturesStripped = v86[153] end if arg2.Transparency < 1 then local material = spec.Material or arg2.Material if part.Material ~= material then part.Material = material part.CustomPhysicalProperties = arg2.PhysicalProperties end if spec.Color ~= nil and part.Color ~= spec.Color then part.Color = spec.Color end if spec.Reflectance ~= nil and part.Reflectance ~= spec.Reflectance then part.Reflectance = spec.Reflectance end if spec.Transparency ~= nil and part.Transparency ~= spec.Transparency then part.Transparency = spec.Transparency end end arg._isWriting = false end index2._StashClothing = function(arg, arg2) arg._strippedClothingSet[arg2] = true arg2.Parent = nil local clothingTrove = arg._clothingTrove if clothingTrove == nil then local v116 = arg._trove:Extend() arg._clothingTrove = v116 clothingTrove = v116 end clothingTrove:Connect(arg2.Destroying, function() arg._strippedClothingSet[arg2] = nil end) end index2._StripClothing = function(arg) arg._isWriting = true for _, v116 in arg._root:GetChildren() do if v116:IsA("Clothing") or v116:IsA("ShirtGraphic") then arg:_StashClothing(v116) end end arg._isWriting = false end index2._RestoreClothing = function(arg) arg._isWriting = true for k in arg._strippedClothingSet, nil, nil do k.Parent = arg._root end arg._isWriting = false table.clear(arg._strippedClothingSet) if arg._clothingTrove ~= nil then arg._clothingTrove:Clean() end end index2._RevertPart = function(arg, arg2) if not arg2.IsCaptured then return end local part = arg2.Part arg._isWriting = true part.Material = arg2.Material part.Color = arg2.Color part.Reflectance = arg2.Reflectance part.Transparency = arg2.Transparency if arg2.IsMesh then part.TextureID = arg2.TextureId end if arg2.SpecialMesh ~= nil then arg2.SpecialMesh.TextureId = arg2.SpecialMeshTextureId end fn36(arg2) arg._isWriting = false arg2.IsCaptured = v86[153] arg2.AreTexturesStripped = false end index2._TrackPart = function(arg, arg2) if arg._snapshotByPart[arg2] ~= nil then if arg._spec ~= nil then arg:_ApplyPart(arg._snapshotByPart[arg2]) end return end local isMeshPart = arg2:IsA("MeshPart") local specialMesh = arg2:FindFirstChildOfClass("SpecialMesh") local tbl18 = { Part = arg2, IsMesh = isMeshPart, SpecialMesh = specialMesh, PhysicalProperties = arg2.CurrentPhysicalProperties, IsCaptured = false, AreTexturesStripped = v86[153], Material = arg2.Material, Color = arg2.Color, Reflectance = arg2.Reflectance, Transparency = arg2.Transparency, TextureId = isMeshPart and arg2.TextureID or "", SpecialMeshTextureId = specialMesh ~= nil and specialMesh.TextureId or "", HiddenDecals = {}, StrippedSurfaceAppearances = {}, DecalTrove = nil, } arg._snapshotByPart[arg2] = tbl18 local function fn38(arg3, arg4) arg._trove:Connect(arg2:GetPropertyChangedSignal(arg3), function() if arg._isWriting or arg._spec == nil then return end arg4() arg:_ApplyPart(tbl18) end) end fn38("Material", function() tbl18.Material = arg2.Material end) fn38("Color", function() tbl18.Color = arg2.Color end) fn38("Reflectance", function() tbl18.Reflectance = arg2.Reflectance end) if isMeshPart then fn38("TextureID", function() tbl18.TextureId = arg2.TextureID end) end fn38("Transparency", function() tbl18.Transparency = arg2.Transparency end) if arg._spec ~= nil then arg:_ApplyPart(tbl18) end end index2.SetColor = function(arg, color) local spec = arg._spec if spec == nil then return end spec.Color = color arg._isWriting = true for _, v116 in arg._snapshotByPart, nil, nil do if not (not v116.IsCaptured or v116.Transparency >= 1) then local color2 = color ~= nil and color or v116.Color local part = v116.Part if part.Color ~= color2 then part.Color = color2 end end end arg._isWriting = v86[153] end index2.SetTransparency = function(arg, transparency) local spec = arg._spec if spec == nil then return end spec.Transparency = transparency arg._isWriting = true for _, v116 in arg._snapshotByPart, nil, nil do if not (not v116.IsCaptured or v116.Transparency >= 1) then local transparency2 = transparency ~= nil and transparency or v116.Transparency local part = v116.Part if part.Transparency ~= transparency2 then part.Transparency = transparency2 end end end arg._isWriting = v86[153] end index2.SetSpec = function(arg, spec) arg._spec = spec if spec ~= nil then for _, v116 in arg._snapshotByPart, nil, nil do arg:_ApplyPart(v116) end if arg._root:IsA("Model") then if spec.NullTextures then if not arg._isClothingStripped then arg:_StripClothing() arg._isClothingStripped = true end else arg:_RestoreClothing() arg._isClothingStripped = v86[153] end end return end for _, v116 in arg._snapshotByPart, nil, nil do arg:_RevertPart(v116) end arg:_RestoreClothing() arg._isClothingStripped = false end index2.GetRoot = function(arg) return arg._root end index2.Destroy = function(arg, arg2) if arg2 then arg:SetSpec(nil) end arg._trove:Destroy() end return index2 end tbl17.dC = function() local dc = tbl17.cache.dC if not dc then local dc2 = { c = fn35() } tbl17.cache.dC = dc2 dc = dc2 end return dc.c end end do -- dD local function fn35() tbl17.aM() local v115 = tbl17.a() local v116 = tbl17.b3() local clientFighterCharacterVisibility = tbl17.aS().ClientFighterCharacterVisibility tbl17.cX() local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _isHookLoaded = false, _mode = "Default" }, index2) end index2.SetContext = function(arg, innerContext) arg._innerContext = innerContext end index2._GetVerifyMethod = function(arg) local verifyMethod = arg._verifyMethod if verifyMethod ~= nil then return v115.ok(verifyMethod) end local v117 = v102(clientFighterCharacterVisibility, "_Verify") if v117 == nil then return v115.err("CharacterVisibilityHook", "function_lookup", "failed to find Visibility._Verify method") end arg._verifyMethod = v117 return v115.ok(v117) end index2._LoadHook = function(arg) if arg._isHookLoaded then return arg:_GetVerifyMethod() end local v117 = arg:_GetVerifyMethod() if not v117.Ok then return v117 end local value = v117.Value v103(clientFighterCharacterVisibility, "_Verify", function(arg2, arg3, arg4) if true then local clientFighterCharacter = v102(arg2, "ClientFighterCharacter") if clientFighterCharacter == nil then return value(arg2, arg3, arg4) end local clientFighter = v102(clientFighterCharacter, "ClientFighter") if not (clientFighter ~= nil and v102(clientFighter, "IsLocalPlayer")) then return value(arg2, arg3, arg4) end local innerContext = arg._innerContext if innerContext == nil then return value(arg2, arg3, arg4) end if innerContext.FighterState.EnvironmentId == nil then return value(arg2, arg3, arg4) end local mode = arg._mode if mode == "Shown" then arg3 = v86[34] arg4 = false elseif mode == "Hidden" then arg4 = true arg3 = true end local v118 = table.pack(value(arg2, arg3, arg4)) if mode == "Hidden" then clientFighterCharacter:SetHidden(false) end return (unpack(v118, v86[63], v118.n)) end return nil -- (anti-tamper freeze trap removed) end) arg._isHookLoaded = v86[34] return v115.ok(value) end index2._RevertHook = function(arg) if not arg._isHookLoaded then return end arg._isHookLoaded = false v103(clientFighterCharacterVisibility, "_Verify", arg._verifyMethod) end local function fn36(arg) return (v102(arg, "Visibility")) end index2.RevertState = function(arg) if arg._mode == "Default" then return end local innerContext = arg._innerContext if innerContext == nil then return end local entity = v102(innerContext.FighterState.Inner, "Entity") if entity == nil then return end local v117 = fn36(entity) if v117 == nil then return end local v118 = arg:_GetVerifyMethod() if not v118.Ok then return end v116(v118.Value, v117, true, nil) end index2.SetMode = function(arg, mode) if mode == arg._mode then return v115.VoidOk end local v117 = arg:_LoadHook() if not v117.Ok then return v117 end arg._mode = mode local innerContext = arg._innerContext if innerContext == nil then return v115.VoidOk end local fighterState = innerContext.FighterState if fighterState.EnvironmentId == nil then return v115.VoidOk end local entity = v102(fighterState.Inner, "Entity") if entity == nil then return v115.VoidOk end local v118 = fn36(entity) if v118 == nil then return v115.VoidOk end local value = v117.Value if mode == "Shown" then v116(value, v118, v86[34], false) elseif mode == "Hidden" then v116(value, v118, true, true) entity:SetHidden(false) else v116(value, v118, v86[34], nil) end return v115.VoidOk end index2.RunWhileVisible = function(arg, arg2) local innerContext = arg._innerContext if innerContext == nil then arg2() return v115.VoidOk end local entity = v102(innerContext.FighterState.Inner, "Entity") if entity == nil then arg2() return v115.VoidOk end local v117 = fn36(entity) if v117 == nil then arg2() return v115.VoidOk end local v118 = arg:_GetVerifyMethod() if not v118.Ok then return v118 end local value = v118.Value v116(value, v117, v86[34], false) arg2() v116(value, v117, v86[34], nil) return v115.VoidOk end index2.IsEntityReady = function(arg) local innerContext = arg._innerContext if innerContext == nil then return false end local entity = v102(innerContext.FighterState.Inner, "Entity") if entity == nil then return false end return fn36(entity) ~= nil end index2.Destroy = function(arg) arg:RevertState() arg:_RevertHook() end return index2 end tbl17.dD = function() local dd = tbl17.cache.dD if not dd then local dd2 = { c = fn35() } tbl17.cache.dD = dd2 dd = dd2 end return dd.c end end do -- dE local function fn35() return function(arg) local archivable = arg.Archivable arg.Archivable = v86[34] local clone = arg:Clone() arg.Archivable = archivable return clone end end tbl17.dE = function() local de = tbl17.cache.dE if not de then de = { c = fn35() } tbl17.cache.dE = de end return de.c end end do -- dF local function fn35() local v115 = tbl17.k() local v116 = tbl17.dE() local tbl18 = { LocalScript = true, Script = true, ModuleScript = true, Animator = true, BillboardGui = v86[34], SurfaceGui = true, Beam = true, Trail = true, Fire = v86[34], Sparkles = true, ForceField = true, Smoke = true, Light = true, } local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local v117 = (arg2 or v116)(arg) if v117 == nil then return nil end local tbl19 = {} for _, v118 in v117:GetDescendants() do if tbl18[v118.ClassName] then v118:Destroy() elseif v118:IsA("BasePart") and v118.Transparency < 1 then v118.Transparency = 0 elseif v118:IsA("Motor6D") then tbl19[v118.Name] = v118 elseif v118:IsA("ParticleEmitter") then v118:Clear() v118:Destroy() end end local characterClone = v115.new("character_clone") characterClone:Add(v117) return setmetatable({ _trove = characterClone, _model = v117, _cloneMotorsByName = tbl19, _mirror = nil }, index2) end index2.GetModel = function(arg) return arg._model end index2.SetParent = function(arg, parent) arg._model.Parent = parent end index2.EnableMotorMirroring = function(arg, arg2) local humanoidRootPart = arg._model:FindFirstChild("HumanoidRootPart") if humanoidRootPart == nil then return end humanoidRootPart.Anchored = v86[34] local cloneMotorsByName = arg._cloneMotorsByName or {} local tbl19 = {} local tbl20 = {} for _, v117 in arg2:GetDescendants() do if v117:IsA("Motor6D") then local v118 = cloneMotorsByName[v117.Name] if v118 ~= nil then table.insert(tbl19, v117) table.insert(tbl20, v118) end end end arg._mirror = { RealMotors = tbl19, CloneMotors = tbl20, CloneRoot = humanoidRootPart } arg._cloneMotorsByName = nil end index2.PreRenderUpdate = function(l,I)local W=l._mirror;if W==nil then return;end;if I~=nil then W.CloneRoot.CFrame=I;end;I,l=W.RealMotors,W.CloneMotors;for N,P in I,nil,nil do W=l[N];W.C0=P.C0;W.C1=P.C1;W.Transform=P.Transform;end;end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dF = function() local df = tbl17.cache.dF if not df then local df2 = { c = fn35() } tbl17.cache.dF = df2 df = df2 end return df.c end end do -- dG local function fn35() local v115 = tbl17.ay() local tbl18 = { "Head", "UpperTorso", "LowerTorso", "LeftFoot", "LeftLowerLeg", "LeftUpperLeg", "RightFoot", "RightLowerLeg", "RightUpperLeg", "LeftHand", "LeftLowerArm", "LeftUpperArm", "RightHand", "RightLowerArm", "RightUpperArm", } local function fn36(arg, arg2, arg3) return v115.new(function(arg4, arg5) local v116 = arg:WaitForChild(arg2, arg3) if v116 then arg4(v116) else local v117 = tostring arg5(string.format("%s: timed out waiting for %s", tostring(arg:GetFullName()), v117(arg2))) end end) end return function(arg, arg2) local tbl19 = { fn36(arg, "HumanoidRootPart", arg2), fn36(arg, "Humanoid", arg2) } for _, v116 in tbl18, nil, nil do table.insert(tbl19, fn36(arg, v116, arg2)) end return v115.all(tbl19) end end tbl17.dG = function() local dg = tbl17.cache.dG if not dg then local dg2 = { c = fn35() } tbl17.cache.dG = dg2 dg = dg2 end return dg.c end end do -- dH local function fn35() local v115 = tbl17.dF() tbl17.dD() local v116 = tbl17.ay() local v117 = tbl17.k() local v118 = tbl17.dE() local v119 = tbl17.dG() local v120 = cloneref(game:GetService("HttpService")) local v121 = cloneref(game:GetService("CollectionService")) local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) return setmetatable({ _trove = v117.new("local_body_view.Replica"), _visibilityHook = arg, _realModel = arg3, _visible = arg2, _clone = nil, }, index2) end index2.InitializeAsync = function(arg) local realModel = arg._realModel return v119(realModel, 10):andThen(function() return arg:_CreateAsync(realModel) end) end index2._CreateAsync = function(arg, arg2) return v116.new(function(arg3, arg4) local v122 = v115.new(arg2, function(arg5) local v122 = nil arg._visibilityHook:RunWhileVisible(function() v122 = v118(arg5) end) return v122 end) if v122 == nil then arg4("character clone failed") return end local model = v122:GetModel() local humanoid = model:FindFirstChild("Humanoid") if humanoid == nil then v122:Destroy() arg4("Humanoid missing from cloned model") return end humanoid.Health = math.huge local humanoidRootPart = model:FindFirstChild("HumanoidRootPart") if humanoidRootPart == nil then v122:Destroy() arg4("HumanoidRootPart missing from cloned model") return end humanoidRootPart.CFrame = CFrame.identity model.Name = v120:GenerateGUID(v86[153]) v121:RemoveTag(model, "Entity") v122:EnableMotorMirroring(arg2) arg._trove:Add(v122) arg._clone = v122 if arg._visible then v122:SetParent(workspace) end arg3(model) end) end index2.GetModel = function(arg) local clone = arg._clone return clone ~= nil and clone:GetModel() or nil end index2.SetVisible = function(arg, visible) arg._visible = visible local clone = arg._clone if clone == nil then return end clone:SetParent(visible and workspace or nil) end index2.PreRenderUpdate = function(arg, arg2) if not arg._visible then return end local clone = arg._clone if clone == nil then return end clone:PreRenderUpdate(arg2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dH = function() local dh = tbl17.cache.dH if not dh then dh = { c = fn35() } tbl17.cache.dH = dh end return dh.c end end do -- dI local function fn35() tbl17.aO() return function(arg) local clientItem = v102(arg, "ClientItem") if clientItem == nil then return false end local clientFighter = v102(clientItem, "ClientFighter") if clientFighter == nil then return false end return v102(clientFighter, "IsLocalPlayer") == true end end tbl17.dI = function() local di = tbl17.cache.dI if not di then di = { c = fn35() } tbl17.cache.dI = di end return di.c end end do -- dJ local function fn35() local v115 = tbl17.a() local clientViewModel = tbl17.aS().ClientViewModel local v116 = tbl17.dI() local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _isHookLoaded = false, _active = false }, index2) end index2._Load = function(arg) if arg._isHookLoaded then return v115.VoidOk end local update = v102(clientViewModel, "Update") if update == nil then return v115.err("ViewModelRenderHook", "function_lookup", "ClientViewModel.Update not found") end arg._updateMethod = update v103(clientViewModel, "Update", function(arg2, arg3, arg4, ...) if not arg._active or type(arg4) ~= "table" or not v116(arg2) then return update(arg2, arg3, arg4, ...) end local isActuallyFirstPerson = v102(arg4, "IsActuallyFirstPerson") v103(arg4, "IsActuallyFirstPerson", false) local v117, v118 = v107(update, arg2, arg3, arg4, ...) v103(arg4, "IsActuallyFirstPerson", isActuallyFirstPerson) if not v117 then error(v118, 2) end return v118 end) arg._isHookLoaded = true return v115.VoidOk end index2.SetActive = function(arg, active) if active and not arg._isHookLoaded then local v117 = arg:_Load() if not v117.Ok then return v117 end end arg._active = active return v115.VoidOk end index2.Destroy = function(arg) if not arg._isHookLoaded then return end arg._isHookLoaded = v86[153] v103(clientViewModel, "Update", arg._updateMethod) end return index2 end tbl17.dJ = function() local dj = tbl17.cache.dJ if not dj then local dj2 = { c = fn35() } tbl17.cache.dJ = dj2 dj = dj2 end return dj.c end end do -- dK local function fn35() tbl17.dB() local v115 = tbl17.dD() tbl17.cF() tbl17.cX() local v116 = tbl17.dH() local v117 = tbl17.g() local v118 = tbl17.k() local v119 = tbl17.dJ() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local localBodyView = v118.new("local_body_view") return setmetatable({ _trove = localBodyView, _playerContext = arg, _characterAppearances = arg2, _visibilityHook = localBodyView:Add(v115.new()), _viewModelRenderHook = localBodyView:Add(v119.new()), _isInitialized = v86[153], _bodyMode = "Default", _isReplicaVisible = false, _innerContext = nil, _replica = nil, _buildTrove = nil, ReplicaModelChanged = localBodyView:Add(v117.new()), }, index2) end index2._Initialize = function(arg) if arg._isInitialized then return end arg._isInitialized = true arg._trove:Add(arg._playerContext:ObserveContext("local_body_view", function(arg2, arg3) arg:_OnContextAdded(arg2, arg3) end)) arg._trove:Connect(arg._playerContext.ContextRemoved, function() arg:_OnContextRemoved() end) end index2._OnContextRemoved = function(arg) arg._innerContext = nil arg._bodyMode = "Default" arg._viewModelRenderHook:SetActive(v86[153]) arg._visibilityHook:RevertState() arg._visibilityHook:SetContext(nil) arg:_ClearReplica() end index2._OnContextAdded = function(arg, innerContext, arg2) arg._innerContext = innerContext arg._visibilityHook:SetContext(innerContext) local fighterState = innerContext.FighterState arg2:Connect(arg._characterAppearances.Decorated, function(arg3, arg4) if arg3 ~= fighterState then return end arg:_BuildReplica(arg4) end) arg2:Connect(fighterState.EntityAdded, function() local v120 = arg._characterAppearances:FindDecoratedModel(fighterState) if v120 ~= nil then arg:_BuildReplica(v120) end end) arg2:Connect(fighterState.EntityRemoved, function() arg:_ClearReplica() end) arg2:Connect(fighterState.Character.Died, function() arg:_ClearReplica() end) arg2:Connect(fighterState.EnvironmentIdChanged, function() local replica = arg._replica if replica ~= nil then replica:SetVisible(arg:_ShouldShowReplica()) end end) local v120 = arg._characterAppearances:FindDecoratedModel(fighterState) if v120 ~= nil then arg:_BuildReplica(v120) end end index2._BuildReplica = function(arg, arg2) if not arg._visibilityHook:IsEntityReady() then return end arg:_ClearReplica() local v120 = arg._trove:Extend() arg._buildTrove = v120 local v121 = v120:Add(v116.new(arg._visibilityHook, arg:_ShouldShowReplica(), arg2)) v120:AddPromise(v121:InitializeAsync():andThen(function(arg3) arg._replica = v121 v121:SetVisible(arg:_ShouldShowReplica()) arg.ReplicaModelChanged:Fire(arg3) end)) end index2._ClearReplica = function(arg) local buildTrove = arg._buildTrove if buildTrove == nil then return end arg._buildTrove = nil local flag19 = arg._replica ~= nil arg._replica = nil arg._trove:Remove(buildTrove) if flag19 then arg.ReplicaModelChanged:Fire(nil) end end index2._ShouldShowReplica = function(arg) local innerContext = arg._innerContext if innerContext == nil then return false end return innerContext.FighterState.EnvironmentId ~= nil and arg._isReplicaVisible end index2.GetReplicaModel = function(arg) local replica = arg._replica if replica == nil then return nil end return replica:GetModel() end index2.IsLocalViewModelThirdPerson = function(arg) return arg._bodyMode == "Native" end index2.Update = function(arg) local innerContext = arg._innerContext if innerContext == nil then return end local replica = arg._replica if replica == nil then return end local serverCFrame = innerContext.CharacterController:GetServerCFrame() if serverCFrame == nil then return end replica:PreRenderUpdate(serverCFrame) end index2.SetBodyMode = function(arg, bodyMode) if arg._bodyMode == bodyMode then return end arg._bodyMode = bodyMode arg:_Initialize() arg._viewModelRenderHook:SetActive(bodyMode == "Native") if bodyMode == "Replica" then arg._isReplicaVisible = true arg._visibilityHook:SetMode("Hidden") elseif bodyMode == "Native" then arg._isReplicaVisible = v86[153] arg._visibilityHook:SetMode("Shown") else arg._isReplicaVisible = false arg._visibilityHook:SetMode("Default") end local replica = arg._replica if replica ~= nil then replica:SetVisible(arg:_ShouldShowReplica()) end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dK = function() local dk = tbl17.cache.dK if not dk then dk = { c = fn35() } tbl17.cache.dK = dk end return dk.c end end do -- dL local function fn35() local v115 = tbl17.dC() tbl17.cr() tbl17.dK() tbl17.cX() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _trove = v116.new("local_body_appearance"), _playerContext = arg, _localBodyView = arg2, _isInitialized = false, } setmetatable(tbl18, index2) return tbl18 end index2._Initialize = function(arg) if arg._isInitialized then return end arg._isInitialized = true arg._trove:Add(arg._playerContext:ObserveContext("local_body_appearance", function(arg2, arg3) arg:_OnContextAdded(arg2, arg3) end)) arg._trove:Connect(arg._playerContext.ContextRemoved, function() local realMaterial = arg._realMaterial if realMaterial ~= nil then arg._realMaterial = nil realMaterial:Destroy(v86[34]) end arg:_DropReplicaMaterial() end) arg._trove:Connect(arg._localBodyView.ReplicaModelChanged, function(arg2) arg:_OnReplicaModelChanged(arg2) end) local replicaModel = arg._localBodyView:GetReplicaModel() if replicaModel ~= nil then arg:_OnReplicaModelChanged(replicaModel) end end index2._ShouldPaintRealDirectly = function(arg) local inner = arg._playerContext.Inner return inner ~= nil and inner.FighterState.EnvironmentId == nil end index2._OnContextAdded = function(arg, arg2, arg3) local function fn36(arg4) arg._realMaterial = v115.new(arg4.Model) if arg._replicaMaterial ~= nil or arg:_ShouldPaintRealDirectly() then arg:_ApplyToReal() end end local function fn37() local realMaterial = arg._realMaterial if realMaterial ~= nil then arg._realMaterial = nil realMaterial:Destroy(false) end end local character = arg2.FighterState.Character arg3:Connect(character.Created, fn36) arg3:Connect(character.Died, fn37) arg3:Connect(arg2.FighterState.EnvironmentIdChanged, function() if arg:_ShouldPaintRealDirectly() then arg:_ApplyToReal() return end if arg._replicaMaterial == nil then local realMaterial = arg._realMaterial if realMaterial ~= nil then realMaterial:SetSpec(nil) end end end) local state = character.State if state.Alive then fn36(state) end end index2._OnReplicaModelChanged = function(arg, arg2) arg:_DropReplicaMaterial() if arg2 == nil then if arg:_ShouldPaintRealDirectly() then return end local realMaterial = arg._realMaterial if realMaterial ~= nil then realMaterial:SetSpec(nil) end return end arg._replicaMaterial = v115.new(arg2) arg:_ApplyToReplica() arg:_ApplyToReal() end index2._DropReplicaMaterial = function(arg) local replicaMaterial = arg._replicaMaterial if replicaMaterial ~= nil then arg._replicaMaterial = nil replicaMaterial:Destroy(false) end end index2._ApplyToReal = function(arg) local realMaterial = arg._realMaterial if realMaterial == nil then return end realMaterial:SetSpec(arg._materialSpec) end index2._ApplyToReplica = function(arg) local replicaMaterial = arg._replicaMaterial if replicaMaterial == nil then return end replicaMaterial:SetSpec(arg._materialSpec) end index2.SetMaterial = function(arg, materialSpec) arg._materialSpec = materialSpec if materialSpec == nil and not arg._isInitialized then return end arg:_Initialize() arg:_ApplyToReplica() if arg._replicaMaterial ~= nil or arg:_ShouldPaintRealDirectly() then arg:_ApplyToReal() end end index2.SetColor = function(arg, color) local materialSpec = arg._materialSpec if materialSpec == nil then return end materialSpec.Color = color local realMaterial = arg._realMaterial if realMaterial ~= nil then realMaterial:SetColor(color) end local replicaMaterial = arg._replicaMaterial if replicaMaterial ~= nil then replicaMaterial:SetColor(color) end end index2.SetTransparency = function(arg, transparency) local materialSpec = arg._materialSpec if materialSpec == nil then return end materialSpec.Transparency = transparency local realMaterial = arg._realMaterial if realMaterial ~= nil then realMaterial:SetTransparency(transparency) end local replicaMaterial = arg._replicaMaterial if replicaMaterial ~= nil then replicaMaterial:SetTransparency(transparency) end end index2.Destroy = function(arg) local realMaterial = arg._realMaterial if realMaterial ~= nil then arg._realMaterial = nil realMaterial:Destroy(true) end arg._trove:Destroy() end return index2 end tbl17.dL = function() local dl = tbl17.cache.dL if not dl then dl = { c = fn35() } tbl17.cache.dL = dl end return dl.c end end do -- dM local function fn35() local v115 = tbl17.bG() tbl17.dL() local v116 = tbl17.a8() local v117 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v117.new("character_chams"), _localBodyAppearance = arg } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) for _, v118 in { "Enabled", "Material", "StripTextures" }, nil, nil do arg._trove:Connect(v115:GetPropertyChangedSignal({ "Chams", "Character", v118 }), function() arg:_Sync() end) end arg._trove:Connect(v115:GetPropertyChangedSignal({ "Chams", "Character", "Color" }), function() if v115.Data.Chams.Character.Enabled then arg._localBodyAppearance:SetColor(v115.Data.Chams.Character.Color) end end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "Chams", "Character", "Transparency" }), function() if v115.Data.Chams.Character.Enabled then arg._localBodyAppearance:SetTransparency(v115.Data.Chams.Character.Transparency) end end) arg:_Sync() end index2._Sync = function(arg) local character = v115.Data.Chams.Character if not character.Enabled then arg._localBodyAppearance:SetMaterial(nil) return end local v118 = nil if character.Material ~= "Original" then v118 = v116.Map[character.Material] end arg._localBodyAppearance:SetMaterial({ Material = v118, Color = character.Color, Transparency = character.Transparency, NullTextures = character.StripTextures }) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dM = function() local dm = tbl17.cache.dM if not dm then dm = { c = fn35() } tbl17.cache.dM = dm end return dm.c end end do -- dN local function fn35() return { opposite = function(arg) local v115, v116, v117 = arg:ToHSV() return Color3.fromHSV((v115 + v86[101]) % 1, v116, v117) end, rainbow = function(arg) return Color3.fromHSV(arg * 0.2 % 1, 1, 1) end, linear = function(arg, arg2, arg3) local n = arg3 * 0.25 % v86[63] if n > 0.5 then return arg2:Lerp(arg, (n - 0.5) * 2) end return arg:Lerp(arg2, n * v86[56]) end, oscillating = function(arg, arg2, arg3) local n = arg3 * 0.25 % 1 if n > v86[101] then return arg2:Lerp(arg, math.sin((n - 0.5) * 3.1415926535897931)) end return arg:Lerp(arg2, math.sin(n * 3.1415926535897931)) end, strobe = function(arg, arg2, arg3) if arg3 * 0.25 % v86[63] > 0.5 then return arg2 end return arg end, sawtooth = function(arg, arg2, arg3) return arg:Lerp(arg2, arg3 * 0.25 % 1) end, breathing = function(arg, arg2, arg3) local v115 = v86[101] return arg + (arg2 - arg) * (math.sin(arg3 * 0.5 * 3.1415926535897931 * 2) + 1) * v115 end, } end tbl17.dN = function() local dn = tbl17.cache.dN if not dn then local dn2 = { c = fn35() } tbl17.cache.dN = dn2 dn = dn2 end return dn.c end end do -- dO local function fn35() local v115 = tbl17.dN() local v116 = tbl17.k() local function fn36(arg, arg2) if arg == arg2 then return v86[34] end if arg == nil or arg2 == nil or #arg ~= #arg2 then return false end for i = 1, #arg do if arg[i] ~= arg2[i] then return false end end return true end local function fn37(arg, arg2) arg.RevertColor(arg2.ColorPath) if arg2.TransparencyPath ~= nil then arg.RevertTransparency(arg2.TransparencyPath) end end local tbl18 = { None = v86[75], Rainbow = "Rainbow", Breathing = "Breathing" } local index2 = {} index2.__index = index2 index2.ParseMode = function(arg) return type(arg) == "string" and tbl18[arg] or "None" end index2.new = function(arg) return setmetatable({ _trove = v116.new("ColorAnimator"), _callbacks = arg, _entryByColorPathKey = {} }, index2) end index2.SetEntry = function(arg, arg2, transparencyPath, arg3) local str7 = table.concat(arg2, "/") local mode = arg3.Mode local flag19 = mode == "Breathing" and transparencyPath == nil and v86[75] or mode local v117 = arg._entryByColorPathKey[str7] if flag19 == "None" then if v117 ~= nil then arg._entryByColorPathKey[str7] = nil fn37(arg._callbacks, v117) end return end if v117 ~= nil and v117.Mode == flag19 then v117.Speed = arg3.Speed if not fn36(v117.TransparencyPath, transparencyPath) then if v117.TransparencyPath ~= nil then arg._callbacks.RevertTransparency(v117.TransparencyPath) end v117.TransparencyPath = transparencyPath end v117.BreathingMin = arg3.BreathingMin or v117.BreathingMin v117.BreathingMax = arg3.BreathingMax or v117.BreathingMax return end if v117 ~= nil then fn37(arg._callbacks, v117) else arg._callbacks.RevertColor(arg2) if transparencyPath ~= nil then arg._callbacks.RevertTransparency(transparencyPath) end end arg._entryByColorPathKey[str7] = { ColorPath = arg2, TransparencyPath = transparencyPath, Mode = flag19, Speed = arg3.Speed, BreathingMin = arg3.BreathingMin or 0, BreathingMax = arg3.BreathingMax or 1, } end index2.Update = function(arg) if next(arg._entryByColorPathKey) == nil then return end local now2 = os.clock() for _, v117 in arg._entryByColorPathKey, nil, nil do local n = now2 * v117.Speed if v117.Mode == "Rainbow" then arg._callbacks.WriteColor(v117.ColorPath, v115.rainbow(n)) elseif v117.Mode == "Breathing" and v117.TransparencyPath ~= nil then arg._callbacks.WriteTransparency(v117.TransparencyPath, v115.breathing(v117.BreathingMin, v117.BreathingMax, n)) end end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.dO = function() local do_ = tbl17.cache.dO if not do_ then local do_2 = { c = fn35() } tbl17.cache.dO = do_2 do_ = do_2 end return do_.c end end do -- dP local function fn35() return function(arg, arg2) if type(arg2) == "string" then return v102(arg, arg2) end for _, v115 in arg2, nil, nil do arg = v102(arg, v115) end return arg end end tbl17.dP = function() local dp = tbl17.cache.dP if not dp then dp = { c = fn35() } tbl17.cache.dP = dp end return dp.c end end do -- dQ local function fn35() return function(arg) local v115 = getmetatable(arg) if v115 == nil then return end local v116 = v102(v115, "__index") if type(v116) ~= "table" then return end local fire = v102(v116, "Fire") if fire == nil then return end coroutine.wrap(fire)(arg) end end tbl17.dQ = function() local dq = tbl17.cache.dQ if not dq then dq = { c = fn35() } tbl17.cache.dQ = dq end return dq.c end end do -- dR local function fn35() local v115 = tbl17.a() local v116 = tbl17.dP() local playerDataController = tbl17.aS().PlayerDataController local v117 = tbl17.ad() local v118 = tbl17.ct() local v119 = tbl17.dQ() local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _errorReporter = v117.new(), _restore = nil, _isLoaded = false, _dataAddedConnection = nil, _spoofedDataByField = {}, } setmetatable(tbl18, index2) return tbl18 end index2._Initialize = function(arg) if arg._isLoaded then return end local function fn36(arg2) local data = v102(arg2, "Data") if data == nil then arg._errorReporter:Report(v115.err("DataHook", "data_lookup", "CurrentData.Data unavailable").Error) return end arg:_Load(arg2, data) end local playerDataAdded = v102(playerDataController, "PlayerDataAdded") if playerDataAdded == nil then arg._errorReporter:Report(v115.err("DataHook", "signal_lookup", "PlayerDataAdded signal unavailable").Error) return end arg._dataAddedConnection = v118(playerDataAdded, function() local currentData = v102(playerDataController, "CurrentData") if currentData ~= nil then fn36(currentData) end end) arg._isLoaded = true local currentData = v102(playerDataController, "CurrentData") if currentData ~= nil then fn36(currentData) end end index2._Disconnect = function(arg) local dataAddedConnection = arg._dataAddedConnection if dataAddedConnection == nil then return end arg._dataAddedConnection = nil dataAddedConnection:Disconnect() end index2._Load = function(arg, arg2, arg3) local restore = arg._restore if restore ~= nil then if restore.Current == arg2 then return end arg:_Revert() end v103(arg2, "Data", setmetatable({}, { __index = function(_, key) local spoofed = arg._spoofedDataByField[key] if type(spoofed) == "function" then return spoofed() end if spoofed ~= nil then return spoofed end return v102(arg3, key) end, __newindex = function(arg4, arg5, arg6) v103(arg3, arg5, arg6) end, })) arg._restore = { Current = arg2, Inner = arg3 } end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil v103(restore.Current, "Data", restore.Inner) end index2.Set = function(arg, arg2, arg3) arg._spoofedDataByField[arg2] = arg3 arg:_Initialize() end index2.Unset = function(arg, arg2) arg._spoofedDataByField[arg2] = nil end index2.GetOriginal = function(arg, arg2) local restore = arg._restore if restore ~= nil then return v102(restore.Inner, arg2) end return (v116(playerDataController, { "CurrentData", "Data", arg2 })) end index2.TriggerDataChangedSignal = function(arg, arg2) local restore = arg._restore local currentData = v102(playerDataController, "CurrentData") if restore ~= nil then currentData = restore.Current end if currentData == nil then return end local v120 = v116(currentData, { "_value_changed_events", arg2 }) if v120 ~= nil then v119(v120) end end index2.Destroy = function(arg) arg._spoofedDataByField = {} arg:_Disconnect() arg:_Revert() arg._errorReporter:Destroy() end return index2 end tbl17.dR = function() local dr = tbl17.cache.dR if not dr then local dr2 = { c = fn35() } tbl17.cache.dR = dr2 dr = dr2 end return dr.c end end do -- dS local function fn35() tbl17.cr() tbl17.aN() local mechanicsController = tbl17.aS().MechanicsController tbl17.cX() local v115 = tbl17.ay() local v116 = tbl17.g() local v117 = tbl17.k() local v118 = tbl17.b3() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local function fn36() return v102(mechanicsController, "_quick_attack_down_starts").Melee end local index2 = {} index2.__index = index2 index2.new = function(arg) local EmoteCancellation = v117.new("cosmetics.EmoteCancellation") local tbl18 = { _trove = EmoteCancellation, Cancel = EmoteCancellation:Add(v116.new()) } setmetatable(tbl18, index2) EmoteCancellation:Add(arg:ObserveContext("cosmetics.EmoteCancellation", function(arg2, arg3) local character = arg2.FighterState.Character arg3:Connect(character.Created, function(aliveState) tbl18._aliveState = aliveState end) arg3:Connect(character.Died, function() tbl18:_CancelPending() tbl18._activeEmote = nil end) local state = character.State if state.Alive then tbl18._aliveState = state end end)) EmoteCancellation:Connect(arg.ContextRemoved, function() tbl18:_CancelPending() tbl18._aliveState = nil tbl18._activeEmote = nil end) return tbl18 end index2.RecordEmote = function(arg, arg2) local aliveState = arg._aliveState if aliveState == nil then return end arg:_CancelPending() arg._activeEmote = { Entity = arg2, Origin = aliveState.RootPart.Position, QuickMeleeAt = fn36() } end index2.PreRender = function(arg) local aliveState = arg._aliveState if aliveState == nil then return end local activeEmote = arg._activeEmote if activeEmote == nil then return end local flag19 = (aliveState.RootPart.Position - activeEmote.Origin).Magnitude >= 4 local isCrouching = v102(mechanicsController, "IsCrouching") local quickMeleeAt = activeEmote.QuickMeleeAt local flag20 = fn36() ~= quickMeleeAt if not flag19 and not isCrouching and not flag20 then return end arg._activeEmote = nil local entity = activeEmote.Entity arg._pendingCancel = v115.delay(localPlayer:GetNetworkPing()):andThen(function() v118(v102(getmetatable(getmetatable(entity).__index).__index, "CancelEmote"), entity, nil) end) end index2._CancelPending = function(arg) local pendingCancel = arg._pendingCancel if pendingCancel == nil then return end arg._pendingCancel = nil pendingCancel:cancel() end index2.Destroy = function(arg) arg:_CancelPending() arg._trove:Destroy() end return index2 end tbl17.dS = function() local ds = tbl17.cache.dS if not ds then ds = { c = fn35() } tbl17.cache.dS = ds end return ds.c end end do -- dT local function fn35() local function fn36(arg, arg2) return arg.Priority > arg2.Priority end local tbl18 tbl18 = { getOrCreateLayer = function(arg, arg2, arg3) local v115 = arg[arg2] if v115 == nil then v115 = arg3() arg[arg2] = v115 end return v115 end, removeLayerIfEmpty = function(arg, arg2, arg3) local v115 = arg[arg2] if v115 == nil or not arg3(v115) then return false end arg[arg2] = nil return v86[34] end, resolveHighestPriority = function(arg, arg2, arg3) local v115 = nil local v116 = nil for k, v117 in arg, nil, nil do if not (arg3 ~= nil and not arg3(k)) then local v118 = arg2(v117) if v118 ~= nil and (v115 == nil or k > v115) then v115 = k v116 = v118 end end end return v115, v116 end, exportLayers = function(arg, arg2, arg3) local tbl19 = {} for k, v115 in arg, nil, nil do if not arg2(v115) then table.insert(tbl19, arg3(k, v115)) end end table.sort(tbl19, fn36) return tbl19 end, importLayers = function(arg, arg2, arg3, arg4) local tbl19 = {} if type(arg) ~= "table" then return tbl19 end for _, v115 in arg, nil, nil do if type(v115) == "table" then local v116, v117 = arg2(v115) if not (v116 == nil or v117 == nil or arg3(v117)) then local v118 = tbl19[v116] if v118 ~= nil and arg4 ~= nil then arg4(v118, v117) tbl18.removeLayerIfEmpty(tbl19, v116, arg3) else tbl19[v116] = v117 end end end end return tbl19 end, } return table.freeze(tbl18) end tbl17.dT = function() local dt = tbl17.cache.dT if not dt then dt = { c = fn35() } tbl17.cache.dT = dt end return dt.c end end do -- dU local function fn35() tbl17.aL() local v115 = tbl17.dT() local v116 = tbl17.g() local index2 = {} index2.__index = index2 local function fn36(arg) return next(arg) == nil end local function fn37(arg) local tbl18 = {} local tbl19 = {} for _, v117 in arg, nil, nil do for k in v117, nil, nil do tbl19[k] = true end end for k in tbl19, nil, nil do local _v117_84, v118 = v115.resolveHighestPriority(arg, function(arg2) return arg2[k] end, nil) if v118 ~= nil then tbl18[k] = v118 end end return tbl18 end index2.new = function() return setmetatable({ _layers = {}, Changed = v116.new() }, index2) end index2.Set = function(arg, arg2, arg3, arg4) local v117 = v115.getOrCreateLayer(arg._layers, arg4 or 0, function() return {} end) if v117[arg2] == arg3 then return false end v117[arg2] = arg3 arg.Changed:Fire() return v86[34] end index2.Clear = function(arg, arg2, arg3) if arg3 == nil then local flag19 = false for k, v117 in arg._layers, nil, nil do if v117[arg2] ~= nil then v117[arg2] = nil flag19 = v86[34] end v115.removeLayerIfEmpty(arg._layers, k, fn36) end if not flag19 then return false end arg.Changed:Fire() return v86[34] end local v117 = arg._layers[arg3] if v117 == nil or v117[arg2] == nil then return false end v117[arg2] = nil v115.removeLayerIfEmpty(arg._layers, arg3, fn36) arg.Changed:Fire() return v86[34] end index2.GetAll = function(arg) return fn37(arg._layers) end index2.ImportState = function(arg, arg2) arg._layers = v115.importLayers(arg2.Layers, function(arg3) local num = tonumber(arg3.Priority) local emotes = arg3.Emotes local flag19 = num == nil if not flag19 then local v117 = v86[68] flag19 = type(emotes) ~= v117 end if flag19 then return nil, nil end return num, table.clone(emotes) end, fn36) arg.Changed:Fire() end index2.ExportState = function(arg) return { Layers = v115.exportLayers(arg._layers, fn36, function(arg2, arg3) return { Priority = arg2, Emotes = table.clone(arg3) } end), } end index2.Destroy = function(arg) arg.Changed:Destroy() end return index2 end tbl17.dU = function() local du = tbl17.cache.dU if not du then du = { c = fn35() } tbl17.cache.dU = du end return du.c end end do -- dV local function fn35() return table.freeze({ NoneCosmetic = "NONE_COSMETIC", RandomCosmetic = "RANDOM_COSMETIC" }) end tbl17.dV = function() local dv = tbl17.cache.dV if not dv then dv = { c = fn35() } tbl17.cache.dV = dv end return dv.c end end do -- dX local function fn35() return function(arg) local tbl18 = {} for _, v115 in next, arg, nil do tbl18[v115] = v86[34] end return tbl18 end end tbl17.dX = function() local dx = tbl17.cache.dX if not dx then dx = { c = fn35() } tbl17.cache.dX = dx end return dx.c end end do -- dY local function fn35() tbl17.aL() local tbl18 = { "Skin", "Wrap", "Charm", "Finisher" } local v115 = tbl17.dX()(tbl18) return table.freeze({ All = { "Skin", "Wrap", "Charm", "Finisher", "Emote" }, Item = tbl18, isItemCosmeticType = function(arg) return v115[arg] == true end, }) end tbl17.dY = function() local dy = tbl17.cache.dY if not dy then local dy2 = { c = fn35() } tbl17.cache.dY = dy2 dy = dy2 end return dy.c end end do -- dZ local function fn35() tbl17.aL() local cosmeticLibrary = tbl17.aS().CosmeticLibrary local itemLibrary = tbl17.aS().ItemLibrary local v115 = tbl17.dV() local v116 = tbl17.g() tbl17.dW() local v117 = tbl17.dY() local noneCosmetic = v115.NoneCosmetic local randomCosmetic = v115.RandomCosmetic local index2 = { _BuildAllItemNamesSet = function() local tbl18 = {} for k in v102(itemLibrary, "Items"), nil, nil do tbl18[k] = v86[34] end return tbl18 end } local v118 = index2._BuildAllItemNamesSet() index2.__index = index2 index2.new = function() return setmetatable({ _typeSet = {}, _raritySet = {}, _inventory = {}, _typeByName = {}, _namesByType = { Skin = {}, Wrap = {}, Charm = {}, Finisher = {}, Emote = {} }, _nameSetByType = { Skin = {}, Wrap = {}, Charm = {}, Finisher = {}, Emote = {} }, Built = v116.new(), }, index2) end index2.Build = function(arg) arg._inventory = {} arg._typeByName = {} arg._namesByType = { Skin = {}, Wrap = {}, Charm = {}, Finisher = {}, Emote = {} } arg._nameSetByType = { Skin = {}, Wrap = {}, Charm = {}, Finisher = {}, Emote = {} } for k, v119 in v102(cosmeticLibrary, "Cosmetics"), nil, nil do local v120 = v102(v119, "Type") if arg._typeSet[v120] then if arg._raritySet[v102(v119, "Rarity")] then if v120 == "Skin" then local itemName = v102(v119, "ItemName") if arg._namesByType.Skin[itemName] == nil then arg._namesByType.Skin[itemName] = {} end if arg._nameSetByType.Skin[itemName] == nil then arg._nameSetByType.Skin[itemName] = {} end table.insert(arg._namesByType.Skin[itemName], k) arg._nameSetByType.Skin[itemName][k] = true arg._typeByName[k] = v120 arg._inventory[k] = v86[34] elseif v120 == "Wrap" then table.insert(arg._namesByType.Wrap, k) arg._nameSetByType.Wrap[k] = true arg._typeByName[k] = v120 arg._inventory[k] = v118 elseif v120 == "Charm" then table.insert(arg._namesByType.Charm, k) arg._nameSetByType.Charm[k] = true arg._typeByName[k] = v120 arg._inventory[k] = v118 elseif v120 == "Finisher" then table.insert(arg._namesByType.Finisher, k) arg._nameSetByType.Finisher[k] = v86[34] arg._typeByName[k] = v120 arg._inventory[k] = v118 elseif v120 == "Emote" then arg._typeByName[k] = v120 arg._inventory[k] = true end end end end arg.Built:Fire() end index2.SetIncludedTypes = function(arg, typeSet) arg._typeSet = typeSet end index2.GetIncludedTypes = function(arg) return arg._typeSet end index2.SetIncludedRarities = function(arg, raritySet) arg._raritySet = raritySet end index2.GetIncludedRarities = function(arg) return arg._raritySet end index2.GetRandomCosmetic = function(arg, arg2) local v119 if arg2.CosmeticType == "Skin" then v119 = arg._namesByType.Skin[arg2.ItemName] else v119 = arg._namesByType[arg2.CosmeticType] end if v119 == nil or #v119 == 0 then return nil end local n = #v119 + 1 local n33 = math.random(n) return n33 == n and noneCosmetic or v119[n33] end index2.IsEmpty = function(arg, arg2, arg3) local v119 if arg3 == "Skin" then v119 = arg._namesByType.Skin[arg2] else v119 = arg._namesByType[arg3] end return v119 == nil or #v119 == 0 end index2.IsInCatalog = function(arg, arg2) if arg2.CosmeticName:match("^" .. noneCosmetic) or arg2.CosmeticName == randomCosmetic then return true end if arg2.CosmeticType == "Skin" then local v119 = arg._nameSetByType.Skin[arg2.ItemName] return v119 ~= nil and v119[arg2.CosmeticName] == true end return arg._nameSetByType[arg2.CosmeticType][arg2.CosmeticName] == true end index2.IsCosmeticInCatalog = function(arg, arg2, arg3) if arg3:match("^" .. noneCosmetic) then return true end for _, v119 in v117.Item, nil, nil do if arg:IsInCatalog({ CosmeticType = v119, ItemName = arg2, CosmeticName = arg3 }) then return v86[34] end end return false end index2.IsCosmeticType = function(arg, arg2, arg3) return arg._typeByName[arg2] == arg3 end index2.GetInventory = function(arg) return arg._inventory end index2.Destroy = function(arg) arg.Built:Destroy() end return index2 end tbl17.dZ = function() local dz = tbl17.cache.dZ if not dz then dz = { c = fn35() } tbl17.cache.dZ = dz end return dz.c end end do -- d_ local function fn35() tbl17.aL() tbl17.dU() local v115 = tbl17.g() tbl17.dZ() local v116 = tbl17.k() local function fn36(arg, arg2) for k, v117 in arg, nil, nil do local v118 = arg2[k] if v118 == nil or v118.Name ~= v117.Name then return false end end for k in arg2, nil, nil do if arg[k] == nil then return false end end return true end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local Resolver = v116.new("cosmetics.Resolver") local tbl18 = { _trove = Resolver, _catalog = arg, _intent = arg2, _resolved = {}, Changed = Resolver:Add(v115.new()) } setmetatable(tbl18, index2) Resolver:Connect(arg2.Changed, function() tbl18:_Rebuild() end) Resolver:Connect(arg.Built, function() tbl18:_Rebuild() end) tbl18:_Rebuild() return tbl18 end index2._Rebuild = function(arg) local resolved = {} for k, v117 in arg._intent:GetAll() do if arg._catalog:IsCosmeticType(v117, "Emote") then resolved[k] = { Name = v117 } end end if fn36(resolved, arg._resolved) then return end arg._resolved = resolved arg.Changed:Fire() end index2.GetAll = function(arg) return arg._resolved end index2.Get = function(arg, arg2) return arg._resolved[arg2] end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.d_ = function() local d = tbl17.cache.d_ if not d then local d2 = { c = fn35() } tbl17.cache.d_ = d2 d = d2 end return d.c end end do -- d0 local function fn35() tbl17.dR() tbl17.d_() local v115 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local Equipped = v115.new("cosmetics.Equipped") local tbl18 = { _trove = Equipped, _resolver = arg2, _dataHook = arg, _isApplied = false } Equipped:Connect(arg2.Changed, function() if tbl18._isApplied then tbl18._dataHook:TriggerDataChangedSignal("EquippedEmotes") end end) return setmetatable(tbl18, index2) end index2._Apply = function(arg) if arg._isApplied then return end arg._isApplied = v86[34] arg._dataHook:Set("EquippedEmotes", function() local original = arg._dataHook:GetOriginal("EquippedEmotes") local tbl18 = {} if type(original) == "table" then tbl18 = table.clone(original) end for k, v116 in arg._resolver:GetAll() do tbl18[k] = v116 end return tbl18 end) arg._dataHook:TriggerDataChangedSignal("EquippedEmotes") end index2._Restore = function(arg) if not arg._isApplied then return end arg._isApplied = false arg._dataHook:Unset("EquippedEmotes") arg._dataHook:TriggerDataChangedSignal("EquippedEmotes") end index2.SetEnabled = function(arg, arg2) if arg2 then arg:_Apply() else arg:_Restore() end end index2.Destroy = function(arg) arg:_Restore() arg._trove:Destroy() end return index2 end tbl17.d0 = function() local d0 = tbl17.cache.d0 if not d0 then d0 = { c = fn35() } tbl17.cache.d0 = d0 end return d0.c end end do -- d1 local function fn35() tbl17.aL() local v115 = tbl17.a() local v116 = tbl17.g() local v117 = tbl17.b3() local emotes = tbl17.aS().Emotes local mechanicsController = tbl17.aS().MechanicsController local pickEmote = tbl17.aS().PickEmote tbl17.aN() tbl17.cX() tbl17.d_() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _playerContext = arg, _resolver = arg2, Played = v116.new() }, index2) end index2._GetLocalEntity = function(arg) local inner = arg._playerContext.Inner if inner == nil then return nil end return (v102(inner.FighterState.Inner, "Entity")) end index2._PlayResolvedEmote = function(arg, arg2, arg3) v117(arg2.CancelEmote, arg2) if not v117(arg2.IsAlive, arg2) then return end local v118 = emotes:FindFirstChild(arg3.Name) if v118 == nil then return end local v119 = getthreadidentity() setthreadidentity(v86[56]) local humanoid = arg2.Humanoid local v120 = require(v118).new(humanoid) v120:SetSerial(arg3) arg2._current_emote = v120 arg2.EmoteStatusChanged:Fire() task.spawn(v120.PlayServer, v120) task.spawn(v120.PlayClient, v120) setthreadidentity(v119) arg.Played:Fire(arg2) end index2._Apply = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v118 = getmetatable(pickEmote) if v118 == nil then return v115.err("UseEmoteHook", "prototype_lookup", "PickEmote metatable not found") end local v119 = v102(v118, "__index") if v119 == nil then return v115.err("UseEmoteHook", "prototype_lookup", "PickEmote.__index not found") end local v120 = v102(v119, "_PickByKey") if v120 == nil then return v115.err("UseEmoteHook", "function_lookup", "PickEmote._PickByKey not found") end local v121 = getmetatable(mechanicsController) if v121 == nil then return v115.err("UseEmoteHook", "prototype_lookup", "MechanicsController metatable not found") end local v122 = v102(v121, "__index") if v122 == nil then return v115.err("UseEmoteHook", "prototype_lookup", "MechanicsController.__index not found") end local simulateInputBegan = v102(v122, "SimulateInputBegan") if simulateInputBegan == nil then return v115.err("UseEmoteHook", "function_lookup", "MechanicsController.SimulateInputBegan not found") end local v123 = debug.getupvalue(v120, 1) if v123 == nil then return v115.err("UseEmoteHook", "upvalue_scan", "EmoteController upvalue not found at index 1 of PickEmote._PickByKey") end local obj = setmetatable({ UseEmote = function(arg2, arg3) local v124 = arg._resolver:Get(arg3) if v124 == nil then return coroutine.wrap(v123.UseEmote)(v123, arg3) end local v125 = arg:_GetLocalEntity() if v125 == nil then return end arg:_PlayResolvedEmote(v125, v124) return nil end }, { __index = v123 }) debug.setupvalue(v120, v86[63], obj) debug.setupvalue(simulateInputBegan, 8, obj) arg._restore = { PickByKeyFunc = v120, SimulateInputBeganFunc = simulateInputBegan, EmoteController = v123 } return v115.VoidOk end index2._Restore = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil debug.setupvalue(restore.PickByKeyFunc, 1, restore.EmoteController) debug.setupvalue(restore.SimulateInputBeganFunc, 8, restore.EmoteController) end index2.SetEnabled = function(arg, arg2) if arg2 then return arg:_Apply() end arg:_Restore() return v115.VoidOk end index2.Destroy = function(arg) arg:_Restore() end return index2 end tbl17.d1 = function() local d1 = tbl17.cache.d1 if not d1 then local d12 = { c = fn35() } tbl17.cache.d1 = d12 d1 = d12 end return d1.c end end do -- d2 local function fn35() tbl17.aL() tbl17.dR() local v115 = tbl17.dS() tbl17.aN() local v116 = tbl17.d0() local v117 = tbl17.dU() tbl17.cX() local v118 = tbl17.d_() tbl17.a() tbl17.dZ() local v119 = tbl17.k() local v120 = tbl17.d1() local index2 = {} index2.__index = index2 index2.new = function(arg) local emotes = v119.new("cosmetics.emotes") local v121 = emotes:Add(v117.new()) local v122 = emotes:Add(v118.new(arg.Catalog, v121)) local v123 = emotes:Add(v120.new(arg.PlayerContext, v122)) local v124 = emotes:Add(v115.new(arg.PlayerContext)) local v125 = emotes:Add(v116.new(arg.DataHook, v122)) emotes:Connect(v123.Played, function(arg2) v124:RecordEmote(arg2) end) return setmetatable({ _trove = emotes, _intent = v121, _resolver = v122, _use = v123, _emoteCancellation = v124, _equipped = v125, }, index2) end index2.SetEnabled = function(arg, arg2) local v121 = arg._use:SetEnabled(arg2) arg._equipped:SetEnabled(arg2) return v121 end index2.SetEmote = function(arg, arg2, arg3, arg4) return arg._intent:Set(arg2, arg3, arg4) end index2.GetIntent = function(arg) return arg._intent end index2.GetResolver = function(arg) return arg._resolver end index2.PreRender = function(arg) arg._emoteCancellation:PreRender() end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.d2 = function() local d2 = tbl17.cache.d2 if not d2 then d2 = { c = fn35() } tbl17.cache.d2 = d2 end return d2.c end end do -- d3 local function fn35() return function(l,I)for W,N in next,l,nil do local P=I[W];if P==nil then return false;end;for W in N,nil,nil do if P[W]~=true then return false;end;end;for W in P,nil,nil do if N[W]~=true then return false;end;end;end;for W in I,nil,nil do if l[W]==nil then return false;end;end;return true;end end tbl17.d3 = function() local d3 = tbl17.cache.d3 if not d3 then d3 = { c = fn35() } tbl17.cache.d3 = d3 end return d3.c end end do -- d4 local function fn35() local v115 = tbl17.g() local v116 = tbl17.d3() local index2 = {} index2.__index = index2 local function fn36(arg) local tbl18 = {} for k, v117 in arg, nil, nil do if v117 == v86[34] then tbl18[k] = true end end return tbl18 end index2.new = function() return setmetatable({ _proposed = {}, Changed = v115.new() }, index2) end index2._GetOrCreate = function(arg, arg2) local tbl18 = arg._proposed[arg2] if tbl18 == nil then tbl18 = {} arg._proposed[arg2] = tbl18 end return tbl18 end index2.Get = function(arg, arg2, arg3) local v117 = arg._proposed[arg2] return v117 ~= nil and v117[arg3] == true end index2.Set = function(arg, arg2, arg3, arg4) arg:_GetOrCreate(arg2)[arg3] = arg4 or nil arg.Changed:Fire() end index2.GetProposedByItem = function(arg) return arg._proposed end index2.ExportState = function(arg) local tbl18 = {} for k, v117 in arg._proposed, nil, nil do if next(v117) ~= nil then tbl18[k] = table.clone(v117) end end return tbl18 end index2.ImportState = function(arg, arg2) local proposed = {} for k, v117 in arg2, nil, nil do if type(v117) == "table" then if next(v117) ~= nil then local v118 = fn36(v117) if next(v118) ~= nil then proposed[k] = v118 end end end end if v116(arg._proposed, proposed) then return end arg._proposed = proposed arg.Changed:Fire() end index2.Destroy = function(arg) arg.Changed:Destroy() end return index2 end tbl17.d4 = function() local d4 = tbl17.cache.d4 if not d4 then local d42 = { c = fn35() } tbl17.cache.d4 = d42 d4 = d42 end return d4.c end end do -- d5 local function fn35() tbl17.d4() local v115 = tbl17.g() tbl17.dZ() local v116 = tbl17.k() local v117 = tbl17.d3() local function fn36(arg, arg2) local tbl18 = {} for k, v118 in arg, nil, nil do local tbl19 = nil for k2 in v118, nil, nil do if arg2(k, k2) then if tbl19 == nil then tbl19 = {} tbl18[k] = tbl19 end tbl19[k2] = true end end end return tbl18 end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local Resolver = v116.new("cosmetics.Resolver") local tbl18 = { _trove = Resolver, _catalog = arg, _intent = arg2, _resolved = {}, Changed = Resolver:Add(v115.new()) } setmetatable(tbl18, index2) Resolver:Connect(arg2.Changed, function() tbl18:_Rebuild() end) Resolver:Connect(arg.Built, function() tbl18:_Rebuild() end) tbl18:_Rebuild() return tbl18 end index2._Rebuild = function(arg) local v118 = fn36(arg._intent:GetProposedByItem(), function(arg2, arg3) return arg._catalog:IsCosmeticInCatalog(arg2, arg3) end) if v117(arg._resolved, v118) then return end arg._resolved = v118 arg.Changed:Fire() end index2.GetByItem = function(arg) return arg._resolved end index2.Get = function(arg, arg2, arg3) local v118 = arg._resolved[arg2] return v118 ~= nil and v118[arg3] == true end index2.GetItem = function(arg, arg2) return arg._resolved[arg2] end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.d5 = function() local d5 = tbl17.cache.d5 if not d5 then d5 = { c = fn35() } tbl17.cache.d5 = d5 end return d5.c end end do -- d6 local function fn35() tbl17.aL() local v115 = tbl17.g() local v116 = tbl17.d3() local v117 = tbl17.dY() local index2 = {} index2.__index = index2 local function fn36(arg) local tbl18 = {} for _, v118 in v117.Item, nil, nil do tbl18[v118] = arg[v118] or nil end return tbl18 end index2.new = function() return setmetatable({ _proposed = {}, Changed = v115.new() }, index2) end index2.GetOrNil = function(arg, arg2, arg3) local v118 = arg._proposed[arg2] if v118 == nil then return nil end local v119 = v118[arg3] if v119 == nil then return nil end return v119 == true end index2.Get = function(arg, arg2, arg3) return arg:GetOrNil(arg2, arg3) == true end index2.Set = function(arg, arg2, arg3, arg4) local v118 = arg._proposed[arg2] arg4 = arg4 and true or nil local v119 if v118 == nil then if true then if arg4 == nil then return false end local tbl18 = {} arg._proposed[arg2] = tbl18 v119 = tbl18 else -- (anti-tamper freeze trap removed) v119 = v118 end else v119 = v118 end if v119[arg3] == arg4 then return false end v119[arg3] = arg4 if next(v119) == nil then arg._proposed[arg2] = nil end arg.Changed:Fire() return true end index2.ExportState = function(arg) local tbl18 = {} for k, v118 in arg._proposed, nil, nil do local v119 = fn36(v118) if next(v119) ~= nil then tbl18[k] = v119 end end return tbl18 end index2.ImportState = function(arg, arg2) local proposed = {} for k, v118 in arg2, nil, nil do if type(v118) == "table" then local v119 = fn36(v118) if next(v119) ~= nil then proposed[k] = v119 end end end if v116(arg._proposed, proposed) then return end arg._proposed = proposed arg.Changed:Fire() end index2.Destroy = function(arg) arg.Changed:Destroy() end return index2 end tbl17.d6 = function() local d6 = tbl17.cache.d6 if not d6 then d6 = { c = fn35() } tbl17.cache.d6 = d6 end return d6.c end end do -- d7 local function fn35() local seasonLibrary = tbl17.aS().SeasonLibrary local function fn36() local rankProfile = v102(v102(seasonLibrary, "CurrentSeason"), "RankProfile") local ranksOrder = v102(rankProfile, "RanksOrder") local ranks = v102(rankProfile, "Ranks") local tbl18 = {} local tbl19 = {} local tbl20 = {} for _, v115 in ranksOrder, nil, nil do local v116 = v102(ranks, v115) if v116 ~= nil then local tbl21 = { Name = v115, RequiredElo = v102(v116, "RequiredELO"), RequiresLeaderboard = v102(v116, "RequiredELOLeaderboardRanking") ~= nil, } table.insert(tbl18, tbl21) tbl19[v115] = tbl21 table.insert(tbl20, v115) end end return tbl18, tbl19, tbl20 end local function fn37() local seasonsByVersion = v102(seasonLibrary, "SeasonsByVersion") local tbl18 = {} for k in seasonsByVersion, nil, nil do table.insert(tbl18, k) end table.sort(tbl18) local tbl19 = {} local tbl20 = {} for _, v115 in tbl18, nil, nil do local v116 = v102(seasonsByVersion, v115) if v116 ~= nil then local str7 = "Season " .. v115 table.insert(tbl19, { CharmName = str7, SeasonName = v102(v116, "Name"), Version = v115 }) table.insert(tbl20, str7) end end return tbl19, tbl20 end local _v115, v116, v117 = fn36() local v118, v119 = fn37() return table.freeze({ RankNames = v117, SeasonCharms = v118, SeasonCharmNames = v119, isSeasonRankCharm = function(arg) if #arg < 8 or string.sub(arg, 1, 7) ~= "Season " then return false end return tonumber(string.sub(arg, v86[162])) ~= nil end, findRank = function(arg) return v116[arg] end, buildMetadata = function(arg, arg2) local v120 = v116[arg] if v120 == nil then return nil end if v120.Name == "Unranked" then return { SeasonELO = nil, SeasonLeaderboardRank = arg2 } end if v120.RequiresLeaderboard and arg2 == nil then arg2 = 1 end return { SeasonELO = v120.RequiredElo, SeasonLeaderboardRank = arg2 } end, }) end tbl17.d7 = function() local d7 = tbl17.cache.d7 if not d7 then d7 = { c = fn35() } tbl17.cache.d7 = d7 end return d7.c end end do -- d8 local function fn35() local v115 = tbl17.d7() local v116 = tbl17.g() local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _overrides = {}, Changed = v116.new() }, index2) end index2.SetForSeason = function(arg, arg2, arg3, arg4) if arg3 ~= nil and v115.findRank(arg3) == nil then arg3 = nil end local v117 = arg._overrides[arg2] if arg3 == nil then if v117 == nil then return end arg._overrides[arg2] = nil arg.Changed:Fire() return end if v117 ~= nil and v117.RankName == arg3 and v117.LeaderboardRank == arg4 then return end arg._overrides[arg2] = { RankName = arg3, LeaderboardRank = arg4 } arg.Changed:Fire() end index2.GetForSeason = function(arg, arg2) local v117 = arg._overrides[arg2] if v117 == nil then return nil, nil end return v117.RankName, v117.LeaderboardRank end index2.GetAllOverrides = function(arg) return arg._overrides end index2.SetAllOverrides = function(arg, overrides) arg._overrides = overrides arg.Changed:Fire() end index2.ResolveMetadata = function(arg, arg2) if not v115.isSeasonRankCharm(arg2) then return nil end local v117 = arg._overrides[arg2] if v117 == nil then return nil end return v115.buildMetadata(v117.RankName, v117.LeaderboardRank) end index2.Destroy = function(arg) arg.Changed:Destroy() end return index2 end tbl17.d8 = function() local d8 = tbl17.cache.d8 if not d8 then local d82 = { c = fn35() } tbl17.cache.d8 = d82 d8 = d82 end return d8.c end end do -- d9 local function fn35() local v115 = tbl17.dl() local v116 = tbl17.ad() local v117 = tbl17.a() local v118 = tbl17.b2() local requestProfileFunction = tbl17.aS().RequestProfileFunction local viewProfile = tbl17.aS().ViewProfile local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _errorReporter = v116.new(), _dummy = Color3.new(), _requestBindings = {} } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2.Reserve = function(arg) local function fn36(arg2) if arg2 then arg._errorReporter:ReportResult(arg:_Load()) end end local new local function fn37() for k, v119 in arg._requestBindings, nil, nil do if v119 == new then table.remove(arg._requestBindings, k) break end end end new = v115.new new = new(fn36, fn37) table.insert(arg._requestBindings, new) return new end index2._Initialize = function(arg) v110(arg._dummy, { __index = function() return { Misc = { RequestProfile = { InvokeServer = function(arg2, arg3) return arg:_ProcessRequest(arg3) end }, }, } end }) end index2._ProcessRequest = function(arg, arg2) local v119, v120 = v107(requestProfileFunction.InvokeServer, requestProfileFunction, arg2) if not v119 then arg._errorReporter:ReportResult(v117.err("RequestDataHook", "invoke_server", tostring(v120))) return nil end local tbl18 = { Player = arg2, Data = v120 } arg:_Dispatch(tbl18) return tbl18.Data end index2._Dispatch = function(arg, arg2) for _, v119 in arg._requestBindings, nil, nil do if v119.Enabled then local handler = v119.Handler if handler ~= nil then handler(arg2) end end end end index2._Load = function(arg) if arg._restore ~= nil then return v117.VoidOk end local v119 = getmetatable(viewProfile) if v119 == nil then return v117.err("RequestDataHook", "prototype_lookup", "ViewProfile metatable not found") end local v120 = v102(v119, "__index") if v120 == nil then return v117.err("RequestDataHook", "prototype_lookup", "ViewProfile.__index not found") end local fetch = v102(v120, "Fetch") if fetch == nil then return v117.err("RequestDataHook", "function_lookup", "Fetch function not found in ViewProfile.__index") end local v121 = nil local v122 = nil for k, v123 in debug.getupvalues(fetch) do if not (typeof(v123) ~= "Instance" or not v118(v123, game:GetService("ReplicatedStorage"))) then v121 = k v122 = v123 end end if v121 == nil or v122 == nil then return v117.err("RequestDataHook", "upvalue_lookup", "ReplicatedStorage not found in fetchMethod") end debug.setupvalue(fetch, v121, arg._dummy) arg._restore = { FetchMethod = fetch, ServiceIndex = v121, OriginalService = v122 } return v117.VoidOk end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return v117.VoidOk end arg._restore = nil debug.setupvalue(restore.FetchMethod, restore.ServiceIndex, restore.OriginalService) return v117.VoidOk end index2.Destroy = function(arg) arg:_Revert() arg._errorReporter:Destroy() end return index2 end tbl17.d9 = function() local d9 = tbl17.cache.d9 if not d9 then d9 = { c = fn35() } tbl17.cache.d9 = d9 end return d9.c end end do -- ea local function fn35() tbl17.aL() tbl17.dW() local tbl18 = { Skin = "Skin", Wrap = "Wrap", Charm = "Charm", Finisher = "Finisher" } local tbl19 tbl19 = { cloneWrapSelection = function(arg) local v115 = nil return arg ~= nil and { Name = arg.Name, Inverted = arg.Inverted } or v115 end, cosmeticTypeToSlotKey = function(arg) return tbl18[arg] end, cloneCosmeticsSelection = function(arg) return { Skin = arg.Skin, Wrap = tbl19.cloneWrapSelection(arg.Wrap), Charm = arg.Charm, Finisher = arg.Finisher } end, getChoiceType = function(arg) return arg.Kind end, getSelectionValue = function(arg, arg2) return arg[tbl18[arg2]] end, setSelectionValue = function(arg, arg2, arg3) if arg2 == "Wrap" then arg.Wrap = tbl19.cloneWrapSelection(arg3) return end arg[tbl18[arg2]] = arg3 end, getSelectedCosmeticName = function(arg, arg2) if arg2 == "Wrap" then local wrap = arg.Wrap return wrap ~= nil and wrap.Name or nil end return (tbl19.getSelectionValue(arg, arg2)) end, } local function fn36(arg, arg2) return arg ~= nil and arg2 ~= nil and { Name = arg2, Inverted = arg.Inverted } or nil end tbl19.applyResolvedSelection = function(arg, arg2, arg3, arg4) if arg3 == "Wrap" then arg.Wrap = fn36(arg2.Wrap, arg4) else tbl19.setSelectionValue(arg, arg3, arg4) end end tbl19.applyChoice = function(arg, arg2) local v115 = tbl19.getChoiceType(arg2) if arg2.Kind == "Wrap" then arg.Wrap = tbl19.cloneWrapSelection(arg2.Wrap) else tbl19.setSelectionValue(arg, v115, arg2.Name) end return v115 end tbl19.buildChoice = function(arg, arg2, arg3) if arg == "Wrap" then return { Kind = "Wrap", Wrap = arg2 ~= nil and { Name = arg2, Inverted = arg3 == true } or nil } end return { Kind = arg, Name = arg2 } end tbl19.toChoice = function(arg, arg2) local v115 = tbl19.getSelectedCosmeticName(arg, arg2) if v115 == nil then return nil end local flag19 = arg2 == "Wrap" and arg.Wrap ~= nil local inverted = nil if flag19 then inverted = arg.Wrap.Inverted end return tbl19.buildChoice(arg2, v115, inverted) end return table.freeze(tbl19) end tbl17.ea = function() local ea = tbl17.cache.ea if not ea then local ea2 = { c = fn35() } tbl17.cache.ea = ea2 ea = ea2 end return ea.c end end do -- eb local function fn35() local v115 = tbl17.ea() local v116 = tbl17.k() local v117 = cloneref(game:GetService("Players")) local index2 = {} index2.__index = index2 index2.new = function() local Store = v116.new("cosmetics.Store") local tbl18 = { _trove = Store, _selectionByItemNameByPlayer = {} } Store:Connect(v117.PlayerAdded, function(arg) tbl18._selectionByItemNameByPlayer[arg] = {} end) Store:Connect(v117.PlayerRemoving, function(arg) tbl18._selectionByItemNameByPlayer[arg] = nil end) for _, v118 in v117:GetPlayers() do tbl18._selectionByItemNameByPlayer[v118] = {} end return setmetatable(tbl18, index2) end index2._EnsurePlayerStorage = function(arg, arg2) local v118 = arg._selectionByItemNameByPlayer[arg2] if v118 == nil then local tbl18 = {} arg._selectionByItemNameByPlayer[arg2] = tbl18 v118 = tbl18 end return v118 end index2.SetItem = function(arg, arg2, arg3, arg4) arg:_EnsurePlayerStorage(arg2)[arg3] = v115.cloneCosmeticsSelection(arg4) end index2.ClearItem = function(arg, arg2, arg3) local v118 = arg._selectionByItemNameByPlayer[arg2] if v118 == nil then return end v118[arg3] = nil end index2.SetItems = function(arg, arg2, arg3) local tbl18 = {} for k, v118 in arg3, nil, nil do if v118 ~= nil then tbl18[k] = v115.cloneCosmeticsSelection(v118) end end arg._selectionByItemNameByPlayer[arg2] = tbl18 end index2.ClearAll = function(arg, arg2) arg._selectionByItemNameByPlayer[arg2] = {} end index2.GetAll = function(arg, arg2) return arg._selectionByItemNameByPlayer[arg2] or {} end index2.Get = function(arg, arg2, arg3) local v118 = arg._selectionByItemNameByPlayer[arg2] return v118 ~= nil and v118[arg3] or nil end index2.IsNonEmpty = function(arg, arg2) if arg2 ~= nil then return next(arg._selectionByItemNameByPlayer[arg2] or {}) ~= nil end for _, v118 in arg._selectionByItemNameByPlayer, nil, nil do if next(v118) ~= nil then return v86[34] end end return false end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.eb = function() local eb = tbl17.cache.eb if not eb then eb = { c = fn35() } tbl17.cache.eb = eb end return eb.c end end do -- ec local function fn35() local v115 = tbl17.dP() local equipment = tbl17.aS().Equipment local lobby = tbl17.aS().Lobby local function fn36(arg, arg2) local v116 = v115(v115(getmetatable(arg), "__index"), arg2) return function() coroutine.wrap(v116)(arg) end end local function fn37(arg) return function() task.spawn(function() local v116 = getthreadidentity() setthreadidentity(v86[56]) for _, v117 in arg, nil, nil do v117() end setthreadidentity(v116) end) end end local v116 = v115(equipment, { "Interface", "Customize", "Cosmetics" }) local floatingModel = v115(equipment, "FloatingModel") local buttons = v115(lobby, "Buttons") local tbl18 = { CosmeticsSelectionScene = fn37({ (fn36(v116, "OnStateChanged")) }) } local tbl19 = {} local v117 = fn36(v116, "_BulkUpdateEquipped") local v118 = fn36(buttons, "_UpdateButtonInformation") local v119 = fn36(floatingModel, "_GenerateViewModel") tbl19[1] = v117 tbl19[2] = v118 tbl19[3] = v119 tbl18.EquipmentScene = fn37(tbl19) return table.freeze(tbl18) end tbl17.ec = function() local ec = tbl17.cache.ec if not ec then local ec2 = { c = fn35() } tbl17.cache.ec = ec2 ec = ec2 end return ec.c end end do -- ed local function fn35() local v115 = tbl17.dV() tbl17.ea() local noneCosmetic = v115.NoneCosmetic local function fn36(arg, arg2) if arg == arg2 then return true end if arg == nil or arg2 == nil then return false end return arg.Name == arg2.Name and arg.Inverted == arg2.Inverted end local function fn37(arg, arg2) if arg == arg2 then return true end if arg == nil or arg2 == nil then return v86[153] end if arg.Skin ~= arg2.Skin or arg.Charm ~= arg2.Charm or arg.Finisher ~= arg2.Finisher then if n26 > 4809 then -- (anti-tamper freeze trap removed) end return false end return fn36(arg.Wrap, arg2.Wrap) end local function fn38(arg) if arg == noneCosmetic then return nil end return arg end local function fn39(arg) if arg == nil or arg.Name == noneCosmetic then return nil end return arg end return { areSelectionsEqual = fn37, areViewModelSelectionsEqual = function(arg, arg2) if arg == arg2 then return true end if (arg ~= nil and fn38(arg.Skin) or nil) ~= (arg2 ~= nil and fn38(arg2.Skin) or nil) then return false end if (arg ~= nil and fn38(arg.Charm) or nil) ~= (arg2 ~= nil and fn38(arg2.Charm) or nil) then return false end return fn36(arg ~= nil and fn39(arg.Wrap) or nil, arg2 ~= nil and fn39(arg2.Wrap) or nil) end, } end tbl17.ed = function() local ed = tbl17.cache.ed if not ed then local ed2 = { c = fn35() } tbl17.cache.ed = ed2 ed = ed2 end return ed.c end end do -- ee local function fn35() tbl17.ea() return function(arg, arg2) local tbl18 = { Name = arg } if arg2.Skin ~= nil then tbl18.Skin = { Name = arg2.Skin } end local wrap = arg2.Wrap if wrap ~= nil then if true then tbl18.Wrap = { Name = wrap.Name, Inverted = wrap.Inverted or nil } else -- (anti-tamper freeze trap removed) end end if arg2.Charm ~= nil then tbl18.Charm = { Name = arg2.Charm } end if arg2.Finisher ~= nil then tbl18.Finisher = { Name = arg2.Finisher } end return tbl18 end end tbl17.ee = function() local ee = tbl17.cache.ee if not ee then local ee2 = { c = fn35() } tbl17.cache.ee = ee2 ee = ee2 end return ee.c end end do -- ef local function fn35() tbl17.d9() local v115 = tbl17.a() tbl17.eb() local v116 = tbl17.ee() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _store = arg, _binding = arg2 } setmetatable(tbl18, index2) arg2:SetHandler(function(arg3) tbl18:_MaskFavoriteWeapons(arg3) end) return tbl18 end index2._MaskFavoriteWeapons = function(arg, arg2) local favoriteWeapons = v102(arg2.Data, "FavoriteWeapons") if type(favoriteWeapons) ~= "table" then return end for k, v117 in favoriteWeapons, nil, nil do local name = v102(v117, "Name") if type(name) == "string" then local v118 = arg._store:Get(arg2.Player, name) if v118 ~= nil then local v119 = v116(name, v118) v119.Level = v102(v117, "Level") v119.Prestige = v102(v117, "Prestige") v119.XP = v102(v117, "XP") favoriteWeapons[k] = v119 end end end end index2.Load = function(arg) arg._binding:SetEnabled(true) return v115.VoidOk end index2.Revert = function(arg) arg._binding:SetEnabled(false) end index2.Destroy = function(arg) arg._binding:Destroy() end return index2 end tbl17.ef = function() local ef = tbl17.cache.ef if not ef then local ef2 = { c = fn35() } tbl17.cache.ef = ef2 ef = ef2 end return ef.c end end do -- eg local function fn35() local v115 = tbl17.cK() tbl17.d8() return { findCharmPayload = function(arg) local charm = v102(arg, "Charm") local str7 = "Charm" if charm == nil then str7 = v115.encode("Charm") if str7 == nil then return "Charm", nil end charm = v102(arg, str7) end local v116 = v86[68] if type(charm) ~= v116 then return str7, nil end return str7, charm end, resolvePatchedPayload = function(arg, arg2) if arg == nil then return nil end local name = v102(arg, "Name") if type(name) ~= "string" then return nil end local v116 = arg2:ResolveMetadata(name) if v116 == nil then return nil end local v117 = table.clone(arg) v117.Metadata = v116 return v117 end, areMetadataEqual = function(arg, arg2) local metadata = arg ~= nil and v102(arg, "Metadata") or nil local metadata2 = arg2 ~= nil and v102(arg2, "Metadata") or nil if type(metadata) ~= "table" then metadata = nil end if type(metadata2) ~= "table" then metadata2 = nil end local seasonELO = metadata ~= nil and v102(metadata, "SeasonELO") or nil local seasonELO2 = metadata2 ~= nil and v102(metadata2, "SeasonELO") or nil local seasonLeaderboardRank = metadata ~= nil and v102(metadata, "SeasonLeaderboardRank") or nil local seasonLeaderboardRank2 = metadata2 ~= nil and v102(metadata2, "SeasonLeaderboardRank") or nil return seasonELO == seasonELO2 and seasonLeaderboardRank == seasonLeaderboardRank2 end, } end tbl17.eg = function() local eg = tbl17.cache.eg if not eg then eg = { c = fn35() } tbl17.cache.eg = eg end return eg.c end end do -- eh local function fn35() tbl17.dR() local v115 = tbl17.a() local v116 = tbl17.dP() local playerDataController = tbl17.aS().PlayerDataController local playerDataUtility = tbl17.aS().PlayerDataUtility tbl17.d6() local v117 = tbl17.eg() tbl17.d8() tbl17.ea() local v118 = tbl17.dV() tbl17.eb() local v119 = tbl17.dY() local v120 = tbl17.ee() local noneCosmetic = v118.NoneCosmetic local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local function fn36() local v121 = getmetatable(playerDataController) if v121 == nil then return nil end local v122 = v116(v121, "__index") if v122 == nil then return nil end return v116(v122, "GetWeaponData") end local tbl18 = {} for _, v121 in v119.Item, nil, nil do tbl18[v121] = true end local function fn37(arg, arg2, arg3) local v121 = v86[68] if type(arg3) ~= v121 then return arg3 end if arg3.Name ~= noneCosmetic then return table.clone(arg3) end if tbl18[arg2] then return nil end return table.clone(arg3) end local function fn38(arg, arg2, arg3) if arg3 == nil then return arg2, false end for k, v121 in v120(arg, arg3) do v103(arg2, k, fn37(arg, k, v121)) end return arg2, v86[34] end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4) local tbl19 = { _store = arg, _onlyUseFavoritesState = arg2, _rankCharm = arg3, _dataHook = arg4 } if not (n25 > 3892) then return setmetatable(tbl19, index2) end return nil -- (anti-tamper freeze trap removed) end local function fn39(arg, arg2) local original = arg:GetOriginal("WeaponInventory") if original == nil then return nil end for _, v121 in next, original, nil do if v102(v121, "Name") == arg2 then return v121 end end return nil end index2._ApplyOnlyUseFavoritesMask = function(arg, arg2, arg3) local v121 = nil local flag19 = false for _, v122 in v119.Item, nil, v121 do local orNil = arg._onlyUseFavoritesState:GetOrNil(arg2, v122) if orNil ~= nil then if arg3 == nil then arg3 = {} end local v123 = v102(arg3, v122) local name = nil if type(v123) == "table" then name = v102(v123, "Name") end if not (name == nil or name == noneCosmetic) then flag19 = v86[34] local tbl19 = type(v123) == "table" and table.clone(v123) or {} tbl19.OnlyUseFavorites = orNil and true or nil v103(arg3, v122, tbl19) end end end return arg3, flag19 end index2._ApplyRankCharmMask = function(arg, arg2) if arg2 == nil then return arg2, v86[153] end local charm = v102(arg2, "Charm") if type(charm) ~= "table" then return arg2, false end local v121 = v117.resolvePatchedPayload(charm, arg._rankCharm) if v121 == nil then return arg2, false end v103(arg2, "Charm", v121) return arg2, v86[34] end index2.Load = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v121 = fn36() if v121 == nil then return v115.err("ItemDataHook", "function_lookup", "GetWeaponData function unavailable") end for k, v122 in debug.getconstants(v121) do if v122 == "GetWeaponData" then arg._restore = { ConstantIndex = k, Original = v122 } debug.setconstant(v121, k, "GetWeaponData\0ohaio") break end end if arg._restore == nil then return v115.err("ItemDataHook", "constant_scan", "GetWeaponData constant not found in PlayerDataController") end v103(playerDataUtility, "GetWeaponData\0ohaio", function(arg2, arg3, arg4) local v122 = fn39(arg._dataHook, arg4) if v122 == nil then return nil end local player = v102(arg3, "Player") or v102(arg3, "_player_object") if not (typeof(player) == "Instance" and player:IsA("Player")) then player = localPlayer end local v123 = arg._store:Get(player, arg4) local v124, v125 = fn38(arg4, table.clone(v122), v123) local v126, v127 = arg:_ApplyOnlyUseFavoritesMask(arg4, v124) local v128 = v86[153] local v129 if player ~= localPlayer then v129 = v126 else v129, v128 = arg:_ApplyRankCharmMask(v126) end if not (v125 or v127 or v128) then return v122 end v129.Level = v102(v122, "Level") v129.Prestige = v102(v122, "Prestige") v129.XP = v102(v122, "XP") return v129 end) return v115.VoidOk end index2.Revert = function(arg) local restore = arg._restore if restore == nil then return v115.VoidOk end local v121 = fn36() if v121 == nil then return v115.err("ItemDataHook", "function_lookup", "GetWeaponData function unavailable during revert") end debug.setconstant(v121, restore.ConstantIndex, restore.Original) v103(playerDataUtility, "GetWeaponData\0ohaio", nil) arg._restore = nil return v115.VoidOk end index2.Destroy = function(arg) arg:Revert() end return index2 end tbl17.eh = function() local eh = tbl17.cache.eh if not eh then local eh2 = { c = fn35() } tbl17.cache.eh = eh2 eh = eh2 end return eh.c end end do -- ei local function fn35() local v115 = tbl17.a() local v116 = tbl17.b3() local cosmeticViewportFrame = tbl17.aS().CosmeticViewportFrame local playerDataUtility = tbl17.aS().PlayerDataUtility tbl17.d8() local tbl18 = {} for _, v117 in tbl17.d7().SeasonCharms, nil, nil do tbl18[v117.SeasonName] = v117.CharmName end local function fn36() return v102(cosmeticViewportFrame, "_SetupSeasonRankCharm") end local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _rankCharm = arg }, index2) end index2.Load = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v117 = fn36() if v117 == nil then return v115.err("SeasonInfoHook", "function_lookup", "_SetupSeasonRankCharm function unavailable") end local getSeasonInfo = playerDataUtility.GetSeasonInfo if getSeasonInfo == nil then return v115.err("SeasonInfoHook", "function_lookup", "GetSeasonInfo function unavailable") end for k, v118 in debug.getconstants(v117) do if v118 == "GetSeasonInfo" then arg._restore = { ConstantIndex = k, Original = v118 } debug.setconstant(v117, k, "GetSeasonInfo\0ohaio") break end end if arg._restore == nil then return v115.err("SeasonInfoHook", "constant_scan", "GetSeasonInfo constant not found in CosmeticViewportFrame") end v103(playerDataUtility, "GetSeasonInfo\0ohaio", function(arg2, arg3, arg4) local v118 = tbl18[arg4] if v118 ~= nil then local v119 = arg._rankCharm:ResolveMetadata(v118) if v119 ~= nil then return v119.SeasonELO, v119.SeasonLeaderboardRank end end return v116(getSeasonInfo, playerDataUtility, arg3, arg4) end) return v115.VoidOk end index2.Revert = function(arg) local restore = arg._restore if restore == nil then return v115.VoidOk end local v117 = fn36() if v117 == nil then return v115.err("SeasonInfoHook", "function_lookup", "_SetupSeasonRankCharm function unavailable during revert") end debug.setconstant(v117, restore.ConstantIndex, restore.Original) v103(playerDataUtility, "GetSeasonInfo\0ohaio", nil) arg._restore = nil return v115.VoidOk end index2.Destroy = function(arg) arg:Revert() end return index2 end tbl17.ei = function() local ei = tbl17.cache.ei if not ei then ei = { c = fn35() } tbl17.cache.ei = ei end return ei.c end end do -- ej local function fn35() tbl17.dR() tbl17.ad() tbl17.d6() tbl17.d8() tbl17.d9() tbl17.ea() local v115 = tbl17.eb() local v116 = tbl17.k() local equipmentScene = tbl17.ec().EquipmentScene local v117 = tbl17.ed() local v118 = tbl17.ef() local v119 = tbl17.eh() local v120 = tbl17.ei() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local areSelectionsEqual = v117.areSelectionsEqual local function fn36(arg, arg2) for k, v121 in arg, nil, nil do if not areSelectionsEqual(v121, arg2[k]) then return false end end for k in arg2, nil, nil do if arg[k] == nil then return false end end return true end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local v121 = v116.new() local v122 = v115.new() local tbl18 = { _trove = v121, _isEnabled = false, _dataHook = arg, _errorReporter = arg4, _store = v122, _itemDataHook = v119.new(v122, arg2, arg3, arg), _seasonInfoHook = v120.new(arg3), _favoriteItemsHook = v118.new(v122, arg5), } setmetatable(tbl18, index2) v121:Connect(arg3.Changed, function() tbl18:RefreshIfEnabled() end) return tbl18 end index2.SetEnabled = function(arg, isEnabled) if arg._isEnabled == isEnabled then return end arg._isEnabled = isEnabled if isEnabled then arg:_Loads() if not flag2 then return end else arg:_Reverts() end end index2.ReplaceAll = function(arg, arg2, arg3) if fn36(arg._store:GetAll(arg2), arg3) then return end arg._store:SetItems(arg2, arg3) if arg._isEnabled then arg:_Refresh() end end index2.SetRemotePlayerOverrides = function(arg, arg2, arg3, arg4) if not arg4 then arg._store:ClearAll(arg2) end for k, v121 in arg3, nil, nil do if next(v121) == nil then arg._store:ClearItem(arg2, k) else arg._store:SetItem(arg2, k, v121) end end if arg._isEnabled then arg:_Refresh() end end index2.ClearAll = function(arg, arg2) arg._store:ClearAll(arg2) if arg._isEnabled and arg2 == localPlayer then arg:_Refresh() end end index2.ClearRemotePlayerOverrides = function(arg, arg2) arg:ClearAll(arg2) end index2._Refresh = function(arg) arg._dataHook:TriggerDataChangedSignal("WeaponInventory") arg._dataHook:TriggerDataChangedSignal("WeaponData") equipmentScene() end index2.RefreshIfEnabled = function(arg) if arg._isEnabled then arg:_Refresh() end end index2._Loads = function(arg) arg._errorReporter:ReportResult(arg._itemDataHook:Load()) arg._errorReporter:ReportResult(arg._seasonInfoHook:Load()) arg._errorReporter:ReportResult(arg._favoriteItemsHook:Load()) end index2._Reverts = function(arg) arg._errorReporter:ReportResult(arg._itemDataHook:Revert()) arg._errorReporter:ReportResult(arg._seasonInfoHook:Revert()) arg._favoriteItemsHook:Revert() end index2.Destroy = function(arg) arg:_Reverts() arg._trove:Destroy() local isEnabled = arg._isEnabled or arg._store:IsNonEmpty() arg._isEnabled = false if isEnabled then arg:_Refresh() end arg._favoriteItemsHook:Destroy() arg._store:Destroy() end return index2 end tbl17.ej = function() local ej = tbl17.cache.ej if not ej then ej = { c = fn35() } tbl17.cache.ej = ej end return ej.c end end do -- ek local function fn35() tbl17.aL() local v115 = tbl17.dT() local v116 = tbl17.ea() tbl17.dW() local v117 = tbl17.dY() local index2 = {} index2.__index = index2 local function fn36(arg) return next(arg) == nil end local function fn37(arg) return next(arg.Layers) == nil end local function fn38(arg) return next(arg) == nil end local function fn39() return { Skin = nil, Wrap = nil, Charm = nil, Finisher = nil } end local function fn40(arg) return { Layers = arg or {} } end index2.new = function() return setmetatable({ _activeLayers = {}, _states = {} }, index2) end index2._EnsureState = function(arg, arg2) local v118 = arg._states[arg2] if v118 == nil then v118 = fn40() arg._states[arg2] = v118 end return v118 end index2._ResolveEffective = function(arg, arg2, arg3) local tbl18 = {} local v118 = fn39() for _, v119 in v117.Item, nil, nil do local v120 = v119 local v121, v122 = v115.resolveHighestPriority(arg2.Layers, function(arg4) return v116.getSelectionValue(arg4, v120) end, function(arg4) if arg3 ~= nil and arg3[arg4] then return false end return arg._activeLayers[arg4] == true end) v118[v116.cosmeticTypeToSlotKey(v120)] = v121 v116.setSelectionValue(tbl18, v120, v122) end return { Selection = tbl18, WinnerPriorities = v118 } end index2.IsLayerActive = function(arg, arg2) return arg._activeLayers[arg2] == true end index2.GetLayerSelections = function(arg, arg2, arg3) local v118 = arg._states[arg2] if v118 == nil then return nil end return v118.Layers[arg3] end index2.SetLayerActive = function(arg, arg2, arg3) arg._activeLayers[arg2] = arg3 or nil local tbl18 = {} for k, v118 in arg._states, nil, nil do if v118.Layers[arg2] ~= nil then tbl18[k] = v86[34] end end return tbl18 end index2.SetChoice = function(arg, arg2, arg3, arg4) local v118 = arg:_EnsureState(arg2) v116.applyChoice(v115.getOrCreateLayer(v118.Layers, arg4, function() return {} end), arg3) v115.removeLayerIfEmpty(v118.Layers, arg4, fn36) if fn37(v118) then arg._states[arg2] = nil return {} end return arg:_ResolveEffective(v118).Selection end index2.ClearSelection = function(arg, arg2, arg3) local v118 = arg._states[arg2] if v118 == nil then return nil end local flag19 = v86[153] for k, v119 in v118.Layers, nil, nil do if v116.getSelectionValue(v119, arg3) ~= nil then v116.setSelectionValue(v119, arg3, nil) flag19 = true end v115.removeLayerIfEmpty(v118.Layers, k, fn36) end if not flag19 then return arg:_ResolveEffective(v118).Selection end if fn37(v118) then arg._states[arg2] = nil return nil end return arg:_ResolveEffective(v118).Selection end index2.ClearSelectionAtPriority = function(arg, arg2, arg3, arg4) local v118 = arg._states[arg2] if v118 == nil then return nil end local v119 = v118.Layers[arg4] if v119 == nil then return arg:_ResolveEffective(v118).Selection end if v116.getSelectionValue(v119, arg3) == nil then return arg:_ResolveEffective(v118).Selection end v116.setSelectionValue(v119, arg3, nil) v115.removeLayerIfEmpty(v118.Layers, arg4, fn36) if fn37(v118) then arg._states[arg2] = nil return nil end return arg:_ResolveEffective(v118).Selection end index2.GetWinnerPriority = function(arg, arg2, arg3) local v118 = arg._states[arg2] if v118 == nil then return nil end return arg:_ResolveEffective(v118).WinnerPriorities[v116.cosmeticTypeToSlotKey(arg3)] end index2.GetEffectiveByItem = function(arg) local tbl18 = {} for k, v118 in arg._states, nil, nil do local selection = arg:_ResolveEffective(v118).Selection if not fn38(selection) then tbl18[k] = selection end end return tbl18 end index2.GetEffectiveByItemExcludingLayers = function(arg, arg2) local tbl18 = {} for k, v118 in arg._states, nil, nil do local selection = arg:_ResolveEffective(v118, arg2).Selection if not fn38(selection) then tbl18[k] = selection end end return tbl18 end index2.GetItemNameSet = function(arg) local tbl18 = {} for k in arg._states, nil, nil do tbl18[k] = true end return tbl18 end index2.GetItemEffective = function(arg, arg2) local v118 = arg._states[arg2] if v118 == nil then return nil end local selection = arg:_ResolveEffective(v118).Selection if fn38(selection) then return nil end return selection end index2.GetItemEffectiveExcludingLayers = function(arg, arg2, arg3) local v118 = arg._states[arg2] if v118 == nil then return nil end local selection = arg:_ResolveEffective(v118, arg3).Selection if fn38(selection) then return nil end return selection end index2.ExportState = function(arg) local tbl18 = {} for k, v118 in arg._states, nil, nil do tbl18[k] = { Layers = v115.exportLayers(v118.Layers, fn36, function(arg2, arg3) return { Priority = arg2, Selections = v116.cloneCosmeticsSelection(arg3) } end), } end return tbl18 end local function fn41(arg, arg2) for _, v118 in v117.Item, nil, nil do local v119 = v116.getSelectionValue(arg2, v118) if v119 ~= nil then v116.setSelectionValue(arg, v118, v119) end end end index2.ImportState = function(arg, arg2, arg3) if arg3 ~= nil then local activeLayers = {} for k, v118 in arg3, nil, nil do if v118 then activeLayers[k] = v86[34] end end arg._activeLayers = activeLayers end local states = {} arg._states = states for k, v118 in arg2, nil, nil do local v119 = v115.importLayers(v118.Layers, function(arg4) local num = tonumber(arg4.Priority) local selections = arg4.Selections if num == nil or type(selections) ~= "table" then return nil, nil end return num, v116.cloneCosmeticsSelection(selections) end, fn36, fn41) if next(v119) ~= nil then states[k] = fn40(v119) end end end return index2 end tbl17.ek = function() local ek = tbl17.cache.ek if not ek then local ek2 = { c = fn35() } tbl17.cache.ek = ek2 ek = ek2 end return ek.c end end do -- el local function fn35() tbl17.aL() local item = tbl17.dY().Item tbl17.d5() tbl17.ek() tbl17.d6() local v115 = tbl17.ea() tbl17.dZ() local v116 = tbl17.dV() local noneCosmetic = v116.NoneCosmetic local randomCosmetic = v116.RandomCosmetic local index2 = {} index2.__index = index2 local function fn36(arg, arg2) for k in arg, nil, nil do if arg2[k] == nil then arg[k] = nil end end end index2.new = function(arg, arg2, arg3, arg4) return setmetatable({ _intent = arg, _catalog = arg2, _favoritedResolver = arg3, _onlyUseFavoritesState = arg4, _resolvedSelectionByItemName = {}, _randomSelectionByItemName = {}, _dirtyItemSet = {}, }, index2) end index2.InvalidateItem = function(arg, arg2) arg._dirtyItemSet[arg2] = true end index2.InvalidateAll = function(arg) for k in arg._intent:GetItemNameSet() do arg._dirtyItemSet[k] = true end end index2.RerollAll = function(arg) arg._randomSelectionByItemName = {} arg:InvalidateAll() end index2.RerollItem = function(arg, arg2) arg._randomSelectionByItemName[arg2] = nil arg._dirtyItemSet[arg2] = true end index2._EnsureRandomSelections = function(arg, arg2) local tbl18 = arg._randomSelectionByItemName[arg2] if tbl18 == nil then tbl18 = {} arg._randomSelectionByItemName[arg2] = tbl18 end return tbl18 end index2._IsRandomSelectionValid = function(arg, arg2, arg3, arg4, arg5) if arg4 == nil or not arg._catalog:IsInCatalog({ CosmeticType = arg3, ItemName = arg2, CosmeticName = arg4 }) then return false end if not arg5 then return true end return arg._favoritedResolver:Get(arg2, arg4) end index2._GetRandomForPool = function(arg, arg2, arg3, arg4) if not arg4 then return arg._catalog:GetRandomCosmetic({ CosmeticType = arg3, ItemName = arg2 }) end local item2 = arg._favoritedResolver:GetItem(arg2) if item2 == nil then return nil end local tbl18 = {} local n = 0 for k in item2, nil, nil do if k:match("^" .. noneCosmetic) then if k:split("_")[3] ~= arg3 then continue end k = noneCosmetic end if arg._catalog:IsInCatalog({ CosmeticType = arg3, ItemName = arg2, CosmeticName = k }) then n += 1 tbl18[n] = k end end if n == v86[186] then return nil end return tbl18[math.random(n)] end index2._ResolveSelectedCosmeticName = function(arg, arg2, arg3, arg4, arg5, arg6) if arg5 == randomCosmetic then local v117 = arg4[arg3] if not arg:_IsRandomSelectionValid(arg2, arg3, v117, arg6) then local v118 = arg:_GetRandomForPool(arg2, arg3, arg6) arg4[arg3] = v118 v117 = v118 end return v117 end arg4[arg3] = nil return arg5 end index2._BuildResolved = function(arg, arg2) local itemEffective = arg._intent:GetItemEffective(arg2) or {} local v117 = arg:_EnsureRandomSelections(arg2) local tbl18 = {} for _, v118 in item, nil, nil do local v119 = v115.getSelectedCosmeticName(itemEffective, v118) local resolveSelectedCosmeticName = arg._ResolveSelectedCosmeticName local v120 = arg._onlyUseFavoritesState:Get(arg2, v118) local applyResolvedSelection = v115.applyResolvedSelection local v121 = resolveSelectedCosmeticName(arg, arg2, v118, v117, v119, v120) applyResolvedSelection(tbl18, itemEffective, v118, v121) end return tbl18 end index2._PruneRemovedItemState = function(arg) local itemNameSet = arg._intent:GetItemNameSet() fn36(arg._dirtyItemSet, itemNameSet) fn36(arg._resolvedSelectionByItemName, itemNameSet) fn36(arg._randomSelectionByItemName, itemNameSet) end index2.ResolveAll = function(arg) arg:_PruneRemovedItemState() for k in arg._intent:GetItemNameSet() do if arg._intent:GetItemEffective(k) == nil then arg._dirtyItemSet[k] = nil arg._resolvedSelectionByItemName[k] = nil arg._randomSelectionByItemName[k] = nil elseif arg._dirtyItemSet[k] or arg._resolvedSelectionByItemName[k] == nil then arg._dirtyItemSet[k] = nil arg._resolvedSelectionByItemName[k] = arg:_BuildResolved(k) end end return arg._resolvedSelectionByItemName end index2.ResolveItem = function(arg, arg2) if arg._intent:GetItemEffective(arg2) == nil then arg._dirtyItemSet[arg2] = nil arg._resolvedSelectionByItemName[arg2] = nil arg._randomSelectionByItemName[arg2] = nil return nil end if not arg._dirtyItemSet[arg2] and arg._resolvedSelectionByItemName[arg2] ~= nil then return arg._resolvedSelectionByItemName[arg2] end local v117 = arg:_BuildResolved(arg2) arg._dirtyItemSet[arg2] = nil arg._resolvedSelectionByItemName[arg2] = v117 return v117 end return index2 end tbl17.el = function() local el = tbl17.cache.el if not el then el = { c = fn35() } tbl17.cache.el = el end return el.c end end do -- em local function fn35() local v115 = tbl17.aR() local cosmeticLibrary = tbl17.aS().CosmeticLibrary local v116 = v115(cloneref(game:GetService("Players")).LocalPlayer, { "PlayerScripts", "Assets", "WrapTextures" }) local tbl18 tbl18 = { recordOriginalProperties = function(arg) local tbl19 = {} local descendants = arg:GetDescendants() table.insert(descendants, arg) for _, v117 in descendants, nil, nil do if v117:HasTag("Wrappable") then local attribute = v117:GetAttribute("WrapGroup") if type(attribute) == "number" then local tbl20 if v117:IsA("BasePart") then tbl20 = { Material = v117.Material, MaterialVariant = v117.MaterialVariant, Color = v117.Color, Transparency = v117.Transparency, Reflectance = v117.Reflectance, } if v117:IsA("MeshPart") then tbl20.TextureID = v117.TextureID end elseif v117:IsA("Decal") then tbl20 = { Color3 = v117.Color3, Transparency = v117.Transparency } elseif v117:IsA("Beam") or v117:IsA("Trail") or v117:IsA("ParticleEmitter") then tbl20 = { Color = v117.Color, Transparency = v117.Transparency, LightEmission = v117.LightEmission, } elseif v117:IsA("Frame") then tbl20 = { BackgroundColor3 = v117.BackgroundColor3, BackgroundTransparency = v117.BackgroundTransparency, } elseif v117:IsA(v86[146]) then tbl20 = { ImageColor3 = v117.ImageColor3, ImageTransparency = v117.ImageTransparency } elseif v117:IsA("Light") then tbl20 = { Color = v117.Color, Brightness = v117.Brightness } else if not (v117:IsA("RopeConstraint") or v117:IsA("SpringConstraint")) then continue end tbl20 = { Color = v117.Color } end local tbl21 = {} for _, v118 in v117:GetChildren() do if v118:IsA("SurfaceAppearance") then table.insert(tbl21, v118) end end local v118 = v86[34] tbl19[v117] = { WrapGroup = attribute, IgnoreTransparency = v117:GetAttribute("IgnoreTransparency") == v118, IgnoreMaterial = v117:GetAttribute("IgnoreMaterial") == true, OriginalProps = tbl20, OriginalChildren = tbl21, Cleanup = {}, } end end end return tbl19 end, resetWrap = function(arg) for k, v117 in arg, nil, nil do for k2, v118 in v117.OriginalProps, nil, nil do k[k2] = v118 end for _, v118 in v117.OriginalChildren, nil, nil do v107(function() v118.Parent = k end) end for _, v118 in v117.Cleanup, nil, nil do v118:Destroy() end v117.Cleanup = {} end end, applyWrap = function(arg, arg2, arg3) tbl18.resetWrap(arg) if arg2 == "RANDOM_COSMETIC" then return end local cosmetics = v102(cosmeticLibrary, "Cosmetics") if cosmetics == nil then return end local v117 = cosmetics[arg2] if v117 == nil then return end local wrapGroups = v102(v117, "WrapGroups") if wrapGroups == nil then return end for k, v118 in arg, nil, nil do local wrapGroup = v118.WrapGroup if arg3 then if wrapGroup == v86[63] then wrapGroup = 2 elseif wrapGroup == 2 then wrapGroup = v86[63] end end local tbl19 = wrapGroups[wrapGroup] or {} local ignoreTransparency = v118.IgnoreTransparency local ignoreMaterial = v118.IgnoreMaterial if k:IsA("BasePart") then k.Color = tbl19.Color or k.Color k.Reflectance = tbl19.Reflectance or k.Reflectance if not ignoreTransparency then k.Transparency = tbl19.Transparency or k.Transparency end local flag19 = not ignoreMaterial if flag19 then local material = tbl19.Material if material then ignoreTransparency = ignoreTransparency and material == Enum.Material.ForceField if not ignoreTransparency then k.Material = material end end k.MaterialVariant = tbl19.MaterialVariant or k.MaterialVariant end if k:IsA("MeshPart") then k.TextureID = "" end if flag19 then local textures = tbl19.Textures if textures then local v119 = v116:FindFirstChild(textures) if v119 then for _, v120 in v119:GetChildren() do local clone = v120:Clone() clone.Parent = k table.insert(v118.Cleanup, clone) end end end end elseif k:IsA("Decal") then if not ignoreTransparency then k.Transparency = tbl19.Transparency or k.Transparency end elseif k:IsA("Beam") or k:IsA("Trail") or k:IsA("ParticleEmitter") then local color = tbl19.Color if color then k.Color = ColorSequence.new(color) end elseif k:IsA(v86[128]) then k.BackgroundColor3 = tbl19.Color or k.BackgroundColor3 if not ignoreTransparency then k.BackgroundTransparency = tbl19.Transparency or k.BackgroundTransparency end elseif k:IsA("ImageLabel") then k.ImageColor3 = tbl19.Color or k.ImageColor3 if not ignoreTransparency then k.ImageTransparency = tbl19.Transparency or k.ImageTransparency end elseif k:IsA("Light") then k.Color = tbl19.Color or k.Color if not ignoreTransparency then local transparency = tbl19.Transparency if transparency ~= nil then k.Brightness = k.Brightness * (1 - transparency) end end elseif k:IsA("RopeConstraint") or k:IsA("SpringConstraint") then local color = tbl19.Color if color then k.Color = BrickColor.new(color) end end for _, v119 in v118.OriginalChildren, nil, nil do v107(function() v119.Parent = nil end) end end end, } return tbl18 end tbl17.em = function() local em = tbl17.cache.em if not em then local em2 = { c = fn35() } tbl17.cache.em = em2 em = em2 end return em.c end end do -- en local function fn35() local fighterController = tbl17.aS().FighterController local v115 = tbl17.dV() tbl17.ea() tbl17.eb() local v116 = tbl17.em() local v117 = cloneref(game:GetService("Players")) local noneCosmetic = v115.NoneCosmetic local v118 = fighterController local tbl18 tbl18 = { findPlacerAndItemName = function(arg) for _, v119 in v102(v118, "Objects"), nil, nil do local items = v102(v119, "Items") if items == nil then continue end for _, v120 in items, nil, nil do local data = v102(v120, "Data") if v102(data, "ObjectID") == arg then return v102(v119, "Player"), v102(data, "Name") end end end return nil, nil end, resolvePlacer = function(arg) local attribute = arg:GetAttribute("PlacedByUserID") if type(attribute) == "number" then local playerByUserId = v117:GetPlayerByUserId(attribute) if playerByUserId ~= nil then return playerByUserId end end local attribute2 = arg:GetAttribute("ObjectID") if type(attribute2) == "string" then return (tbl18.findPlacerAndItemName(attribute2)) end return nil end, getSelectionOverrides = function(arg, arg2, arg3) if arg2 == nil then return nil, nil end local v119 = arg:Get(arg2, arg3) if v119 == nil then return nil, nil end local skin = v119.Skin if skin == noneCosmetic then skin = nil end local wrap = v119.Wrap if wrap ~= nil and wrap.Name == noneCosmetic then wrap = nil end return skin, wrap end, applyWrapTo = function(arg, arg2) v116.applyWrap(v116.recordOriginalProperties(arg), arg2.Name, arg2.Inverted) end, } return tbl18 end tbl17.en = function() local en = tbl17.cache.en if not en then local en2 = { c = fn35() } tbl17.cache.en = en2 en = en2 end return en.c end end do -- eo local function fn35() tbl17.ad() local v115 = tbl17.a() local v116 = tbl17.k() local v117 = tbl17.b3() local fighterController = tbl17.aS().FighterController local v118 = tbl17.en() tbl17.eb() local v119 = tbl17.em() local v120 = tbl17.aR() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local v121 = v120(v120(localPlayer, { "PlayerScripts", "Assets" }), { "Misc", "FireHitboxes" }) local v122 = v120(localPlayer, { "PlayerScripts", "Modules", "GameComponents", "FireHitboxes" }, true) local function fn36(arg, arg2) local default = v121:FindFirstChild(arg) or v121:FindFirstChild("Default") if default == nil or not default:IsA("Model") then return nil end local clone = default:Clone() local primary = clone:FindFirstChild("Primary") if primary == nil then clone:Destroy() return nil end clone.PrimaryPart = primary primary.Size = arg2.Size clone:PivotTo(arg2.CFrame) if arg2:GetAttribute("IsMain") then local fire = primary:FindFirstChild("Fire") if fire ~= nil then fire.Acceleration = Vector3.new(0, 10, 0) end end return clone end local function fn37(arg, arg2, arg3, arg4) local attribute = arg3:GetAttribute("ObjectID") if type(attribute) ~= "string" then return end local v123, v124 = v118.findPlacerAndItemName(attribute) if v123 == nil or v124 == nil then return end local v125, v126 = v118.getSelectionOverrides(arg, v123, v124) if v125 == nil and v126 == nil then return end local visual = arg4.Visual if v125 ~= nil then local v127 = fn36(v125, arg3) if v127 == nil then arg2:ReportResult(v115.err("FireHitbox", "asset_lookup", string.format("FireHitbox asset \"%s\" missing and \"Default\" fallback also missing", tostring(v125)))) return end v127.Parent = workspace arg4.Visual = v127 visual:Destroy() if v126 ~= nil then v118.applyWrapTo(v127, v126) else local v128 = v117(fighterController.GetWrap, fighterController, attribute) if type(v128) == "string" then v119.applyWrap(v119.recordOriginalProperties(v127), v128, true) end end elseif v126 ~= nil then v118.applyWrapTo(visual, v126) end end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _store = arg, _errorReporter = arg2, _loadedTrove = nil }, index2) end index2.Load = function(arg) if arg._loadedTrove ~= nil then return v115.VoidOk end local v123 = v102(v122, "_fire_hitboxes") if v123 == nil then return v115.err("FireHitbox", "field_lookup", "_fire_hitboxes table not found on singleton") end local FireHitbox = v116.new("cosmetics.FireHitbox") arg._loadedTrove = FireHitbox local store = arg._store local errorReporter = arg._errorReporter local v124 = getmetatable(v123) setmetatable(v123, { __newindex = function(arg2, arg3, arg4) v103(arg2, arg3, arg4) if arg4 == nil then return end fn37(store, errorReporter, arg3, arg4) end }) FireHitbox:Add(function() setmetatable(v123, v124) end) for k, v125 in v123, nil, nil do fn37(store, errorReporter, k, v125) end return v115.VoidOk end index2.Destroy = function(arg) local loadedTrove = arg._loadedTrove if loadedTrove ~= nil then arg._loadedTrove = nil loadedTrove:Destroy() end end return index2 end tbl17.eo = function() local eo = tbl17.cache.eo if not eo then local eo2 = { c = fn35() } tbl17.cache.eo = eo2 eo = eo2 end return eo.c end end do -- ep local function fn35() local v115 = tbl17.a() local v116 = tbl17.en() tbl17.eb() local v117 = tbl17.k() local v118 = tbl17.aR() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local v119 = v118(v118(localPlayer, { "PlayerScripts", "Assets" }), { "Misc", "JumpPads" }) local v120 = v118(localPlayer, { "PlayerScripts", "Modules", "GameComponents", "JumpPads" }, true) local function fn36(arg, arg2) return function(arg3, arg4) local v121, v122 = v116.getSelectionOverrides(arg, v116.resolvePlacer(arg4), "Jump Pad") if v121 == nil and v122 == nil then return arg2(arg3, arg4) end if v121 ~= nil and v119:FindFirstChild(v121) ~= nil then arg4:SetAttribute("ViewModelName", v121) end task.spawn(arg2, arg3, arg4) if v122 ~= nil then for _, v123 in arg4:GetChildren() do if v123:IsA("Model") then v116.applyWrapTo(v123, v122) break end end end return nil end end local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _store = arg, _loadedTrove = nil }, index2) end index2.Load = function(arg) if arg._loadedTrove ~= nil then return v115.VoidOk end local v121 = getmetatable(v120) local v122 = v102(v121, "_ObjectAdded") if v122 == nil then return v115.err("JumpPad", "function_lookup", "JumpPads._ObjectAdded not found") end local JumpPad = v117.new("cosmetics.JumpPad") arg._loadedTrove = JumpPad v103(v121, "_ObjectAdded", fn36(arg._store, v122)) JumpPad:Add(function() v103(v121, "_ObjectAdded", v122) end) return v115.VoidOk end index2.Destroy = function(arg) local loadedTrove = arg._loadedTrove if loadedTrove ~= nil then arg._loadedTrove = nil loadedTrove:Destroy() end end return index2 end tbl17.ep = function() local ep = tbl17.cache.ep if not ep then ep = { c = fn35() } tbl17.cache.ep = ep end return ep.c end end do -- eq local function fn35() local v115 = tbl17.a() local v116 = tbl17.en() tbl17.eb() local v117 = tbl17.k() local v118 = tbl17.aR() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local v119 = v118(v118(localPlayer, { "PlayerScripts", "Assets" }), { "Misc", "SmokeClouds" }) local v120 = v118(localPlayer, { "PlayerScripts", "Modules", "GameComponents", "SmokeClouds" }, true) local function fn36(arg, arg2) return function(arg3, arg4) local v121 = v116.getSelectionOverrides(arg, v116.resolvePlacer(arg4), "Smoke Grenade") if v121 ~= nil and v119:FindFirstChild(v121) ~= nil then arg4.Name = v121 end return arg2(arg3, arg4) end end local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _store = arg, _loadedTrove = nil }, index2) end index2.Load = function(arg) if arg._loadedTrove ~= nil then return v115.VoidOk end local v121 = getmetatable(v120) local v122 = v102(v121, "_ObjectAdded") if v122 == nil then return v115.err("SmokeCloud", "function_lookup", "SmokeClouds._ObjectAdded not found") end local SmokeCloud = v117.new("cosmetics.SmokeCloud") arg._loadedTrove = SmokeCloud v103(v121, "_ObjectAdded", fn36(arg._store, v122)) SmokeCloud:Add(function() v103(v121, "_ObjectAdded", v122) end) return v115.VoidOk end index2.Destroy = function(arg) local loadedTrove = arg._loadedTrove if loadedTrove ~= nil then arg._loadedTrove = nil loadedTrove:Destroy() end end return index2 end tbl17.eq = function() local eq = tbl17.cache.eq if not eq then local eq2 = { c = fn35() } tbl17.cache.eq = eq2 eq = eq2 end return eq.c end end do -- er local function fn35() tbl17.ad() local v115 = tbl17.a() local v116 = tbl17.en() tbl17.eb() local v117 = tbl17.k() local v118 = tbl17.aR() local v119 = cloneref(game:GetService("CollectionService")) local viewModels = v118(v118(cloneref(game:GetService("Players")).LocalPlayer, { "PlayerScripts", "Assets" }), "ViewModels") local function fn36(arg) local v120 = viewModels:FindFirstChild(arg, v86[34]) if v120 == nil or not v120:IsA("Model") then return nil end local clone = v120:Clone() for _, v121 in clone:GetDescendants() do if v121:IsA("BasePart") then v121.Anchored = true v121.CanCollide = false v121.CanTouch = false v121.CanQuery = false v121.Massless = true end end return clone end local function fn37(arg, arg2) if arg == arg2 or arg:IsDescendantOf(arg2) then return end if arg:IsA("BasePart") then arg.Transparency = 1 arg.CastShadow = false elseif arg:IsA("Decal") or arg:IsA("Texture") then if true then arg.Transparency = 1 else -- (anti-tamper freeze trap removed) end elseif arg:IsA("ParticleEmitter") or arg:IsA("Trail") or arg:IsA("Beam") then arg.Enabled = v86[153] end end local function fn38(arg, arg2, arg3, arg4) arg4:Connect(arg.DescendantAdded, function(arg5) if arg5:IsDescendantOf(arg3) then return end fn37(arg5, arg2) end) for _, v120 in arg:GetDescendants() do fn37(v120, arg2) end end local function fn39(arg, arg2, arg3, parent) local v120, v121 = v116.getSelectionOverrides(arg2, v116.resolvePlacer(parent), "Subspace Tripmine") if v120 == nil and v121 == nil then return end local v122 = arg:AttachExtend(parent) v122:Add(task.spawn(function() local hitbox = parent:WaitForChild("Hitbox", 5) if hitbox == nil then if parent.Parent ~= nil then arg3:ReportResult(v115.err("Tripmine", "hitbox_timeout", string.format("Hitbox did not arrive within 5s for %s", tostring(parent:GetFullName())))) end return end local v123 = parent if v120 ~= nil then v123 = fn36(v120) if v123 == nil then arg3:ReportResult(v115.err("Tripmine", "asset_lookup", string.format("viewmodel asset \"%s\" not found in ViewModels", tostring(v120)))) v123 = parent else fn38(parent, hitbox, v123, v122) v123:PivotTo(hitbox.CFrame) v123.Parent = parent for _, v124 in v123:GetDescendants() do if v124:IsA("BasePart") then local weldConstraint = Instance.new("WeldConstraint") weldConstraint.Part0 = hitbox weldConstraint.Part1 = v124 weldConstraint.Parent = v124 v124.Anchored = v86[153] end end end end if v121 ~= nil then v116.applyWrapTo(v123, v121) end end)) end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _store = arg, _errorReporter = arg2, _loadedTrove = nil }, index2) end index2.Load = function(arg) if arg._loadedTrove ~= nil then return v115.VoidOk end local Tripmine = v117.new("cosmetics.Tripmine") arg._loadedTrove = Tripmine local store = arg._store local errorReporter = arg._errorReporter Tripmine:Connect(v119:GetInstanceAddedSignal("SubspaceTripmine"), function(arg2) fn39(Tripmine, store, errorReporter, arg2) end) for _, v120 in v119:GetTagged("SubspaceTripmine") do fn39(Tripmine, store, errorReporter, v120) end return v115.VoidOk end index2.Destroy = function(arg) local loadedTrove = arg._loadedTrove if loadedTrove ~= nil then arg._loadedTrove = nil loadedTrove:Destroy() end end return index2 end tbl17.er = function() local er = tbl17.cache.er if not er then local er2 = { c = fn35() } tbl17.cache.er = er2 er = er2 end return er.c end end do -- es local function fn35() tbl17.ad() local v115 = tbl17.eo() local v116 = tbl17.ep() tbl17.a() local v117 = tbl17.eq() tbl17.eb() local v118 = tbl17.er() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _errorReporter = arg2 } local hooks = {} local v119 = v116.new(arg) local v120 = v118.new(arg, arg2) local v121 = v115.new(arg, arg2) local new = v117.new hooks[1] = v119 hooks[2] = v120 hooks[3] = v121 do local values = table.pack(new(arg)) table.move(values, 1, values.n, 4, hooks) end tbl18._hooks = hooks return setmetatable(tbl18, index2) end index2.Load = function(arg) for _, v119 in arg._hooks, nil, nil do arg._errorReporter:ReportResult(v119:Load()) end end index2.Destroy = function(arg) for _, v119 in arg._hooks, nil, nil do v119:Destroy() end end return index2 end tbl17.es = function() local es = tbl17.cache.es if not es then local es2 = { c = fn35() } tbl17.cache.es = es2 es = es2 end return es.c end end do -- et local function fn35() tbl17.dB() tbl17.cF() local v115 = tbl17.k() local v116 = tbl17.dE() local v117 = tbl17.dG() local tbl18 = { LocalScript = true, Script = true, ModuleScript = true, BillboardGui = true, SurfaceGui = true, Beam = true, Trail = v86[34], Fire = true, Sparkles = v86[34], ForceField = v86[34], Smoke = v86[34], Light = v86[34], IKControl = true, } local v118 = cloneref(game:GetService("CollectionService")) local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _fighters = arg, _characterAppearances = arg2, _loadedTrove = nil, _cloneByPlayer = {}, _stateTroveByFighter = {}, _characterTroveByPlayer = {}, _acquiredPlayerSet = {}, }, index2) end index2.Load = function(arg) if arg._loadedTrove ~= nil then return end local FinisherCloneCache = v115.new("cosmetics.FinisherCloneCache") arg._loadedTrove = FinisherCloneCache FinisherCloneCache:Connect(arg._characterAppearances.Decorated, function(arg2, arg3) if arg._stateTroveByFighter[arg2] ~= nil then arg:_CloneFor(arg2.Player, arg3) end end) FinisherCloneCache:Add(arg._fighters:ObserveRemoteStates(function(arg2) arg:_AttachRemoteState(arg2) end, function(arg2) arg:_DetachRemoteState(arg2) end)) FinisherCloneCache:Add(function() for k in arg._stateTroveByFighter, nil, nil do arg:_DetachRemoteState(k) end end) end index2._AttachRemoteState = function(arg, arg2) local FinisherCloneCache = v115.new("cosmetics.FinisherCloneCache") arg._stateTroveByFighter[arg2] = FinisherCloneCache local player = arg2.Player FinisherCloneCache:Connect(player.CharacterRemoving, function() arg:_ResetPlayer(player) end) local v119 = arg._characterAppearances:FindDecoratedModel(arg2) if v119 ~= nil then arg:_CloneFor(player, v119) end end index2._DetachRemoteState = function(arg, arg2) local v119 = arg._stateTroveByFighter[arg2] if v119 ~= nil then arg._stateTroveByFighter[arg2] = nil v119:Destroy() end arg:_ResetPlayer(arg2.Player) end index2._CloneFor = function(arg, arg2, arg3) if arg._acquiredPlayerSet[arg2] then return end arg:_DestroyCloneFor(arg2) arg:_DestroyCharTrove(arg2) local FinisherCloneCache = v115.new("cosmetics.FinisherCloneCache") arg._characterTroveByPlayer[arg2] = FinisherCloneCache local v119 = v117(arg3, 10):andThen(function() arg:_BuildClone(arg2, arg3) end):catch(function() end) FinisherCloneCache:AddPromise(v119) end index2._BuildClone = function(arg, arg2, arg3) local v119 = v116(arg3) if v119 == nil then return end for _, v120 in v119:GetDescendants() do if tbl18[v120.ClassName] then v120:Destroy() elseif v120:IsA("BasePart") then v120.Anchored = false if v120.Transparency < 1 then v120.Transparency = v86[186] end elseif v120:IsA("ParticleEmitter") then v120:Clear() v120:Destroy() end end for _, v120 in v118:GetTags(v119) do v118:RemoveTag(v119, v120) end arg._cloneByPlayer[arg2] = v119 end index2._DestroyCloneFor = function(arg, arg2) local v119 = arg._cloneByPlayer[arg2] if v119 == nil then return end arg._cloneByPlayer[arg2] = nil v119:Destroy() end index2._DestroyCharTrove = function(arg, arg2) local v119 = arg._characterTroveByPlayer[arg2] if v119 == nil then return end arg._characterTroveByPlayer[arg2] = nil v119:Destroy() end index2._ResetPlayer = function(arg, arg2) arg:_DestroyCloneFor(arg2) arg:_DestroyCharTrove(arg2) arg._acquiredPlayerSet[arg2] = nil end index2.AcquireClone = function(arg, arg2) local v119 = arg._cloneByPlayer[arg2] if v119 == nil then return nil end arg._cloneByPlayer[arg2] = nil arg:_DestroyCharTrove(arg2) arg._acquiredPlayerSet[arg2] = true return v119 end index2.Destroy = function(arg) local loadedTrove = arg._loadedTrove if loadedTrove ~= nil then arg._loadedTrove = nil loadedTrove:Destroy() end end return index2 end tbl17.et = function() local et = tbl17.cache.et if not et then et = { c = fn35() } tbl17.cache.et = et end return et.c end end do -- eu local function fn35() tbl17.aN() local v115 = tbl17.a() local clientEntity = tbl17.aS().ClientEntity tbl17.cF() local finishers = tbl17.aS().Finishers local v116 = tbl17.dV() tbl17.et() tbl17.eb() local v117 = tbl17.dE() local v118 = cloneref(game:GetService("Players")) local noneCosmetic = v116.NoneCosmetic local v119 = clientEntity local function fn36(arg, arg2) local localState = arg.LocalState if localState ~= nil and localState.Player == arg2 then local equippedItem = localState:GetEquippedItem() return equippedItem ~= nil and v102(equippedItem, "Name") or nil end local v120 = arg.StateByPlayer[arg2] local equippedItem = v120 ~= nil and v120.ItemObserver:GetEquippedItem() return equippedItem and equippedItem.Name or nil end local function fn37(arg) for _, v120 in arg:GetDescendants() do if v120:IsA("BasePart") then v120.Transparency = 1 elseif v120:IsA("Decal") then v120:Destroy() elseif v120:IsA("BillboardGui") then v120.Enabled = false end end end local function fn38(arg, arg2, arg3, arg4, arg5, arg6, arg7) local humanoid = arg:FindFirstChildOfClass("Humanoid") if humanoid == nil then arg:Destroy() return end local humanoidRootPart = arg:FindFirstChild("HumanoidRootPart") if humanoidRootPart == nil then arg:Destroy() return end humanoidRootPart.AssemblyLinearVelocity = Vector3.zero humanoid.Health = 0 local tbl18 = {} for _, v120 in arg:GetChildren() do if v120:IsA("BasePart") then v120.CollisionGroup = "Players" table.insert(tbl18, v120) end end for k, v120 in tbl18, nil, nil do for i = k + 1, #tbl18 do local noCollisionConstraint = Instance.new("NoCollisionConstraint") noCollisionConstraint.Part0 = v120 noCollisionConstraint.Part1 = tbl18[i] noCollisionConstraint.Parent = v120 end end arg:PivotTo(arg2:GetPivot()) arg.Parent = arg2.Parent local v120 = getthreadidentity() setthreadidentity(v86[56]) local v121 = v102(arg7, "_current_finisher") if v121 ~= nil then coroutine.wrap(v121.Destroy)(v121) end local v122 = coroutine.wrap(v102(arg3, "new"))(humanoid, arg4, arg5) v103(arg7, "_current_finisher", v122) v122:SetSerial(arg6) arg2.Destroying:Once(function() if arg.Parent ~= nil then arg:Destroy() end end) task.spawn(v107, v122.PlayServer, v122) task.spawn(v107, v122.PlayClient, v122) setthreadidentity(v120) end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) return setmetatable({ _store = arg, _fighters = arg2, _finisherCloneCache = arg3 }, index2) end index2.Load = function(arg) if arg._restore ~= nil then return v115.VoidOk end arg._finisherCloneCache:Load() local replicateFromServer = v102(v119, "ReplicateFromServer") if replicateFromServer == nil then return v115.err("FinisherHook", "function_lookup", "ReplicateFromServer not found") end local v120 = nil for k, v121 in debug.getconstants(replicateFromServer) do if v121 == "_PlayFinisher" then v120 = k break else v120 = nil end end if v120 == nil then return v115.err("FinisherHook", "constant_scan", "_PlayFinisher constant not found in ReplicateFromServer") end local v121 = v102(v119, "_PlayFinisher") if v121 == nil then return v115.err("FinisherHook", "function_lookup", "_PlayFinisher not found") end debug.setconstant(replicateFromServer, v120, "_PlayFinisher\0hello") v103(clientEntity, "_PlayFinisher\0hello", function(arg2, arg3, arg4, arg5, arg6) local function fn39() return coroutine.wrap(v121)(arg2, arg3, arg4, arg5, arg6) end local v122 = fn36(arg._fighters, arg5) local flag19 = v122 ~= nil and arg._store:Get(arg5, v122) or nil local finisher = flag19 ~= nil and flag19.Finisher or nil if finisher == nil or finisher == noneCosmetic then return fn39() end local v123 = finishers:FindFirstChild(finisher) if v123 == nil then return fn39() end local model = v102(arg2, "Model") local v124 = arg:_AcquireClone(model) if v124 == nil then return fn39() end local v125 = getthreadidentity() setthreadidentity(2) local module = require(v123) setthreadidentity(v125) fn37(model) fn38(v124, model, module, arg4, arg5, arg6, arg2) return nil end) arg._restore = { Func = replicateFromServer, TargetConstant = v120 } return v115.VoidOk end index2._AcquireClone = function(arg, arg2) local playerFromCharacter = v118:GetPlayerFromCharacter(arg2) if playerFromCharacter ~= nil then return arg._finisherCloneCache:AcquireClone(playerFromCharacter) end return v117(arg2) end index2._Restore = function(arg) local restore = arg._restore if restore == nil then return end debug.setconstant(restore.Func, restore.TargetConstant, "_PlayFinisher") v103(clientEntity, "_PlayFinisher\0hello", nil) end index2.Destroy = function(arg) arg:_Restore() end return index2 end tbl17.eu = function() local eu = tbl17.cache.eu if not eu then local eu2 = { c = fn35() } tbl17.cache.eu = eu2 eu = eu2 end return eu.c end end do -- ev local function fn35() local v115 = tbl17.dV() tbl17.ea() local noneCosmetic = v115.NoneCosmetic return function(arg, arg2, arg3, arg4, arg5) if arg3 == nil then return arg2 end arg4 = arg4 or function(arg6) return arg6 end local skin = arg3.Skin if skin ~= nil then arg2[arg4("Name")] = skin == noneCosmetic and arg or skin end local wrap = arg3.Wrap if wrap ~= nil then local name = wrap.Name if name == noneCosmetic then arg2[arg4("Wrap")] = nil else local tbl18 = { Name = name, Inverted = wrap.Inverted } arg2[arg4("Wrap")] = tbl18 end end local charm = arg3.Charm if charm ~= nil then if charm == noneCosmetic then arg2[arg4("Charm")] = nil else local tbl18 = { Name = charm } local v116 = arg5(charm) if v116 ~= nil then tbl18.Metadata = v116 end arg2[arg4("Charm")] = tbl18 end end return arg2 end end tbl17.ev = function() local ev = tbl17.cache.ev if not ev then ev = { c = fn35() } tbl17.cache.ev = ev end return ev.c end end do -- ew local function fn35() tbl17.aO() local v115 = tbl17.a() local clientItem = tbl17.aS().ClientItem local v116 = tbl17.cK() tbl17.d8() local v117 = tbl17.eg() local v118 = tbl17.g() tbl17.eb() local v119 = tbl17.k() local v120 = tbl17.ev() local v121 = cloneref(game:GetService("Players")) local localPlayer = v121.LocalPlayer local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local ViewModelHook = v119.new("cosmetics.ViewModelHook") local tbl18 = { _trove = ViewModelHook, _store = arg, _rankCharm = arg2, _rankPatchActive = false, _restoreDatas = {}, ViewModelCreated = ViewModelHook:Add(v118.new()), } setmetatable(tbl18, index2) ViewModelHook:Connect(v121.PlayerRemoving, function(arg3) tbl18._restoreDatas[arg3] = nil end) return tbl18 end index2.Load = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v122 = v102(clientItem, "new") if v122 == nil then return v115.err("ViewModelHook", "function_lookup", "ClientItem.new not found") end local v123 = nil local v124 = nil for _, v125 in debug.getupvalues(v122) do if type(v125) ~= "table" then continue else local flag19 = false for k, v126 in next, v125, nil do local v127 = v86[68] if not (type(v126) ~= v127 or v102(v126, "CreateSpectatorSound") == nil) then flag19 = true v123 = v125 v124 = k break end end if not flag19 then continue end end break end if v123 == nil or v124 == nil then return v115.err("ViewModelHook", "upvalue_scan", "ClientItem prototype not found - CreateSpectatorSound marker missing") end local v125 = v123[v124] v123[v124] = { __index = function(_, key) return v125[key] end, __newindex = function(arg2, arg3, arg4) if arg3 ~= "Info" then v103(arg2, arg3, arg4) return end v103(arg2, "Info", arg4) setmetatable(arg2, v125) local v126 = debug.getstack(2, v86[63]) if type(v126) ~= "table" then v126 = debug.getstack(v86[56], 2) end local viewModel = v102(v126[1], "ViewModel") local player = v102(v102(arg2, "ClientFighter"), "Player") local name = v102(arg2, "Name") if player == localPlayer then arg.ViewModelCreated:Fire(name) end local v127 = arg._store:Get(player, name) local v128 = viewModel[v116.encode("Data")] local flag19 = arg._rankPatchActive and player == localPlayer and (v127 == nil or v127.Charm == nil) local v129 = nil if flag19 then local _v130, v131 = v117.findCharmPayload(v128) v129 = v117.resolvePatchedPayload(v131, arg._rankCharm) end if v127 == nil and v129 == nil then return end local tbl18 = arg._restoreDatas[player] if tbl18 == nil then tbl18 = {} arg._restoreDatas[player] = tbl18 end if tbl18[name] == nil then tbl18[name] = table.clone(v128) end if v127 ~= nil then v120(name, v128, v127, v116.encode, function(arg5) return arg._rankCharm:ResolveMetadata(arg5) end) end if v129 ~= nil then v128[v116.encode("Charm")] = v129 end end, } arg._restore = { ClientItemPrototype = v125, UpvaluesTable = v123, ClientItemPrototypeIndex = v124 } return v115.VoidOk end index2._Restore = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil restore.UpvaluesTable[restore.ClientItemPrototypeIndex] = restore.ClientItemPrototype end index2.SetRankPatchActive = function(arg, rankPatchActive) arg._rankPatchActive = rankPatchActive end index2.IsRankPatchActive = function(arg) return arg._rankPatchActive end index2.GetCosmeticRestoreData = function(arg, arg2, arg3) local v122 = arg._restoreDatas[arg2] if v122 == nil then return nil end return v122[arg3] end index2.EnsureRestoreData = function(arg, arg2, arg3, arg4) local tbl18 = arg._restoreDatas[arg2] if tbl18 == nil then tbl18 = {} arg._restoreDatas[arg2] = tbl18 end if tbl18[arg3] ~= nil then return end tbl18[arg3] = table.clone(arg4) end index2.Destroy = function(arg) arg:_Restore() arg._trove:Destroy() end return index2 end tbl17.ew = function() local ew = tbl17.cache.ew if not ew then ew = { c = fn35() } tbl17.cache.ew = ew end return ew.c end end do -- ex local function fn35() local v115 = tbl17.cK() return function(arg) local tbl18 = {} for k, v116 in next, arg, nil do k = type(k) == "string" and v115.encode(k) or k tbl18[k] = v116 end return tbl18 end end tbl17.ex = function() local ex = tbl17.cache.ex if not ex then ex = { c = fn35() } tbl17.cache.ex = ex end return ex.c end end do -- ey local function fn35() tbl17.aO() local v115 = tbl17.k() local clientItem = tbl17.aS().ClientItem local clientViewModel = tbl17.aS().ClientViewModel tbl17.cF() tbl17.d8() tbl17.ea() tbl17.ew() local v116 = tbl17.ev() local v117 = tbl17.ex() local areViewModelSelectionsEqual = tbl17.ed().areViewModelSelectionsEqual local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) return setmetatable({ _trove = v115.new("cosmetics.RemoteViewModelRefresher"), _fighters = arg, _viewModelHook = arg2, _rankCharm = arg3, }, index2) end index2.RefreshChangedItems = function(arg, arg2, arg3, arg4) local v118 = arg._fighters.StateByPlayer[arg2] if v118 == nil then return end for _, v119 in v118.ItemObserver:GetItems() do local name = v119.Name local v120 = arg4[name] if not areViewModelSelectionsEqual(arg3[name], v120) then arg:_RebuildItem(arg2, v119.Inner, name, v120) end end end index2._RebuildItem = function(arg, arg2, arg3, arg4, arg5) local viewModel = v102(arg3, "ViewModel") if viewModel == nil then return end local data = v102(viewModel, "Data") if data == nil then return end if arg5 ~= nil then arg._viewModelHook:EnsureRestoreData(arg2, arg4, data) end coroutine.wrap(function() local v118 = getthreadidentity() setthreadidentity(2) coroutine.wrap(v102(clientViewModel, "Destroy"))(viewModel) setthreadidentity(v118) end)() local cosmeticRestoreData if arg5 ~= nil then cosmeticRestoreData = v116(arg4, { Name = arg4 }, arg5, nil, function(arg6) return arg._rankCharm:ResolveMetadata(arg6) end) else cosmeticRestoreData = arg._viewModelHook:GetCosmeticRestoreData(arg2, arg4) or data end local v118 = v117({ Data = v117(cosmeticRestoreData) }) local v119 = coroutine.wrap(function() local v119 = getthreadidentity() setthreadidentity(2) local v120 = coroutine.wrap(v102(clientItem, "_CreateViewModel"))(arg3, v118) setthreadidentity(v119) return v120 end)() if v119 == nil then return end v103(arg3, "ViewModel", v119) coroutine.wrap(function() local v120 = getthreadidentity() setthreadidentity(2) coroutine.wrap(v102(clientViewModel, "Equip"))(v119, true) setthreadidentity(v120) end)() arg:_RefreshIKArmTargets(arg3) end index2._RefreshIKArmTargets = function(arg, arg2) local clientFighter = v102(arg2, "ClientFighter") if v102(clientFighter, "EquippedItem") ~= arg2 then return end local entity = v102(clientFighter, "Entity") if entity == nil then return end local setIKControlTargetItem = v102(v102(getmetatable(entity), "__index"), "SetIKControlTargetItem") setIKControlTargetItem(entity, nil) setIKControlTargetItem(entity, arg2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.ey = function() local ey = tbl17.cache.ey if not ey then local ey2 = { c = fn35() } tbl17.cache.ey = ey2 ey = ey2 end return ey.c end end do -- ez local function fn35() tbl17.aO() local v115 = tbl17.g().new() return { Rebuilt = v115, notifyRebuilt = function(arg) v115:Fire(arg) end, } end tbl17.ez = function() local ez = tbl17.cache.ez if not ez then local ez2 = { c = fn35() } tbl17.cache.ez = ez2 ez = ez2 end return ez.c end end do -- eA local function fn35() tbl17.aO() local v115 = tbl17.k() local clientItem = tbl17.aS().ClientItem local clientViewModel = tbl17.aS().ClientViewModel tbl17.cF() tbl17.cX() tbl17.d8() local v116 = tbl17.eg() local v117 = tbl17.d7() tbl17.ea() tbl17.ew() local v118 = tbl17.ez() local v119 = tbl17.ev() local v120 = tbl17.ex() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 local v121 = clientViewModel local v122 = clientItem index2.new = function(arg, arg2, arg3) local tbl18 = { _trove = v115.new("cosmetics.ViewModelReloader"), _viewModelHook = arg2, _rankCharm = arg3 } setmetatable(tbl18, index2) tbl18:_BindToContext(arg) return tbl18 end index2._BindToContext = function(arg, arg2) arg._trove:Add(arg2:ObserveContext("cosmetics.ViewModelReloader", function(arg3) arg._fighterState = arg3.FighterState end)) arg._trove:Connect(arg2.ContextRemoved, function() arg._fighterState = nil end) end index2.ReloadSeasonCharmItems = function(arg, arg2) local fighterState = arg._fighterState if fighterState == nil then return end for _, v123 in fighterState:GetItems() do local name = v123.Name local v124 = arg2[name] if not (v124 ~= nil and v124.Charm ~= nil) then local viewModel = v102(v123, "ViewModel") local data = viewModel ~= nil and v102(viewModel, "Data") or nil if data ~= nil then local _v125, v126 = v116.findCharmPayload(arg._viewModelHook:GetCosmeticRestoreData(localPlayer, name) or data) if v126 ~= nil then local name2 = v102(v126, "Name") if not (type(name2) ~= "string" or not v117.isSeasonRankCharm(name2)) then if arg._viewModelHook:IsRankPatchActive() then local v127 = v116.resolvePatchedPayload(v126, arg._rankCharm) if v127 ~= nil then v126 = v127 end end local _v127, v128 = v116.findCharmPayload(data) if not v116.areMetadataEqual(v126, v128) then arg:_ReloadWithCosmetics(fighterState, name, v123, v124) end end end end end end end index2.ReloadAllWithCosmetics = function(arg, arg2, arg3) local fighterState = arg._fighterState if fighterState == nil then return end for _, v123 in fighterState:GetItems() do if v123.Name == arg2 then arg:_ReloadWithCosmetics(fighterState, arg2, v123, arg3) end end end index2._ReloadWithCosmetics = function(arg, arg2, arg3, arg4, arg5) local viewModel = v102(arg4, "ViewModel") if viewModel == nil then return end local data = v102(viewModel, "Data") if data == nil then return end if arg5 ~= nil then arg._viewModelHook:EnsureRestoreData(localPlayer, arg3, data) end local cosmeticRestoreData = arg._viewModelHook:GetCosmeticRestoreData(localPlayer, arg3) coroutine.wrap(function() local v123 = getthreadidentity() setthreadidentity(2) coroutine.wrap(v102(v121, "Destroy"))(viewModel) setthreadidentity(v123) end)() local v123 if arg5 ~= nil then v123 = v119(arg3, { Name = arg3 }, arg5, nil, function(arg6) return arg._rankCharm:ResolveMetadata(arg6) end) else v123 = cosmeticRestoreData or data end if (arg5 == nil or arg5.Charm == nil) and arg._viewModelHook:IsRankPatchActive() then cosmeticRestoreData = cosmeticRestoreData or data local v124, v125 = v116.findCharmPayload(cosmeticRestoreData) local v126 = v116.resolvePatchedPayload(v125, arg._rankCharm) if v126 ~= nil then arg._viewModelHook:EnsureRestoreData(localPlayer, arg3, data) if v123 == cosmeticRestoreData then v123 = table.clone(v123) end v123[v124] = v126 end end local v124 = v120({ Data = v120(v123) }) local v125 = coroutine.wrap(function() local v125 = getthreadidentity() setthreadidentity(2) local v126 = coroutine.wrap(v102(v122, "_CreateViewModel"))(arg4, v124) setthreadidentity(v125) return v126 end)() if v125 == nil then return end v103(arg4, "ViewModel", v125) local inner = arg2.Inner local v126 = table.pack(coroutine.wrap(v102(v102(getmetatable(inner), "__index"), "GetArmsData"))(inner)) coroutine.wrap(function() local v127 = getthreadidentity() setthreadidentity(2) local v128 = unpack local n = v126.n coroutine.wrap(v102(v121, "SetArmsData"))(v125, v128(v126, 1, n)) coroutine.wrap(v102(v121, "Equip"))(v125, true) setthreadidentity(v127) end)() local v127 = v102(v125, "_equip_spring") if v127 ~= nil then v103(v127, "_position0", 0) v103(v127, "_velocity0", v86[186]) end v118.notifyRebuilt(arg4) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.eA = function() local ea = tbl17.cache.eA if not ea then local ea2 = { c = fn35() } tbl17.cache.eA = ea2 ea = ea2 end return ea.c end end do -- eB local function fn35() tbl17.dB() local v115 = tbl17.dV() local v116 = tbl17.es() tbl17.ad() tbl17.cF() local v117 = tbl17.et() local v118 = tbl17.eu() tbl17.cX() tbl17.d8() local v119 = tbl17.ey() local v120 = tbl17.d7() tbl17.ea() tbl17.g() local v121 = tbl17.eb() local v122 = tbl17.k() local v123 = tbl17.ew() local v124 = tbl17.eA() local v125 = tbl17.ed() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local noneCosmetic = v115.NoneCosmetic local areSelectionsEqual = v125.areSelectionsEqual local areViewModelSelectionsEqual = v125.areViewModelSelectionsEqual local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local rendering = v122.new("cosmetics.rendering") local v126 = v121.new() local v127 = v123.new(v126, arg4) local v128 = v117.new(arg2, arg3) local tbl18 = { _trove = rendering, _store = v126, _rankCharm = arg4, _viewModelHook = v127, _finisherCloneCache = v128, _finisherHook = v118.new(v126, arg2, v128), _deployables = v116.new(v126, arg5), _viewModelReloader = v124.new(arg, v127, arg4), _remoteViewModelRefresher = v119.new(arg2, v127, arg4), _errorReporter = arg5, ViewModelCreated = v127.ViewModelCreated, } setmetatable(tbl18, index2) rendering:Connect(arg4.Changed, function() if true then if not v127:IsRankPatchActive() then return end if next(arg4:GetAllOverrides()) ~= nil then tbl18:_EnsureHooksLoaded() end tbl18:_ReloadEquippedSeasonCharms() return end -- (anti-tamper freeze trap removed) end) return tbl18 end index2._EnsureHooksLoaded = function(arg) arg._errorReporter:ReportResult(arg._viewModelHook:Load()) arg._errorReporter:ReportResult(arg._finisherHook:Load()) arg._deployables:Load() end index2._ReloadEquippedSeasonCharms = function(arg) local all = arg._store:GetAll(localPlayer) for k, v126 in all, nil, nil do local charm = v126.Charm if charm ~= nil and charm ~= noneCosmetic and v120.isSeasonRankCharm(charm) then arg._viewModelReloader:ReloadAllWithCosmetics(k, v126) end end arg._viewModelReloader:ReloadSeasonCharmItems(all) end index2.SetRankOverridesActive = function(arg, arg2) if arg._viewModelHook:IsRankPatchActive() == arg2 then return end arg._viewModelHook:SetRankPatchActive(arg2) if arg2 and next(arg._rankCharm:GetAllOverrides()) ~= nil then arg:_EnsureHooksLoaded() end arg._viewModelReloader:ReloadSeasonCharmItems(arg._store:GetAll(localPlayer)) end index2.RenderAll = function(arg, arg2) local all = arg._store:GetAll(localPlayer) arg._store:SetItems(localPlayer, arg2) if next(arg2) ~= nil or next(arg._rankCharm:GetAllOverrides()) ~= nil then arg:_EnsureHooksLoaded() end for k, v126 in arg2, nil, nil do if not areViewModelSelectionsEqual(all[k], v126) then arg._viewModelReloader:ReloadAllWithCosmetics(k, v126) end end for k in all, nil, nil do if arg2[k] == nil and not areViewModelSelectionsEqual(all[k], nil) then arg._viewModelReloader:ReloadAllWithCosmetics(k) end end end index2.Render = function(arg, arg2, arg3) local v126 = arg._store:GetAll(localPlayer)[arg2] if areSelectionsEqual(v126, arg3) then return end if arg3 ~= nil then arg._store:SetItem(localPlayer, arg2, arg3) arg:_EnsureHooksLoaded() else arg._store:ClearItem(localPlayer, arg2) end if not areViewModelSelectionsEqual(v126, arg3) then arg._viewModelReloader:ReloadAllWithCosmetics(arg2, arg3) end end index2.ClearAll = function(arg) for k in arg._store:GetAll(localPlayer) do arg._viewModelReloader:ReloadAllWithCosmetics(k) end arg._store:SetItems(localPlayer, {}) end index2.UnrenderAll = function(arg) for k in arg._store:GetAll(localPlayer) do arg:Unrender(k) end end index2.Unrender = function(arg, arg2) arg._viewModelReloader:ReloadAllWithCosmetics(arg2) end index2.SetRemotePlayerOverrides = function(arg, arg2, arg3, arg4) arg:_EnsureHooksLoaded() local all = arg._store:GetAll(arg2) local tbl18 if arg4 then tbl18 = {} for k, v126 in all, nil, nil do tbl18[k] = v126 end for k, v126 in arg3, nil, nil do tbl18[k] = v126 end else tbl18 = arg3 end arg._store:SetItems(arg2, tbl18) arg._remoteViewModelRefresher:RefreshChangedItems(arg2, all, tbl18) end index2.ClearRemotePlayerOverrides = function(arg, arg2) local all = arg._store:GetAll(arg2) arg._store:ClearAll(arg2) arg._remoteViewModelRefresher:RefreshChangedItems(arg2, all, {}) end index2.Destroy = function(arg) arg._trove:Destroy() arg._store:Destroy() arg._viewModelHook:Destroy() arg._finisherHook:Destroy() arg._deployables:Destroy() arg._viewModelReloader:Destroy() arg._remoteViewModelRefresher:Destroy() arg._finisherCloneCache:Destroy() end return index2 end tbl17.eB = function() local eb = tbl17.cache.eB if not eb then local eb2 = { c = fn35() } tbl17.cache.eB = eb2 eb = eb2 end return eb.c end end do -- eC local function fn35() tbl17.dB() tbl17.aL() tbl17.dR() local v115 = tbl17.ej() tbl17.ad() tbl17.d5() tbl17.cF() local v116 = tbl17.ek() local v117 = tbl17.el() tbl17.d6() tbl17.cX() tbl17.d8() local v118 = tbl17.eB() tbl17.d9() local v119 = tbl17.ea() tbl17.dZ() local v120 = tbl17.dV() tbl17.dW() local v121 = tbl17.k() local v122 = tbl17.dY() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 local randomCosmetic = v120.RandomCosmetic index2.new = function(arg) local state = arg.State local runtime = arg.Runtime local items = v121.new("cosmetics.items") local v123 = v116.new() local v124 = v118.new(runtime.PlayerContext, runtime.Fighters, runtime.CharacterAppearances, runtime.RankCharm, runtime.ErrorReporter) local v125 = v115.new(runtime.DataHook, state.OnlyUseFavoritesState, runtime.RankCharm, runtime.ErrorReporter, runtime.RequestBinding) local tbl18 = { _trove = items, _catalog = state.Catalog, _intent = v123, _resolver = v117.new(v123, state.Catalog, state.FavoritedResolver, state.OnlyUseFavoritesState), _rendering = v124, _dataMasker = v125, _isEnabled = false, _catalogExemptLayerSet = state.CatalogExemptLayerSet or {}, _dataMaskingExemptLayerSet = state.DataMaskingExemptLayerSet or {}, _favoritedRefreshSuspendDepth = 0, } setmetatable(tbl18, index2) items:Connect(v124.ViewModelCreated, function(arg2) if tbl18._isEnabled then tbl18._resolver:RerollItem(arg2) v124:Render(arg2, tbl18._resolver:ResolveItem(arg2)) end end) items:Connect(state.FavoritedResolver.Changed, function() tbl18:_OnFavoritedResolverChanged() end) return tbl18 end index2._OnFavoritedResolverChanged = function(arg) if arg._favoritedRefreshSuspendDepth > v86[186] then return end arg:SyncAll(false) end index2.WithFavoritesSuppressed = function(arg, arg2) arg._favoritedRefreshSuspendDepth = arg._favoritedRefreshSuspendDepth + 1 local v123, v124 = v107(arg2) arg._favoritedRefreshSuspendDepth = arg._favoritedRefreshSuspendDepth - 1 if not v123 then error(v124, 0) end end index2._WithDataMaskingDisabled = function(arg, arg2) local isEnabled = arg._isEnabled if isEnabled then arg._dataMasker:SetEnabled(false) end local v123, v124 = v107(arg2) if isEnabled then arg._dataMasker:SetEnabled(true) end if not v123 then error(v124, 0) end end index2._ClearInvalidSelectedCosmetic = function(arg, arg2, arg3) local itemEffective = arg._intent:GetItemEffective(arg2) if itemEffective == nil then return end local v123 = v119.getSelectedCosmeticName(itemEffective, arg3) if v123 == randomCosmetic and not arg._catalog:IsEmpty(arg2, arg3) then return end if v123 == nil or arg._catalog:IsInCatalog({ CosmeticType = arg3, ItemName = arg2, CosmeticName = v123 }) then return end local winnerPriority = arg._intent:GetWinnerPriority(arg2, arg3) if winnerPriority ~= nil then if arg._catalogExemptLayerSet[winnerPriority] then return end arg._intent:ClearSelectionAtPriority(arg2, arg3, winnerPriority) else arg._intent:ClearSelection(arg2, arg3) end end index2._ReconcileCatalogSelections = function(arg) for k in arg._intent:GetItemNameSet() do for _, v123 in v122.Item, nil, nil do arg:_ClearInvalidSelectedCosmetic(k, v123) end end end index2.SyncAll = function(arg, arg2) if arg2 then arg:_ReconcileCatalogSelections() end arg._resolver:InvalidateAll() arg._dataMasker:ReplaceAll(localPlayer, arg._intent:GetEffectiveByItemExcludingLayers(arg._dataMaskingExemptLayerSet)) arg:RenderIfEnabled() end index2.RenderIfEnabled = function(arg) if arg._isEnabled then arg._rendering:RenderAll(arg._resolver:ResolveAll()) end end index2.RefreshImportedState = function(arg, arg2) arg:_WithDataMaskingDisabled(function() arg:SyncAll(arg2) arg._resolver:RerollAll() end) arg:RenderIfEnabled() end index2.IsLayerActive = function(arg, arg2) return arg._intent:IsLayerActive(arg2) end index2.GetLayerSelections = function(arg, arg2, arg3) return arg._intent:GetLayerSelections(arg2, arg3) end index2.SetLayerActive = function(arg, arg2, arg3) arg._intent:SetLayerActive(arg2, arg3) arg:SyncAll(v86[153]) end index2.SetChoice = function(arg, arg2, arg3, arg4) arg._intent:SetChoice(arg2, arg3, arg4) arg:SyncAll(false) end index2.ClearItemSelection = function(arg, arg2, arg3, arg4) if arg4 == nil then arg._intent:ClearSelection(arg2, arg3) else arg._intent:ClearSelectionAtPriority(arg2, arg3, arg4) end arg:SyncAll(v86[153]) end index2.SetEnabled = function(arg, isEnabled) if arg._isEnabled == isEnabled then return end arg._isEnabled = isEnabled arg._dataMasker:SetEnabled(isEnabled) if isEnabled then arg._rendering:SetRankOverridesActive(v86[34]) arg._rendering:RenderAll(arg._resolver:ResolveAll()) else arg._rendering:SetRankOverridesActive(false) arg._rendering:ClearAll() end end index2.RefreshDataIfEnabled = function(arg) arg._dataMasker:RefreshIfEnabled() end index2.ExportState = function(arg) return arg._intent:ExportState() end index2.StageImportedState = function(arg, arg2, arg3) arg._intent:ImportState(arg2, arg3) arg._resolver:InvalidateAll() end index2.RerollAll = function(arg) arg._resolver:RerollAll() arg:RenderIfEnabled() end index2.GetResolvedAll = function(arg) return arg._resolver:ResolveAll() end index2.SetRemotePlayerOverrides = function(arg, arg2, arg3, arg4) arg._rendering:SetRemotePlayerOverrides(arg2, arg3, arg4) arg._dataMasker:SetRemotePlayerOverrides(arg2, arg3, arg4) end index2.ClearRemotePlayerOverrides = function(arg, arg2) arg._rendering:ClearRemotePlayerOverrides(arg2) arg._dataMasker:ClearRemotePlayerOverrides(arg2) end index2.Destroy = function(arg) arg:SetEnabled(false) arg._trove:Destroy() arg._rendering:Destroy() arg._dataMasker:Destroy() end return index2 end tbl17.eC = function() local ec = tbl17.cache.eC if not ec then ec = { c = fn35() } tbl17.cache.eC = ec end return ec.c end end do -- eD local function fn35() return table.freeze({ Unlocker = 0, SkinChanger = 100 }) end tbl17.eD = function() local ed = tbl17.cache.eD if not ed then ed = { c = fn35() } tbl17.cache.eD = ed end return ed.c end end do -- eE local function fn35() local v115 = tbl17.a() tbl17.dU() tbl17.d4() tbl17.eC() tbl17.ek() tbl17.d6() tbl17.d8() local v116 = tbl17.d7() tbl17.dZ() tbl17.dW() local function fn36(arg) if type(arg) == "table" then return arg end return nil end local function fn37(arg) local v117 = v86[68] if type(arg) ~= v117 then return {} end local tbl18 = {} for k, v118 in arg, nil, nil do if type(k) == "number" and type(v118) == "string" then tbl18[v118] = v86[34] elseif type(k) == "string" and v118 == true then tbl18[k] = true end end return tbl18 end local function fn38(arg) if type(arg) ~= "table" then return {} end if arg.RankName ~= nil or arg.LeaderboardRank ~= nil then local v117 = v86[165] local rankName = type(arg.RankName) == v117 and arg.RankName or nil if rankName == nil or v116.findRank(rankName) == nil then return {} end local v118 = v86[95] local leaderboardRank = type(arg.LeaderboardRank) == v118 and arg.LeaderboardRank or nil local tbl18 = {} for _, v119 in v116.SeasonCharmNames, nil, nil do tbl18[v119] = { RankName = rankName, LeaderboardRank = leaderboardRank } end return tbl18 end local tbl18 = {} for k, v117 in arg, nil, nil do local v118 = v86[165] if type(k) == v118 and v116.isSeasonRankCharm(k) and type(v117) == "table" then local rankName = type(v117.RankName) == "string" and v117.RankName or nil if rankName ~= nil and v116.findRank(rankName) ~= nil then local v119 = v86[95] tbl18[k] = { RankName = rankName, LeaderboardRank = type(v117.LeaderboardRank) == v119 and v117.LeaderboardRank or nil, } end end end return tbl18 end local tbl18 tbl18 = { migrateVersion1 = function(arg) local v117 = v86[68] if type(arg) ~= v117 then return arg end local v118 = v86[68] local tbl19 = nil if type(arg.itemSelections) == v118 then tbl19 = {} for k, v119 in arg.itemSelections, nil, nil do if type(v119) == "table" then local v120 = v86[68] local flag19 = type(v119.layers) == v120 local tbl20 = nil if flag19 then tbl20 = {} for k2, v121 in v119.layers, nil, nil do if type(v121) == "table" then local selections = v121.selections local tbl21 = nil if type(selections) == "table" then local wrap = selections.wrap tbl21 = { Skin = selections.skin, Wrap = type(wrap) == "table" and { Name = wrap.name, Inverted = wrap.inverted } or nil, Charm = selections.charm, Finisher = selections.finisher, } end tbl20[k2] = { Priority = v121.priority, Selections = tbl21 } end end end tbl19[k] = { Layers = tbl20 } end end end local tbl20 = nil if type(arg.emotes) == "table" then local v119 = nil if type(arg.emotes.layers) == "table" then local tbl21 = {} for k, v120 in arg.emotes.layers, nil, nil do local v121 = v86[68] if type(v120) == v121 then tbl21[k] = { Priority = v120.priority, Emotes = v120.emotes } end end v119 = tbl21 end tbl20 = { Layers = v119 } end local tbl21 = nil if type(arg.rankCharmOverride) == "table" then local rankCharmOverride = arg.rankCharmOverride if rankCharmOverride.rankName ~= nil or rankCharmOverride.leaderboardRank ~= nil then tbl21 = { RankName = rankCharmOverride.rankName, LeaderboardRank = rankCharmOverride.leaderboardRank } else tbl21 = {} for k, v119 in rankCharmOverride, nil, nil do local v120 = v86[68] if type(v119) == v120 then tbl21[k] = { RankName = v119.rankName, LeaderboardRank = v119.leaderboardRank } end end end end return { Version = 2, RuntimeEnabled = arg.runtimeEnabled, UnlockerEnabled = arg.unlockerEnabled, SkinChangerEnabled = arg.skinChangerEnabled, ItemSelections = tbl19, OnlyUseFavoritesSelections = arg.onlyUseFavoritesSelections, FavoritedCosmetics = arg.favoritedCosmetics, Emotes = tbl20, Rarities = arg.rarities, Types = arg.types, RankCharmOverride = tbl21, } end, validateImportVersion = function(arg) local version = arg.Version if version == 2 then return v115.VoidOk end if version == nil then return v115.err("Snapshot", "validateImportVersion", string.format("state version is missing; expected version %s; apply migrations first", "2")) end if type(version) ~= "number" then return v115.err("Snapshot", "validateImportVersion", string.format("state version has invalid type \"%s\"; expected number %s", tostring(type(version)), "2")) end if version > 2 then return v115.err("Snapshot", "validateImportVersion", string.format("state version %s is newer than supported version %s", tostring(version), "2")) end return v115.err("Snapshot", "validateImportVersion", string.format("state version %s is older than supported version %s; apply migrations first", tostring(version), "2")) end, _Normalize = function(arg) return { RuntimeEnabled = arg.RuntimeEnabled == true, UnlockerEnabled = arg.UnlockerEnabled == true, SkinChangerEnabled = arg.SkinChangerEnabled == true, ItemSelections = fn36(arg.ItemSelections) or {}, OnlyUseFavoritesSelections = fn36(arg.OnlyUseFavoritesSelections) or {}, FavoritedCosmetics = fn36(arg.FavoritedCosmetics) or {}, Emotes = fn36(arg.Emotes) or {}, Rarities = fn37(arg.Rarities), Types = fn37(arg.Types), RankCharmOverride = fn38(arg.RankCharmOverride), } end, export = function(arg) return { Version = 2, ItemSelections = arg.Items:ExportState(), OnlyUseFavoritesSelections = arg.OnlyUseFavoritesState:ExportState(), FavoritedCosmetics = arg.FavoritedIntent:ExportState(), Emotes = arg.EmotesIntent:ExportState(), RuntimeEnabled = arg.RuntimeEnabled, UnlockerEnabled = arg.Items:IsLayerActive(arg.UnlockerSelectionPriority), SkinChangerEnabled = arg.Items:IsLayerActive(arg.SkinChangerSelectionPriority), Rarities = arg.Catalog:GetIncludedRarities(), Types = arg.Catalog:GetIncludedTypes(), RankCharmOverride = arg.RankCharm:GetAllOverrides(), } end, normalizeImport = function(arg) if type(arg) ~= "table" then return v115.err("Snapshot", "normalizeImport", string.format("state must be a table, got \"%s\"", tostring(type(arg)))) end if arg.version == 1 then arg = tbl18.migrateVersion1(arg) end local v117 = tbl18.validateImportVersion(arg) if not v117.Ok then return v117 end return v115.ok(tbl18._Normalize(arg)) end, } return tbl18 end tbl17.eE = function() local ee = tbl17.cache.eE if not ee then ee = { c = fn35() } tbl17.cache.eE = ee end return ee.c end end do -- eF local function fn35() tbl17.dR() tbl17.d5() local v115 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local Favorited = v115.new("cosmetics.Favorited") local tbl18 = { _trove = Favorited, _dataHook = arg, _resolver = arg2, _isApplied = v86[153] } Favorited:Connect(arg2.Changed, function() if tbl18._isApplied then tbl18._dataHook:TriggerDataChangedSignal("FavoritedCosmetics") end end) return setmetatable(tbl18, index2) end index2.Apply = function(arg) if arg._isApplied then return end arg._isApplied = true arg._dataHook:Set("FavoritedCosmetics", function() return arg._resolver:GetByItem() end) arg._dataHook:TriggerDataChangedSignal("FavoritedCosmetics") end index2.Revert = function(arg) if not arg._isApplied then return end arg._isApplied = false arg._dataHook:Unset("FavoritedCosmetics") arg._dataHook:TriggerDataChangedSignal("FavoritedCosmetics") end index2.Destroy = function(arg) arg:Revert() arg._trove:Destroy() end return index2 end tbl17.eF = function() local ef = tbl17.cache.eF if not ef then local ef2 = { c = fn35() } tbl17.cache.eF = ef2 ef = ef2 end return ef.c end end do -- eG local function fn35() tbl17.aL() local v115 = tbl17.a() local v116 = tbl17.g() local equipEmote = tbl17.aS().EquipEmote local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ Changed = v116.new() }, index2) end index2.Initialize = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v117 = getmetatable(equipEmote) if v117 == nil then return v115.err("EmoteEquipWheel", "prototype_lookup", "EquipEmote metatable not found") end local v118 = v102(v117, "__index") if v118 ~= nil then local pickEmoteKey = v102(v118, "PickEmoteKey") if pickEmoteKey == nil then return v115.err("EmoteEquipWheel", "function_lookup", "PickEmoteKey not found") end local v119 = debug.getupvalue(pickEmoteKey, 2) if v119 == nil then return v115.err("EmoteEquipWheel", "upvalue_lookup", "EmoteController upvalue not found") end debug.setupvalue(pickEmoteKey, 2, { EquipEmote = function(arg2, arg3, arg4) arg.Changed:Fire(arg3, arg4) end }) arg._restore = { PickEmoteKeyFunc = pickEmoteKey, EmoteController = v119 } return v115.VoidOk end if not (n26 <= 4781) then return v115.err("EmoteEquipWheel", "prototype_lookup", "EquipEmote.__index not found") end return nil -- (anti-tamper freeze trap removed) end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil debug.setupvalue(restore.PickEmoteKeyFunc, 2, restore.EmoteController) end index2.Destroy = function(arg) arg:_Revert() arg.Changed:Destroy() end return index2 end tbl17.eG = function() local eg = tbl17.cache.eG if not eg then local eg2 = { c = fn35() } tbl17.cache.eG = eg2 eg = eg2 end return eg.c end end do -- eH local function fn35() tbl17.aL() local equipmentState = v102(tbl17.aS().Equipment, "EquipmentState") return { getSelectedItem = function() return (v102(equipmentState, "SelectedWeapon")) end, getCustomizingType = function() return (v102(equipmentState, "CustomizingType")) end, getSelectedCosmetic = function() return (v102(equipmentState, "SelectedCosmetic")) end, isCosmeticInverted = function() return (v102(equipmentState, "CosmeticInverted")) end, } end tbl17.eH = function() local eh = tbl17.cache.eH if not eh then local eh2 = { c = fn35() } tbl17.cache.eH = eh2 eh = eh2 end return eh.c end end do -- eI local function fn35() local v115 = tbl17.ay() local equipment = tbl17.aS().Equipment local container = v102(tbl17.dP()(equipment, { "Interface", "Customize", "Options" }), "Container") return function(arg) return v115.new(function(arg2) local button = container:WaitForChild(arg, math.huge):WaitForChild("Container", math.huge):WaitForChild("Button", math.huge) arg2(button) end) end end tbl17.eI = function() local ei = tbl17.cache.eI if not ei then ei = { c = fn35() } tbl17.cache.eI = ei end return ei.c end end do -- eJ local function fn35() tbl17.aL() tbl17.dR() tbl17.d6() local v115 = tbl17.eH() local v116 = tbl17.g() local v117 = tbl17.eI() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _dataHook = arg, _onlyUseFavoritesState = arg2, Changed = v116.new() }, index2) end index2.Get = function(arg) local v118 = v115.getSelectedItem() local v119 = v115.getCustomizingType() if v118 == nil then return nil end local orNil = arg._onlyUseFavoritesState:GetOrNil(v118, v119) if orNil ~= nil then return orNil end local original = arg._dataHook:GetOriginal("WeaponData") local flag19 = original ~= nil and v102(original, v118) or nil local flag20 = flag19 ~= nil and v102(flag19, v119) or nil local onlyUseFavorites = type(flag20) == "table" and v102(flag20, "OnlyUseFavorites") or nil if onlyUseFavorites ~= nil then return onlyUseFavorites == true end return (flag19 ~= nil and v102(flag19, "OnlyUseFavorites") or nil) == v86[34] end index2.Initialize = function(arg) local OnlyUseFavorites = v117("OnlyUseFavorites") OnlyUseFavorites:andThen(function(arg2) arg._buttonPromise = nil arg._clickConnection = arg2.MouseButton1Click:Connect(function() arg.Changed:Fire(not arg:Get()) end) end) arg._buttonPromise = OnlyUseFavorites end index2.Destroy = function(arg) arg.Changed:Destroy() local clickConnection = arg._clickConnection if clickConnection ~= nil then arg._clickConnection = nil clickConnection:Disconnect() end local buttonPromise = arg._buttonPromise if buttonPromise ~= nil then arg._buttonPromise = nil buttonPromise:cancel() end end return index2 end tbl17.eJ = function() local ej = tbl17.cache.eJ if not ej then local ej2 = { c = fn35() } tbl17.cache.eJ = ej2 ej = ej2 end return ej.c end end do -- eK local function fn35() local v115 = tbl17.g() local v116 = tbl17.eI() local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ Clicked = v115.new() }, index2) end index2.Initialize = function(arg) local Favorited = v116("Favorited") arg._favoritedButtonPromise = Favorited Favorited:andThen(function(arg2) arg._favoritedButtonPromise = nil arg._clickConnection = arg2.MouseButton1Click:Connect(function() arg.Clicked:Fire() end) end) end index2.Destroy = function(arg) local clickConnection = arg._clickConnection if clickConnection ~= nil then arg._clickConnection = nil clickConnection:Disconnect() end local favoritedButtonPromise = arg._favoritedButtonPromise if favoritedButtonPromise ~= nil then arg._favoritedButtonPromise = nil favoritedButtonPromise:cancel() end end return index2 end tbl17.eK = function() local ek = tbl17.cache.eK if not ek then ek = { c = fn35() } tbl17.cache.eK = ek end return ek.c end end do -- eL local function fn35() local v115 = tbl17.a() local v116 = tbl17.g() local equipment = tbl17.aS().Equipment local v117 = tbl17.eH() local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _isWrapInverted = arg, Changed = v116.new() }, index2) end index2.Initialize = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v118 = v117.getSelectedItem() if v118 ~= nil then arg._isInverted = arg._isWrapInverted(v118) end local equipmentState = v102(equipment, "EquipmentState") if equipmentState == nil then return v115.err("InvertedState", "prototype_lookup", "EquipmentState not found") end local v119 = getmetatable(equipmentState) if v119 == nil then return v115.err("InvertedState", "prototype_lookup", "EquipmentState metatable not found") end local v120 = v102(v119, "__index") if v120 == nil then return v115.err("InvertedState", "prototype_lookup", "EquipmentState.__index not found") end v103(equipmentState, "CosmeticInverted", nil) setmetatable(equipmentState, { __index = function(arg2, arg3) if arg3 == "CosmeticInverted" then local v121 = v117.getSelectedItem() if v121 ~= nil then local v122 = arg._isWrapInverted(v121) arg._isInverted = v122 return v122 end end return v102(v120, arg3) end, __newindex = function(arg2, arg3, arg4) if arg3 ~= "CosmeticInverted" or arg4 == nil then v103(arg2, arg3, arg4) return end local isInverted = arg4 == true arg._isInverted = isInverted arg.Changed:Fire(isInverted) end, }) arg._restore = { EquipmentState = equipmentState, OriginalMetatable = v119 } return v115.VoidOk end index2.Get = function(arg) return arg._isInverted end index2.Destroy = function(arg) arg.Changed:Destroy() local restore = arg._restore if restore ~= nil then arg._restore = nil setmetatable(restore.EquipmentState, restore.OriginalMetatable) end end return index2 end tbl17.eL = function() local el = tbl17.cache.eL if not el then el = { c = fn35() } tbl17.cache.eL = el end return el.c end end do -- eM local function fn35() local v115 = tbl17.a() local v116 = tbl17.dP() local equipment = tbl17.aS().Equipment local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({}, index2) end index2.Initialize = function(arg) if arg._restoreClosures ~= nil then return v115.VoidOk end local v117, v118 = v107(v116, equipment, { "Interface", "Customize", "Options" }) if not v117 or v118 == nil then return v115.err("RemoteEventBlocker", "prototype_lookup", "Customize Options not found") end local v119 = getmetatable(v118) if v119 == nil then return v115.err("RemoteEventBlocker", "prototype_lookup", "Options metatable not found") end local v120 = v116(v119, "__index") if v120 == nil then return v115.err("RemoteEventBlocker", "prototype_lookup", "Options.__index not found") end local v121 = v102(v120, "_Init") if v121 == nil then return v115.err("RemoteEventBlocker", "function_lookup", "Options._Init not found") end local restoreClosures = {} for k in debug.getprotos(v121) do local v122 = (debug.getproto :: any)(v121, k, v86[34])[1] if v122 ~= nil then for k2, v123 in debug.getconstants(v122) do if v123 == "FireServer" then table.insert(restoreClosures, { Func = v122, ConstantIndex = k2 }) debug.setconstant(v122, k2, "GetChildren") break end end end end if #restoreClosures == v86[186] then return v115.err("RemoteEventBlocker", "constant_lookup", "Failed to find FireServer constants in Options._Init") end arg._restoreClosures = restoreClosures return v115.VoidOk end index2.Destroy = function(arg) local restoreClosures = arg._restoreClosures if restoreClosures ~= nil then arg._restoreClosures = nil for _, v117 in restoreClosures, nil, nil do debug.setconstant(v117.Func, v117.ConstantIndex, v86[77]) end end end return index2 end tbl17.eM = function() local em = tbl17.cache.eM if not em then em = { c = fn35() } tbl17.cache.eM = em end return em.c end end do -- eN local function fn35() tbl17.aL() local v115 = tbl17.a() local v116 = tbl17.g() local cosmeticSlot = tbl17.aS().CosmeticSlot local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ SlotSelected = v116.new() }, index2) end index2.Initialize = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v117 = v102(cosmeticSlot, "new") if v117 == nil then return v115.err("SlotBinder", "function_lookup", "CosmeticSlot.new not found") end local v118 = debug.getupvalue(v117, 1) if v118 == nil then return v115.err("SlotBinder", "upvalue_lookup", "CosmeticSlot prototype not found") end debug.setupvalue(v117, 1, { __index = function(arg2, arg3) if arg3 ~= v86[128] then return v102(v118, arg3) end local v119, v120 = debug.info(2, "sf") local flag19 = v119 ~= nil and v120 ~= nil and v119:match("Cosmetics$") ~= nil if flag19 then local v121 = v86[170] flag19 = type(debug.getupvalues(v120)[v121]) == "boolean" end if flag19 then debug.setupvalue(v120, 9, v86[153]) end return v102(arg2, "Frame\0rahh") end, __newindex = function(arg2, arg3, arg4) if arg3 ~= "Frame" then v103(arg2, arg3, arg4) return end local v119 = debug.info(3, "s") if v119 ~= nil and v119:match("Cosmetics$") ~= nil and not v102(arg2, "IsLocked") then local v120 = arg4:FindFirstChild(v86[33]) if v120 ~= nil then v120.MouseButton1Click:Connect(function() arg.SlotSelected:Fire() end) end end v103(arg2, "Frame\0rahh", arg4) end, }) arg._restore = { Func = v117, Prototype = v118 } return v115.VoidOk end index2.Destroy = function(arg) arg.SlotSelected:Destroy() local restore = arg._restore if restore ~= nil then arg._restore = nil debug.setupvalue(restore.Func, 1, restore.Prototype) end end return index2 end tbl17.eN = function() local en = tbl17.cache.eN if not en then local en2 = { c = fn35() } tbl17.cache.eN = en2 en = en2 end return en.c end end do -- eO local function fn35() tbl17.aL() tbl17.dR() local v115 = tbl17.eG() tbl17.ad() local v116 = tbl17.eJ() local v117 = tbl17.eK() local v118 = tbl17.eL() local v119 = tbl17.ea() tbl17.d6() local v120 = tbl17.eM() local v121 = tbl17.eH() local v122 = tbl17.eN() local v123 = tbl17.dV() tbl17.dW() local v124 = tbl17.k() local v125 = tbl17.dY() local noneCosmetic = v123.NoneCosmetic local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4) return setmetatable({ _dataHook = arg, _onlyUseFavoritesState = arg2, _errorReporter = arg3, _actions = arg4 }, index2) end index2._SelectedOrNone = function(arg, arg2) return arg2 or noneCosmetic end index2._GetCurrentItemContext = function() local v126 = v121.getSelectedItem() local v127 = v121.getCustomizingType() if v126 == nil or v127 == nil or not v125.isItemCosmeticType(v127) then return nil, nil end return v126, v127 end index2._PushItemChoice = function(arg, arg2) local v126, v127 = arg:_GetCurrentItemContext() if v126 == nil or v127 == nil then return end local v128 = arg2 local get = v128.Get local v129 = v119.buildChoice(v127, arg:_SelectedOrNone(v121.getSelectedCosmetic()), get(v128)) arg._actions.SetItemSelection(v126, v129) end index2.Apply = function(arg) if arg._applyTrove ~= nil then return end local interactions = v124.new("cosmetics.interactions") arg._applyTrove = interactions if not arg._errorReporter:ReportResult(interactions:Add(v120.new()):Initialize()).Ok then arg:Revert() return end local v126 = interactions:Add(v118.new(arg._actions.IsWrapInverted)) local v127 = interactions:Add(v116.new(arg._dataHook, arg._onlyUseFavoritesState)) local function fn36() arg:_PushItemChoice(v126) end v127.Changed:Connect(function(arg2) local v128, v129 = arg:_GetCurrentItemContext() if v128 ~= nil and v129 ~= nil then arg._actions.SetOnlyUseFavorites(v128, v129, arg2) end fn36() end) v126.Changed:Connect(function() fn36() end) local v128 = interactions:Add(v122.new()) v128.SlotSelected:Connect(function() fn36() end) local v129 = interactions:Add(v117.new()) v129.Clicked:Connect(function() local v130 = v121.getSelectedItem() local v131 = v121.getCustomizingType() if v130 ~= nil and v131 ~= nil and v125.isItemCosmeticType(v131) then local v132 = arg:_SelectedOrNone(v121.getSelectedCosmetic()) if v132 == noneCosmetic then v132 ..= "_" .. v131 end arg._actions.ToggleFavorited(v130, v132) end end) arg._errorReporter:ReportResult(v126:Initialize()) v127:Initialize() arg._errorReporter:ReportResult(v128:Initialize()) v129:Initialize() local v130 = interactions:Add(v115.new()) v130.Changed:Connect(function(arg2, arg3) arg._actions.SetEmote(arg2, arg3) end) arg._errorReporter:ReportResult(v130:Initialize()) fn36() end index2.Revert = function(arg) local applyTrove = arg._applyTrove if applyTrove == nil then return end arg._applyTrove = nil applyTrove:Destroy() end index2.Destroy = function(arg) arg:Revert() end return index2 end tbl17.eO = function() local eo = tbl17.cache.eO if not eo then eo = { c = fn35() } tbl17.cache.eO = eo end return eo.c end end do -- eP local function fn35() tbl17.dR() tbl17.dZ() local v115 = tbl17.k() local cosmeticsSelectionScene = tbl17.ec().CosmeticsSelectionScene local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local Inventory = v115.new("cosmetics.Inventory") local tbl18 = { _trove = Inventory, _catalog = arg, _dataHook = arg2, _isApplied = false } setmetatable(tbl18, index2) Inventory:Connect(arg.Built, function() if tbl18._isApplied then tbl18:_RefreshInventory() end end) return tbl18 end index2._RefreshInventory = function(arg) arg._dataHook:TriggerDataChangedSignal("CosmeticInventory") cosmeticsSelectionScene() end index2.Apply = function(arg) if arg._isApplied then return end arg._dataHook:Set("CosmeticInventory", function() return arg._catalog:GetInventory() end) arg:_RefreshInventory() arg._isApplied = true end index2.Revert = function(arg) if not arg._isApplied then return end arg._isApplied = v86[153] arg._dataHook:Unset("CosmeticInventory") arg:_RefreshInventory() end index2.Destroy = function(arg) arg:Revert() arg._trove:Destroy() end return index2 end tbl17.eP = function() local ep = tbl17.cache.eP if not ep then local ep2 = { c = fn35() } tbl17.cache.eP = ep2 ep = ep2 end return ep.c end end do -- eQ local function fn35() tbl17.dR() tbl17.ad() local v115 = tbl17.eF() tbl17.d5() local v116 = tbl17.eO() local v117 = tbl17.eP() tbl17.d6() tbl17.dZ() local v118 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local unlocker = v118.new("cosmetics.unlocker") return setmetatable({ _trove = unlocker, _interactions = unlocker:Add(v116.new(arg.DataHook, arg.OnlyUseFavoritesState, arg.ErrorReporter, arg.Actions)), _favoritedHook = unlocker:Add(v115.new(arg.DataHook, arg.FavoritedResolver)), _inventoryHook = unlocker:Add(v117.new(arg.Catalog, arg.DataHook)), _masterEnabled = false, _layerActive = v86[153], _isApplied = false, }, index2) end index2._SyncApplied = function(arg) local layerActive = arg._masterEnabled and arg._layerActive if arg._isApplied == layerActive then return end arg._isApplied = layerActive if layerActive then arg._interactions:Apply() arg._favoritedHook:Apply() arg._inventoryHook:Apply() else arg._interactions:Revert() arg._favoritedHook:Revert() arg._inventoryHook:Revert() end end index2.SetMasterEnabled = function(arg, masterEnabled) if arg._masterEnabled == masterEnabled then return end arg._masterEnabled = masterEnabled arg:_SyncApplied() end index2.SetLayerActive = function(arg, layerActive) if arg._layerActive == layerActive then return end arg._layerActive = layerActive arg:_SyncApplied() end index2.Destroy = function(arg) arg:SetMasterEnabled(false) arg._trove:Destroy() end return index2 end tbl17.eQ = function() local eq = tbl17.cache.eQ if not eq then eq = { c = fn35() } tbl17.cache.eQ = eq end return eq.c end end do -- eR local function fn35() local tbl18 = {} local tbl19 = {} for i = 0, 15 do for i2 = 0, 15 do local v115 = v86[186] local n = 1 local n33 = 0 local n34 = i local n35 = i2 for i3 = 1, 4 do local n36 = n34 % 2 local n37 = n35 % 2 if n36 ~= n37 then v115 += n end if n36 == 1 and n37 == 1 then n33 += n end n34 = math.floor(n34 / 2) n35 = math.floor(n35 / v86[56]) n *= v86[56] end tbl18[i * 16 + i2] = v115 tbl19[i * 16 + i2] = n33 end end local function fn36(arg, arg2) local n = 0 local n33 = 1 for i = 1, 8 do n += tbl18[arg % 16 * 16 + arg2 % 16] * n33 arg = math.floor(arg / 16) arg2 = math.floor(arg2 / 16) n33 *= 16 end return n end local function fn37(arg, arg2) local v115 = v86[63] local n = 0 for i = 1, 8 do n += tbl19[arg % v86[13] * 16 + arg2 % 16] * v115 arg = math.floor(arg / 16) arg2 = math.floor(arg2 / 16) v115 *= 16 end return n end local function fn38(arg, arg2) return math.floor(arg / v86[56] ^ arg2) end return { bxor = fn36, band = fn37, rshift = fn38, mul32 = function(arg, arg2) return fn37(fn37(arg, 65535) * arg2 + fn38(arg, 16) * arg2 % 65536 * 65536, 4294967295) end, } end tbl17.eR = function() local er = tbl17.cache.eR if not er then er = { c = fn35() } tbl17.cache.eR = er end return er.c end end do -- eS local function fn35() local v115 = tbl17.eR() local bxor = v115.bxor local band = v115.band local mul32 = v115.mul32 return { num = function(arg) local n = 2166136261 for i = 1, 8 do n = mul32(bxor(n, band(arg, v86[108])), 16777619) arg = math.floor(arg / v86[137]) end return n end, str = function(arg) local n = 2166136261 for i = 1, #arg do n = mul32(bxor(n, arg:byte(i)), 16777619) end return n end, } end tbl17.eS = function() local es = tbl17.cache.eS if not es then es = { c = fn35() } tbl17.cache.eS = es end return es.c end end do -- eT local function fn35() tbl17.aL() local tbl18 = { Skins = {}, Wraps = {}, Charms = {}, Finishers = {}, Emotes = {}, Images = {} } for k, v115 in next, v102(tbl17.aS().CosmeticLibrary, "Cosmetics"), nil do local v116 = v102(v115, "Type") local image = v102(v115, "Image") if image and image ~= "" then tbl18.Images[k] = image end if v116 == "Skin" then local itemName = v102(v115, "ItemName") local skins = tbl18.Skins local tbl19 = skins[itemName] if tbl19 == nil then tbl19 = {} skins[itemName] = tbl19 end table.insert(tbl19, k) elseif v116 == "Charm" then table.insert(tbl18.Charms, k) elseif v116 == "Wrap" then table.insert(tbl18.Wraps, k) elseif v116 == "Finisher" then table.insert(tbl18.Finishers, k) elseif v116 == "Emote" then table.insert(tbl18.Emotes, k) end end for _, v115 in tbl18.Skins, nil, nil do table.sort(v115) end table.sort(tbl18.Wraps) table.sort(tbl18.Charms) table.sort(tbl18.Finishers) table.sort(tbl18.Emotes) return table.freeze(tbl18) end tbl17.eT = function() local et = tbl17.cache.eT if not et then local et2 = { c = fn35() } tbl17.cache.eT = et2 et = et2 end return et.c end end do -- eU local function fn35() local v115 = tbl17.dV() local v116 = tbl17.eS() local v117 = tbl17.eT() local tbl18 = {} local tbl19 = {} local function fn36(arg) local v118 = v116.str(arg) tbl18[v118] = arg tbl19[arg] = v118 end for _, v118 in tbl17.aT(), nil, nil do fn36(v118) end for _, v118 in v117.Skins, nil, nil do for _, v119 in v118, nil, nil do fn36(v119) end end for _, v118 in v117.Wraps, nil, nil do fn36(v118) end for _, v118 in v117.Charms, nil, nil do fn36(v118) end for _, v118 in v117.Finishers, nil, nil do fn36(v118) end for _, v118 in v117.Emotes, nil, nil do fn36(v118) end fn36(v115.NoneCosmetic) return table.freeze({ findHash = function(arg) return tbl19[arg] end, findName = function(arg) return tbl18[arg] end, }) end tbl17.eU = function() local eu = tbl17.cache.eU if not eu then eu = { c = fn35() } tbl17.cache.eU = eu end return eu.c end end do -- eV local function fn35() tbl17.d_() tbl17.ad() local v115 = tbl17.eU() local v116 = tbl17.a() tbl17.ea() local function fn36(arg, arg2, arg3) local v117 = v115.findHash(arg2) if v117 == nil then arg:Report(v116.err("UserServerProtocol", "encode", string.format("item hash not found for \"%s\"", tostring(arg2))).Error) return nil end local tbl18 = { Hash = v117 } local flag19 = v86[153] if arg3.Skin ~= nil then local v118 = v115.findHash(arg3.Skin) if v118 ~= nil then tbl18.Skin = v118 flag19 = v86[34] end end if arg3.Wrap ~= nil then local v118 = v115.findHash(arg3.Wrap.Name) if v118 ~= nil then tbl18.Wrap = { Hash = v118, Inverted = arg3.Wrap.Inverted } flag19 = true end end if arg3.Charm ~= nil then local v118 = v115.findHash(arg3.Charm) if v118 ~= nil then tbl18.Charm = v118 flag19 = true end end local v118 if arg3.Finisher ~= nil then local v119 = v115.findHash(arg3.Finisher) if v119 ~= nil then tbl18.Finisher = v119 v118 = v86[34] else v118 = flag19 end else v118 = flag19 end return v118 and tbl18 or nil end local function fn37(arg, arg2) local tbl18 = {} for k, v117 in arg2, nil, nil do if v117 ~= nil then local v118 = fn36(arg, k, v117) if v118 ~= nil then table.insert(tbl18, v118) end end end return tbl18 end local function fn38(arg) if not flag3 then return end local n = 4 if arg.Skin ~= nil then n = 9 end if arg.Wrap ~= nil then n += 6 end if arg.Charm ~= nil then n += 5 end if arg.Finisher ~= nil then n += 5 end return n end local function fn39(arg, arg2, arg3) local v117 = fn38(arg3) buffer.writeu8(arg, arg2, 1) local n = arg2 + 1 buffer.writeu16(arg, n, v117) local n33 = n + 2 buffer.writeu32(arg, n33, arg3.Hash) local n34 = n33 + 4 if arg3.Skin ~= nil then buffer.writeu8(arg, n34, 0) local n35 = n34 + 1 buffer.writeu32(arg, n35, arg3.Skin) n34 = n35 + v86[26] end if arg3.Wrap ~= nil then buffer.writeu8(arg, n34, 1) local n35 = n34 + 1 buffer.writeu32(arg, n35, arg3.Wrap.Hash) local n36 = n35 + 4 buffer.writeu8(arg, n36, arg3.Wrap.Inverted and v86[63] or v86[186]) n34 = n36 + 1 end if arg3.Charm ~= nil then buffer.writeu8(arg, n34, 2) local n35 = n34 + 1 buffer.writeu32(arg, n35, arg3.Charm) n34 = n35 + 4 end if arg3.Finisher ~= nil then buffer.writeu8(arg, n34, 3) local n35 = n34 + 1 buffer.writeu32(arg, n35, arg3.Finisher) n34 = n35 + 4 end return n34 end local function fn40(arg) local tbl18 = {} local n = 0 for k, v117 in arg, nil, nil do if v117 ~= nil then local v118 = v115.findHash(v117.Name) if v118 ~= nil then local num = tonumber(k) if num ~= nil then tbl18[num] = v118 if n < num then n = num end end end end end if n == 0 then return nil end local v117 = table.create(n + 1, 0) for i = v86[186], n do v117[i + v86[63]] = tbl18[i] or 0 end return v117 end local function fn41(arg) return #arg * 4 end local function fn42(arg, arg2, arg3) buffer.writeu8(arg, arg2, 2) local n = arg2 + 1 buffer.writeu16(arg, n, fn41(arg3)) local n33 = n + v86[56] for _, v117 in arg3, nil, nil do buffer.writeu32(arg, n33, v117) n33 += v86[26] end return n33 end local function fn43(arg, arg2, arg3) local v117 = buffer.readu32(arg, arg2) local n = arg2 + 4 local v118 = v115.findName(v117) local tbl18 = {} if v118 == nil then return nil, tbl18, arg3 end while n < arg3 do local v119 = buffer.readu8(arg, n) local n33 = n + v86[63] local v120 = buffer.readu32(arg, n33) n = n33 + 4 if v119 == 0 then tbl18.Skin = v115.findName(v120) continue end if v119 == 1 then local flag19 = buffer.readu8(arg, n) ~= 0 n += v86[63] local v121 = v115.findName(v120) if v121 ~= nil then tbl18.Wrap = { Name = v121, Inverted = flag19 } end continue end if v119 == v86[56] then tbl18.Charm = v115.findName(v120) continue end if v119 == 3 then tbl18.Finisher = v115.findName(v120) continue end return v118, tbl18, arg3 end return v118, tbl18, n end local function fn44(arg, arg2, arg3, arg4) local n = 0 while arg2 < arg3 do local v117 = buffer.readu32(arg, arg2) arg2 += v86[26] if v117 ~= v86[186] then local v118 = v115.findName(v117) if v118 ~= nil then arg4[tostring(n)] = v118 end end n += 1 end end local function fn45(arg, arg2, arg3, arg4) while arg3 < arg2 do local v117 = buffer.readu8(arg, arg3) arg3 += 1 if v117 == 0 then continue elseif v117 ~= v86[108] then local n = arg3 + 2 arg3 = n + buffer.readu16(arg, arg3) if v117 == 1 then local v118, v119, v120 = fn43(arg, n, arg3) if v118 ~= nil then arg4.Overrides[v118] = v119 arg3 = v120 else arg3 = v120 end elseif v117 == v86[56] then if arg4.Emotes == nil then arg4.Emotes = {} end fn44(arg, n, arg3, arg4.Emotes) end continue end break end return arg3 end local function fn46(arg) local v117 = buffer.fromstring(arg) local v118 = buffer.len(v117) local n = 0 local tbl18 = nil local exitTo = nil while true do if not (n < v118) then exitTo = 1 break else local v119 = buffer.readu8(v117, n) local n33 = n + 1 if v119 == 1 then local v120 = v86[186] local flag19 = buffer.readu8(v117, n33) ~= v120 n = n33 + 1 if flag19 then continue end elseif v119 == 0 then local v120 = buffer.readu8(v117, n33) local n34 = n33 + 1 if tbl18 == nil then tbl18 = { ShouldMerge = false, Overrides = {}, Emotes = nil } end tbl18.ShouldMerge = v120 == v86[63] n = fn45(v117, v118, n34, tbl18) continue else exitTo = 1 break end break end end if exitTo == 1 then if tbl18 == nil then return { ShouldRemovePeer = false, ShouldMerge = false, Overrides = nil, Emotes = nil } end return { ShouldRemovePeer = false, ShouldMerge = tbl18.ShouldMerge, Overrides = tbl18.Overrides, Emotes = tbl18.Emotes, } end return { ShouldRemovePeer = true, ShouldMerge = false, Overrides = nil, Emotes = nil } end return { encodeInventory = function(arg, arg2, arg3) local v117 = fn37(arg, arg2) table.sort(v117, function(arg4, arg5) return arg4.Hash < arg5.Hash end) local flag19 = arg3 ~= nil and fn40(arg3) or nil local n = 3 for _, v118 in v117, nil, nil do n += v86[155] + fn38(v118) end if flag19 ~= nil then n += 3 + fn41(flag19) end local v118 = buffer.create(n + 1) buffer.writeu8(v118, 0, 0) buffer.writeu8(v118, 1, 0) buffer.writeu8(v118, 2, 0) local n33 = 3 for _, v119 in v117, nil, nil do n33 = fn39(v118, n33, v119) end local v119 if flag19 == nil then v119 = n33 else v119 = fn42(v118, n33, flag19) end buffer.writeu8(v118, v119, v86[108]) return buffer.tostring(v118) end, decodePayload = function(arg) local v117, v118 = v107(fn46, arg) if not v117 then return v116.err("UserServerProtocol", "decode", string.format("malformed or truncated peer payload: %s", tostring(tostring(v118)))) end return v116.ok(v118) end, } end tbl17.eV = function() local ev = tbl17.cache.eV if not ev then local ev2 = { c = fn35() } tbl17.cache.eV = ev2 ev = ev2 end return ev.c end end do -- e_ local function fn35() local v115 = tbl17.bG() tbl17.d_() tbl17.ad() tbl17.eC() local v116 = tbl17.k() local v117 = tbl17.eV() tbl17.eZ() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4) local Bridge = v116.new("cosmetics.Bridge") local obj = setmetatable({ _trove = Bridge, _userServer = arg, _errorReporter = arg2, _items = arg3, _emotesResolver = arg4, _isSendQueued = false, _isShareActive = false, _lastSentPayload = nil, }, index2) Bridge:Connect(arg.PeerPayloadReceived, function(arg5, arg6) obj:_HandlePeerPayload(arg5, arg6) end) Bridge:Connect(arg.PeerRemoved, function(arg5) arg3:ClearRemotePlayerOverrides(arg5) end) Bridge:Connect(arg.ShowActivated, function() obj._lastSentPayload = nil obj:NotifyStoresUpdated() end) Bridge:Connect(v115:GetPropertyChangedSignal({ "UserServer", "ShareSkins" }), function(arg5) obj:SetShareActive(arg5) end) if v115.Data.UserServer.ShareSkins then obj:SetShareActive(true) end return obj end index2._HandlePeerPayload = function(arg, arg2, arg3) local v118 = arg._errorReporter:ReportResult(v117.decodePayload(arg3)) if not v118.Ok then return end local value = v118.Value if value.ShouldRemovePeer then arg._items:ClearRemotePlayerOverrides(arg2) return end local overrides = value.Overrides if overrides ~= nil then arg._items:SetRemotePlayerOverrides(arg2, overrides, value.ShouldMerge) end end index2.SetShareActive = function(arg, isShareActive) if arg._isShareActive == isShareActive then return end arg._isShareActive = isShareActive if isShareActive then arg:_TrySendCurrentInventory() end end index2.IsShareActive = function(arg) return arg._isShareActive end index2.NotifyStoresUpdated = function(arg) local userServer = arg._userServer if not arg._isShareActive or not userServer:ShouldShowActive() or not userServer:IsConnected() then return end if arg._isSendQueued then return end arg._isSendQueued = true task.delay(v86[101], function() arg._isSendQueued = false if arg._isShareActive and arg._userServer:ShouldShowActive() and arg._userServer:IsConnected() then arg:_SendIfChanged() end end) end index2._TrySendCurrentInventory = function(arg) local userServer = arg._userServer if arg._isShareActive and userServer:ShouldShowActive() and userServer:IsConnected() then arg:_SendIfChanged() end end index2._SendIfChanged = function(arg) local emotesResolver = arg._emotesResolver local v118 = v117.encodeInventory(arg._errorReporter, arg._items:GetResolvedAll(), emotesResolver:GetAll()) if v118 == arg._lastSentPayload then return end if arg._userServer:Send(v118).Ok then arg._lastSentPayload = v118 end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.e_ = function() local e = tbl17.cache.e_ if not e then e = { c = fn35() } tbl17.cache.e_ = e end return e.c end end do -- e0 local function fn35() tbl17.dB() tbl17.aL() tbl17.dR() local v115 = tbl17.d2() local v116 = tbl17.ad() local v117 = tbl17.d4() local v118 = tbl17.d5() tbl17.cF() local v119 = tbl17.eC() local v120 = tbl17.eD() local v121 = tbl17.d6() tbl17.cX() local v122 = tbl17.d8() tbl17.d9() local v123 = tbl17.a() tbl17.ea() local v124 = tbl17.g() local v125 = tbl17.eE() local v126 = tbl17.dZ() tbl17.dW() local v127 = tbl17.k() local v128 = tbl17.eQ() local v129 = tbl17.e_() tbl17.eZ() local unlocker = v120.Unlocker local skinChanger = v120.SkinChanger local function fn36(arg) local trove = arg.Trove local v130 = trove:Add(v116.new()) local v131 = trove:Add(v126.new()) local v132 = trove:Add(v117.new()) local v133 = trove:Add(v118.new(v131, v132)) local v134 = trove:Add(v121.new()) local v135 = trove:Add(v122.new()) local v136 = trove:Add(v119.new({ State = { Catalog = v131, FavoritedResolver = v133, OnlyUseFavoritesState = v134, CatalogExemptLayerSet = { [skinChanger] = v86[34] }, DataMaskingExemptLayerSet = {}, }, Runtime = { PlayerContext = arg.PlayerContext, Fighters = arg.Fighters, CharacterAppearances = arg.CharacterAppearances, DataHook = arg.DataHook, RankCharm = v135, ErrorReporter = v130, RequestBinding = arg.RequestBinding, }, })) local v137 = trove:Add(v115.new({ Catalog = v131, PlayerContext = arg.PlayerContext, DataHook = arg.DataHook })) return { Model = { Catalog = v131, FavoritedIntent = v132, FavoritedResolver = v133, OnlyUseFavoritesState = v134, Emotes = v137, RankCharm = v135, Items = v136, }, Runtime = { ErrorReporter = v130, DataHook = arg.DataHook, UserServerBridge = trove:Add(v129.new(arg.UserServer, v130, v136, v137:GetResolver())), }, } end local index2 = {} index2.__index = index2 index2._FireStoresUpdated = function(arg) arg.StoresUpdated:Fire() end index2._BuildImportedActiveLayers = function(arg, arg2) local tbl18 = {} if arg2.UnlockerEnabled then tbl18[unlocker] = true end if arg2.SkinChangerEnabled then tbl18[skinChanger] = true end return tbl18 end index2._BuildSnapshotContext = function(arg) return { Catalog = arg._catalog, Items = arg._items, FavoritedIntent = arg._favoritedIntent, OnlyUseFavoritesState = arg._onlyUseFavoritesState, EmotesIntent = arg._emotes:GetIntent(), RankCharm = arg._rankCharm, RuntimeEnabled = arg._runtimeEnabled, UnlockerSelectionPriority = unlocker, SkinChangerSelectionPriority = skinChanger, } end index2._SetLayerActive = function(arg, arg2, arg3) if arg._items:IsLayerActive(arg2) == arg3 then return false end arg._items:SetLayerActive(arg2, arg3) arg:_FireStoresUpdated() return true end index2._SetItemSelection = function(arg, arg2, arg3, arg4, arg5) arg._items:SetChoice(arg2, arg3, arg4) if arg5 then arg:_FireStoresUpdated() end end index2._ClearItemSelection = function(arg, arg2, arg3, arg4, arg5) arg._items:ClearItemSelection(arg2, arg3, arg4) if arg5 then arg:_FireStoresUpdated() end end index2._SetEmote = function(arg, arg2, arg3, arg4, arg5) local v130 = arg._emotes:SetEmote(arg2, arg3, arg4) if v130 and arg5 then arg:_FireStoresUpdated() end return v130 end index2._RebuildCatalog = function(arg) arg._items:WithFavoritesSuppressed(function() arg._catalog:Build() end) arg._items:SyncAll(true) end index2.SetUnlockedTypes = function(arg, arg2) arg._catalog:SetIncludedTypes(arg2) arg:_RebuildCatalog() arg:_FireStoresUpdated() end index2.SetUnlockedRarities = function(arg, arg2) arg._catalog:SetIncludedRarities(arg2) arg:_RebuildCatalog() arg:_FireStoresUpdated() end index2._SetOnlyUseFavorites = function(arg, arg2, arg3, arg4) local v130 = arg._onlyUseFavoritesState:Set(arg2, arg3, arg4) if v130 then arg._items:SyncAll(false) arg._items:RefreshDataIfEnabled() arg:_FireStoresUpdated() end return v130 end index2.RerollAll = function(arg) arg._items:RerollAll() arg:_FireStoresUpdated() end index2._ApplyImportedState = function(arg, arg2) arg._isImportingState = v86[34] arg:SetRuntimeEnabled(v86[153]) arg._items:WithFavoritesSuppressed(function() arg._catalog:SetIncludedRarities(arg2.Rarities) arg._catalog:SetIncludedTypes(arg2.Types) arg._catalog:Build() arg._items:StageImportedState(arg2.ItemSelections, arg:_BuildImportedActiveLayers(arg2)) arg._onlyUseFavoritesState:ImportState(arg2.OnlyUseFavoritesSelections) arg._favoritedIntent:ImportState(arg2.FavoritedCosmetics) arg._emotes:GetIntent():ImportState(arg2.Emotes) arg._rankCharm:SetAllOverrides(arg2.RankCharmOverride) arg._items:RefreshImportedState(true) end) arg._isImportingState = false arg._unlockerController:SetLayerActive(arg._items:IsLayerActive(unlocker)) arg:SetRuntimeEnabled(arg2.RuntimeEnabled) end index2.ExportState = function(arg) return v125.export(arg:_BuildSnapshotContext()) end index2.ImportState = function(arg, arg2) local v130 = v125.normalizeImport(arg2) if not v130.Ok then return v130 end arg:_ApplyImportedState(v130.Value) arg:_FireStoresUpdated() return v123.VoidOk end index2.new = function(arg, arg2, arg3, arg4, arg5, arg6) if true then local cosmetics = v127.new("cosmetics") local v130 = fn36({ Trove = cosmetics, PlayerContext = arg, Fighters = arg2, CharacterAppearances = arg3, DataHook = arg4, RequestBinding = arg5, UserServer = arg6, }) local model = v130.Model local runtime = v130.Runtime local tbl18 = { _trove = cosmetics, _catalog = model.Catalog, _items = model.Items, _favoritedIntent = model.FavoritedIntent, _onlyUseFavoritesState = model.OnlyUseFavoritesState, _emotes = model.Emotes, _rankCharm = model.RankCharm, _unlockerController = nil, _errorReporter = runtime.ErrorReporter, _runtimeEnabled = false, _isImportingState = false, StoresUpdated = cosmetics:Add(v124.new()), } setmetatable(tbl18, index2) tbl18._unlockerController = cosmetics:Add(v128.new({ DataHook = runtime.DataHook, Catalog = model.Catalog, FavoritedResolver = model.FavoritedResolver, OnlyUseFavoritesState = model.OnlyUseFavoritesState, ErrorReporter = runtime.ErrorReporter, Actions = { IsWrapInverted = function(arg7) local layerSelections = model.Items:GetLayerSelections(arg7, unlocker) if layerSelections == nil then return nil end local wrap = layerSelections.Wrap if wrap == nil then return nil end return wrap.Inverted == v86[34] end, SetItemSelection = function(arg7, arg8) tbl18:_SetItemSelection(arg7, arg8, unlocker, true) end, SetOnlyUseFavorites = function(arg7, arg8, arg9) tbl18:_SetOnlyUseFavorites(arg7, arg8, arg9) end, SetEmote = function(arg7, arg8) tbl18:_SetEmote(arg7, arg8, nil, v86[153]) end, ToggleFavorited = function(arg7, arg8) model.FavoritedIntent:Set(arg7, arg8, not model.FavoritedIntent:Get(arg7, arg8)) end, }, })) local function fn37() if tbl18._isImportingState then return end tbl18:_FireStoresUpdated() end cosmetics:Connect(model.FavoritedResolver.Changed, fn37) cosmetics:Connect(model.Emotes:GetResolver().Changed, fn37) cosmetics:Connect(model.RankCharm.Changed, fn37) cosmetics:Connect(tbl18.StoresUpdated, function() runtime.UserServerBridge:NotifyStoresUpdated() end) return tbl18 end return nil -- (anti-tamper freeze trap removed) end index2.SetRuntimeEnabled = function(arg, runtimeEnabled) if arg._runtimeEnabled == runtimeEnabled then return end arg._runtimeEnabled = runtimeEnabled arg._unlockerController:SetMasterEnabled(runtimeEnabled) arg._errorReporter:ReportResult(arg._emotes:SetEnabled(runtimeEnabled)) arg._items:SetEnabled(runtimeEnabled) end index2.SetChoice = function(arg, arg2, arg3, arg4) arg:_SetItemSelection(arg2, arg3, arg4 or unlocker, true) end index2.ClearItemSelection = function(arg, arg2, arg3, arg4) arg:_ClearItemSelection(arg2, arg3, arg4, v86[34]) end index2.IsUnlockerEnabled = function(arg) return arg._items:IsLayerActive(unlocker) end index2.SetUnlockerEnabled = function(arg, arg2) arg:_SetLayerActive(unlocker, arg2) arg._unlockerController:SetLayerActive(arg2) end index2.IsSkinChangerEnabled = function(arg) return arg._items:IsLayerActive(skinChanger) end index2.SetSkinChangerEnabled = function(arg, arg2) arg:_SetLayerActive(skinChanger, arg2) end index2.SetSkinChangerChoice = function(arg, arg2, arg3) arg:_SetItemSelection(arg2, arg3, skinChanger, true) end index2.SetSkinChangerChoices = function(arg, arg2) if next(arg2) == nil then return end for k, v130 in arg2, nil, nil do arg:_SetItemSelection(k, v130, skinChanger, v86[153]) end arg:_FireStoresUpdated() end index2.ClearSkinChangerSelection = function(arg, arg2, arg3) arg:_ClearItemSelection(arg2, arg3, skinChanger, true) end index2.GetSkinChangerSelections = function(arg, arg2) return arg._items:GetLayerSelections(arg2, skinChanger) end index2.GetRankCharm = function(arg) return arg._rankCharm end index2.GetHookErrors = function(arg) return arg._errorReporter:GetErrors() end index2.PreRender = function(arg) arg._emotes:PreRender() end index2.Destroy = function(arg) arg:SetRuntimeEnabled(false) arg._trove:Destroy() end return index2 end tbl17.e0 = function() local e0 = tbl17.cache.e0 if not e0 then e0 = { c = fn35() } tbl17.cache.e0 = e0 end return e0.c end end do -- e1 local function fn35() tbl17.aL() return { "None", "Unique", "Common", "Rare", "Legendary", "Mythical", "Unobtainable" } end tbl17.e1 = function() local e1 = tbl17.cache.e1 if not e1 then local e12 = { c = fn35() } tbl17.cache.e1 = e12 e1 = e12 end return e1.c end end do -- e2 local function fn35() local v115 = tbl17.f() tbl17.e0() local v116 = tbl17.a() local v117 = tbl17.g() local v118 = tbl17.eE() local v119 = tbl17.dX() local v120 = tbl17.e1() local v121 = tbl17.dY() local tbl18 = { Version = 2, RuntimeEnabled = false, UnlockerEnabled = false, SkinChangerEnabled = false, ItemSelections = {}, OnlyUseFavoritesSelections = {}, FavoritedCosmetics = {}, Emotes = {}, Rarities = v119(v120), Types = v119(v121.All), RankCharmOverride = {}, } local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local v122 = table.clone(tbl18) return setmetatable({ _cosmetics = arg2, _configManager = v115.new({ DefaultConfig = v122, CurrentVersion = 2, Migrations = { [v86[63]] = v118.migrateVersion1 }, SavePath = arg, }), _data = v122, Loaded = v117.new(), }, index2) end index2.Save = function(arg, arg2, arg3) arg._configManager:SetData(arg._cosmetics:ExportState()) local v122 = arg._configManager:SaveToFile(arg2, arg3) if not v122.Ok then return v122 end return v116.VoidOk end index2.ExportToJson = function(arg) return arg._configManager:ToJson(arg._cosmetics:ExportState()) end index2.InstallSnapshot = function(arg, arg2, arg3) arg._configManager:SetData(arg3) local v122 = arg._configManager:SaveToFile(arg2) if not v122.Ok then return v122 end return v116.VoidOk end index2.Load = function(arg, arg2) local v122 = arg._configManager:LoadFromFile(arg2) if not v122.Ok then return v122 end local data = v122.Value local v123 = arg._cosmetics:ImportState(data) if not v123.Ok then return v123 end arg._data = data arg.Loaded:Fire(data) return v116.VoidOk end index2.LoadFromJson = function(arg, arg2) local v122 = arg._configManager:FromJson(arg2) if not v122.Ok then return v122 end local data = v122.Value local v123 = arg._cosmetics:ImportState(data) if not v123.Ok then return v123 end arg._data = data arg.Loaded:Fire(data) return v116.VoidOk end index2.Exists = function(arg, arg2) return arg._configManager:Exists(arg2) end index2.CreateDefaultPreset = function(arg, arg2) local v122 = arg._configManager:SaveDefaultToFile(arg2, true) if not v122.Ok then return v122 end return v116.VoidOk end index2.GetState = function(arg) return arg._data end index2.Destroy = function(arg) arg.Loaded:Destroy() end return index2 end tbl17.e2 = function() local e2 = tbl17.cache.e2 if not e2 then local e22 = { c = fn35() } tbl17.cache.e2 = e22 e2 = e22 end return e2.c end end do -- e3 local function fn35() local v115 = tbl17.f() tbl17.aL() tbl17.e0() local v116 = tbl17.a() tbl17.g() tbl17.eE() local v117 = tbl17.e2() local v118 = tbl17.k() local str7 = string.format("%s/states", "kiciarebuild/rivals/cosmetics") local tbl18 = { Version = v86[56], PresetName = nil, AutoSavePresetName = nil, AutoLoadPresetName = nil, AutoSave = false, AutoLoad = false, } local function fn36(arg) local v119 = v86[68] if type(arg) ~= v119 then return arg end return { Version = 2, PresetName = arg.presetName, AutoSavePresetName = arg.autoSavePresetName, AutoLoadPresetName = arg.autoLoadPresetName, AutoSave = arg.autoSave, AutoLoad = arg.autoLoad, } end local function fn37(arg) return (arg:gsub("%.json$", "")) end local function fn38(arg) local v119 = table.clone(tbl18) if type(arg) ~= "table" then return v119 end if type(arg.Version) == "number" then v119.Version = arg.Version end if type(arg.PresetName) == "string" then v119.PresetName = fn37(arg.PresetName) end if type(arg.AutoSavePresetName) == "string" then v119.AutoSavePresetName = fn37(arg.AutoSavePresetName) elseif type(arg.PresetName) == "string" then v119.AutoSavePresetName = fn37(arg.PresetName) end if type(arg.AutoLoadPresetName) == "string" then v119.AutoLoadPresetName = fn37(arg.AutoLoadPresetName) elseif type(arg.PresetName) == "string" then v119.AutoLoadPresetName = fn37(arg.PresetName) end if type(arg.AutoSave) == "boolean" then v119.AutoSave = arg.AutoSave end if type(arg.AutoLoad) == "boolean" then v119.AutoLoad = arg.AutoLoad end return v119 end local index2 = {} index2.__index = index2 index2.new = function(arg) local config = v118.new("cosmetics.config") local v119 = config:Add(v117.new(str7, arg)) local v120 = table.clone(tbl18) return setmetatable({ _trove = config, _cosmetics = arg, _configManager = v115.new({ DefaultConfig = v120, CurrentVersion = v86[56], Migrations = { fn36 }, SavePath = "kiciahook/rivals_v3/cosmetics/states", Deserialize = fn38, }), _stateConfig = v119, _data = v120, _autoSaveConnection = nil, StateConfigLoaded = v119.Loaded, }, index2) end index2._ConnectAutoSave = function(arg) if arg._autoSaveConnection ~= nil then return end arg._autoSaveConnection = arg._cosmetics.StoresUpdated:Connect(function() arg:_SaveLiveState() end) end index2._GetSelectedPresetName = function(arg, arg2) local presetName = arg._data.PresetName if presetName == nil then return nil, v116.err("CosmeticsConfig", "_GetSelectedPresetName", string.format("Cannot %s; no preset selected", tostring(arg2))) end return presetName, nil end index2._SaveLiveState = function(arg) arg._stateConfig:Save("last_session") if not arg._data.AutoSave or arg._data.AutoSavePresetName == nil then return v116.VoidOk end return arg._stateConfig:Save(arg._data.AutoSavePresetName) end index2._RestoreSessionState = function(arg) if not arg._stateConfig:Exists("last_session") then return nil end local lastSession = arg._stateConfig:Load("last_session") if lastSession.Ok then return nil end return v116.err("CosmeticsConfig", "_RestoreSessionState", string.format("Failed to restore last session's cosmetics: %s", tostring(lastSession.Error.Detail))) end index2.GetAllStateConfigs = function() local tbl19 = {} for _, v119 in listfiles(str7) do local str8 = v119:gsub("/\\", ""):gsub("\\", "/") local parts = str8:split("/") local str9 if #parts == 1 then local v120 = tostring str9 = string.format("%s/%s", tostring(str7), v120(str8)) else str9 = str8 end if isfile(str9) then local match = parts[#parts]:match("(.+)%.json$") if match ~= nil and match ~= "last_session" then table.insert(tbl19, match) end end end return tbl19 end index2.SaveStateConfig = function(arg) local v119, v120 = arg:_GetSelectedPresetName("save state config") if v120 ~= nil then return v120 end local v121 = arg._stateConfig:Save(v119) if not v121.Ok then return v116.err("CosmeticsConfig", "SaveStateConfig", string.format("Failed to save state config: %s", tostring(v121.Error.Detail))) end return v116.VoidOk end index2.ExportStateToJson = function(arg) return arg._stateConfig:ExportToJson() end index2.SaveStateConfigAs = function(arg, arg2) return arg._stateConfig:Save(arg2) end index2.InstallPreset = function(arg, arg2, arg3) return arg._stateConfig:InstallSnapshot(arg2, arg3) end index2.LoadStateConfig = function(arg) local v119, v120 = arg:_GetSelectedPresetName("load state config") if v120 ~= nil then return v120 end local v121 = arg._stateConfig:Load(v119) if not v121.Ok then return v116.err("CosmeticsConfig", "LoadStateConfig", string.format("Failed to load state config: %s", tostring(v121.Error.Detail))) end return v116.VoidOk end index2.LoadStateFromJson = function(arg, arg2) return arg._stateConfig:LoadFromJson(arg2) end index2._ForgetPreset = function(arg, arg2) local data = arg._data local flag19 = v86[153] if data.PresetName == arg2 then data.PresetName = nil flag19 = v86[34] end if data.AutoSavePresetName == arg2 then data.AutoSavePresetName = nil flag19 = v86[34] end if data.AutoLoadPresetName == arg2 then data.AutoLoadPresetName = nil flag19 = true end if not flag19 then return v116.VoidOk end return arg:SaveCoreConfig() end index2.DeleteCurrentPreset = function(arg) local v119, v120 = arg:_GetSelectedPresetName("delete state config") if v120 ~= nil then return v120 end local str8 if v119:match("%.json$") ~= nil then str8 = v119 else str8 = v119 .. ".json" end local v121 = tostring local str9 = string.format("%s/%s", tostring(str7), v121(str8)) if not isfile(str9) then return v116.err("CosmeticsConfig", "DeleteCurrentPreset", string.format("File %s not found on disk", tostring(str8))) end delfile(str9) arg:_ForgetPreset(v119) return v116.VoidOk end index2.CreateDefaultPreset = function(arg, arg2) return arg._stateConfig:CreateDefaultPreset(arg2) end index2.SaveCoreConfig = function(arg) arg._configManager:SetData(arg._data) local coreConfig = arg._configManager:SaveToFile("core_config") if not coreConfig.Ok then return v116.err("CosmeticsConfig", "SaveCoreConfig", string.format("Failed to save core config: %s", tostring(coreConfig.Error.Detail))) end return v116.VoidOk end index2.LoadCoreConfig = function(arg) local coreConfig = arg._configManager:LoadFromFile("core_config") if not coreConfig.Ok then arg:_RestoreSessionState() arg:_ConnectAutoSave() return v116.err("CosmeticsConfig", "LoadCoreConfig", string.format("Failed to load core config: %s", tostring(coreConfig.Error.Detail))) end local data = coreConfig.Value arg._data = data local autoLoadPresetName = data.AutoLoadPresetName local flag19 = data.AutoLoad and autoLoadPresetName ~= nil local flag20 = false local CosmeticsConfig = nil if flag19 then local v119 = arg._stateConfig:Load(autoLoadPresetName) flag20 = v119.Ok CosmeticsConfig = nil if not v119.Ok then local v120 = tostring local detail = v119.Error.Detail CosmeticsConfig = v116.err("CosmeticsConfig", "LoadCoreConfig", string.format("Failed to auto-load preset \"%s\": %s", tostring(autoLoadPresetName), v120(detail))) end end local v119 = nil if not flag20 then v119 = arg:_RestoreSessionState() end arg:_ConnectAutoSave() if CosmeticsConfig ~= nil then return CosmeticsConfig end if v119 ~= nil then return v119 end return v116.VoidOk end index2.SetPresetName = function(arg, presetName) arg._data.PresetName = presetName return arg:SaveCoreConfig() end index2.SetAutoSaveEnabled = function(arg, autoSave) arg._data.AutoSave = autoSave return arg:SaveCoreConfig() end index2.SetAutoLoadEnabled = function(arg, autoLoad) arg._data.AutoLoad = autoLoad return arg:SaveCoreConfig() end index2.SetAutoSavePresetName = function(arg, autoSavePresetName) arg._data.AutoSavePresetName = autoSavePresetName return arg:SaveCoreConfig() end index2.SetAutoLoadPresetName = function(arg, autoLoadPresetName) arg._data.AutoLoadPresetName = autoLoadPresetName return arg:SaveCoreConfig() end index2.SetRuntimeEnabled = function(arg, arg2) arg._cosmetics:SetRuntimeEnabled(arg2) return arg:_SaveLiveState() end index2.SetUnlockedTypes = function(arg, arg2) arg._cosmetics:SetUnlockedTypes(arg2) return arg:_SaveLiveState() end index2.SetUnlockedRarities = function(arg, arg2) arg._cosmetics:SetUnlockedRarities(arg2) return arg:_SaveLiveState() end index2.GetState = function(arg) return arg._data end index2.GetStateConfigState = function(arg) return arg._stateConfig:GetState() end index2.Destroy = function(arg) local autoSaveConnection = arg._autoSaveConnection if autoSaveConnection ~= nil then arg._autoSaveConnection = nil autoSaveConnection:Disconnect() end arg._trove:Destroy() end return index2 end tbl17.e3 = function() local e3 = tbl17.cache.e3 if not e3 then local e32 = { c = fn35() } tbl17.cache.e3 = e32 e3 = e32 end return e3.c end end do -- e4 local function fn35() tbl17.cX() local v115 = tbl17.g() local v116 = tbl17.k() local v117 = cloneref(game:GetService("CollectionService")) local index2 = {} index2.__index = index2 index2.new = function(arg) local currentMap = v116.new("current_map") local tbl18 = { _trove = currentMap, _environmentId = nil, Model = nil, MapAdded = v115.new(), MapRemoved = v115.new() } setmetatable(tbl18, index2) currentMap:Add(arg:ObserveContext("current_map", function(arg2, arg3) local v118 = arg3:Extend() local function fn36(environmentId) v118:Clean() tbl18.Model = nil tbl18._environmentId = environmentId tbl18.MapRemoved:Fire() if environmentId == nil then return end v118:Connect(v117:GetInstanceAddedSignal("RaycastWhitelist" .. environmentId), function() if tbl18.Model == nil then tbl18:_ResolveModel(environmentId) end end) tbl18:_ResolveModel(environmentId) end local fighterState = arg2.FighterState arg3:Connect(fighterState.EnvironmentIdChanged, fn36) fn36(fighterState.EnvironmentId) end)) currentMap:Connect(arg.ContextRemoved, function() tbl18._environmentId = nil tbl18.Model = nil tbl18.MapRemoved:Fire() end) return tbl18 end index2._ResolveModel = function(arg, arg2) local parent = v117:GetTagged("RaycastWhitelist" .. arg2)[1] if parent == nil then return end while true do if parent.ClassName ~= "Model" and parent:GetAttribute("EnvironmentID") ~= arg2 then parent = parent.Parent if parent ~= workspace then continue end return end break end arg.Model = parent arg.MapAdded:Fire(parent) end index2.GetAnchor = function(arg) local model = arg.Model return model ~= nil and model:GetPivot() or nil end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.e4 = function() local e4 = tbl17.cache.e4 if not e4 then e4 = { c = fn35() } tbl17.cache.e4 = e4 end return e4.c end end do -- e5 local function fn35() local function fn36(arg) return arg:match("^%s*(.-)%s*$") or "" end return { normalize = function(arg) if type(arg) == "number" then return string.format("rbxassetid://%s", tostring(arg)) end if type(arg) ~= "string" then return nil end local v115 = fn36(arg) if v115 == "" then return nil end local _q = v115:match('^"(.-)"$') if _q ~= nil then v115 = fn36(_q) if v115 == "" then return nil end end local match = v115:match("^(%d+)$") if match ~= nil then return string.format("rbxassetid://%s", tostring(match)) end return v115 end, classify = function(arg) if arg:match("^rbxasset%w*://") ~= nil then return "Asset" end if arg:match("^https?://") ~= nil then return "Url" end return "File" end, } end tbl17.e5 = function() local e5 = tbl17.cache.e5 if not e5 then local e52 = { c = fn35() } tbl17.cache.e5 = e52 e5 = e52 end return e5.c end end do -- e7 local function fn35() local v115 = tbl17.e5() local str7 = tbl17.eS().str local v116 = tbl17.ay() local v117 = tbl17.a() local v118 = tbl17.e() local function fn36(arg) local match = arg:match("^%a[%w+.-]*://[^/?#]*(.*)$") or arg local match2 = ((match:match("^[^#]*") or match) .. "&"):match("[^/?=&]+%.([%w]+)[?&]") return match2 and match2:lower() or nil end local function fn37(arg) if getcustomasset == nil then return v117.err("CustomAssets", "loadAssetFromFile", "missing 'getcustomasset'") end local v121, v122 = v107(getcustomasset, arg) if v121 then return v117.ok(v122) end local v123 = tostring return v117.err("CustomAssets", "loadAssetFromFile", string.format("could not load '%s' (%s). Tip: copy the image into your executor workspace folder and enter just the file name.", tostring(arg), v123(v122))) end local function fn38(arg) return v116.new(function(arg2, arg3) local v119 = str7(arg) local str8 = fn36(arg) or "ogg" local str9 = string.format("%s/%s.%s", "kiciarebuild/cache", tostring(v119), tostring(str8)) if not isfile(str9) then local v120, v121 = v107(function() return game:HttpGet(arg) end) if not v120 then local v122 = tostring arg3(string.format("failed requesting '%s': %s", tostring(arg), v122(v121))) return end local cache = v118("kiciarebuild/cache") if not cache.Ok then arg3(string.format("failed ensuring folder path: %s", tostring(cache.Error.Detail))) return end local v122, v123 = v107(writefile, str9, v121) if not v122 then local v124 = tostring arg3(string.format("failed writing file '%s': %s", tostring(str9), v124(v123))) return end end local v120 = fn37(str9) if not v120.Ok then arg3(string.format("failed loading asset from file '%s: %s'", tostring(str9), tostring(v120.Error.Detail))) return end arg2(v120.Value) end) end local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _pending = {}, _resolved = {} } setmetatable(tbl18, index2) return tbl18 end index2.GetAsync = function(arg, arg2, arg3) local resolved = arg._resolved local v119 = resolved[arg2] if v119 ~= nil then return v119 ~= false and v116.resolve(v119) or v116.reject() end local v120 = v115.classify(arg2) if v120 == "Asset" then if arg3 == "image" then local _id = tostring(arg2):match("(%d+)") local _url = _id and ("rbxthumb://type=Asset&id=" .. _id .. "&w=420&h=420") or arg2 resolved[arg2] = _url return v116.resolve(_url) end resolved[arg2] = arg2 return v116.resolve(arg2) end if v120 == "File" then local v121 = fn37(arg2) if not v121.Ok then resolved[arg2] = false return v116.reject(v121.Error.Detail) end local value = v121.Value resolved[arg2] = value return v116.resolve(value) end local pending = arg._pending local v121 = pending[arg2] if v121 ~= nil then return v121 end local v122 = fn38(arg2) pending[arg2] = v122 v122:andThen(function(arg3) resolved[arg2] = arg3 end):catch(function() resolved[arg2] = v86[153] end) return v122 end index2.ClearCache = function(arg) table.clear(arg._resolved) end return index2 end tbl17.e7 = function() local e7 = tbl17.cache.e7 if not e7 then local e72 = { c = fn35() } tbl17.cache.e7 = e72 e7 = e72 end return e7.c end end do -- e8 local function fn35() tbl17.e6() return {} end tbl17.e8 = function() local e8 = tbl17.cache.e8 if not e8 then e8 = { c = fn35() } tbl17.cache.e8 = e8 end return e8.c end end do -- e9 local function fn35() local v115 = tbl17.e5() tbl17.e6() local v116 = tbl17.f() local v117 = tbl17.e7() local v118 = tbl17.e8() local v119 = tbl17.ad() local v120 = tbl17.ay() local v121 = tbl17.a() local v122 = tbl17.g() local v123 = cloneref(game:GetService("ContentProvider")) local str7 = string.format("%s/%s", "kiciarebuild", "image_storage.json") local function fn36(arg) return arg:match("^%s*(.-)%s*$") or "" end local function fn37(arg) local tbl18 = {} local tbl19 = {} local v124 = v86[68] arg = type(arg) == v124 and arg or nil if arg ~= nil then for _, v125 in arg, nil, nil do if type(v125) == "table" then local v126 = (v125.Name ~= nil and { v125.Name } or { v125.name })[v86[63]] if type(v126) == "string" then local v127 = fn36(v126) if not (v127 == "" or tbl19[v127]) then local v128 = v115.normalize((v125.ImageId ~= nil and { v125.ImageId } or { v125.imageId })[1]) if v128 ~= nil then tbl19[v127] = true table.insert(tbl18, { Name = v127, ImageId = v128 }) end end end end end end table.sort(tbl18, function(arg2, arg3) return arg2.Name < arg3.Name end) return tbl18 end local index2 = {} index2.__index = index2 index2.new = function() local v124 = v119.new() local tbl18 = { _errorReporter = v124, _configManager = v116.new({ DefaultConfig = v118, CurrentVersion = v86[63], SavePath = "kiciarebuild", Deserialize = fn37 }), _customAssets = v117.new(), _data = table.clone(v118), _names = {}, _imageIdByName = {}, _nameByImageId = {}, Changed = v122.new(), } setmetatable(tbl18, index2) v124:ReportResult(tbl18:Reload()) return tbl18 end index2._EnsureDefaultFile = function(arg) if isfile(str7) then return v121.VoidOk end local json = arg._configManager:SaveDefaultToFile("image_storage.json", true) if not json.Ok then return v121.err("ImageStorage", "EnsureDefaultFile", string.format("failed to create a default file: %s", tostring(json.Error.Detail))) end return v121.VoidOk end index2.Reload = function(arg) local v124 = arg:_EnsureDefaultFile() if not v124.Ok then return v124 end local json = arg._configManager:LoadFromFile("image_storage.json") if not json.Ok then arg._data = table.clone(v118) arg:_RebuildLookups() arg.Changed:Fire(arg:GetNames()) return v121.err("ImageStorage", "Reload", json.Error.Detail) end arg._data = json.Value arg:_RebuildLookups() arg.Changed:Fire(arg:GetNames()) return v121.VoidOk end index2._RebuildLookups = function(arg) local names = arg._names local imageIdByName = arg._imageIdByName local nameByImageId = arg._nameByImageId table.clear(names) table.clear(imageIdByName) table.clear(nameByImageId) for _, v124 in arg._data, nil, nil do table.insert(names, v124.Name) imageIdByName[v124.Name] = v124.ImageId nameByImageId[v124.ImageId] = v124.Name end arg._customAssets:ClearCache() end index2.GetNames = function(arg) return table.clone(arg._names) end index2.FindNameByImageId = function(arg, arg2) local v124 = v115.normalize(arg2) return v124 ~= nil and arg._nameByImageId[v124] or nil end index2.GetAsync = function(arg, arg2) local v124 = arg._imageIdByName[arg2] if v124 == nil then v124 = v115.normalize(arg2) end if v124 == nil then return v120.reject() end return arg._customAssets:GetAsync(v124, "image") end index2.Preload = function(arg, image) task.spawn(function() local imageLabel = Instance.new("ImageLabel") imageLabel.Image = image v123:PreloadAsync({ imageLabel }) imageLabel:Destroy() end) end index2._Save = function(arg) arg._configManager:SetData(arg._data) local json = arg._configManager:SaveToFile("image_storage.json") if not json.Ok then return v121.err("ImageStorage", "Save", json.Error.Detail) end return v121.VoidOk end index2.AddCustom = function(arg, arg2, arg3) local v124 = fn36(arg2) if v124 == "" then return v121.err("ImageStorage", "AddCustom", "image name cannot be empty") end if arg._imageIdByName[v124] ~= nil then return v121.err("ImageStorage", "AddCustom", string.format("image '%s' already exists", tostring(v124))) end local v125 = v115.normalize(arg3) if v125 == nil then return v121.err("ImageStorage", "AddCustom", string.format("image id '%s' is invalid", tostring(v125))) end local data = arg._data table.insert(data, { Name = v124, ImageId = v125 }) table.sort(data, function(arg4, arg5) return arg4.Name < arg5.Name end) arg:_RebuildLookups() local v126 = arg:_Save() arg.Changed:Fire(arg:GetNames()) return v126 end index2.RemoveCustom = function(arg, arg2) local data = arg._data local v124 = nil for k, v125 in data, nil, nil do if v125.Name == arg2 then v124 = k break else v124 = nil end end if v124 == nil then return v121.VoidOk end table.remove(data, v124) arg:_RebuildLookups() local v125 = arg:_Save() arg.Changed:Fire(arg:GetNames()) return v125 end index2.Destroy = function(arg) arg.Changed:Destroy() arg._errorReporter:Destroy() end return index2 end tbl17.e9 = function() local e9 = tbl17.cache.e9 if not e9 then e9 = { c = fn35() } tbl17.cache.e9 = e9 end return e9.c end end do -- fa local function fn35() tbl17.e9() local v115 = tbl17.g() local v116 = tbl17.k() tbl17.a3() local index2 = {} index2.__index = index2 index2.new = function(parent, arg) local v117 = v116.new() local v118 = v117:Add(Instance.new("ImageLabel")) v118.AnchorPoint = Vector2.new(0.5, 0.5) v118.Position = UDim2.fromScale(0.5, 0.5) v118.BackgroundTransparency = 1 v118.Visible = false v118.Parent = parent local tbl18 = { _trove = v117, _imageStorage = arg, _image = v118, _name = "", _resolveGeneration = 0, _isRenderable = v86[153], RenderabilityChanged = v117:Add(v115.new()), } setmetatable(tbl18, index2) v117:Connect(arg.Changed, function() tbl18:_ResolveName() end) return tbl18 end index2._SetRenderable = function(arg, isRenderable) if arg._isRenderable == isRenderable then return end arg._isRenderable = isRenderable arg.RenderabilityChanged:Fire(isRenderable) end index2.ApplyStatic = function(arg, arg2) local image = arg._image image.Size = UDim2.fromOffset(arg2.Size, arg2.Size) image.ImageTransparency = arg2.Transparency arg:_SetName(arg2.Name) end index2._ResolveName = function(arg) local resolveGeneration = arg._resolveGeneration + 1 arg._resolveGeneration = resolveGeneration local image = arg._image local name = arg._name image.Image = "" arg:_SetRenderable(false) if name == "" then return end arg._imageStorage:GetAsync(name):andThen(function(image2) if arg._resolveGeneration == resolveGeneration then image.Image = image2 arg:_SetRenderable(image2 ~= "") end end):catch(function() if arg._resolveGeneration == resolveGeneration then image.Image = "" arg:_SetRenderable(false) end end) end index2._SetName = function(arg, name) if name == arg._name then return end arg._name = name arg:_ResolveName() end index2.SetVisible = function(arg, visible) arg._image.Visible = visible end index2.IsRenderable = function(arg) return arg._isRenderable end index2.Destroy = function(arg) arg._resolveGeneration = arg._resolveGeneration + 1 arg._trove:Destroy() end return index2 end tbl17.fa = function() local fa = tbl17.cache.fa if not fa then fa = { c = fn35() } tbl17.cache.fa = fa end return fa.c end end do -- fb local function fn35() return { None = table.freeze({ Kind = "None" }), equal = function(arg, arg2) if arg.Kind == v86[75] then return arg2.Kind == v86[75] end if arg.Kind == "Shimmer" then return arg2.Kind == "Shimmer" and arg.Speed == arg2.Speed and arg.Color == arg2.Color end if arg.Kind == "Perimeter" then return arg2.Kind == "Perimeter" and arg.Speed == arg2.Speed and arg.Color == arg2.Color end return arg2.Kind == "PingPong" and arg.Speed == arg2.Speed and arg.BackgroundColor == arg2.BackgroundColor and arg.MainColor == arg2.MainColor and arg.Rotation == arg2.Rotation end, } end tbl17.fb = function() local fb = tbl17.cache.fb if not fb then local fb2 = { c = fn35() } tbl17.cache.fb = fb2 fb = fb2 end return fb.c end end do -- fc local function fn35() local tbl18 = {} local tbl19 = { -1, 0, 1 } local function fn36(arg, arg2, arg3) local v115 = nil local n = 0 for _, v116 in tbl19, nil, v115 do for _, v117 in { arg2 + v116, arg3 + v116 }, nil, nil do local n33 = math.abs(arg - v117) if n33 < 0.22 then local n34 = v86[63] - n33 / 0.22 if n < n34 then n = n34 end end end end return n end local function fn37(arg, arg2, arg3) local n = (1 - arg3) % 1 local tbl20 = { 0, 1 } for _, v115 in tbl19, nil, nil do for _, v116 in { arg3 + v115, n + v115 }, nil, nil do local n33 = v116 - 0.22 local n34 = v116 + 0.22 if n34 > 0 and n33 < 1 then if n33 > v86[186] then table.insert(tbl20, n33) end if v116 > 0 and v116 < v86[63] then table.insert(tbl20, v116) end if n34 < 1 then table.insert(tbl20, n34) end end end end table.sort(tbl20) local tbl21 = {} local n33 = -1 for _, v115 in tbl20, nil, nil do if n33 + 0.0001 < v115 then table.insert(tbl21, ColorSequenceKeypoint.new(v115, arg:Lerp(arg2, fn36(v115, arg3, n)))) n33 = v115 end end return ColorSequence.new(tbl21) end local obj = setmetatable({}, { __mode = "v" }) tbl18.flipbook = function(arg, arg2) local str7 = ("%.6f,%.6f,%.6f|%.6f,%.6f,%.6f"):format(arg.R, arg.G, arg.B, arg2.R, arg2.G, arg2.B) local v115 = obj[str7] if v115 ~= nil then return v115 end local v116 = table.create(120) for i = 0, 119 do v116[i + 1] = fn37(arg, arg2, i / 120) end obj[str7] = v116 return v116 end tbl18.frameIndex = function(arg) return math.floor(arg * v86[101] % 1 * 120) end tbl18.BAND_HALF_WIDTH = 0.4 tbl18.BAND_OFFSETS = table.freeze({ v86[186], 4, -4 }) tbl18.bands = function(arg, arg2) local n = arg2 / 90 local n33 = math.sin(arg * 3.1415926535897931) + 1 return (n33 + n) % 4, (4 - n33 + n) % 4 end tbl18.colorAt = function(arg, arg2, arg3, arg4, arg5) local n = 0 for _, v115 in tbl18.BAND_OFFSETS, nil, nil do local n33 = math.abs(arg3 - arg4 + v115) if n33 < tbl18.BAND_HALF_WIDTH then local n34 = 1 - n33 / tbl18.BAND_HALF_WIDTH if n34 > n then n = n34 end end local n34 = math.abs(arg3 - arg5 + v115) if n34 < tbl18.BAND_HALF_WIDTH then local n35 = 1 - n34 / tbl18.BAND_HALF_WIDTH if n < n35 then n = n35 end end end if n <= 0 then return arg end return arg:Lerp(arg2, n) end return tbl18 end tbl17.fc = function() local fc = tbl17.cache.fc if not fc then local fc2 = { c = fn35() } tbl17.cache.fc = fc2 fc = fc2 end return fc.c end end do -- fd local function fn35() return { offset = function(arg) local v115 = v86[63] return ((1 - math.abs(arg * 0.5 % v86[56] - 1)) * 2 - v115) * 0.5 end, colorAt = function(arg, arg2, arg3, arg4) local n = math.clamp(arg2 - arg, v86[186], v86[63]) if n <= 0.5 then return arg4:Lerp(arg3, n * 2) end return arg3:Lerp(arg4, (n - 0.5) * 2) end, } end tbl17.fd = function() local fd = tbl17.cache.fd if not fd then fd = { c = fn35() } tbl17.cache.fd = fd end return fd.c end end do -- fe local function fn35() local v115 = tbl17.fb() local v116 = tbl17.fc() local v117 = tbl17.fd() local color = Color3.new(1, 1, 1) local color2 = Color3.new(0, v86[186], 0) local colorSequence = ColorSequence.new(color) local colorSequence2 = ColorSequence.new(color2) local numberSequence = NumberSequence.new(0) local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) return setmetatable({ _label = arg, _gradient = arg2, _stroke = arg3, _strokeGradient = arg4, _strokePolicy = arg5, _effect = v115.None, _staticColor = nil, _frames = nil, _frameIndex = -1, }, index2) end index2.Set = function(arg, effect, staticColor) local effect2 = arg._effect local staticColor2 = arg._staticColor if staticColor2 == staticColor and v115.equal(effect2, effect) then return end arg._effect = effect arg._staticColor = staticColor if staticColor2 ~= nil and not (effect2.Kind ~= effect.Kind) then if effect.Kind == v86[75] and staticColor2 == staticColor then return end if effect.Kind == "Shimmer" and effect2.Kind == "Shimmer" and effect2.Color == effect.Color and staticColor2 == staticColor then return end if effect.Kind == "PingPong" and effect2.Kind == "PingPong" and effect2.BackgroundColor == effect.BackgroundColor and effect2.MainColor == effect.MainColor and effect2.Rotation == effect.Rotation then return end end local gradient = arg._gradient gradient.Offset = Vector2.zero gradient.Rotation = v86[186] gradient.Transparency = numberSequence arg._frames = nil arg._frameIndex = -1 if effect.Kind == "Shimmer" then local v118 = (typeof(staticColor) == "Color3" and { staticColor } or { staticColor.Keypoints[1].Value })[1] local colorSequence3 = ColorSequence.new local tbl18 = {} local v119 = ColorSequenceKeypoint.new(0, effect.Color) local v120 = ColorSequenceKeypoint.new(0.5, v118) tbl18[1] = v119 tbl18[2] = v120 do local values = table.pack(ColorSequenceKeypoint.new(1, effect.Color)) table.move(values, 1, values.n, 3, tbl18) end gradient.Color = colorSequence3(tbl18) gradient.Rotation = 45 gradient.Enabled = true arg._label.TextColor3 = color elseif effect.Kind == "PingPong" then local v118 = v116.flipbook(effect.BackgroundColor, effect.MainColor) arg._frames = v118 gradient.Color = v118[1] arg._frameIndex = 0 gradient.Rotation = effect.Rotation gradient.Enabled = true arg._label.TextColor3 = color else local v118 = v86[115] if typeof(staticColor) == v118 then gradient.Color = colorSequence gradient.Enabled = false arg._label.TextColor3 = staticColor else gradient.Color = staticColor gradient.Enabled = true arg._label.TextColor3 = color end end local strokeGradient = arg._strokeGradient strokeGradient.Offset = Vector2.zero strokeGradient.Rotation = 0 strokeGradient.Transparency = numberSequence if arg._strokePolicy == "Isolated" then strokeGradient.Color = colorSequence strokeGradient.Enabled = v86[34] else arg._stroke.Color = color2 strokeGradient.Color = colorSequence2 strokeGradient.Enabled = effect.Kind == "PingPong" end end index2.Update = function(arg, arg2) local effect = arg._effect if effect.Kind == "Shimmer" then local v118 = v86[186] arg._gradient.Offset = Vector2.new(v117.offset(arg2 * effect.Speed), v118) elseif effect.Kind == "PingPong" then local frames = arg._frames if frames ~= nil then local v118 = v116.frameIndex(arg2 * effect.Speed) if v118 ~= arg._frameIndex then arg._frameIndex = v118 arg._gradient.Color = frames[v118 + 1] end end end end return index2 end tbl17.fe = function() local fe = tbl17.cache.fe if not fe then local fe2 = { c = fn35() } tbl17.cache.fe = fe2 fe = fe2 end return fe.c end end do -- ff local function fn35() local v115 = tbl17.fb() tbl17.a3() local tbl18 tbl18 = { outline = function(arg) if not arg.Enabled then return v115.None end if arg.Kind == "Shimmer" then return { Kind = "Shimmer", Speed = arg.Speed, Color = arg.Shimmer.Color } end if arg.Kind == "Perimeter" then return { Kind = "Perimeter", Speed = arg.Speed, Color = arg.Perimeter.Color } end local pingPong = arg.PingPong return { Kind = "PingPong", Speed = arg.Speed, BackgroundColor = pingPong.BackgroundColor, MainColor = pingPong.MainColor, Rotation = pingPong.Rotation, } end, text = function(arg) local v116 = tbl18.outline(arg) if v116.Kind == "Perimeter" then return v115.None end return v116 end, } return tbl18 end tbl17.ff = function() local ff = tbl17.cache.ff if not ff then local ff2 = { c = fn35() } tbl17.cache.ff = ff2 ff = ff2 end return ff.c end end do -- fg local function fn35() local v115 = tbl17.fb() local v116 = tbl17.az() tbl17.a3() local v117 = tbl17.fe() local v118 = tbl17.k() local v119 = tbl17.ff() local index2 = {} index2.__index = index2 index2.new = function(parent) local v120 = v118.new() local v121 = v120:Add(Instance.new("TextLabel")) v121.AnchorPoint = Vector2.new(0.5, 0) v121.AutomaticSize = Enum.AutomaticSize.XY v121.BackgroundTransparency = v86[63] v121.TextColor3 = Color3.new(v86[63], 1, 1) v121.Text = "" v121.Visible = false local uiGradient = Instance.new("UIGradient") uiGradient.Parent = v121 local instance = Instance.new(v86[85]) instance.Enabled = false instance.Parent = v121 local uiGradient2 = Instance.new("UIGradient") uiGradient2.Parent = instance local v122 = v117.new(v121, uiGradient, instance, uiGradient2, "Isolated") v121.Parent = parent return setmetatable({ _trove = v120, _label = v121, _stroke = instance, _animation = v122, _offset = v86[186], _enabled = false }, index2) end index2.ApplyStatic = function(arg, arg2) arg._enabled = arg2.Enabled arg._offset = arg2.Offset local label = arg._label label.Text = arg2.Content label.TextSize = arg2.Size local _fok, _f = v107(function() return v116:Get(arg2.Font) end) if _fok and typeof(_f) == "Font" then label.FontFace = _f end arg._stroke.Enabled = arg2.Outline.Enabled arg._stroke.Color = arg2.Outline.Color arg._stroke.Thickness = arg2.Outline.Thickness arg._animation:Set((arg2.Enabled and { (v119.text(arg2.Animation)) } or { v115.None })[1], arg2.Color) end index2.Update = function(l,I,W)if not l._enabled then l._label.Visible=false;return;end;l._label.Visible=true;l._label.Position=UDim2.fromOffset(math.round(I.X),math.round(I.Y+l._offset));l._animation:Update(W);end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.fg = function() local fg = tbl17.cache.fg if not fg then local fg2 = { c = fn35() } tbl17.cache.fg = fg2 fg = fg2 end return fg.c end end do -- fh local function fn35() local v115 = tbl17.e() local v116 = table.create(v86[137], 0) for i = 0, v86[108] do local v117 = i for i2 = v86[63], v86[162] do if v117 % 2 == 1 then v117 = bit32.bxor(3988292384, bit32.rshift(v117, 1)) else v117 = bit32.rshift(v117, 1) end end v116[i + 1] = v117 end local function fn36(arg) local n = 4294967295 for i = v86[63], #arg do n = bit32.bxor(v116[bit32.band(bit32.bxor(n, string.byte(arg, i)), 255) + 1], bit32.rshift(n, 8)) end return bit32.bxor(n, 4294967295) end local function fn37(arg) local n = v86[186] local n33 = 1 for i = 1, #arg do n33 = (n33 + string.byte(arg, i)) % 65521 n = (n + n33) % 65521 end return n * 65536 + n33 end local function fn38(arg, arg2) local str7 = arg .. arg2 return string.pack(">I4", #arg2) .. str7 .. string.pack(">I4", fn36(str7)) end local function fn39(arg) local tbl18 = { "x\1" } local v117 = v86[63] while true do local n = math.min(65535, #arg - v117 + 1) table.insert(tbl18, string.char(v117 + n > #arg and 1 or 0)) table.insert(tbl18, string.pack("I4", fn37(arg))) return table.concat(tbl18) end local function fn40(arg, arg2, arg3) local v117 = string.pack(">I4I4BBBBB", arg, arg2, 8, 6, 0, 0, 0) return "\137PNG\r\n\26\n" .. fn38("IHDR", v117) .. fn38("IDAT", fn39(arg3)) .. fn38("IEND", "") end local tbl18 = {} local flag19 = false local function fn41(arg, arg2) if not flag19 then if not v115("kiciarebuild/rivals/crosshair_textures").Ok then return false end flag19 = true end local str7 = string.format("%s/%s.png", "kiciarebuild/rivals/crosshair_textures", tostring(arg)) if v107(writefile, str7, arg2) then local v117, v118 = v107(getcustomasset, str7) if v117 and type(v118) == "string" then return v118 end end return false end return { Pad = 1, get = function(arg, arg2) local v117 = tostring local str7 = string.format("%sx%s", tostring(arg), v117(arg2)) local v118 = tbl18[str7] if v118 ~= nil then return v118 or nil end local str8 = "\0" .. string.rep("\255\255\255\0", arg) local str9 = "\0" .. "\255\255\255\0" .. string.rep("\255\255\255\255", arg - 2) .. "\255\255\255\0" local v119 = table.create(arg2) v119[v86[63]] = str8 for i = 2, arg2 - 1 do v119[i] = str9 end v119[arg2] = str8 local v120 = fn41(str7, fn40(arg, arg2, table.concat(v119))) tbl18[str7] = v120 return v120 or nil end, getRotated = function(arg, arg2, arg3) local n = arg3 % 180 local v117 = math.rad(n) local v118 = math.cos(v117) local v119 = math.sin(v117) local n33 = arg / 2 local n34 = arg2 / 2 local v120 = math.ceil(n33 * math.abs(v118) + n34 * math.abs(v119) + 1) local v121 = v86[63] local v122 = math.ceil(n33 * math.abs(v119) + n34 * math.abs(v118) + v121) local n35 = v120 * 2 local n36 = v122 * 2 local v123 = tostring local str7 = string.format("%sx%sr%s", tostring(arg), tostring(arg2), v123(n)) local v124 = tbl18[str7] if v124 ~= nil then return v124 or nil, n35, n36 end local v125 = table.create(n36) for i = 1, n36 do if i % 16 == v86[186] then task.wait() end local n37 = i - v86[101] - v122 local v126 = table.create(n35 + 1) v126[1] = "\0" for i2 = 1, n35 do local n38 = i2 - 0.5 - v120 local clamp = math.clamp v126[i2 + 1] = "\255\255\255" .. string.char(math.round(math.clamp(n33 - math.abs(n38 * v118 + n37 * v119) + 0.5, 0, 1) * clamp(n34 - math.abs(n37 * v118 - n38 * v119) + 0.5, 0, 1) * 255)) end v125[i] = table.concat(v126) end local v126 = fn41(str7, fn40(n35, n36, table.concat(v125))) tbl18[str7] = v126 return v126 or nil, n35, n36 end, } end tbl17.fh = function() local fh = tbl17.cache.fh if not fh then fh = { c = fn35() } tbl17.cache.fh = fh end return fh.c end end do -- fi local function fn35() if true then local v115 = tbl17.bG() local v116 = tbl17.fh() tbl17.a3() local v117 = cloneref(game:GetService("ContentProvider")) local index2 = {} index2.__index = index2 local function fn36(arg) return arg.Thickness, arg.Length, arg.Outline.Enabled and arg.Outline.Thickness or 0 end local function fn37(arg, arg2, arg3, arg4, arg5) if arg4 == "Baked" then local v118, v119, v120 = v116.getRotated(arg2, arg3, arg5) if v118 ~= nil then arg.Image = v118 arg.Size = UDim2.fromOffset(v119, v120) return v86[34] end elseif arg4 == "Soft" then local n = v116.Pad * 2 local v118 = v116.get(arg2 + n, arg3 + n) if v118 ~= nil then arg.Image = v118 arg.Size = UDim2.fromOffset(arg2 + n, arg3 + n) return true end end arg.Image = "" arg.Size = UDim2.fromOffset(arg2, arg3) return false end local function fn38(arg, image) if image == nil then return end local instance = Instance.new(v86[146]) instance.Image = image table.insert(arg, instance) end local function fn39(arg, arg2) if #arg == 0 then return end task.spawn(function() v117:PreloadAsync(arg) for _, v118 in arg, nil, nil do v118:Destroy() end if arg2 then arg2() end end) end index2.new = function(arg) local tbl18 = { _lines = arg, _rotation = v115.Data.CustomCrosshair.Rotation, _edgeMode = "Vector", _bakedAngle = 0, _bakedActive = false, _bakeSignature = "", _bakeChangedAt = 0, _isWarmedByAngle = {}, } setmetatable(tbl18, index2) return tbl18 end index2._ComputeEdgeMode = function(l,I)local W=math.abs(l._rotation.Speed);if l._rotation.Enabled and W~=0 then if W>60 or l._isWarmedByAngle[I%180]~=true then return"Soft";end;return"Baked";end;if I%90==0 then return"Vector";end;if l._isWarmedByAngle[I%180]==true then return"Baked";end;return"Soft";end index2._PreloadTextures = function(arg) local customCrosshair = v115.Data.CustomCrosshair local v118, v119, v120 = fn36(customCrosshair) local n = v116.Pad * 2 local tbl18 = {} for _, v121 in { { v118, v119 }, { v118 + v120 * 2, v119 + v120 * 2 } }, nil, nil do fn38(tbl18, v116.get(v121[v86[63]] + n, v121[2] + n)) fn38(tbl18, v116.get(v121[2] + n, v121[1] + n)) end fn39(tbl18) if customCrosshair.Rotation.Angle % v86[45] ~= 0 then arg:_PreloadBakedAngle(customCrosshair.Rotation.Angle) end end index2._PreloadBakedAngle = function(arg, arg2) local n = arg2 % 180 arg._isWarmedByAngle[n] = false local bakeSignature = arg._bakeSignature local v118, v119, v120 = fn36(v115.Data.CustomCrosshair) local n33 = v118 + v120 * 2 local n34 = v119 + v120 * v86[56] task.delay(0, function() if arg._bakeSignature ~= bakeSignature then return end local tbl18 = {} local v121 = v116.getRotated(v118, v119, arg2) fn38(tbl18, v121) local v122 = v116.getRotated(v119, v118, arg2) fn38(tbl18, v122) local v123 = v116.getRotated(n33, n34, arg2) fn38(tbl18, v123) local v124 = v116.getRotated(n34, n33, arg2) fn38(tbl18, v124) fn39(tbl18, function() if arg._bakeSignature == bakeSignature then arg._isWarmedByAngle[n] = true end end) end) end index2.WarmSpin = function(l,I)if os.clock()-l._bakeChangedAt<0.25 then return;end;local W,N=l._rotation.Speed>0 and 1 or-1,0;for P=0,15,1 do local a=(I+W*P)%360;if l._isWarmedByAngle[a%180]==nil then l:_PreloadBakedAngle(a);N+=1;if N>=2 then return;end;end;end;end index2.ApplyTextures = function(I)local W= v115 .Data.CustomCrosshair;local N=I._edgeMode;local P=I._bakedAngle;local a,e,c= fn36 (W);N=if N=="Baked"and v116 .getRotated(a,e,P)==nil then"Soft"else N;local E,p=N=="Baked",W.Outline.Enabled and 0 or 1;for T,t in I._lines,nil,nil do local x=t.Vertical and a or e;local S=t.Vertical and e or a;T= fn37 (t.Fill,x,S,N,P);t.Fill.BackgroundTransparency=T and 1 or 0;T= fn37 (t.Outline,x+c*2,S+c*2,N,P);t.Outline.BackgroundTransparency=T and 1 or p;W=t.Vertical and 90 or 0;t.Gradient.Rotation=if E then W+P else W;end;I._bakedActive=E;end index2.ApplyStatic = function(arg, arg2) arg._rotation = arg2.Rotation local v118, v119, v120 = fn36(arg2) local angle = arg2.Rotation.Angle local format = string.format local str7 = tostring(v118) local str8 = tostring(v119) local v121 = tostring local v122 = format("%s:%s:%s:%s", str7, str8, tostring(v120), v121(angle)) if v122 ~= arg._bakeSignature then arg._bakeSignature = v122 arg._bakeChangedAt = os.clock() table.clear(arg._isWarmedByAngle) task.delay(0.25, function() if arg._bakeSignature == v122 then arg:_PreloadTextures() end end) end arg._edgeMode = arg:_ComputeEdgeMode(angle) arg._bakedAngle = angle arg:ApplyTextures() end index2.Render = function(l,I,W)local N;if W and math.abs(l._rotation.Speed)<=60 then N=math.round(I)%360;l:WarmSpin(N);else N=I;end;W=l:_ComputeEdgeMode(N);if W~=l._edgeMode or W=="Baked"and N~=l._bakedAngle then l._edgeMode=W;l._bakedAngle=N;l:ApplyTextures();end;return N;end index2.IsBaked = function(arg) return arg._bakedActive end index2.Destroy = function(arg) arg._bakeSignature = "" end return index2 end return nil -- (anti-tamper freeze trap removed) end tbl17.fi = function() local fi = tbl17.cache.fi if not fi then fi = { c = fn35() } tbl17.cache.fi = fi end return fi.c end end do -- fj local function fn35() tbl17.cU() tbl17.aO() tbl17.cX() local v115 = tbl17.a() local v116 = tbl17.k() local crosshair = tbl17.aS().Crosshair local index2 = {} index2.__index = index2 index2.new = function(arg) local NativeCrosshairHook = v116.new("NativeCrosshairHook") local tbl18 = { _trove = NativeCrosshairHook, _crosshairVisible = nil, _hitmarkerVisible = nil, _crosshairEntryByItem = {}, _original = nil, } setmetatable(tbl18, index2) tbl18:_Initialize(NativeCrosshairHook, arg) return tbl18 end index2.IsCrosshairActive = function(arg) return arg._activeCrosshair ~= nil end index2._Initialize = function(arg, arg2, arg3) arg2:Add(arg3:ObserveContext("NativeCrosshairHook", function(arg4, arg5) local tbl18 = {} local itemBehaviors = arg4.ItemBehaviors local function fn36(arg6) local flag19 = arg6 ~= nil and arg._crosshairEntryByItem[arg6.Inner] or nil arg._activeCrosshair = flag19 and flag19.Frame or nil end local function fn37(arg6, arg7) local crosshair2 = v102(v102(v102(arg7, "Mouse"), "MouseCrosshair"), "Crosshair") arg._crosshairEntryByItem[arg6] = { Instance = crosshair2, Frame = v102(crosshair2, "Frame") } fn36(itemBehaviors:GetEquipped()) end local function fn38(arg6) arg._crosshairEntryByItem[arg6] = nil fn36(itemBehaviors:GetEquipped()) local v117 = tbl18[arg6] if v117 ~= nil then tbl18[arg6] = nil arg5:Remove(v117) end end local function fn39(arg6) local inner = arg6.Inner local itemInterface = arg6.ItemInterface local v117 = arg5:Extend() tbl18[inner] = v117 if itemInterface.Instance ~= nil then fn37(inner, itemInterface.Instance) end v117:Connect(itemInterface.Created, function(arg7) fn37(inner, arg7) end) end arg5:Connect(itemBehaviors.ItemAdded, fn39) arg5:Connect(itemBehaviors.ItemRemoved, function(arg6) fn38(arg6.Inner) end) for _, v117 in itemBehaviors:GetItems() do fn39(v117) end arg5:Connect(itemBehaviors.EquippedItemChanged, fn36) fn36(itemBehaviors:GetEquipped()) end)) end index2._LoadHook = function(arg) if arg._original ~= nil then return v115.VoidOk end local v117 = v102(crosshair, "_Update") if v117 == nil then return v115.err("NativeCrosshairHook", "LoadHook", "Failed to find _Update") end v103(crosshair, "_Update", function(self, ...) local result = table.pack(v117(self, ...)) local frame = type(self) == "table" and v102(self, "Frame") or nil if frame ~= nil then pcall(function() if arg._crosshairVisible ~= nil then frame.Foreground.Visible = arg._crosshairVisible frame.Background.Visible = arg._crosshairVisible end if arg._hitmarkerVisible ~= nil then frame.Hitmarker.Visible = arg._hitmarkerVisible end end) end return table.unpack(result, 1, result.n) end) arg._original = v117 return v115.VoidOk end index2._RevertHook = function(arg) local original = arg._original if original == nil then return end arg._original = nil v103(crosshair, "_Update", original) end index2._RevertFrames = function(arg) local original = arg._original if original ~= nil then for _, v117 in arg._crosshairEntryByItem, nil, nil do coroutine.wrap(function() setthreadidentity(2) local instance = v117.Instance coroutine.wrap(original)(instance) setthreadidentity(8) end)() end end end index2._UpdateHookState = function(arg) if arg._crosshairVisible ~= nil or arg._hitmarkerVisible ~= nil then return arg:_LoadHook() end arg:_RevertHook() return v115.VoidOk end index2.SetCrosshairVisible = function(arg, crosshairVisible) local crosshairVisible2 = arg._crosshairVisible arg._crosshairVisible = crosshairVisible if crosshairVisible ~= nil then local v117 = arg:_UpdateHookState() if not v117.Ok then arg._crosshairVisible = crosshairVisible2 return v117 end for _, v118 in arg._crosshairEntryByItem, nil, nil do v118.Frame.Foreground.Visible = crosshairVisible v118.Frame.Background.Visible = crosshairVisible end return v117 end arg:_RevertFrames() return arg:_UpdateHookState() end index2.SetHitmarkerVisible = function(arg, hitmarkerVisible) arg._hitmarkerVisible = hitmarkerVisible if hitmarkerVisible ~= nil then for _, v117 in arg._crosshairEntryByItem, nil, nil do v117.Frame.Hitmarker.Visible = hitmarkerVisible end else arg:_RevertFrames() end return arg:_UpdateHookState() end index2.Destroy = function(arg) arg._trove:Destroy() arg:_RevertFrames() arg:_RevertHook() end return index2 end tbl17.fj = function() local fj = tbl17.cache.fj if not fj then fj = { c = fn35() } tbl17.cache.fj = fj end return fj.c end end do -- fk local function fn35() return function(arg, arg2) local n = math.clamp(arg2, 0, v86[63]) local keypoints = arg.Keypoints local n33 = #keypoints if n <= keypoints[1].Time then return keypoints[1].Value end if keypoints[n33].Time <= n then return keypoints[n33].Value end for i = 1, n33 - 1 do local v115 = keypoints[i] local v116 = keypoints[i + 1] if n <= v116.Time then local n34 = v116.Time - v115.Time if n34 <= 0 then return v115.Value end return v115.Value:Lerp(v116.Value, (n - v115.Time) / n34) end end return keypoints[n33].Value end end tbl17.fk = function() local fk = tbl17.cache.fk if not fk then fk = { c = fn35() } tbl17.cache.fk = fk end return fk.c end end do -- fl local function fn35() local v115 = tbl17.fk() return { offset = function(arg) return arg * 0.5 % 1 end, colorAt = function(arg, arg2, arg3) if true then return v115(arg3, (arg + arg2) % 1) end return nil -- (anti-tamper freeze trap removed) end, } end tbl17.fl = function() local fl = tbl17.cache.fl if not fl then fl = { c = fn35() } tbl17.cache.fl = fl end return fl.c end end do -- fm local function fn35() local v115 = tbl17.bG() local v116 = tbl17.fa() local v117 = tbl17.fg() local v118 = tbl17.bI() local v119 = tbl17.fi() local v120 = tbl17.fb() tbl17.e9() tbl17.fj() local v121 = tbl17.fl() local v122 = tbl17.fc() tbl17.a3() local v123 = tbl17.fd() local v124 = tbl17.c6() local v125 = tbl17.k() local v126 = tbl17.dg() local v127 = tbl17.ff() local data = v115.Data local index2 = {} index2.__index = index2 local function fn36(parent, arg, arg2, arg3, arg4) local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(v86[101], v86[101]) frame.Size = UDim2.fromOffset(v86[186], 0) frame.BackgroundTransparency = 1 local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(0.5, 0.5) instance.Size = UDim2.fromOffset(0, 0) instance.BackgroundTransparency = 1 instance.Parent = frame local imageLabel = Instance.new("ImageLabel") imageLabel.AnchorPoint = Vector2.new(0.5, 0.5) imageLabel.BorderSizePixel = 0 imageLabel.BackgroundTransparency = 1 local instance2 = Instance.new(v86[146]) instance2.AnchorPoint = Vector2.new(0.5, 0.5) instance2.Position = UDim2.fromScale(0.5, v86[101]) instance2.BorderSizePixel = 0 instance2.BackgroundColor3 = Color3.new(1, 1, 1) instance2.BackgroundTransparency = 1 local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = arg and 90 or v86[186] uiGradient.Parent = instance2 instance2.Parent = imageLabel imageLabel.Parent = instance frame.Parent = parent local n if arg then n = arg2 > 0 and 90 or -v86[45] else n = arg2 > 0 and v86[186] or 180 end return { ArmA = frame, ArmB = instance, Outline = imageLabel, Fill = instance2, Gradient = uiGradient, Vertical = arg, Sign = arg2, Direction = n, PerimeterFraction = arg3, BaseColor = Color3.new(1, v86[63], 1), ConfigKey = arg4, AnimColor = nil, } end index2.new = function(arg, arg2, arg3) local customCrosshair = data.CustomCrosshair local v128 = v125.new() local v129 = v128:Add(Instance.new("ScreenGui")) v129.DisplayOrder = v118.Crosshair v129.Enabled = false v129.ZIndexBehavior = Enum.ZIndexBehavior.Sibling v129.IgnoreGuiInset = true v129.Parent = K.hudParent() local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(0.5, 0.5) frame.Size = UDim2.fromOffset(0, v86[186]) frame.BackgroundTransparency = 1 frame.Parent = v129 local v130 = v128:Add(v117.new(v129)) local tbl18 = {} local top = fn36(frame, true, -1, 0, "Top") local bottom = fn36(frame, true, 1, 0.5, "Bottom") local left = fn36(frame, false, -1, 0.75, "Left") tbl18[1] = top tbl18[2] = bottom tbl18[3] = left do local values = table.pack(fn36(frame, false, 1, 0.25, "Right")) table.move(values, 1, values.n, 4, tbl18) end local v131 = v128:Add(v116.new(frame, arg2)) local v132 = v124.new(v126()) local function fn37() local followTarget = data.CustomCrosshair.FollowTarget v132:SetProperties(followTarget.Speed, followTarget.Damper, followTarget.SnapDistance) end v128:Connect(v115:GetPropertyChangedSignal({ "CustomCrosshair", "FollowTarget" }), fn37) fn37() local tbl19 = { _trove = v128, _gui = v129, _container = frame, _lines = tbl18, _enabled = false, _isNativeHidden = false, _imageMode = false, _image = v131, _length = v86[186], _gap = 0, _rotation = customCrosshair.Rotation, _spread = customCrosshair.Spread, _animation = v120.None, _edgeRenderer = v128:Add(v119.new(tbl18)), _gameHook = arg, _text = v130, _sources = arg3, _followTargetSpring = v132, } setmetatable(tbl19, index2) tbl19:_Initialize() return tbl19 end index2._Initialize = function(arg) arg._trove:Connect(v115:GetPropertyChangedSignal({ "CustomCrosshair" }), function() arg:_ApplyStatic() end) arg:_ApplyStatic() arg._trove:Connect(arg._image.RenderabilityChanged, function() if arg._enabled and arg._imageMode and not arg._image:IsRenderable() then arg:_SetNativeHidden(false) end end) end index2._SetNativeHidden = function(arg, isNativeHidden) if arg._isNativeHidden == isNativeHidden then return end arg._isNativeHidden = isNativeHidden if isNativeHidden then arg._gameHook:SetCrosshairVisible(false) else arg._gameHook:SetCrosshairVisible(nil) end end local udim2 = UDim2.fromOffset(150, 0) index2._LayoutLines = function(I,W,N,P,a,e)local c,E,p=W+I._length*0.5,I._edgeRenderer:IsBaked(),a and N or 0;I._container.Rotation=p;W=E and P or 0;P=N-p-W;if a or e then W=math.deg(math.acos(math.clamp(c/300,0,1)));for T,T_85 in I._lines,nil,nil do T_85.ArmA.Rotation=T_85.Direction+W;T_85.ArmB.Position= udim2 ;T_85.ArmB.Rotation=-2*W;T_85.Outline.Position= udim2 ;T_85.Outline.Rotation=W-T_85.Direction+P+360;end;return;end;p=math.rad(N);a,W=math.cos(p),math.sin(p);for l,T in I._lines,nil,nil do N,e=0,0;if T.Vertical then e=T.Sign*c;else N=T.Sign*c;end;p,l=N*a-e*W,N*W+e*a;if E then p,l=(math.round(p)),(math.round(l));end;T.ArmA.Rotation=0;T.ArmB.Position=UDim2.fromOffset(0,0);T.ArmB.Rotation=0;T.Outline.Position=UDim2.fromOffset(p,l);T.Outline.Rotation=P;end;end index2._ApplyStatic = function(arg) local customCrosshair = data.CustomCrosshair arg._enabled = customCrosshair.Enabled if not customCrosshair.Enabled then arg._gui.Enabled = false arg:_SetNativeHidden(false) return end arg._length = customCrosshair.Length arg._gap = customCrosshair.Gap arg._rotation = customCrosshair.Rotation arg._spread = customCrosshair.Spread arg._animation = v127.outline(customCrosshair.Animation) arg._text:ApplyStatic(customCrosshair.Text) arg._imageMode = customCrosshair.Style == "Image" arg._image:ApplyStatic(customCrosshair.Image) arg._image:SetVisible(arg._imageMode) if arg._imageMode then for _, v128 in arg._lines, nil, nil do v128.Outline.Visible = v86[153] end else arg:_ApplyColors() arg._edgeRenderer:ApplyStatic(customCrosshair) end end index2._ApplyColors = function(arg) local customCrosshair = v115.Data.CustomCrosshair local enabled = customCrosshair.Outline.Enabled and v86[186] or 1 for _, v128 in arg._lines, nil, nil do local v129 = customCrosshair[v128.ConfigKey] v128.Outline.Visible = v129.Enabled v128.Gradient.Color = v129.Color v128.BaseColor = v129.Color.Keypoints[1].Value v128.Outline.ImageColor3 = customCrosshair.Outline.Color v128.Outline.BackgroundColor3 = customCrosshair.Outline.Color v128.Outline.ImageTransparency = enabled v128.AnimColor = nil end end index2._CurrentTargetPosition = function(l)for I,W in l._sources,nil,nil do I=W:GetTargetScreenPosition();if I~=nil then return I;end;end;return nil;end index2._FollowPosition = function(l,I)local W=l._followTargetSpring;W:SetInitial(I);W:SetTarget(l:_CurrentTargetPosition());return W:GetPosition();end index2._IsCustomRenderable = function(l)if l._imageMode then return l._image:IsRenderable();end;for I,I_86 in l._lines,nil,nil do if I_86.Outline.Visible then return true;end;end;return false;end index2.Update = function(I)if not I._enabled then return;end;if not I._gameHook:IsCrosshairActive()then I._gui.Enabled=false;I:_SetNativeHidden(false);return;end;local W= v126 ();I._gui.Enabled=true;I:_SetNativeHidden(I:_IsCustomRenderable(I));local N=os.clock();local P,a,e= data .CustomCrosshair.FollowTarget, nil, nil;if P.Enabled then a=I:_FollowPosition(W);e=if P.Mode=="Crosshair + Text"then a else W;else local c=I._followTargetSpring;c:SetInitial(W);c:SetTarget(nil);c:GetPosition();e,a=W,W;end;I._container.Position=UDim2.fromOffset(math.round(a.X),math.round(a.Y));I._text:Update(e,N);W=I._rotation;P,e=W.Angle,W.Enabled and W.Speed~=0;P=if e then(W.Angle+W.Speed*N)%360 else P;if I._imageMode then I._container.Rotation=P;return;end;local c,E,p=I._edgeRenderer:Render(P,e),I._gap,I._spread;W=p.Enabled;if W then a=0.5-0.5*math.cos(N*p.Speed);E+=p.Range.Min+(p.Range.Max-p.Range.Min)*a;end;I:_LayoutLines(E,P,c,e,W);a=I._animation;if a.Kind~="None"then local W_87=N*a.Speed;local N_88=0;local P_89=nil;local e_90=nil;if a.Kind=="PingPong"then P_89,e_90= v122 .bands(W_87,a.Rotation);else N_88=if a.Kind=="Shimmer"then( v123 .offset(W_87))else( v121 .offset(W_87));end;for c,c_91 in I._lines,nil,nil do W_87=if a.Kind=="Shimmer"then( v123 .colorAt(N_88,c_91.PerimeterFraction,c_91.BaseColor,a.Color))else if a.Kind=="Perimeter"then( v121 .colorAt(N_88,c_91.PerimeterFraction,a.Color))else( v122 .colorAt(a.BackgroundColor,a.MainColor,c_91.PerimeterFraction*4,P_89,e_90));if c_91.AnimColor~=W_87 then c_91.AnimColor=W_87;c_91.Gradient.Color=ColorSequence.new(W_87);end;end;end;end index2.Destroy = function(arg) arg:_SetNativeHidden(v86[153]) arg._trove:Destroy() end return index2 end tbl17.fm = function() local fm = tbl17.cache.fm if not fm then local fm2 = { c = fn35() } tbl17.cache.fm = fm2 fm = fm2 end return fm.c end end do -- fn local function fn35() local v115 = tbl17.bG() tbl17.cX() local v116 = tbl17.k() local v117 = tbl17.ct() local v118 = tbl17.cv() local v119 = tbl17.b3() local controlsController = tbl17.aS().ControlsController local fighterController = tbl17.aS().FighterController local v120 = tbl17.a2() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local v121 = v102(getmetatable(fighterController).__index, "_ReplicateControls") local function fn36() v119(v121, fighterController) end local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v116.new("device_spoof") } setmetatable(tbl18, index2) tbl18:_Initialize(arg) return tbl18 end index2.Destroy = function(arg) arg._trove:Destroy() arg:_AttemptUnloadHook() end index2._Initialize = function(arg, arg2) local trove = arg._trove trove:Connect(v115:GetPropertyChangedSignal({ "DeviceSpoof", "Enabled" }), function(arg3) if arg3 then arg:_AttemptLoadHook() local reconcile = arg._reconcile if reconcile then reconcile() end else arg:_AttemptUnloadHook() fn36() end end) trove:Connect(v115:GetPropertyChangedSignal({ "DeviceSpoof", "SpoofType" }), function() local reconcile = arg._reconcile if reconcile then reconcile() end end) if v115.Data.DeviceSpoof.Enabled then arg:_AttemptLoadHook() end trove:Add(arg2:ObserveContext("device_spoof", function(arg3, arg4) local inner = arg3.FighterState.Inner local flag19 = v86[153] local function reconcile() if flag19 or not v115.Data.DeviceSpoof.Enabled then return end local v122 = v120[v115.Data.DeviceSpoof.SpoofType] if v118(inner, "Controls") ~= v122 then flag19 = v86[34] fn36() end end arg._reconcile = reconcile arg4:Add(function() arg._reconcile = nil end) arg4:Add(v117(v119(inner.GetDataChangedSignal, inner, "Controls"), function() flag19 = false reconcile() end)) arg4:Add(task.defer(reconcile)) end)) end index2._AttemptLoadHook = function(arg) if arg._hook then return end local v122 = nil for k, v123 in debug.getupvalues(v121) do if v123 == controlsController then v122 = k break else v122 = nil end end if v122 == nil then return end local v123 = debug.getupvalue(v121, v122) debug.setupvalue(v121, v122, setmetatable({}, { __index = function(arg2, arg3) if arg3 == "CurrentControls" then if not flag2 then return end local v124 = v120[v115.Data.DeviceSpoof.SpoofType] if v124 == nil then localPlayer:Kick("Unexpected behavior (client misc 1)") end return v124 end localPlayer:Kick("Unexpected behavior (client misc 2)") return nil end })) arg._hook = { UpvalueIndex = v122, OriginalValue = v123 } end index2._AttemptUnloadHook = function(arg) if not arg._hook then return end debug.setupvalue(v121, arg._hook.UpvalueIndex, arg._hook.OriginalValue) arg._hook = nil end return index2 end tbl17.fn = function() local fn36 = tbl17.cache.fn if not fn36 then local fn37 = { c = fn35() } tbl17.cache.fn = fn37 fn36 = fn37 end return fn36.c end end do -- fo local function fn35() tbl17 .h(); tbl17 .l();local I= tbl17 .g(); tbl17 .bN();local W= tbl17 .k(); tbl17 .r();local l={};l.__index=l;l.new=function(N,P,a)local e=W.new();local W=e:Add(I.new());local c=setmetatable({_trove=e,_reactiveStore=P,_active=true,_signalByKey={},_pathByKey={},_changedConnectionByKey={},_persistentKeySet={},Pins={Icon=a,CanPin=function(P)return N:CanPin(P);end,IsPinned=function(P)return N:IsPinned(P);end,Toggle=function(P)if N:IsPinned(P)then N:Unpin(P);return;end;N:Pin(P);end,Changed=W,GetContextLabel=function()return N:GetContext();end}},l);e:Connect(N.PinsChanged,function()W:Fire();end);e:Connect(N.ContextChanged,function()W:Fire();end);return c;end;l.Get=function(W,N)return W._reactiveStore:Get(N,true);end;l.GetBase=function(W,N)return W._reactiveStore:GetBase(N);end;l.Set=function(W,N,P)W._reactiveStore:Set(N,P);end;l.Changed=function(W,N,P)local a=table.concat(N,".");if P and W._persistentKeySet[a]==nil then W._persistentKeySet[a]=true;local e=W._changedConnectionByKey[a];if e~=nil and not W._active then e:Enable();end;end;P=W._signalByKey[a];if P then return P;end;local P_92,e=W._trove:Add(I.new()),table.clone(N);W._signalByKey[a]=P_92;W._pathByKey[a]=e;N=W._reactiveStore:GetPropertyChangedSignal(e):Connect(function()P_92:Fire(W:Get(e));end);W._changedConnectionByKey[a]=W._trove:Add(N);return P_92;end;l.SetActive=function(I,W)if W==I._active then return;end;I._active=W;for N,P in I._changedConnectionByKey,nil,nil do if I._persistentKeySet[N]then continue;end;if W then P:Enable();else P:Disable();end;end;if W then for W,N in I._signalByKey,nil,nil do if not I._persistentKeySet[W]then N:Fire(I:Get(I._pathByKey[W]));end;end;end;end;l.Destroy=function(I)I._trove:Destroy();end;return l;end tbl17.fo = function() local fo = tbl17.cache.fo if not fo then fo = { c = fn35() } tbl17.cache.fo = fo end return fo.c end end do -- fp local function fn35() local v115 = tbl17.bG() tbl17.cX() tbl17.dv() local itemInterfaceOther = tbl17.aS().ItemInterfaceOther tbl17.k() return function(arg) local update = v102(itemInterfaceOther, "Update") local flag19 = false local function fn36() if not flag19 then debug.setconstant(update, 2, 999) flag19 = true end end local function fn37() if flag19 then debug.setconstant(update, 2, v86[63]) flag19 = false end end arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoAdsVignette" }), function(arg2) if arg2 then fn36() else fn37() end end) arg:Add(fn37) if v115.Data.Removables.NoAdsVignette then fn36() end end end tbl17.fp = function() local fp = tbl17.cache.fp if not fp then local fp2 = { c = fn35() } tbl17.cache.fp = fp2 fp = fp2 end return fp.c end end do -- fq local function fn35() local v115 = tbl17.bG() local v116 = tbl17.cK() tbl17.cX() tbl17.dv() tbl17.k() return function(arg, arg2, arg3) local v117 = arg3:Reserve({ "EntityChanged" }) v117:SetHandler(function(arg4) local inner = arg2.Inner if inner == nil then return end if v116.decode(arg4.Args[1]) ~= "BurnEffect" then return end local entity = v102(inner.FighterState.Inner, "Entity") if entity == nil or entity.ObjectID ~= arg4.ObjectId then return end arg4.Block = true end) arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoBurnEffect" }), function(arg4) v117:SetEnabled(arg4) end) v117:SetEnabled(v115.Data.Removables.NoBurnEffect) arg:Add(v117) end end tbl17.fq = function() local fq = tbl17.cache.fq if not fq then local fq2 = { c = fn35() } tbl17.cache.fq = fq2 fq = fq2 end return fq.c end end do -- fr local function fn35() local v115 = tbl17.bG() local v116 = tbl17.cK() tbl17.cX() tbl17.dv() tbl17.k() return function(arg, arg2) local v117 = arg2:Reserve({ "ItemChanged" }) v117:SetHandler(function(arg3) if v116.decode(arg3.Args[v86[56]]) == "BlindEffect" then arg3.Block = true end end) arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoFlashbang" }), function(arg3) v117:SetEnabled(arg3) end) v117:SetEnabled(v115.Data.Removables.NoFlashbang) arg:Add(v117) end end tbl17.fr = function() local fr = tbl17.cache.fr if not fr then local fr2 = { c = fn35() } tbl17.cache.fr = fr2 fr = fr2 end return fr.c end end do -- fs local function fn35() local v115 = tbl17.bG() tbl17.ad() local v116 = tbl17.a() tbl17.k() local gun = tbl17.aS().Gun local function fn36() end return function(arg, arg2) local tbl18 = nil local function fn37() if tbl18 then return v116.VoidOk end local v117 = v102(gun, "_LocalTracers") if v117 == nil then return v116.err("NoGunTracers", "method_lookup", "Gun._LocalTracers not found") end for k, v118 in debug.getconstants(v117) do if v118 == "_Tracers" then v103(gun, "_Tracers\0NoGunTracers", fn36) debug.setconstant(v117, k, "_Tracers\0NoGunTracers") tbl18 = { Method = v117, Index = k, Value = v118 } return v116.VoidOk end end return v116.err("NoGunTracers", "constant_lookup", "_Tracers constant not found in Gun._LocalTracers") end local function fn38() if tbl18 == nil then return end debug.setconstant(tbl18.Method, tbl18.Index, tbl18.Value) v103(gun, "_Tracers\0NoGunTracers", nil) tbl18 = nil end arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoGunTracers" }), function(arg3) if arg3 then arg2:ReportResult(fn37()) else fn38() end end) if v115.Data.Removables.NoGunTracers then arg2:ReportResult(fn37()) end arg:Add(fn38) end end tbl17.fs = function() local fs = tbl17.cache.fs if not fs then local fs2 = { c = fn35() } tbl17.cache.fs = fs2 fs = fs2 end return fs.c end end do -- ft local function fn35() local v115 = tbl17.bG() tbl17.fj() tbl17.k() return function(arg, arg2) arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoHitmarker" }), function(arg3) if arg3 then arg2:SetHitmarkerVisible(false) else arg2:SetHitmarkerVisible(nil) end end) if v115.Data.Removables.NoHitmarker then arg2:SetHitmarkerVisible(false) end arg:Add(function() arg2:SetHitmarkerVisible(nil) end) end end tbl17.ft = function() local ft = tbl17.cache.ft if not ft then ft = { c = fn35() } tbl17.cache.ft = ft end return ft.c end end do -- fu local function fn35() local v115 = tbl17.bG() tbl17.ad() local v116 = tbl17.a() tbl17.k() local clientViewModel = tbl17.aS().ClientViewModel local tbl18 = { PlayParticles = function() end } return function(arg, arg2) local tbl19 = nil local function fn36() if tbl19 then return v116.VoidOk end local muzzleFlash = v102(clientViewModel, "MuzzleFlash") if muzzleFlash == nil then return v116.err("NoMuzzleFlash", "method_lookup", "ClientViewModel.MuzzleFlash not found") end tbl19 = { Method = muzzleFlash, Value = debug.getupvalue(muzzleFlash, v86[56]) } debug.setupvalue(muzzleFlash, v86[56], tbl18) return v116.VoidOk end local function fn37() if tbl19 == nil then return end debug.setupvalue(tbl19.Method, 2, tbl19.Value) tbl19 = nil end arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoMuzzleFlash" }), function(arg3) if arg3 then arg2:ReportResult(fn36()) else fn37() end end) if v115.Data.Removables.NoMuzzleFlash then arg2:ReportResult(fn36()) end arg:Add(fn37) end end tbl17.fu = function() local fu = tbl17.cache.fu if not fu then local fu2 = { c = fn35() } tbl17.cache.fu = fu2 fu = fu2 end return fu.c end end do -- fv local function fn35() tbl17.aO() local v115 = tbl17.a() local scope = tbl17.aS().Scope local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _overlayHidden = v86[153], _isOverlayDirty = false, _reticleHidden = v86[153], _isReticleDirty = false, }, index2) end index2.SetOverlayHidden = function(arg, overlayHidden) arg._overlayHidden = overlayHidden arg._isOverlayDirty = true return arg:_EnsureLoaded() end index2.SetReticleHidden = function(arg, reticleHidden) arg._reticleHidden = reticleHidden arg._isReticleDirty = true return arg:_EnsureLoaded() end index2._EnsureLoaded = function(arg) local flag19 = arg._restore ~= nil if not flag19 then flag19 = not (arg._overlayHidden or arg._reticleHidden) end if flag19 then return v115.VoidOk end local setActive = v102(scope, "SetActive") if setActive == nil then return v115.err("ScopeOverride", "function_lookup", "Scope.SetActive not found") end v103(scope, "SetActive", function(arg2, arg3) coroutine.wrap(setActive)(arg2, arg3) if not v102(arg2, "_is_scope_active") then return end if arg._isOverlayDirty then local circleFrame = v102(arg2, "CircleFrame") local blurFrame = v102(arg2, "BlurFrame") local visible = not arg._overlayHidden circleFrame.Visible = visible blurFrame.Visible = visible end if arg._isReticleDirty then local visible = not arg._reticleHidden v102(arg2, "ReticleContainer").Visible = visible end end) arg._restore = { Original = setActive } return v115.VoidOk end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil v103(scope, "SetActive", restore.Original) end index2.Destroy = function(arg) arg:_Revert() end return index2 end tbl17.fv = function() local fv = tbl17.cache.fv if not fv then fv = { c = fn35() } tbl17.cache.fv = fv end return fv.c end end do -- fw local function fn35() local v115 = tbl17.bG() local v116 = tbl17.fv() tbl17.k() return function(arg) local v117 = arg:Add(v116.new()) arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoScopeOverlay" }), function(arg2) v117:SetOverlayHidden(arg2) end) arg:Connect(v115:GetPropertyChangedSignal({ "Removables", "NoScopeReticle" }), function(arg2) v117:SetReticleHidden(arg2) end) v117:SetOverlayHidden(v115.Data.Removables.NoScopeOverlay) v117:SetReticleHidden(v115.Data.Removables.NoScopeReticle) end end tbl17.fw = function() local fw = tbl17.cache.fw if not fw then local fw2 = { c = fn35() } tbl17.cache.fw = fw2 fw = fw2 end return fw.c end end do -- fx local function fn35() local v115 = tbl17.ad() tbl17.fj() tbl17.cX() tbl17.dv() local v116 = tbl17.k() local v117 = tbl17.fp() local v118 = tbl17.fq() local v119 = tbl17.fr() local v120 = tbl17.fs() local v121 = tbl17.ft() local v122 = tbl17.fu() local v123 = tbl17.fw() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local removables = v116.new("removables") local v124 = removables:Add(v115.new()) v119(removables, arg2) v118(removables, arg, arg2) v117(removables) v123(removables) v120(removables, v124) v122(removables, v124) v121(removables, arg3) return setmetatable({ _trove = removables }, index2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.fx = function() local fx = tbl17.cache.fx if not fx then local fx2 = { c = fn35() } tbl17.cache.fx = fx2 fx = fx2 end return fx.c end end do -- fy local function fn35() local v115 = tbl17.k() local function fn36(l)local I,W,N=l.X*0.5,l.Y*0.5,l.Z*0.5;return{Vector3.new(-I,-W,-N),Vector3.new(I,-W,-N),Vector3.new(-I,W,-N),Vector3.new(I,W,-N),Vector3.new(-I,-W,N),Vector3.new(I,-W,N),Vector3.new(-I,W,N),Vector3.new(I,W,N)};end local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v115.new("esp.DynamicRectCalculator"), _object = arg, _opaqueParts = {}, _opaqueIndexByPart = {}, _partSet = {}, _cornerOffsetsByPart = {}, _sizeConnectionByPart = {}, _transparencyConnectionByPart = {}, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local object = arg._object if object:IsA("BasePart") then arg:_AddPart(object) return end for _, v116 in object:QueryDescendants("BasePart") do arg:_AddPart(v116) end arg._trove:Connect(object.DescendantAdded, function(I)if I:IsA("BasePart")then arg :_AddPart(I);end;end) arg._trove:Connect(object.DescendantRemoving, function(I)if I:IsA("BasePart")then arg :_RemovePart(I);end;end) end index2._AddPart = function(I,W)if I._partSet[W]then return;end;I._partSet[W]=true;I._cornerOffsetsByPart[W]= fn36 (W.Size);if W.Transparency<1 then local N=I._opaqueParts;local P=#N+1;N[P]=W;I._opaqueIndexByPart[W]=P;end;I._sizeConnectionByPart[W]=W:GetPropertyChangedSignal("Size"):Connect(function()I._cornerOffsetsByPart[W]= fn36 (W.Size);end);I._transparencyConnectionByPart[W]=W:GetPropertyChangedSignal("Transparency"):Connect(function()local l,N=W.Transparency<1,I._opaqueIndexByPart[W];if l and N==nil then local P=I._opaqueParts;local a=#P+1;P[a]=W;I._opaqueIndexByPart[W]=a;elseif not l and N~=nil then I:_RemoveFromOpaque(W);end;end);end index2._RemoveFromOpaque = function(l,I)local W=l._opaqueIndexByPart[I];if W==nil then return;end;local N=l._opaqueParts;local P=#N;if W~=P then local a=N[P];N[W]=a;l._opaqueIndexByPart[a]=W;end;N[P]=nil;l._opaqueIndexByPart[I]=nil;end index2._RemovePart = function(l,I)if not l._partSet[I]then return;end;l._partSet[I]=nil;l._cornerOffsetsByPart[I]=nil;l._sizeConnectionByPart[I]:Disconnect();l._sizeConnectionByPart[I]=nil;l._transparencyConnectionByPart[I]:Disconnect();l._transparencyConnectionByPart[I]=nil;l:_RemoveFromOpaque(I);end index2.Compute = function(l,I,W,N,P,a,e,c,E,p,T,t,x,S,J,B)local X,H=W*0.5,N*0.5;local k,D,Q,F,R,m,o=H/I,math.huge,math.huge,-math.huge,-math.huge,l._opaqueParts,false;for _i=1,#m,1 do N=m[_i];local ph_93=l._cornerOffsetsByPart[N];if ph_93==nil then continue;end;local l_94,m_95,n,i,O,f,d,K,C,h,j,z=N.CFrame:GetComponents();for N,u in ph_93,nil,nil do N,I,W=u.X,u.Y,u.Z;local ph_96,u_97,Z=l_94+i*N+O*I+f*W-P,m_95+d*N+K*I+C*W-a,n+h*N+j*I+z*W-e;N=-(ph_96*p+u_97*x+Z*B);if N>0 then local l_98,I_99=ph_96*c+u_97*T+Z*S,ph_96*E+u_97*t+Z*J;local W_100,P_101=X+l_98*k/N,H-I_99*k/N;o,D,Q,F,R=true,(math.min(D,W_100)),(math.min(Q,P_101)),(math.max(F,W_100)),(math.max(R,P_101));end;end;end;if not o then return nil,nil;end;k,B=F-D,R-Q;return Vector2.new(D,Q):Floor(),(Vector2.new(math.max(8,math.floor(k)),math.max(13,math.floor(B))));end index2.Destroy = function(arg) arg._trove:Destroy() for _, v116 in arg._sizeConnectionByPart, nil, nil do v116:Disconnect() end for _, v116 in arg._transparencyConnectionByPart, nil, nil do v116:Disconnect() end end return index2 end tbl17.fy = function() local fy = tbl17.cache.fy if not fy then fy = { c = fn35() } tbl17.cache.fy = fy end return fy.c end end do -- fA local function fn35() local v115 = tbl17.c5() local v116 = tbl17.fk() tbl17.fz() local index2 = {} index2.__index = index2 index2.__type = "Bar" index2.new = function(arg, arg2) local v117 = v115.new(100) v117.s = 24 local tbl18 = { _isVertical = arg.PaneSide == "LEFT" or arg.PaneSide == "RIGHT", _container = Instance.new(v86[128]), _outerBar = Instance.new("Frame"), _innerBar = Instance.new("Frame"), _gradient = Instance.new("UIGradient"), _consumeBar = Instance.new("Frame"), _valueLabel = Instance.new("TextLabel"), _valueStroke = Instance.new("UIStroke"), _visible = v86[153], _labelVisible = v86[153], _labelColor = Color3.new(v86[63], v86[63], 1), _colorDirty = false, _colorMode = "Solid", _sequence = ColorSequence.new(Color3.new(1, 1, v86[63])), _wishValue = 100, _displayValue = 99, _maxValue = 100, _maxDirty = v86[153], _ourValue = 100, _animateBar = false, _spring = v117, _font = nil, } setmetatable(tbl18, index2) tbl18:_Initialize(arg, arg2) return tbl18 end index2._Initialize = function(arg, arg2, parent) local isVertical = arg._isVertical local flag19 = arg2.PaneSide == "LEFT" local container = arg._container container.Visible = false container.LayoutOrder = arg2.LayoutOrder container.Interactable = false container.BackgroundTransparency = 1 container.Size = isVertical and UDim2.new(0, 4, 1, v86[186]) or UDim2.new(1, v86[186], 0, 4) local outerBar = arg._outerBar outerBar.AnchorPoint = isVertical and flag19 and Vector2.new(1, 0) or Vector2.zero outerBar.BackgroundColor3 = Color3.new() outerBar.BorderSizePixel = 0 outerBar.Interactable = false outerBar.Position = isVertical and flag19 and UDim2.fromScale(1, v86[186]) or UDim2.new() outerBar.Size = isVertical and UDim2.new(0, 4, 1, 0) or UDim2.new(v86[63], 0, 0, 4) outerBar.Parent = container local innerBar = arg._innerBar innerBar.BackgroundColor3 = Color3.new(1, 1, v86[63]) innerBar.BorderSizePixel = v86[186] innerBar.Interactable = v86[153] innerBar.Position = UDim2.fromOffset(1, v86[63]) innerBar.Size = UDim2.new(1, -2, 1, -2) innerBar.Parent = outerBar local gradient = arg._gradient gradient.Enabled = v86[153] gradient.Rotation = isVertical and -90 or 0 gradient.Parent = innerBar local consumeBar = arg._consumeBar consumeBar.BackgroundColor3 = Color3.new() consumeBar.BorderSizePixel = 0 consumeBar.Interactable = v86[153] consumeBar.AnchorPoint = isVertical and Vector2.zero or Vector2.new(v86[63], v86[186]) consumeBar.Position = isVertical and UDim2.new() or UDim2.fromScale(1, 0) consumeBar.Size = isVertical and UDim2.fromScale(v86[63], 0) or UDim2.fromScale(0, 1) consumeBar.Parent = innerBar local valueLabel = arg._valueLabel valueLabel.Visible = false valueLabel.BackgroundTransparency = 1 valueLabel.Interactable = false valueLabel.Position = isVertical and UDim2.new(0, v86[63], v86[63], 0) or UDim2.new(0, v86[186], 0.5, -1) valueLabel.AnchorPoint = Vector2.new(0.5, 0.5) valueLabel.Size = UDim2.fromOffset(10, v86[13]) valueLabel.TextSize = 12 valueLabel.TextColor3 = Color3.new(1, 1, v86[63]) valueLabel.Text = "99" valueLabel.Parent = consumeBar local valueStroke = arg._valueStroke valueStroke.LineJoinMode = Enum.LineJoinMode.Miter valueStroke.Parent = valueLabel container.Parent = parent end index2.SetVisible = function(l,I)if I==l._visible then return;end;l._visible=I;l._container.Visible=I;end index2.SetLabelVisible = function(l,I)if I==l._labelVisible then return;end;l._labelVisible=I;l._valueLabel.Visible=I;if I then local I_102=math.ceil(l._wishValue);if I_102~=l._displayValue then l._displayValue=I_102;l._valueLabel.Text=tostring(I_102);end;end;end index2.SetLabelColor = function(l,I)if I==l._labelColor then return;end;l._labelColor=I;l._valueLabel.TextColor3=I;end index2.SetFont = function(l,I)if I~=l._font then l._font=I;l._valueLabel.FontFace=I;end;end index2.SetColor = function(l,I,W)if W=="Gradient"then l._colorMode="Gradient";l._gradient.Color=I;if not l._gradient.Enabled then l._gradient.Enabled=true;l._innerBar.BackgroundColor3=Color3.new(1,1,1);end;return;end;local N=l._colorMode~=W or I~=l._sequence;l._colorMode=W;l._sequence=I;if l._gradient.Enabled then l._gradient.Enabled=false;N=true;end;if N then l._colorDirty=true;end;end index2.AnimateBar = function(l,I)l._animateBar=I;end index2.SetValue = function(l,I,W)if W~=l._maxValue then l._maxValue=W;l._maxDirty=true;end;if I~=l._wishValue then l._wishValue=I;if l._labelVisible then W=math.ceil(I);if W~=l._displayValue then l._displayValue=W;l._valueLabel.Text=tostring(W);end;end;end;end index2.Update = function(arg) local wishValue = arg._wishValue local ourValue = arg._ourValue local maxValue = arg._maxValue local maxDirty = wishValue ~= ourValue or arg._maxDirty if arg._maxDirty then arg._spring.p = wishValue arg._spring.v = 0 arg._maxDirty = false end if maxDirty then arg._spring.t = wishValue ourValue = arg._animateBar and arg._spring.p or wishValue arg._ourValue = ourValue local n = 1 - ourValue / maxValue arg._consumeBar.Size = arg._isVertical and UDim2.fromScale(1, n) or UDim2.fromScale(n, 1) end if arg._colorMode ~= "Gradient" and (arg._colorDirty or arg._colorMode == "Reactive" and maxDirty) then arg._innerBar.BackgroundColor3 = v116(arg._sequence, arg._colorMode == "Reactive" and ourValue / maxValue or v86[186]) arg._colorDirty = false end end index2.Destroy = function(arg) arg._container:Destroy() end return index2 end tbl17.fA = function() local fa = tbl17.cache.fA if not fa then fa = { c = fn35() } tbl17.cache.fA = fa end return fa.c end end do -- fC local function fn35() tbl17.fA() tbl17.fB() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(false) return false end local ammoBar = arg2.PlayerSettings.AmmoBar if not ammoBar.Enabled then arg:SetVisible(false) return false end if arg2.FighterState.ItemObserver:EquippedItemAsGun() == nil then arg:SetVisible(false) return false end arg:SetColor(ammoBar.Color, ammoBar.ColorMode) arg:SetFont(arg2.Formatting.Font) arg:AnimateBar(ammoBar.Animate and true) arg:SetVisible(true) return true end, tick = function(arg, arg2) local v115 = arg2.FighterState.ItemObserver:EquippedItemAsGun() if v115 == nil then arg:SetVisible(false) return end local maxAmmo = v115.MaxAmmo if maxAmmo ~= math.huge then arg:SetValue(v115:GetAmmo(), maxAmmo) else arg:SetValue(v86[63], v86[63]) end arg:Update() end, } end tbl17.fC = function() local fc = tbl17.cache.fC if not fc then fc = { c = fn35() } tbl17.cache.fC = fc end return fc.c end end do -- fD local function fn35() local v115 = tbl17.fb() local v116 = tbl17.fl() local v117 = tbl17.fc() local v118 = tbl17.fd() local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _samples = arg, _effect = v115.None, _innerColor = Color3.new(1, 1, 1), _clock = v86[186] }, index2) end index2.SetEffect = function(arg, innerColor, effect) arg._effect = effect arg._innerColor = innerColor for _, v119 in arg._samples, nil, nil do v119.Horizontal.BackgroundColor3 = innerColor v119.Vertical.BackgroundColor3 = innerColor v119.Horizontal.BackgroundTransparency = 0 v119.Vertical.BackgroundTransparency = v86[186] end arg:Update(arg._clock) end index2.Update = function(arg, clock) arg._clock = clock local effect = arg._effect if effect.Kind == v86[75] then return end local n = clock * effect.Speed if effect.Kind == "Shimmer" then local v119 = v118.offset(n) for _, v120 in arg._samples, nil, nil do local v121 = v118.colorAt(v119, v120.ShimmerPosition, arg._innerColor, effect.Color) v120.Horizontal.BackgroundColor3 = v121 v120.Vertical.BackgroundColor3 = v121 end elseif effect.Kind == "Perimeter" then local v119 = v116.offset(n) for _, v120 in arg._samples, nil, nil do local v121 = v116.colorAt(v119, v120.PerimeterFraction, effect.Color) v120.Horizontal.BackgroundColor3 = v121 v120.Vertical.BackgroundColor3 = v121 end elseif effect.Kind == "PingPong" then local v119, v120 = v117.bands(n, effect.Rotation) for _, v121 in arg._samples, nil, nil do local v122 = v117.colorAt(effect.BackgroundColor, effect.MainColor, v121.PerimeterFraction * v86[26], v119, v120) v121.Horizontal.BackgroundColor3 = v122 v121.Vertical.BackgroundColor3 = v122 end end end return index2 end tbl17.fD = function() local fd = tbl17.cache.fD if not fd then local fd2 = { c = fn35() } tbl17.cache.fD = fd2 fd = fd2 end return fd.c end end do -- fE local function fn35() local v115 = tbl17.fD() tbl17.fb() local tbl18 = { 0, 0.5, 0.5, v86[63] } local tbl19 = { 0, 0.25, 0.75, 0.5 } local index2 = {} index2.__index = index2 local function fn36(parent) local v116 = table.create(v86[26]) local tbl20 = {} local vector2 = Vector2.new(0, v86[186]) local vector22 = Vector2.new(1, v86[186]) local vector23 = Vector2.new(v86[186], 1) local vector24 = Vector2.new local v117 = v86[63] local v118 = v86[63] tbl20[1] = vector2 tbl20[2] = vector22 tbl20[3] = vector23 do local values = table.pack(vector24(v117, v118)) table.move(values, 1, values.n, 4, tbl20) end local function fn37(anchorPoint, size) local n = anchorPoint.X == 0 and 1 or -v86[63] local n33 = anchorPoint.Y == 0 and 1 or -1 local frame = Instance.new("Frame") frame.Visible = false frame.BackgroundColor3 = Color3.new(0, 0, 0) frame.BorderSizePixel = 0 frame.Interactable = false frame.AnchorPoint = anchorPoint frame.Position = UDim2.fromScale(anchorPoint.X, anchorPoint.Y) frame.Size = UDim2.new(size.X.Scale, size.X.Offset + v86[56], size.Y.Scale, size.Y.Offset + 2) frame.ZIndex = 2 frame.Parent = parent local frame2 = Instance.new("Frame") frame2.Visible = false frame2.BackgroundColor3 = Color3.new(1, 1, 1) frame2.BorderSizePixel = 0 frame2.Interactable = false frame2.AnchorPoint = anchorPoint frame2.Position = UDim2.new(anchorPoint.X, n, anchorPoint.Y, n33) frame2.Size = size frame2.ZIndex = 3 frame2.Parent = parent return frame, frame2 end for k, v119 in tbl20, nil, nil do local v120, v121 = fn37(v119, UDim2.new(0.25, v86[186], 0, v86[63])) local v122, v123 = fn37(v119, UDim2.new(v86[186], 1, 0.25, 0)) v116[k] = { HorizontalBacker = v120, HorizontalColor = v121, VerticalBacker = v122, VerticalColor = v123, } end return v116 end index2.new = function(arg) local v116 = fn36(arg) local v117 = table.create(4) for k, v118 in v116, nil, nil do v117[k] = { Horizontal = v118.HorizontalColor, Vertical = v118.VerticalColor, ShimmerPosition = tbl18[k], PerimeterFraction = tbl19[k], } end return setmetatable({ _corners = v116, _enabled = v86[153], _animation = v115.new(v117) }, index2) end index2._Refresh = function(l)local I=l._enabled;for W,W_103 in l._corners,nil,nil do W_103.HorizontalBacker.Visible=I;W_103.HorizontalColor.Visible=I;W_103.VerticalBacker.Visible=I;W_103.VerticalColor.Visible=I;end;end index2.SetEnabled = function(l,I)l._enabled=I;l:_Refresh();end index2.SetOutlineColor = function(l,l_104)end index2.SetLook = function(l,I,W)l._animation:SetEffect(I,W);l:_Refresh();end index2.Update = function(arg, arg2) arg._animation:Update(arg2) end index2.Destroy = function(arg) for _, v116 in arg._corners, nil, nil do v116.HorizontalBacker:Destroy() v116.HorizontalColor:Destroy() v116.VerticalBacker:Destroy() v116.VerticalColor:Destroy() end end return index2 end tbl17.fE = function() local fe = tbl17.cache.fE if not fe then local fe2 = { c = fn35() } tbl17.cache.fE = fe2 fe = fe2 end return fe.c end end do -- fF local function fn35() local v115 = tbl17.fb() local v116 = tbl17.fl() local v117 = tbl17.fc() local v118 = tbl17.fd() local bandHalfWidth = v117.BAND_HALF_WIDTH local bandOffsets = v117.BAND_OFFSETS local color = Color3.new(1, v86[63], 1) local colorSequence = ColorSequence.new(color) local numberSequence = NumberSequence.new(0) local numberSequence2 = NumberSequence.new(1) local function fn36(arg, arg2, arg3) local tbl18 = {} for i = v86[186], v86[133] do local n = i / 10 local v119 = v116.colorAt(-arg3, (arg2 + n) / 4, arg) tbl18[i + v86[63]] = ColorSequenceKeypoint.new(n, v119) end return ColorSequence.new(tbl18) end local function fn37(arg, arg2, arg3) local tbl18 = { arg2, arg3 } local function fn38(arg4) local n = 0 for i = 1, 2 do local v119 = tbl18[i] for i2 = 1, 3 do local n33 = math.abs(arg4 - v119 + bandOffsets[i2] - arg) if n33 < bandHalfWidth then local n34 = v86[63] - n33 / bandHalfWidth if n < n34 then n = n34 end end end end return n end local tbl19 = { 0, 1 } for i = 1, 2 do local v119 = tbl18[i] for i2 = 1, 3 do local n = v119 + bandOffsets[i2] - arg local n33 = n - bandHalfWidth local n34 = n + bandHalfWidth if n34 > 0 and n33 < 1 then if v86[186] < n33 then table.insert(tbl19, n33) end if n >= 0 and n <= 1 then table.insert(tbl19, n) end if n34 < 1 then table.insert(tbl19, n34) end end end end table.sort(tbl19) local tbl20 = {} local n = -v86[63] for i = 1, #tbl19 do local v119 = tbl19[i] if n + 0.0001 < v119 then table.insert(tbl20, NumberSequenceKeypoint.new(v119, 1 - fn38(v119))) n = v119 end end return NumberSequence.new(tbl20) end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) return setmetatable({ _stroke = arg, _gradient = arg2, _edges = arg3, _effect = v115.None, _clock = 0 }, index2) end index2.UsesEdges = function(arg) return arg._effect.Kind == "Perimeter" or arg._effect.Kind == "PingPong" end index2.SetEffect = function(arg, color2, effect) arg._effect = effect local gradient = arg._gradient gradient.Enabled = v86[153] gradient.Color = colorSequence gradient.Transparency = numberSequence gradient.Offset = Vector2.zero gradient.Rotation = 0 arg._stroke.Color = color2 arg._stroke.Transparency = 0 for _, v119 in arg._edges, nil, nil do v119.Gradient.Color = colorSequence v119.Gradient.Transparency = numberSequence v119.Gradient.Offset = Vector2.zero end if effect.Kind == "Shimmer" then local colorSequence2 = ColorSequence.new local tbl18 = {} local v119 = ColorSequenceKeypoint.new(v86[186], effect.Color) local v120 = ColorSequenceKeypoint.new(0.5, color2) local new = ColorSequenceKeypoint.new local color3 = effect.Color tbl18[1] = v119 tbl18[2] = v120 do local values = table.pack(new(1, color3)) table.move(values, 1, values.n, 3, tbl18) end gradient.Color = colorSequence2(tbl18) gradient.Rotation = 45 gradient.Enabled = v86[34] arg._stroke.Color = color elseif effect.Kind == "Perimeter" then arg._stroke.Color = color elseif effect.Kind == "PingPong" then local colorSequence2 = ColorSequence.new(effect.MainColor) for _, v119 in arg._edges, nil, nil do v119.Gradient.Color = colorSequence2 v119.Gradient.Transparency = numberSequence2 end end arg:Update(arg._clock) end index2.Update = function(arg, clock) arg._clock = clock local effect = arg._effect if effect.Kind == v86[75] then return end local n = clock * effect.Speed if effect.Kind == "Shimmer" then arg._gradient.Offset = Vector2.new(v118.offset(n), 0) elseif effect.Kind == "Perimeter" then local v119 = v116.offset(n) for _, v120 in arg._edges, nil, nil do v120.Gradient.Color = fn36(effect.Color, v120.PerimeterStart, v119) end elseif effect.Kind == "PingPong" then local v119, v120 = v117.bands(n, effect.Rotation) for _, v121 in arg._edges, nil, nil do v121.Gradient.Transparency = fn37(v121.PerimeterStart, v119, v120) end end end return index2 end tbl17.fF = function() local ff = tbl17.cache.fF if not ff then local ff2 = { c = fn35() } tbl17.cache.fF = ff2 ff = ff2 end return ff.c end end do -- fG local function fn35() tbl17.fb() local v115 = tbl17.fF() local index2 = {} index2.__index = index2 index2.new = function(arg) local instance = Instance.new(v86[85]) local uiGradient = Instance.new("UIGradient") local tbl18 = { Top = Instance.new("UIGradient"), Right = Instance.new("UIGradient"), Bottom = Instance.new("UIGradient"), Left = Instance.new(v86[46]), } local tbl19 = { _inner = Instance.new("Frame"), _outerStroke = Instance.new("UIStroke"), _innerStroke = instance, _innerStrokeGradient = uiGradient, _edges = { Top = Instance.new("Frame"), Right = Instance.new("Frame"), Bottom = Instance.new("Frame"), Left = Instance.new("Frame"), }, _edgeGradients = tbl18, _enabled = false, _animation = v115.new(instance, uiGradient, { { Gradient = tbl18.Top, PerimeterStart = 0 }, { Gradient = tbl18.Right, PerimeterStart = v86[63] }, { Gradient = tbl18.Bottom, PerimeterStart = v86[56] }, { Gradient = tbl18.Left, PerimeterStart = 3 }, }), } setmetatable(tbl19, index2) tbl19:_Initialize(arg) return tbl19 end index2._Initialize = function(arg, parent) local outerStroke = arg._outerStroke outerStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border outerStroke.BorderStrokePosition = Enum.BorderStrokePosition.Inner outerStroke.LineJoinMode = Enum.LineJoinMode.Miter outerStroke.Thickness = 3 outerStroke.Enabled = false outerStroke.Parent = parent local inner = arg._inner inner.BackgroundColor3 = Color3.new(1, v86[63], v86[63]) inner.BackgroundTransparency = 1 inner.BorderSizePixel = 0 inner.Interactable = false inner.Position = UDim2.new() inner.Size = UDim2.fromScale(v86[63], 1) inner.Parent = parent local innerStroke = arg._innerStroke innerStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border innerStroke.BorderOffset = UDim.new(0, -1) innerStroke.BorderStrokePosition = Enum.BorderStrokePosition.Inner innerStroke.Color = Color3.new(1, 1, 1) innerStroke.LineJoinMode = Enum.LineJoinMode.Miter innerStroke.Thickness = 1 innerStroke.Enabled = false innerStroke.Parent = inner local innerStrokeGradient = arg._innerStrokeGradient innerStrokeGradient.Enabled = false innerStrokeGradient.Parent = innerStroke local function fn36(parent2, arg2, rotation) parent2.Visible = v86[153] parent2.BackgroundColor3 = Color3.new(1, 1, v86[63]) parent2.BorderSizePixel = 0 parent2.Interactable = false parent2.ZIndex = v86[133] parent2.Parent = inner arg2.Rotation = rotation arg2.Parent = parent2 end fn36(arg._edges.Top, arg._edgeGradients.Top, 0) fn36(arg._edges.Right, arg._edgeGradients.Right, 90) fn36(arg._edges.Bottom, arg._edgeGradients.Bottom, 180) fn36(arg._edges.Left, arg._edgeGradients.Left, 270) local edges = arg._edges edges.Top.Size = UDim2.new(1, -2 * v86[56], 0, v86[63]) edges.Top.Position = UDim2.fromOffset(2, v86[63]) edges.Right.Size = UDim2.new(v86[186], 1, 1, -2) edges.Right.Position = UDim2.new(1, -2, v86[186], 1) edges.Bottom.Size = UDim2.new(1, -4, v86[186], 1) edges.Bottom.Position = UDim2.new(0, 2, 1, -v86[56]) edges.Left.Size = UDim2.new(0, v86[63], 1, -2) edges.Left.Position = UDim2.fromOffset(v86[63], v86[63]) end index2._Refresh = function(l)local I,W=l._enabled,l._animation:UsesEdges();l._outerStroke.Enabled=I;l._innerStroke.Enabled=I and not W;local N=I and W;l._edges.Top.Visible=N;l._edges.Right.Visible=N;l._edges.Bottom.Visible=N;l._edges.Left.Visible=N;end index2.SetEnabled = function(l,I)l._enabled=I;l:_Refresh();end index2.SetOutlineColor = function(l,I)l._outerStroke.Color=I;end index2.SetLook = function(l,I,W)l._animation:SetEffect(I,W);l:_Refresh();end index2.Update = function(arg, arg2) arg._animation:Update(arg2) end index2.Destroy = function(arg) arg._inner:Destroy() arg._outerStroke:Destroy() end return index2 end tbl17.fG = function() local fg = tbl17.cache.fG if not fg then fg = { c = fn35() } tbl17.cache.fG = fg end return fg.c end end do -- fH local function fn35() local v115 = tbl17.fE() local v116 = tbl17.fb() tbl17.fz() tbl17.e9() local v117 = tbl17.aB() local v118 = tbl17.fG() local index2 = {} index2.__index = index2 index2.__type = "BoundingBox" index2.new = function(arg, arg2, arg3) local tbl18 = { _outer = Instance.new(v86[128]), _fillGradient = Instance.new(v86[46]), _fillVisible = false, _fillColor = nil, _fillTransparency = nil, _visible = v86[153], _fillAnimation = nil, _lastFillAnimation = nil, _imageStorage = arg3, _pendingImageIdPromise = nil, _imageName = nil, _image = Instance.new("ImageLabel"), _imageVisible = v86[153], _imageTransparency = 0, _outline = nil, _style = "Full", _outlineEnabled = false, _innerColor = Color3.new(1, 1, 1), _outlineColor = Color3.new(v86[186], 0, 0), _look = v116.None, } setmetatable(tbl18, index2) tbl18:_Initialize(arg, arg2) return tbl18 end index2._Initialize = function(arg, arg2, parent) local outer = arg._outer outer.Visible = false outer.BackgroundColor3 = Color3.new(1, 1, 1) outer.BackgroundTransparency = 1 outer.BorderSizePixel = v86[186] outer.Interactable = false outer.Size = UDim2.fromScale(v86[63], 1) outer.LayoutOrder = arg2.PaneSide == "LEFT" and 1000 - arg2.LayoutOrder or arg2.LayoutOrder local image = arg._image image.Visible = v86[153] image.BackgroundTransparency = 1 image.BorderSizePixel = 0 image.Interactable = false image.ScaleType = Enum.ScaleType.Crop image.Size = UDim2.fromScale(1, v86[63]) image.ZIndex = 0 image.Parent = outer local fillGradient = arg._fillGradient fillGradient.Enabled = true fillGradient.Rotation = 90 fillGradient.Transparency = NumberSequence.new(0.8) fillGradient.Parent = outer outer.Parent = parent end index2.SetVisible = function(l,I)if I==l._visible then return;end;l._visible=I;l._outer.Visible=I;end index2.SetStyle = function(I,W)if W==I._style and I._outline~=nil then return;end;if I._outline~=nil then I._outline:Destroy();end;local N=if W=="Corner"then( v115 .new(I._outer))else( v118 .new(I._outer));I._outline=N;I._style=W;N:SetOutlineColor(I._outlineColor);N:SetEnabled(I._outlineEnabled);N:SetLook(I._innerColor,I._look);end index2.ToggleOutline = function(l,I)if l._outlineEnabled==I then return;end;l._outlineEnabled=I;if l._outline~=nil then l._outline:SetEnabled(I);end;end index2.SetOutlineColor = function(l,I)if I==l._outlineColor then return;end;l._outlineColor=I;if l._outline~=nil then l._outline:SetOutlineColor(I);end;end index2.SetInnerLook = function(I,W,N)local P=N or v116 .None;if W==I._innerColor and( v116 .equal(P,I._look))then return;end;I._innerColor=W;I._look=P;if I._outline~=nil then I._outline:SetLook(W,P);end;end index2.ToggleFill = function(l,I)if I==l._fillVisible then return;end;l._fillVisible=I;l._outer.BackgroundTransparency=I and 0 or 1;end index2.SetFillLook = function(l,I,W,N)if I~=l._fillColor then l._fillColor=I;l._fillGradient.Color=I;end;if W~=l._fillTransparency then l._fillTransparency=W;l._fillGradient.Transparency=NumberSequence.new(W);end;l._fillAnimation=N;end index2.SetImage = function(arg, imageName) if arg._imageName == imageName then return end arg._imageName = imageName arg:_ApplyImage(imageName) end index2._ApplyImage = function(arg, arg2) if arg2 == nil then arg._image.Image = "" return end local response2 = arg._imageStorage:GetAsync(arg2) arg._pendingImageIdPromise = response2 response2:andThen(function(image) arg._image.Image = image end):catch(function(arg3) local v119 = tostring v117.get():Notify(string.format("failed to load box image '%s': %s", tostring(arg2), v119(arg3))) end):finally(function() arg._pendingImageIdPromise = nil end) end index2.SetImageLook = function(l,I)if I==l._imageTransparency then return;end;l._imageTransparency=I;l._image.ImageTransparency=I;end index2.ToggleImage = function(l,I)if I==l._imageVisible then return;end;l._imageVisible=I;l._image.Visible=I;end index2.Update = function(arg, arg2, arg3) local fillGradient = arg._fillGradient local fillAnimation = arg._fillAnimation if fillAnimation == "Swirl" then fillGradient.Rotation = (fillGradient.Rotation + 70 * arg2) % 360 local v119 = v86[147] fillGradient.Offset = Vector2.new(math.cos(arg3 * 0.9) * 0.08, math.sin(arg3 * v86[173]) * v119) elseif arg._lastFillAnimation ~= fillAnimation then fillGradient.Rotation = 45 fillGradient.Offset = Vector2.zero end arg._lastFillAnimation = fillAnimation local outline = arg._outline if outline ~= nil then outline:Update(arg3) end end index2.Destroy = function(arg) arg._outer:Destroy() local outline = arg._outline if outline ~= nil then outline:Destroy() end local pendingImageIdPromise = arg._pendingImageIdPromise if pendingImageIdPromise ~= nil then pendingImageIdPromise:cancel() end end return index2 end tbl17.fH = function() local fh = tbl17.cache.fH if not fh then local fh2 = { c = fn35() } tbl17.cache.fH = fh2 fh = fh2 end return fh.c end end do -- fI local function fn35() local v115 = tbl17.fb() tbl17.a0() local tbl18 tbl18 = { outline = function(arg) if not arg.Enabled then return v115.None end if arg.Kind == "Shimmer" then return { Kind = "Shimmer", Speed = arg.Shimmer.Speed, Color = arg.Shimmer.Color } end if arg.Kind == "Perimeter" then return { Kind = "Perimeter", Speed = arg.Perimeter.Speed, Color = arg.Perimeter.Color } end local pingPong = arg.PingPong return { Kind = "PingPong", Speed = pingPong.Speed, BackgroundColor = pingPong.BackgroundColor, MainColor = pingPong.MainColor, Rotation = pingPong.Rotation, } end, text = function(arg) local v116 = tbl18.outline(arg) if v116.Kind == "Perimeter" then return v115.None end return v116 end, } return tbl18 end tbl17.fI = function() local fi = tbl17.cache.fI if not fi then local fi2 = { c = fn35() } tbl17.cache.fI = fi2 fi = fi2 end return fi.c end end do -- fJ local function fn35() tbl17.fH() tbl17.fB() local v115 = tbl17.fI() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(v86[153]) return false end local box = arg2.PlayerSettings.Box local boxImage = arg2.PlayerSettings.BoxImage local enabled = boxImage.Enabled if not (box.Enabled or enabled) then arg:SetVisible(false) return v86[153] end if box.Enabled then arg:SetStyle(box.Style) arg:ToggleOutline(true) arg:SetInnerLook(box.Color, v115.outline(box.Animation)) local filledBox = arg2.PlayerSettings.FilledBox if filledBox.Enabled then arg:SetFillLook(filledBox.Color, filledBox.Transparency, filledBox.Animate and true and "Swirl" or nil) arg:ToggleFill(v86[34]) else arg:ToggleFill(v86[153]) end else arg:ToggleOutline(false) arg:ToggleFill(false) end if enabled then arg:SetImage(boxImage.Name) arg:SetImageLook(boxImage.Transparency) arg:ToggleImage(true) else arg:ToggleImage(false) end arg:SetVisible(true) return v86[34] end, tick = function(arg, arg2) arg:Update(arg2.DeltaTime, arg2.Clock) end, } end tbl17.fJ = function() local fj = tbl17.cache.fJ if not fj then fj = { c = fn35() } tbl17.cache.fJ = fj end return fj.c end end do -- fK local function fn35() return { onCharacterAdded = function(parent, adornee, fillColor, fillTransparency, outlineColor, outlineTransparency) local highlight = Instance.new("Highlight") highlight.FillColor = fillColor highlight.FillTransparency = fillTransparency highlight.OutlineColor = outlineColor highlight.OutlineTransparency = outlineTransparency highlight.Adornee = adornee highlight.Parent = parent return highlight end, onCharacterRemoved = function(arg) arg:Destroy() end, onCharacterLookChanged = function(arg, fillColor, fillTransparency, outlineColor, outlineTransparency) arg.FillColor = fillColor arg.FillTransparency = fillTransparency arg.OutlineColor = outlineColor arg.OutlineTransparency = outlineTransparency end, onPartAdded = function() end, onPartRemoved = function() end, onPartLookChanged = function() end, } end tbl17.fK = function() local fk = tbl17.cache.fK if not fk then local fk2 = { c = fn35() } tbl17.cache.fK = fk2 fk = fk2 end return fk.c end end do -- fL local function fn35() return { onCharacterAdded = function() return nil end, onCharacterRemoved = function() end, onCharacterLookChanged = function() end, onPartAdded = function(parent, arg, adornee, arg2, color3, transparency, color32, transparency2) if arg2 then local cylinderHandleAdornment = Instance.new("CylinderHandleAdornment") cylinderHandleAdornment.AlwaysOnTop = v86[34] cylinderHandleAdornment.Color3 = color3 cylinderHandleAdornment.Transparency = transparency cylinderHandleAdornment.ZIndex = 2 cylinderHandleAdornment.Adornee = adornee cylinderHandleAdornment.Visible = v86[34] cylinderHandleAdornment.Parent = parent cylinderHandleAdornment.CFrame = CFrame.Angles(1.5707963267948966, v86[186], 0) cylinderHandleAdornment.Radius = 0.54 cylinderHandleAdornment.Height = 1.12 arg.Inner = cylinderHandleAdornment local cylinderHandleAdornment2 = Instance.new("CylinderHandleAdornment") cylinderHandleAdornment2.AlwaysOnTop = false cylinderHandleAdornment2.Color3 = color32 cylinderHandleAdornment2.Transparency = transparency2 cylinderHandleAdornment2.ZIndex = -1 cylinderHandleAdornment2.Adornee = adornee cylinderHandleAdornment2.Visible = v86[34] cylinderHandleAdornment2.Parent = parent cylinderHandleAdornment2.CFrame = cylinderHandleAdornment.CFrame cylinderHandleAdornment2.Radius = 0.62 cylinderHandleAdornment2.Height = 1.3 arg.Outline = cylinderHandleAdornment2 else local boxHandleAdornment = Instance.new("BoxHandleAdornment") boxHandleAdornment.AlwaysOnTop = true boxHandleAdornment.Color3 = color3 boxHandleAdornment.Transparency = transparency boxHandleAdornment.ZIndex = 2 boxHandleAdornment.Adornee = adornee boxHandleAdornment.Visible = true boxHandleAdornment.Parent = parent boxHandleAdornment.Size = adornee.Size + Vector3.one * 0.02 arg.Inner = boxHandleAdornment local boxHandleAdornment2 = Instance.new("BoxHandleAdornment") boxHandleAdornment2.AlwaysOnTop = false boxHandleAdornment2.Color3 = color32 boxHandleAdornment2.Transparency = transparency2 boxHandleAdornment2.ZIndex = -1 boxHandleAdornment2.Adornee = adornee boxHandleAdornment2.Visible = true boxHandleAdornment2.Parent = parent boxHandleAdornment2.Size = adornee.Size + Vector3.one * 0.12 arg.Outline = boxHandleAdornment2 end end, onPartLookChanged = function(arg, color3, transparency, color32, transparency2) local inner = arg.Inner inner.Color3 = color3 inner.Transparency = transparency local outline = arg.Outline outline.Color3 = color32 outline.Transparency = transparency2 end, onPartRemoved = function(arg) arg.Inner:Destroy() arg.Outline:Destroy() end, } end tbl17.fL = function() local fl = tbl17.cache.fL if not fl then local fl2 = { c = fn35() } tbl17.cache.fL = fl2 fl = fl2 end return fl.c end end do -- fM local function fn35()return{Head=true,Torso=true,UpperTorso=true,LowerTorso=true,LeftUpperLeg=true,LeftLowerLeg=true,LeftFoot=true,RightUpperLeg=true,RightLowerLeg=true,RightFoot=true,LeftUpperArm=true,LeftLowerArm=true,LeftHand=true,RightUpperArm=true,RightLowerArm=true,RightHand=true,LeftLeg=true,RightLeg=true,LeftArm=true,RightArm=true};end tbl17.fM = function() local fm = tbl17.cache.fM if not fm then local fm2 = { c = fn35() } tbl17.cache.fM = fm2 fm = fm2 end return fm.c end end do -- fN local function fn35() return function(l)return Color3.new(l.R*5,l.G*5,l.B*5);end end tbl17.fN = function() local fn36 = tbl17.cache.fN if not fn36 then fn36 = { c = fn35() } tbl17.cache.fN = fn36 end return fn36.c end end do -- fO local function fn35() local v115 = tbl17.fK() local v116 = tbl17.fL() tbl17.fM() local v117 = tbl17.k() local v118 = tbl17.fN() local index2 = {} index2.__index = index2 index2.__type = "Chams" index2.new = function(arg) local tbl18 = { _trove = v117.new(), _container = arg, _adornments = {}, _hiddenAccessories = {}, _chamApplier = v116, _innerColor = Color3.fromRGB(255, 0, 0), _outlineColor = Color3.fromRGB(v86[91], 0, 0), _innerTransparency = v86[186], _outlineTransparency = 0.6, _glowEnabled = false, _glowColor = Color3.fromRGB(255, 0, 0), } setmetatable(tbl18, index2) return tbl18 end index2.SelectKind = function(I,W)local N=W=="Legacy"and v116 or v115 ;if I._chamApplier==N then return;end;W=I._model;if W~=nil then I:DeselectModel();end;I._chamApplier=N;if W~=nil then I:SelectModel(W);end;end index2.SelectModel = function(l,I)if l._model==I then return;end;if l._model~=nil then l:DeselectModel();end;l._model=I;l:_ApplyChams(I);end index2.SetLook = function(I,W,N,P,a,e,c)I._innerColor=W;I._innerTransparency=N;I._outlineColor=P;I._outlineTransparency=a;I._glowEnabled=e;I._glowColor=c;local E,p= v118 (c),I._chamApplier;for l,c in I._adornments,nil,nil do l=c.Glow;l.Color3=E;l.Visible=e;p.onPartLookChanged(c,W,N,P,a);end;E=I._modelAdornment;if E~=nil then p.onCharacterLookChanged(E,W,N,P,a);end;end index2._ApplyChams = function(self, model) local applier = self._chamApplier self._modelAdornment = applier.onCharacterAdded(self._container, model, self._innerColor, self._innerTransparency, self._outlineColor, self._outlineTransparency) for _, d in model:GetDescendants() do if d:IsA("BasePart") then self:_AddPart(d) end end self._trove:Connect(model.DescendantAdded, function(d) if d:IsA("BasePart") then self:_AddPart(d) end end) self._trove:Connect(model.DescendantRemoving, function(d) self:_RemovePart(d) end) end index2.DeselectModel = function(self) for part in next, table.clone(self._adornments) do self:_RemovePart(part) end local adornment = self._modelAdornment self._modelAdornment = nil if adornment ~= nil then self._chamApplier.onCharacterRemoved(adornment) end self._trove:Clean() self._model = nil end index2._AddPart = function(self, part) if self._adornments[part] ~= nil or part.Name == "HumanoidRootPart" or part.Transparency >= 1 then return end if part:FindFirstAncestorOfClass("Accessory") ~= nil or part:FindFirstAncestorOfClass("Tool") ~= nil then return end local glow = Instance.new("BoxHandleAdornment") glow.AlwaysOnTop = true glow.ZIndex = 0 glow.Adornee = part glow.Size = part.Size + Vector3.one * 0.3 glow.Color3 = v118(self._glowColor) glow.Transparency = 0.85 glow.Visible = self._glowEnabled glow.Parent = self._container local entry = { Glow = glow } self._chamApplier.onPartAdded(self._container, entry, part, part.Name == "Head", self._innerColor, self._innerTransparency, self._outlineColor, self._outlineTransparency) self._adornments[part] = entry end index2._RemovePart = function(l,I)local W=l._adornments[I];if W==nil then return;end;l._adornments[I]=nil;W.Glow:Destroy();l._chamApplier.onPartRemoved(W);end index2.Destroy = function(arg) arg:DeselectModel() end return index2 end tbl17.fO = function() local fo = tbl17.cache.fO if not fo then local fo2 = { c = fn35() } tbl17.cache.fO = fo2 fo = fo2 end return fo.c end end do -- fP local function fn35() tbl17.fO() tbl17.fB() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:DeselectModel() return false end local chams = arg2.PlayerSettings.Chams if not chams.Enabled then arg:DeselectModel() return false end arg:SelectKind(chams.Kind) arg:SetLook(chams.InnerColor, chams.InnerTransparency, chams.OutlineColor, chams.OutlineTransparency, chams.Glow, chams.GlowColor) arg:SelectModel(arg2.AliveState.Model) return true end } end tbl17.fP = function() local fp = tbl17.cache.fP if not fp then fp = { c = fn35() } tbl17.cache.fP = fp end return fp.c end end do -- fQ local function fn35() local v115 = tbl17.fb() local v116 = tbl17.fe() tbl17.fz() local index2 = {} index2.__index = index2 index2.__type = "Label" index2.new = function(arg, arg2) local textLabel = Instance.new("TextLabel") local uiStroke = Instance.new("UIStroke") local uiGradient = Instance.new("UIGradient") local uiGradient2 = Instance.new("UIGradient") uiGradient.Parent = textLabel uiStroke.Parent = textLabel uiGradient2.Parent = uiStroke local v117 = v116.new(textLabel, uiGradient, uiStroke, uiGradient2, "PingPongBlack") v117:Set(v115.None, Color3.new(1, 1, 1)) local tbl18 = { _context = arg, _label = textLabel, _uiStroke = uiStroke, _visible = false, _text = "", _textSize = 16, _transparency = 0, _font = nil, _animation = v117, _numericKey = nil, } setmetatable(tbl18, index2) tbl18:_Initialize(arg2) return tbl18 end index2._Initialize = function(arg, parent) local context = arg._context local label = arg._label label.Visible = false label.LayoutOrder = context.LayoutOrder label.BackgroundTransparency = 1 label.Interactable = false label.Size = UDim2.new(1, v86[186], 0, arg._textSize) label.TextSize = arg._textSize label.TextColor3 = Color3.new(1, 1, 1) label.RichText = true label.Text = arg._text label.TextXAlignment = context.PaneSide == "RIGHT" and Enum.TextXAlignment.Left or context.PaneSide == "LEFT" and Enum.TextXAlignment.Right or Enum.TextXAlignment.Center arg._uiStroke.LineJoinMode = Enum.LineJoinMode.Miter label.Parent = parent end index2.SetVisible = function(l,I)if I==l._visible then return;end;l._visible=I;l._label.Visible=I;end index2.SetFont = function(l,I)if I~=l._font then l._font=I;l._label.FontFace=I;l:_UpdateSize();end;end index2.SetText = function(l,I)if I~=l._text then l._label.Text=I;l:_UpdateSize();end;end index2.SetLook = function(I,W,N,P,a)I._animation:Set(a or v115 .None,W);a=P or 0;if a~=I._transparency then I._transparency=a;I._label.TextTransparency=a;I._uiStroke.Transparency=a;end;if N~=I._textSize then I._textSize=N;I._label.TextSize=N;I:_UpdateSize();end;end index2.SetTextSize = function(l,I)if I==l._textSize then return;end;l._textSize=I;l._label.TextSize=I;l:_UpdateSize();end index2.NumericKeyChanged = function(l,I)if I==l._numericKey then return false;end;l._numericKey=I;return true;end index2.Update = function(arg, arg2) arg._animation:Update(arg2) end index2._UpdateSize = function(arg) arg._label.Size = UDim2.fromOffset(arg._label.TextBounds.X + v86[155], arg._label.TextBounds.Y) end index2.Destroy = function(arg) arg._label:Destroy() end return index2 end tbl17.fQ = function() local fq = tbl17.cache.fQ if not fq then local fq2 = { c = fn35() } tbl17.cache.fQ = fq2 fq = fq2 end return fq.c end end do -- fR local function fn35() tbl17.fQ() tbl17.fB() local function fn36(arg, arg2, arg3) if not arg2.DistanceScaling then return arg end local v115 = v86[101] return math.max(v86[162], math.round(arg * math.clamp(arg2.DistanceScalingRef / math.max(arg3, 1), v115, 1))) end return { format = function(arg, arg2, arg3) local flagTextCase = arg2 and arg.FlagTextCase or arg.TextCase if flagTextCase == "UPPERCASE" then arg3 = arg3:upper() elseif flagTextCase == "lowercase" then arg3 = arg3:lower() end arg2 = arg2 and arg.FlagTextSurround or arg.TextSurround if arg2 == v86[75] then return arg3 end return arg2:sub(1, 1) .. arg3 .. arg2:sub(2) end, tick = function(arg, arg2) local formatting = arg2.Formatting if formatting.DistanceScaling then arg:SetTextSize(fn36(formatting.FontSize, formatting, arg2.Distance)) end arg:Update(arg2.Clock) end, tickFlag = function(arg, arg2) local formatting = arg2.Formatting if formatting.DistanceScaling then arg:SetTextSize(fn36(formatting.FlagFontSize, formatting, arg2.Distance)) end arg:Update(arg2.Clock) end, } end tbl17.fR = function() local fr = tbl17.cache.fR if not fr then fr = { c = fn35() } tbl17.cache.fR = fr end return fr.c end end do -- fS local function fn35() tbl17.fQ() local v115 = tbl17.fR() tbl17.fB() local v116 = tbl17.fI() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(false) return false end local deflecting = arg2.PlayerSettings.Deflecting if not deflecting.Enabled then arg:SetVisible(false) return v86[153] end if arg2.FighterState.ItemObserver:EquippedItemAsMelee() == nil then arg:SetVisible(false) return false end arg:SetFont(arg2.Formatting.FlagFont) arg:SetLook(deflecting.Color, arg2.Formatting.FlagFontSize, deflecting.Transparency, v116.text(deflecting.Animation)) arg:SetText(v115.format(arg2.Formatting, true, "Deflecting")) arg:SetVisible(false) return true end, tick = function(arg, arg2) local v117 = arg2.FighterState.ItemObserver:EquippedItemAsMelee() arg:SetVisible(v117 ~= nil and v117:IsDeflecting()) v115.tickFlag(arg, arg2) end, } end tbl17.fS = function() local fs = tbl17.cache.fS if not fs then fs = { c = fn35() } tbl17.cache.fS = fs end return fs.c end end do -- fT local function fn35() tbl17.fQ() local v115 = tbl17.fR() tbl17.fB() local v116 = tbl17.fI() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(false) return false end local distance = arg2.PlayerSettings.Distance if not distance.Enabled then arg:SetVisible(false) return false end arg:SetFont(arg2.Formatting.Font) arg:SetLook(distance.Color, arg2.Formatting.FontSize, nil, v116.text(distance.Animation)) arg:SetVisible(v86[34]) return v86[34] end, tick = function(arg, arg2) local formatting = arg2.Formatting local v117 = math.round(arg2.Distance) if arg:NumericKeyChanged(v117) then arg:SetText(v115.format(formatting, false, tostring(v117) .. "m")) end v115.tick(arg, arg2) end, } end tbl17.fT = function() local ft = tbl17.cache.fT if not ft then local ft2 = { c = fn35() } tbl17.cache.fT = ft2 ft = ft2 end return ft.c end end do -- fU local function fn35() local v115 = tbl17.k() local v116 = cloneref(game:GetService("UserInputService")) local index2 = {} index2.__index = index2 index2.new = function(displayOrder) local root = v115.new("esp.root") local v117 = root:Add(Instance.new("ScreenGui")) v117.Enabled = true v117.IgnoreGuiInset = true v117.ZIndexBehavior = Enum.ZIndexBehavior.Sibling v117.DisplayOrder = displayOrder v117.Parent = K.hudParent() local v118 = root:Add(Instance.new("Folder")) v118.Parent = K.hudParent() local android = Enum.Platform.Android if v116:GetPlatform() ~= android then v107(v108, "AdornShadingAPI", "true") end local tbl18 = { _trove = root, Container = v117, AdornmentContainer = v118 } setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.fU = function() local fu = tbl17.cache.fU if not fu then fu = { c = fn35() } tbl17.cache.fU = fu end return fu.c end end do -- fV local function fn35() return function(l)local I,W=workspace.CurrentCamera:WorldToViewportPoint(l);return Vector2.new(I.X,I.Y):Floor(),I.Z,W;end end tbl17.fV = function() local fv = tbl17.cache.fV if not fv then fv = { c = fn35() } tbl17.cache.fV = fv end return fv.c end end do -- fW local function fn35() local v115 = tbl17.k() local v116 = tbl17.fV() local index2 = {} index2.__index = index2 local function createUIStroke(parent) local uiStroke = Instance.new("UIStroke") uiStroke.Thickness = 1.5 uiStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border uiStroke.Parent = parent return uiStroke end local function fn36() local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(0.5, 0.5) instance.BackgroundTransparency = 1 instance.Visible = false local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(v86[101], 0.5) frame.Position = UDim2.fromScale(0.5, 0.5) frame.Size = UDim2.fromScale(v86[63], 0.18) frame.BorderSizePixel = 0 frame.Parent = instance local v117 = createUIStroke(frame) local instance2 = Instance.new(v86[128]) instance2.AnchorPoint = Vector2.new(v86[101], 0.5) instance2.Position = UDim2.fromScale(0.5, v86[101]) instance2.Size = UDim2.fromScale(0.18, v86[63]) instance2.BorderSizePixel = v86[186] instance2.Parent = instance local tbl18 = {} local tbl19 = { Frame = instance2, Stroke = createUIStroke(instance2) } tbl18[1] = { Frame = frame, Stroke = v117 } tbl18[2] = tbl19 return instance, tbl18 end local function fn37() local frame = Instance.new("Frame") frame.AnchorPoint = Vector2.new(v86[101], 0.5) frame.BorderSizePixel = 0 frame.Visible = v86[153] local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0.5, 0) uiCorner.Parent = frame return frame, { { Frame = frame, Stroke = createUIStroke(frame) } } end local function fn38() local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(v86[101], 0.5) instance.BorderSizePixel = 0 instance.Rotation = 45 instance.Visible = false return instance, { { Frame = instance, Stroke = createUIStroke(instance) } } end local function fn39(arg, backgroundColor3, transparency, arg2, arg3, color, transparency2) local backgroundTransparency = arg2 and transparency or 1 for _, v117 in arg, nil, nil do v117.Frame.BackgroundColor3 = backgroundColor3 v117.Frame.BackgroundTransparency = backgroundTransparency local stroke = v117.Stroke if arg3 then stroke.Color = color stroke.Transparency = transparency2 elseif not arg2 then stroke.Color = backgroundColor3 stroke.Transparency = transparency else stroke.Transparency = 1 end end end index2.new = function(parent) local HeadMarker = v115.new("esp.HeadMarker") local v117, v118 = fn36() local v119, v120 = fn37() local v121, v122 = fn38() local tbl18 = { Cross = { Container = v117, Targets = v118, Visible = false, LastSize = -v86[63] }, Circle = { Container = v119, Targets = v120, Visible = v86[153], LastSize = -1 }, Diamond = { Container = v121, Targets = v122, Visible = v86[153], LastSize = -v86[63] }, } for _, v123 in tbl18, nil, nil do v123.Container.Parent = parent HeadMarker:Add(v123.Container) end local tbl19 = { _trove = HeadMarker, _adornee = nil, _shapeEntryByShape = tbl18, _shape = "Cross", _color = Color3.new(1, v86[63], 1), _transparency = v86[186], _filled = true, _hasOutline = v86[153], _outlineColor = Color3.new(v86[186], 0, 0), _outlineTransparency = 0, _lookDirty = true, _anyShapeVisible = false, } setmetatable(tbl19, index2) return tbl19 end index2.SelectAdornee = function(l,I)l._adornee=I;end index2.DeselectAdornee = function(l)l._adornee=nil;if not l._anyShapeVisible then return;end;for I,I_105 in l._shapeEntryByShape,nil,nil do if I_105.Visible then I_105.Visible=false;I_105.Container.Visible=false;end;end;l._anyShapeVisible=false;end index2.SetLook = function(l,I,W,N,P,a,e,c)if I==l._shape and W==l._filled and N==l._hasOutline and P==l._color and a==l._transparency and e==l._outlineColor and c==l._outlineTransparency then return;end;if I~=l._shape then local E=l._shapeEntryByShape[l._shape];if E.Visible then E.Visible=false;E.Container.Visible=false;l._anyShapeVisible=false;end;end;l._shape=I;l._filled=W;l._hasOutline=N;l._color=P;l._transparency=a;l._outlineColor=e;l._outlineTransparency=c;l._lookDirty=true;end index2.Update = function(arg, arg2, arg3, arg4) local adornee = arg._adornee if adornee == nil or arg2 then if arg._anyShapeVisible then for _, v117 in arg._shapeEntryByShape, nil, nil do if v117.Visible then v117.Visible = false v117.Container.Visible = v86[153] end end arg._anyShapeVisible = false end return end local v117, v118 = v116(adornee.Position) if v118 <= 0 then if arg._anyShapeVisible then for _, v119 in arg._shapeEntryByShape, nil, nil do if v119.Visible then v119.Visible = false v119.Container.Visible = v86[153] end end arg._anyShapeVisible = v86[153] end return end local lastSize = math.max(4, math.round(adornee.Size.Y * 0.25 * arg3 / 2 * v118 * arg4)) local v119 = arg._shapeEntryByShape[arg._shape] v119.Container.Position = UDim2.fromOffset(v117.X, v117.Y) if v119.LastSize ~= lastSize then v119.LastSize = lastSize v119.Container.Size = UDim2.fromOffset(lastSize, lastSize) end if arg._lookDirty then arg._lookDirty = false fn39(v119.Targets, arg._color, arg._transparency, arg._filled, arg._hasOutline, arg._outlineColor, arg._outlineTransparency) if arg._shape == "Cross" then v119.Container.BackgroundTransparency = 1 end end if not v119.Visible then v119.Visible = v86[34] v119.Container.Visible = v86[34] arg._anyShapeVisible = v86[34] end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.fW = function() local fw = tbl17.cache.fW if not fw then local fw2 = { c = fn35() } tbl17.cache.fW = fw2 fw = fw2 end return fw.c end end do -- fX local function fn35() tbl17.fW() tbl17.fB() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:DeselectAdornee() return v86[153] end local headMarker = arg2.PlayerSettings.HeadMarker if not headMarker.Enabled then arg:DeselectAdornee() return false end arg:SelectAdornee(arg2.AliveState.HitboxHead) arg:SetLook(headMarker.Shape, headMarker.Filled, headMarker.Outline, headMarker.Color, headMarker.Transparency, headMarker.OutlineColor, headMarker.OutlineTransparency) return true end, tick = function(arg, arg2) arg:Update(arg2.CullHeavyOperations, arg2.ViewportHeight, arg2.HalfFovTan) end, } end tbl17.fX = function() local fx = tbl17.cache.fX if not fx then fx = { c = fn35() } tbl17.cache.fX = fx end return fx.c end end do -- fY local function fn35() tbl17.fA() tbl17.fB() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(false) return v86[153] end local healthBar = arg2.PlayerSettings.HealthBar if not healthBar.Enabled then arg:SetVisible(v86[153]) return v86[153] end arg:SetColor(healthBar.Color, healthBar.ColorMode) arg:SetFont(arg2.Formatting.Font) arg:SetLabelColor(arg2.PlayerSettings.HealthNumber.Color) arg:AnimateBar(healthBar.Animate and true) arg:SetVisible(true) return true end, tick = function(arg, arg2) local aliveState = arg2.AliveState local health = aliveState.Health local maxHealth = aliveState.MaxHealth arg:SetValue(health, maxHealth) arg:Update() arg:SetLabelVisible(arg2.PlayerSettings.HealthNumber.Enabled and health < maxHealth) end, } end tbl17.fY = function() local fy = tbl17.cache.fY if not fy then local fy2 = { c = fn35() } tbl17.cache.fY = fy2 fy = fy2 end return fy.c end end do -- fZ local function fn35() tbl17.fQ() local v115 = tbl17.fR() tbl17.fB() local v116 = tbl17.fI() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(false) return v86[153] end local heldWeapon = arg2.PlayerSettings.HeldWeapon if not heldWeapon.Enabled then arg:SetVisible(false) return false end local equippedItem = arg2.FighterState.ItemObserver:GetEquippedItem() if equippedItem == nil then arg:SetVisible(false) return false end arg:SetFont(arg2.Formatting.Font) arg:SetLook(heldWeapon.Color, arg2.Formatting.FontSize, heldWeapon.Transparency, v116.text(heldWeapon.Animation)) arg:SetText(v115.format(arg2.Formatting, false, equippedItem.Name)) arg:SetVisible(true) return true end, tick = v115.tick, } end tbl17.fZ = function() local fz = tbl17.cache.fZ if not fz then local fz2 = { c = fn35() } tbl17.cache.fZ = fz2 fz = fz2 end return fz.c end end do -- f_ local function fn35() tbl17.fQ() local v115 = tbl17.fR() tbl17.fB() local v116 = tbl17.fI() local store = tbl17.bG() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(v86[153]) return false end local name = arg2.PlayerSettings.Name if not name.Enabled then arg:SetVisible(v86[153]) return false end arg:SetFont(arg2.Formatting.Font) arg:SetLook(name.Color, arg2.Formatting.FontSize, name.Transparency, v116.text(name.Animation)) local _nameText = arg2.DisplayedName local _espCfg2 = store.Data ~= nil and store.Data.Esp or nil local _rankSpoof2 = _espCfg2 ~= nil and _espCfg2.RankSpoof or nil if _rankSpoof2 ~= nil and _rankSpoof2.Enabled == true and type(_rankSpoof2.Icon) == "string" and _rankSpoof2.Icon ~= "" then _nameText = _nameText .. " " .. _rankSpoof2.Icon end arg:SetText(v115.format(arg2.Formatting, false, _nameText)) arg:SetVisible(true) return v86[34] end, tick = v115.tick, } end tbl17.f_ = function() local f = tbl17.cache.f_ if not f then local f2 = { c = fn35() } tbl17.cache.f_ = f2 f = f2 end return f.c end end do -- f0 local function fn35()return{CenterPanePreset={Side="CENTER",AnchorPoint=Vector2.zero,PositionScale=Vector2.zero,SpacingDirection=Vector2.zero,Size=UDim2.fromScale(1,1),FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Center,VerticalAlignment=Enum.VerticalAlignment.Center},LeftPanePreset={Side="LEFT",AnchorPoint=Vector2.new(1,0),PositionScale=Vector2.zero,SpacingDirection=Vector2.new(-1,0),Size=UDim2.fromScale(100,1),FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Right,VerticalAlignment=Enum.VerticalAlignment.Top},RightPanePreset={Side="RIGHT",AnchorPoint=Vector2.zero,PositionScale=Vector2.new(1,0),SpacingDirection=Vector2.new(1,0),Size=UDim2.fromScale(100,1),FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Left,VerticalAlignment=Enum.VerticalAlignment.Top},TopPanePreset={Side="TOP",AnchorPoint=Vector2.new(0,1),PositionScale=Vector2.zero,SpacingDirection=Vector2.new(0,-1),Size=UDim2.fromScale(1,100),FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Center,VerticalAlignment=Enum.VerticalAlignment.Bottom},BottomPanePreset={Side="BOTTOM",AnchorPoint=Vector2.zero,PositionScale=Vector2.new(0,1),SpacingDirection=Vector2.new(0,1),Size=UDim2.fromScale(1,100),FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Center,VerticalAlignment=Enum.VerticalAlignment.Top}};end tbl17.f0 = function() local f0 = tbl17.cache.f0 if not f0 then local f02 = { c = fn35() } tbl17.cache.f0 = f02 f0 = f02 end return f0.c end end do -- f1 local function fn35() tbl17.f0() return function(arg, arg2) local positionScale = arg.PositionScale local spacingDirection = arg.SpacingDirection return UDim2.new(positionScale.X, spacingDirection.X * arg2, positionScale.Y, spacingDirection.Y * arg2) end end tbl17.f1 = function() local f1 = tbl17.cache.f1 if not f1 then f1 = { c = fn35() } tbl17.cache.f1 = f1 end return f1.c end end do -- f2 local function fn35() tbl17.f0() local v115 = tbl17.k() local v116 = tbl17.f1() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local pane = v115.new("esp.pane") local v117 = pane:Add(Instance.new("Frame")) local tbl18 = { _trove = pane, Container = v117, ObjectHolder = v117, _preset = arg2, _visible = false } setmetatable(tbl18, index2) tbl18:_Initialize(arg, arg2) return tbl18 end index2._Initialize = function(arg, parent, arg2) local container = arg.Container container.Visible = arg2.Side ~= "CENTER" container.AnchorPoint = arg2.AnchorPoint container.Position = v116(arg2, 1) container.Interactable = false container.BackgroundTransparency = 1 local frame if arg2.Side == "CENTER" then frame = Instance.new("Frame") frame.Interactable = false frame.BackgroundTransparency = 1 frame.Parent = container else container.Parent = parent frame = container end frame.Size = arg2.Size local instance = Instance.new(v86[4]) instance.Padding = arg2.Side == "CENTER" and UDim.new() or UDim.new(v86[186], 2) instance.FillDirection = arg2.FillDirection instance.HorizontalAlignment = arg2.HorizontalAlignment instance.VerticalAlignment = arg2.VerticalAlignment instance.SortOrder = Enum.SortOrder.LayoutOrder instance.Wraps = true instance.Parent = frame arg.ObjectHolder = frame container.Parent = parent end index2.Update = function(l,I,W)l.Container.Position=UDim2.fromOffset(I.X,I.Y);l.Container.Size=UDim2.fromOffset(W.X,W.Y);end index2.SetSpacing = function(arg, arg2) arg.Container.Position = v116(arg._preset, arg2) end index2.SetVisible = function(arg, visible) if arg._visible == visible then return end arg._visible = visible arg.Container.Visible = visible end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.f2 = function() local f2 = tbl17.cache.f2 if not f2 then local f22 = { c = fn35() } tbl17.cache.f2 = f22 f2 = f22 end return f2.c end end do -- f3 local function fn35() tbl17.fQ() local v115 = tbl17.fR() tbl17.fB() local v116 = tbl17.fI() local store = tbl17.bG() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(false) return v86[153] end local rank = arg2.PlayerSettings.Rank if not rank.Enabled then arg:SetVisible(false) return false end arg:SetFont(arg2.Formatting.FlagFont) arg:SetLook(rank.Color, arg2.Formatting.FlagFontSize, nil, v116.text(rank.Animation)) local _spoofRank = nil local _espCfg = store.Data ~= nil and store.Data.Esp or nil local _rankSpoof = _espCfg ~= nil and _espCfg.RankSpoof or nil if _rankSpoof ~= nil and _rankSpoof.Enabled == true and type(_rankSpoof.Text) == "string" and _rankSpoof.Text ~= "" then _spoofRank = _rankSpoof.Text end arg:SetText(v115.format(arg2.Formatting, true, _spoofRank or arg2.FighterState:GetRank())) arg:SetVisible(v86[34]) return true end, tick = v115.tickFlag, } end tbl17.f3 = function() local f3 = tbl17.cache.f3 if not f3 then f3 = { c = fn35() } tbl17.cache.f3 = f3 end return f3.c end end do -- f4 local function fn35() return function(l,I,W,N)local P=W-I;local a,e=P.Magnitude,(I+W)*0.5;l.Position=UDim2.fromOffset(math.floor(e.X)+0.5,math.floor(e.Y)+0.5);l.Size=UDim2.fromOffset(a,N);l.Rotation=math.deg(math.atan2(P.Y,P.X));end end tbl17.f4 = function() local f4 = tbl17.cache.f4 if not f4 then f4 = { c = fn35() } tbl17.cache.f4 = f4 end return f4.c end end do -- f5 local function fn35() local v115 = tbl17.fM() local v116 = tbl17.k() local v117 = tbl17.f4() local v118 = tbl17.fV() local function fn36(arg) local keypoints = arg.Keypoints local value = keypoints[v86[63]].Value for i = 2, #keypoints do if keypoints[i].Value ~= value then return false end end return true end local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v116.new("esp.Skeleton"), _container = arg, _limbConnectionByPart = {}, _color = Color3.new(1, 1, 1), _transparency = 0, _gradientEnabled = false, _gradientColor = ColorSequence.new(Color3.new(1, 1, 1)), _thickness = 1, _anyVisible = false, } setmetatable(tbl18, index2) return tbl18 end index2.SelectModel = function(arg, model) if arg._model ~= nil then return end arg._model = model arg:_CacheLimbConnections(model) end index2.SetLook = function(arg, gradientColor, transparency, thickness) arg._thickness = thickness local gradientEnabled = not fn36(gradientColor) local color = gradientColor.Keypoints[1].Value local flag19 = arg._color ~= color if flag19 then arg._color = color end local flag20 = arg._transparency ~= transparency if flag20 then arg._transparency = transparency end if gradientEnabled ~= arg._gradientEnabled or gradientEnabled and gradientColor ~= arg._gradientColor then arg._gradientEnabled = gradientEnabled arg._gradientColor = gradientColor for _, v119 in arg._limbConnectionByPart, nil, nil do v119.Gradient.Enabled = gradientEnabled if gradientEnabled then v119.Gradient.Color = gradientColor v119.Frame.BackgroundColor3 = Color3.new(1, 1, v86[63]) else v119.Frame.BackgroundColor3 = color end v119.Frame.BackgroundTransparency = transparency end return end if flag19 and not arg._gradientEnabled then for _, v119 in arg._limbConnectionByPart, nil, nil do v119.Frame.BackgroundColor3 = color end end if flag20 then for _, v119 in arg._limbConnectionByPart, nil, nil do v119.Frame.BackgroundTransparency = transparency end end end index2.DeselectModel = function(arg) if arg._model == nil then return end arg._model = nil arg._trove:Clean() arg:_ClearAllLimbConnections() end index2._CacheLimbConnections = function(I,W)I._trove:Clean();I:_ClearAllLimbConnections();for N,P in W:GetChildren()do if not(P:IsA("BasePart")and v115 [P.Name])then continue;end;N=P:FindFirstChildOfClass("AnimationConstraint");if N==nil then continue;end;local a,e=N.Attachment0,N.Attachment1;if a~=nil and e~=nil then I:_AddLimbConnection(P,a.Parent,e.Parent);end;end;I._trove:Connect(W.ChildAdded,function(N)if not(N:IsA("BasePart")and v115 [N.Name])then return;end;local P=N:FindFirstChildOfClass("AnimationConstraint");if P==nil then return;end;local a,e=P.Attachment0,P.Attachment1;if a~=nil and e~=nil then I:_AddLimbConnection(N,a.Parent,e.Parent);end;end);I._trove:Connect(W.ChildRemoved,function(W)if not(W:IsA("BasePart")and v115 [W.Name])then return;end;I:_RemoveLimbConnection(W);end);end index2._AddLimbConnection = function(arg, arg2, arg3, arg4) local frame = Instance.new("Frame") frame.Visible = false frame.BorderSizePixel = v86[186] frame.AnchorPoint = Vector2.new(0.5, 0.5) frame.BackgroundTransparency = arg._transparency local instance = Instance.new(v86[46]) instance.Enabled = arg._gradientEnabled if arg._gradientEnabled then instance.Color = arg._gradientColor frame.BackgroundColor3 = Color3.new(v86[63], 1, 1) else frame.BackgroundColor3 = arg._color end instance.Parent = frame frame.Parent = arg._container arg._limbConnectionByPart[arg2] = { Frame = frame, Gradient = instance, Part0 = arg3, Part1 = arg4, Visible = false } end index2._RemoveLimbConnection = function(arg, arg2) local v119 = arg._limbConnectionByPart[arg2] if v119 ~= nil then v119.Frame:Destroy() arg._limbConnectionByPart[arg2] = nil end end index2._ClearAllLimbConnections = function(arg) for k in arg._limbConnectionByPart, nil, nil do arg:_RemoveLimbConnection(k) end end index2.Update = function(I,W)if W then if not I._anyVisible then return;end;for N,N_106 in I._limbConnectionByPart,nil,nil do if N_106.Visible then N_106.Visible=false;N_106.Frame.Visible=false;end;end;I._anyVisible=false;return;end;W=false;for N,P in I._limbConnectionByPart,nil,nil do local a=P.Frame;local e,c= v118 (P.Part0.Position);if c<=0 then if P.Visible then P.Visible=false;a.Visible=false;end;continue;end;c,N= v118 (P.Part1.Position);if N<=0 then if P.Visible then P.Visible=false;a.Visible=false;end;continue;end; v117 (a,e,c,I._thickness);if not P.Visible then P.Visible=true;a.Visible=true;end;W=true;end;I._anyVisible=W;end index2.Destroy = function(arg) arg._trove:Destroy() arg:_ClearAllLimbConnections() end return index2 end tbl17.f5 = function() local f5 = tbl17.cache.f5 if not f5 then local f52 = { c = fn35() } tbl17.cache.f5 = f52 f5 = f52 end return f5.c end end do -- f6 local function fn35() tbl17.f5() tbl17.fB() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:DeselectModel() return false end local skeleton = arg2.PlayerSettings.Skeleton if not skeleton.Enabled then arg:DeselectModel() return false end arg:SelectModel(arg2.AliveState.Model) arg:SetLook(skeleton.Color, skeleton.Transparency, skeleton.Thickness) return v86[34] end, tick = function(arg, arg2) arg:Update(arg2.CullHeavyOperations) end, } end tbl17.f6 = function() local f6 = tbl17.cache.f6 if not f6 then local f62 = { c = fn35() } tbl17.cache.f6 = f62 f6 = f62 end return f6.c end end do -- f7 local function fn35() local v115 = tbl17.k() local v116 = tbl17.f4() local v117 = tbl17.fV() local UserInputService = game:GetService("UserInputService") local function fn36(arg) local keypoints = arg.Keypoints local value = keypoints[1].Value for i = 2, #keypoints do if keypoints[i].Value ~= value then return false end end return v86[34] end local index2 = {} index2.__index = index2 index2.new = function(parent) local frame = Instance.new("Frame") frame.Visible = false frame.BorderSizePixel = 0 frame.AnchorPoint = Vector2.new(0.5, 0.5) frame.BackgroundColor3 = Color3.new(0, 0, 0) frame.ZIndex = 0 local instance = Instance.new(v86[46]) instance.Enabled = false instance.Parent = frame frame.Parent = parent local frame2 = Instance.new("Frame") frame2.Visible = false frame2.BorderSizePixel = v86[186] frame2.AnchorPoint = Vector2.new(0.5, 0.5) frame2.BackgroundColor3 = Color3.new(1, 1, 1) frame2.ZIndex = 1 local instance2 = Instance.new(v86[46]) instance2.Enabled = false instance2.Parent = frame2 frame2.Parent = parent local tbl18 = { _trove = v115.new(), _targetPart = nil, _line = frame2, _lineGradient = instance2, _outline = frame, _outlineGradient = instance, _visible = false, _color = Color3.new(1, 1, 1), _transparency = 0, _thickness = 1, _gradientEnabled = false, _gradientColor = ColorSequence.new(Color3.new(v86[63], 1, 1)), _origin = "Bottom", _target = "Feet", _outlineEnabled = false, _outlineColor = Color3.new(0, v86[186], v86[186]), _outlineTransparency = 0, _outlineThickness = 1, } setmetatable(tbl18, index2) return tbl18 end index2.SelectTarget = function(arg, targetPart) arg._targetPart = targetPart end index2.DeselectTarget = function(arg) arg._targetPart = nil if arg._visible then arg._visible = false arg._line.Visible = false arg._outline.Visible = false end end index2.SetLook = function(arg, gradientColor, transparency, thickness, origin, target, outlineEnabled, outlineColor, outlineTransparency, outlineThickness) arg._origin = origin arg._target = target arg._thickness = thickness arg._outlineEnabled = outlineEnabled arg._outlineThickness = outlineThickness local gradientEnabled = not fn36(gradientColor) local backgroundColor3 = gradientColor.Keypoints[1].Value if transparency ~= arg._transparency then arg._transparency = transparency arg._line.BackgroundTransparency = transparency end if gradientEnabled ~= arg._gradientEnabled or gradientEnabled and gradientColor ~= arg._gradientColor then arg._gradientEnabled = gradientEnabled arg._gradientColor = gradientColor arg._lineGradient.Enabled = gradientEnabled if gradientEnabled then arg._lineGradient.Color = gradientColor arg._line.BackgroundColor3 = Color3.new(1, v86[63], 1) else arg._line.BackgroundColor3 = backgroundColor3 end end if backgroundColor3 ~= arg._color then arg._color = backgroundColor3 if not arg._gradientEnabled then arg._line.BackgroundColor3 = backgroundColor3 end end if outlineColor ~= arg._outlineColor then arg._outlineColor = outlineColor arg._outline.BackgroundColor3 = outlineColor end if outlineTransparency ~= arg._outlineTransparency then arg._outlineTransparency = outlineTransparency arg._outline.BackgroundTransparency = outlineTransparency end end index2.Update = function(arg, arg2) local targetPart = arg._targetPart if targetPart == nil or arg2 then if arg._visible then arg._visible = false arg._line.Visible = false arg._outline.Visible = false end return end local position = targetPart.Position if arg._target == "Feet" then position -= Vector3.new(0, targetPart.Size.Y * 0.5 + 2, 0) end local v118, v119 = v117(position) if v119 <= 0 then if arg._visible then arg._visible = false arg._line.Visible = false arg._outline.Visible = false end return end local viewportSize = workspace.CurrentCamera.ViewportSize local origin = arg._origin local vector2 if origin == "Bottom" then vector2 = Vector2.new(viewportSize.X * 0.5, viewportSize.Y) elseif origin == "Center" then vector2 = Vector2.new(viewportSize.X * 0.5, viewportSize.Y * 0.5) elseif origin == "Top" then vector2 = Vector2.new(viewportSize.X * 0.5, 0) else local mouseLocation = UserInputService:GetMouseLocation() vector2 = Vector2.new(mouseLocation.X, mouseLocation.Y) end local thickness = arg._thickness v116(arg._line, vector2, v118, thickness) if arg._outlineEnabled then v116(arg._outline, vector2, v118, thickness + arg._outlineThickness * 2) if not arg._outline.Visible then arg._outline.Visible = true end elseif arg._outline.Visible then arg._outline.Visible = false end if not arg._visible then arg._visible = true arg._line.Visible = v86[34] end end index2.Destroy = function(arg) arg._trove:Destroy() arg._line:Destroy() arg._outline:Destroy() end return index2 end tbl17.f7 = function() local f7 = tbl17.cache.f7 if not f7 then local f72 = { c = fn35() } tbl17.cache.f7 = f72 f7 = f72 end return f7.c end end do -- f8 local function fn35() tbl17.f7() tbl17.fB() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:DeselectTarget() return false end local tracer = arg2.PlayerSettings.Tracer if not tracer.Enabled then arg:DeselectTarget() return false end local aliveState = arg2.AliveState arg:SelectTarget((tracer.Target == "Head" and { aliveState.HitboxHead } or { aliveState.RootPart })[v86[63]]) arg:SetLook(tracer.Color, tracer.Transparency, tracer.Thickness, tracer.Origin, tracer.Target, tracer.Outline, tracer.OutlineColor, tracer.OutlineTransparency, tracer.OutlineThickness) return true end, tick = function(arg, arg2) arg:Update(arg2.CullHeavyOperations) end, } end tbl17.f8 = function() local f8 = tbl17.cache.f8 if not f8 then local f82 = { c = fn35() } tbl17.cache.f8 = f82 f8 = f82 end return f8.c end end do -- f9 local function fn35() tbl17.fQ() local v115 = tbl17.fR() tbl17.fB() local v116 = tbl17.fI() return { refresh = function(arg, arg2) if not arg2.Enabled or arg2.AliveState == nil then arg:SetVisible(false) return v86[153] end local winstreak = arg2.PlayerSettings.Winstreak if not winstreak.Enabled then arg:SetVisible(false) return false end local attribute = arg2.FighterState.Player:GetAttribute("StatisticDuelsWinStreak") if attribute == nil or attribute <= v86[186] then arg:SetVisible(false) return false end arg:SetFont(arg2.Formatting.FlagFont) arg:SetLook(winstreak.Color, arg2.Formatting.FlagFontSize, nil, v116.text(winstreak.Animation)) arg:SetText(v115.format(arg2.Formatting, true, string.format("%s WS", tostring(attribute)))) arg:SetVisible(true) return v86[34] end, tick = v115.tickFlag, } end tbl17.f9 = function() local f9 = tbl17.cache.f9 if not f9 then local f92 = { c = fn35() } tbl17.cache.f9 = f92 f9 = f92 end return f9.c end end do -- ga local function fn35() local v115 = tbl17.fC() local v116 = tbl17.fA() local v117 = tbl17.fH() local v118 = tbl17.fJ() local v119 = tbl17.fO() local v120 = tbl17.fP() local v121 = tbl17.fS() local v122 = tbl17.fT() tbl17.fU() local v123 = tbl17.fW() local v124 = tbl17.fX() local v125 = tbl17.fY() local v126 = tbl17.fZ() tbl17.e9() local v127 = tbl17.fQ() local v128 = tbl17.f_() local v129 = tbl17.f2() local v130 = tbl17.f0() local v131 = tbl17.f3() local v132 = tbl17.f5() local v133 = tbl17.f6() local v134 = tbl17.f7() local v135 = tbl17.f8() local v136 = tbl17.k() tbl17.fB() local v137 = tbl17.f9() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local entity = v136.new("esp.entity") local v138 = entity:Add(v129.new(arg.Container, v130.CenterPanePreset)) local v139 = entity:Add(v117.new({ LayoutOrder = v86[63], PaneSide = "CENTER" }, v138.ObjectHolder, arg2)) local v140 = entity:Add(v129.new(v138.Container, v130.LeftPanePreset)) local v141 = entity:Add(v116.new({ LayoutOrder = 1, PaneSide = "LEFT" }, v140.ObjectHolder)) local v142 = entity:Add(v129.new(v138.Container, v130.RightPanePreset)) local v143 = entity:Add(v127.new({ LayoutOrder = 1, PaneSide = "RIGHT" }, v142.ObjectHolder)) local v144 = entity:Add(v127.new({ LayoutOrder = 2, PaneSide = "RIGHT" }, v142.ObjectHolder)) local v145 = entity:Add(v127.new({ LayoutOrder = 3, PaneSide = "RIGHT" }, v142.ObjectHolder)) local v146 = entity:Add(v129.new(v138.Container, v130.TopPanePreset)) local v147 = entity:Add(v127.new({ LayoutOrder = 1, PaneSide = "TOP" }, v146.ObjectHolder)) local v148 = entity:Add(v129.new(v138.Container, v130.BottomPanePreset)) return setmetatable({ _trove = entity, _centerPane = v138, _leftPane = v140, _rightPane = v142, _topPane = v146, _bottomPane = v148, _boundingBox = v139, _healthBar = v141, _deflecting = v143, _rank = v144, _winstreak = v145, _name = v147, _ammoBar = entity:Add(v116.new({ LayoutOrder = 1, PaneSide = "BOTTOM" }, v148.ObjectHolder)), _heldWeapon = entity:Add(v127.new({ LayoutOrder = v86[56], PaneSide = "BOTTOM" }, v148.ObjectHolder)), _distance = entity:Add(v127.new({ LayoutOrder = 3, PaneSide = "BOTTOM" }, v148.ObjectHolder)), _chams = entity:Add(v119.new(arg.AdornmentContainer)), _skeleton = entity:Add(v132.new(arg.Container)), _headMarker = entity:Add(v123.new(arg.Container)), _tracer = entity:Add(v134.new(arg.Container)), _boundingBoxActive = false, _healthBarActive = false, _deflectingActive = false, _rankActive = false, _winstreakActive = false, _nameActive = false, _ammoBarActive = v86[153], _heldWeaponActive = false, _distanceActive = false, _chamsActive = false, _skeletonActive = false, _headMarkerActive = v86[153], _tracerActive = false, _anyPaneActive = false, _anyIndependentActive = v86[153], }, index2) end index2.Refresh = function(I,W)I._boundingBoxActive= v118 .refresh(I._boundingBox,W);I._healthBarActive= v125 .refresh(I._healthBar,W);I._deflectingActive= v121 .refresh(I._deflecting,W);I._rankActive= v131 .refresh(I._rank,W);I._winstreakActive= v137 .refresh(I._winstreak,W);I._nameActive= v128 .refresh(I._name,W);I._ammoBarActive= v115 .refresh(I._ammoBar,W);I._heldWeaponActive= v126 .refresh(I._heldWeapon,W);I._distanceActive= v122 .refresh(I._distance,W);I._chamsActive= v120 .refresh(I._chams,W);I._skeletonActive= v133 .refresh(I._skeleton,W);I._headMarkerActive= v124 .refresh(I._headMarker,W);I._tracerActive= v135 .refresh(I._tracer,W);I._anyPaneActive=I._boundingBoxActive or I._healthBarActive or I._deflectingActive or I._rankActive or I._winstreakActive or I._nameActive or I._ammoBarActive or I._heldWeaponActive or I._distanceActive;I._anyIndependentActive=I._chamsActive or I._skeletonActive or I._headMarkerActive or I._tracerActive;end index2.AnyPaneActive = function(arg) return arg._anyPaneActive end index2.AnyIndependentActive = function(arg) return arg._anyIndependentActive end index2.UpdatePaneObjects = function(I,W)if I._boundingBoxActive then v118 .tick(I._boundingBox,W);end;if I._healthBarActive then v125 .tick(I._healthBar,W);end;if I._deflectingActive then v121 .tick(I._deflecting,W);end;if I._rankActive then v131 .tick(I._rank,W);end;if I._winstreakActive then v137 .tick(I._winstreak,W);end;if I._nameActive then v128 .tick(I._name,W);end;if I._ammoBarActive then v115 .tick(I._ammoBar,W);end;if I._heldWeaponActive then v126 .tick(I._heldWeapon,W);end;if I._distanceActive then v122 .tick(I._distance,W);end;end index2.UpdateIndependentObjects = function(I,W)if I._skeletonActive then v133 .tick(I._skeleton,W);end;if I._headMarkerActive then v124 .tick(I._headMarker,W);end;if I._tracerActive then v135 .tick(I._tracer,W);end;end index2.UpdateRect = function(arg, arg2, arg3) arg._centerPane:Update(arg2, arg3) end index2.SetPanesVisible = function(arg, arg2) arg._centerPane:SetVisible(arg2) end index2.SetSpacing = function(arg, arg2) arg._leftPane:SetSpacing(arg2.Left) arg._rightPane:SetSpacing(arg2.Right) arg._topPane:SetSpacing(arg2.Top) arg._bottomPane:SetSpacing(arg2.Bottom) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.ga = function() local ga = tbl17.cache.ga if not ga then ga = { c = fn35() } tbl17.cache.ga = ga end return ga.c end end do -- gb local function fn35() local v115 = tbl17.fV() return function(I,W,N,P,a)local e,c,E= v115 (I:GetPivot().Position);if E then I=N/1080/(c*W*2)*1000;local l,W_107=4*I*(P or 1),6.5*I*(a or 1);return Vector2.new(e.X-l/2,e.Y-W_107/2):Floor(),(Vector2.new(math.max(8,l),math.max(13,W_107)):Floor());else return nil,nil;end;end end tbl17.gb = function() local gb = tbl17.cache.gb if not gb then local gb2 = { c = fn35() } tbl17.cache.gb = gb2 gb = gb2 end return gb.c end end do -- gc local function fn35() tbl17.cr() local v115 = tbl17.bG() local v116 = tbl17.bI() local v117 = tbl17.fy() local v118 = tbl17.ga() local v119 = tbl17.fU() tbl17.a0() tbl17.cF() local v120 = tbl17.az() tbl17.e9() local v121 = tbl17.c4() tbl17.bL() local v122 = tbl17.k() tbl17.fB() local v123 = tbl17.gb() local v124 = cloneref(game:GetService("Workspace")) local function fn36() local settings = v115.Data.Esp.Settings return { TextCase = settings.TextCase, FlagTextCase = settings.FlagTextCase, TextSurround = settings.TextSurround, FlagTextSurround = settings.FlagTextSurround, Font = v120:Get(settings.Font), FlagFont = v120:Get(settings.FlagFont), FontSize = settings.FontSize, FlagFontSize = settings.FlagFontSize, DistanceScaling = settings.DistanceScaling, DistanceScalingRef = settings.DistanceScalingRef, } end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local controller = v122.new("esp.controller") local v125 = fn36() local tbl18 = { _trove = controller, _playerIdentities = arg2, _imageStorage = arg3, _espRoot = controller:Add(v119.new(v116.Esp)), _entryByEntity = {}, _hidden = true, _boundCamera = v124.CurrentCamera, _frame = { DeltaTime = v86[186], Clock = 0, HalfFovTan = 0, ViewportWidth = v86[186], ViewportHeight = 0, CameraPosition = Vector3.zero, CameraCFrame = CFrame.identity, }, _mainEnabled = v86[153], _enemyEnabled = false, _teamEnabled = false, _formatting = v125, _useDisplayName = v115.Data.Esp.Settings.UseDisplayName, _overrideRectSize = v115.Data.Esp.Settings.OverrideRectSize, _spacing = v115.Data.Esp.Settings.Spacing, _snapshot = { Enabled = false, FighterState = nil, AliveState = nil, PlayerSettings = nil, Formatting = v125, DisplayedName = "", }, _paneContext = { DeltaTime = 0, Clock = 0, FighterState = nil, AliveState = nil, Distance = 0, PlayerSettings = nil, Formatting = v125, }, _independentContext = { CullHeavyOperations = true, HalfFovTan = 0, ViewportHeight = 0 }, } setmetatable(tbl18, index2) controller:Connect(v124:GetPropertyChangedSignal("CurrentCamera"), function() tbl18._boundCamera = v124.CurrentCamera end) controller:Connect(v115:GetPropertyChangedSignal({ "Esp", "Settings" }), function() local v126 = fn36() tbl18._formatting = v126 tbl18._snapshot.Formatting = v126 tbl18._paneContext.Formatting = v126 tbl18._useDisplayName = v115.Data.Esp.Settings.UseDisplayName tbl18._overrideRectSize = v115.Data.Esp.Settings.OverrideRectSize tbl18._spacing = v115.Data.Esp.Settings.Spacing for _, v127 in tbl18._entryByEntity, nil, nil do v127.Esp:SetSpacing(tbl18._spacing) end tbl18:_MarkAllDirty() end) controller:Connect(v115:GetPropertyChangedSignal({ "Esp", "Main" }), function() tbl18:_MarkAllDirty() tbl18:_ReconcileCalculators() end) controller:Connect(v115:GetPropertyChangedSignal({ "Esp", "Enemy" }), function() tbl18:_MarkAllDirty() end) controller:Connect(v115:GetPropertyChangedSignal({ "Esp", "Team" }), function() tbl18:_MarkAllDirty() end) controller:Add(v121:ObserveEnabledKeybind({ "Esp", "Main" }, function(mainEnabled) tbl18._mainEnabled = mainEnabled tbl18:_MarkAllDirty() end)) controller:Add(v121:ObserveEnabledKeybind({ "Esp", "Enemy" }, function(enemyEnabled) tbl18._enemyEnabled = enemyEnabled tbl18:_MarkAllDirty() end)) controller:Add(v121:ObserveEnabledKeybind({ "Esp", "Team" }, function(teamEnabled) tbl18._teamEnabled = teamEnabled tbl18:_MarkAllDirty() end)) local function fn37(arg4) tbl18:_MarkPlayerDirty(arg4) end controller:Connect(arg2.IdentityRegistered, fn37) controller:Connect(arg2.IdentityChanged, fn37) controller:Add(arg:ObserveRemoteStates(function(arg4) tbl18:_AddEntity(arg4) end, function(arg4) tbl18:_RemoveEntity(arg4) end)) return tbl18 end index2._PrepareSnapshot = function(arg, fighterState, arg2) local esp = v115.Data.Esp local enemy, enemyEnabled if fighterState.IsEnemy then enemy = esp.Enemy enemyEnabled = arg._enemyEnabled else enemy = esp.Team enemyEnabled = arg._teamEnabled end enemyEnabled = arg._mainEnabled and enemyEnabled and fighterState.EnvironmentId ~= nil local presentedDisplay if arg._useDisplayName then presentedDisplay = arg._playerIdentities:GetPresentedDisplay(fighterState.Player) else presentedDisplay = arg._playerIdentities:GetPresented(fighterState.Player) end local snapshot = arg._snapshot snapshot.Enabled = enemyEnabled snapshot.FighterState = fighterState snapshot.AliveState = arg2.AliveState snapshot.PlayerSettings = enemy snapshot.DisplayedName = presentedDisplay arg2.PlayerSettings = enemy end index2._ComputeRect = function(arg, arg2, arg3, arg4) local aliveState = arg2.AliveState if aliveState == nil then return nil, nil end local calculator = arg2.Calculator if arg4 or calculator == nil then local overrideRectSize = arg._overrideRectSize if overrideRectSize.Enabled then return v123(aliveState.Model, arg3.HalfFovTan, arg3.ViewportHeight, overrideRectSize.Width, overrideRectSize.Height) end return v123(aliveState.Model, arg3.HalfFovTan, arg3.ViewportHeight) end return calculator:Compute(arg3.HalfFovTan, arg3.ViewportWidth, arg3.ViewportHeight, arg3.CameraCFrame:GetComponents()) end index2._EnsureCalculator = function(arg, arg2) local main = v115.Data.Esp.Main local calculator = arg2.Calculator if not main.Enabled or main.Mode == "Static" then if calculator == nil then return end arg2.Trove:Remove(calculator) arg2.Calculator = nil elseif main.Mode == "Dynamic" then if calculator ~= nil then return end local aliveState = arg2.AliveState if aliveState == nil then return end arg2.Calculator = arg2.Trove:Add(v117.new(aliveState.Model)) end end index2._ReconcileCalculators = function(arg) for _, v125 in arg._entryByEntity, nil, nil do arg:_EnsureCalculator(v125) end end index2._MarkPlayerDirty = function(arg, arg2) for k, v125 in arg._entryByEntity, nil, nil do if k.Player == arg2 then v125.Dirty = v86[34] return end end end index2._AddEntity = function(arg, arg2) if arg._entryByEntity[arg2] ~= nil then return end local v125 = arg._trove:Extend() local v126 = v125:Add(v118.new(arg._espRoot, arg._imageStorage)) v126:SetSpacing(arg._spacing) local tbl18 = { Esp = v126, AliveState = nil, Calculator = nil, PlayerSettings = v115.Data.Esp.Team, Trove = v125, Dirty = true, } arg._entryByEntity[arg2] = tbl18 local function fn37() tbl18.Dirty = true end local function fn38(aliveState) local calculator = tbl18.Calculator if calculator ~= nil then v125:Remove(calculator) tbl18.Calculator = nil end tbl18.AliveState = aliveState fn37() arg:_EnsureCalculator(tbl18) end local function fn39() local calculator = tbl18.Calculator if calculator ~= nil then v125:Remove(calculator) tbl18.Calculator = nil end tbl18.AliveState = nil fn37() end local character = arg2.Character v125:Connect(character.Created, fn38) v125:Connect(character.Died, fn39) local state = character.State if state.Alive then fn38(state) end v125:Connect(arg2.EnemyChanged, function() fn37() end) v125:Connect(arg2.EnvironmentIdChanged, function() fn37() end) v125:Connect(arg2.ItemObserver.ItemChanged, function() fn37() end) v125:Connect(arg2.Player:GetAttributeChangedSignal("StatisticDuelsWinStreak"), fn37) v125:Connect(arg2.Player:GetAttributeChangedSignal("DisplayELO"), fn37) end index2._RemoveEntity = function(arg, arg2) local v125 = arg._entryByEntity[arg2] if v125 == nil then return end arg._entryByEntity[arg2] = nil arg._trove:Remove(v125.Trove) end index2._MarkAllDirty = function(arg) for _, v125 in arg._entryByEntity, nil, nil do v125.Dirty = true end end index2._UpdateEntry = function(arg, fighterState, arg2) local esp = arg2.Esp if arg2.Dirty then arg:_PrepareSnapshot(fighterState, arg2) esp:Refresh(arg._snapshot) arg2.Dirty = false end local v125 = esp:AnyPaneActive() local v126 = esp:AnyIndependentActive() local flag19 = not v125 if flag19 and not v126 then esp:SetPanesVisible(false) return end local frame = arg._frame local aliveState = arg2.AliveState local n = 0 local cullHeavyOperations = true if aliveState ~= nil then local n33 = aliveState.RootPart.Position - frame.CameraPosition n = n33:Dot(n33) cullHeavyOperations = n > 160000 end if v126 then local independentContext = arg._independentContext independentContext.CullHeavyOperations = cullHeavyOperations esp:UpdateIndependentObjects(independentContext) end if flag19 then esp:SetPanesVisible(false) return end local v127, v128 = arg:_ComputeRect(arg2, frame, cullHeavyOperations) if v127 == nil or v128 == nil then esp:SetPanesVisible(false) return end esp:UpdateRect(v127, v128) local paneContext = arg._paneContext paneContext.FighterState = fighterState paneContext.AliveState = aliveState paneContext.Distance = math.sqrt(n) paneContext.PlayerSettings = arg2.PlayerSettings esp:UpdatePaneObjects(paneContext) esp:SetPanesVisible(v86[34]) end index2.Update = function(arg, deltaTime) local hidden = not arg._mainEnabled if hidden and arg._hidden then return end local boundCamera = arg._boundCamera local cFrame = boundCamera.CFrame local viewportSize = boundCamera.ViewportSize local frame = arg._frame frame.DeltaTime = deltaTime frame.Clock = os.clock() frame.HalfFovTan = math.tan(math.rad(boundCamera.FieldOfView) * 0.5) frame.ViewportWidth = viewportSize.X frame.ViewportHeight = viewportSize.Y frame.CameraPosition = cFrame.Position frame.CameraCFrame = cFrame local paneContext = arg._paneContext paneContext.DeltaTime = frame.DeltaTime paneContext.Clock = frame.Clock local independentContext = arg._independentContext independentContext.HalfFovTan = frame.HalfFovTan independentContext.ViewportHeight = frame.ViewportHeight for k, v125 in arg._entryByEntity, nil, nil do arg:_UpdateEntry(k, v125) end arg._hidden = hidden end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.gc = function() local gc = tbl17.cache.gc if not gc then gc = { c = fn35() } tbl17.cache.gc = gc end return gc.c end end do -- gd local function fn35() local v115 = tbl17.cN() local v116 = tbl17.bG() tbl17.cF() tbl17.dm() tbl17.cX() local v117 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local extendMeleeRange = v117.new("extend_melee_range") local tbl18 = { _trove = extendMeleeRange, _playerContext = arg, _fighters = arg2, _inputBinding = arg3 } setmetatable(tbl18, index2) arg3:SetHandler(function(arg4) tbl18:_HandleInput(arg4) end) local function fn36() arg3:SetEnabled(v116.Data.ItemModifiers.ExtendMeleeRange.Enabled) end extendMeleeRange:Connect(v116:GetPropertyChangedSignal({ "ItemModifiers", "ExtendMeleeRange", v86[44] }), fn36) fn36() return tbl18 end index2._HandleInput = function(arg, arg2) if arg2.Type ~= "StartShooting" and arg2.Type ~= "StartAiming" then return end local inner = arg._playerContext.Inner if inner == nil then return end local v118 = inner.ItemBehaviors:FindByObjectId(arg2.ObjectId) if v118 == nil or v118.__type ~= "Melee" then return end local v119 = arg2.Args["\1"] if type(v119) ~= "table" then return end local v120 = v115.decode(v119["\0"]) if v120 == nil then return end local v121 = arg:_FindClosestEnemy(v120.Position, v116.Data.ItemModifiers.ExtendMeleeRange.Range) if v121 == nil then return end local v122 = v115.encode(CFrame.new(v121.Position) * CFrame.fromOrientation(-1.5707963267948966, 0, 0)) v119["\0"] = v122 v119["\1"] = v122 end index2._FindClosestEnemy = function(arg, arg2, arg3) local huge = math.huge local v118 = nil for _, v119 in arg._fighters.EnemyByPlayer, nil, nil do local state = v119.Character.State if state.Alive then local rootPart = state.RootPart local magnitude = (rootPart.Position - arg2).Magnitude if magnitude < arg3 and magnitude < huge then huge = magnitude v118 = rootPart end end end return v118 end index2.Destroy = function(arg) arg._trove:Destroy() arg._inputBinding:Destroy() end return index2 end tbl17.gd = function() local gd = tbl17.cache.gd if not gd then gd = { c = fn35() } tbl17.cache.gd = gd end return gd.c end end do -- ge local function fn35() tbl17.aM() tbl17.cX() local v115 = tbl17.g() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { Acquired = v115.new() } local function fn36(arg2) local v116 = v102(getmetatable(arg2.FighterState.Inner), "__index") if v116 == nil then return end tbl18.Prototype = v116 tbl18.Acquired:Fire(v116) end local inner = arg.Inner if inner ~= nil then fn36(inner) else tbl18._contextAddedConnection = arg.ContextAdded:Once(fn36) end setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) arg.Acquired:Destroy() local contextAddedConnection = arg._contextAddedConnection if contextAddedConnection ~= nil then contextAddedConnection:Disconnect() end end return index2 end tbl17.ge = function() local ge = tbl17.cache.ge if not ge then ge = { c = fn35() } tbl17.cache.ge = ge end return ge.c end end do -- gf local function fn35() local v115 = tbl17.k() local v116 = cloneref(game:GetService("HttpService")) local v117 = cloneref(game:GetService("RunService")) local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _trove = v115.new("GameLoop"), _preCameraRender = nil, _preRender = nil, _preSimulation = nil, _heartbeat = nil, }, index2) end index2.Destroy = function(arg) arg._trove:Destroy() end index2.SetPreCameraRender = function(arg, preCameraRender) arg._preCameraRender = preCameraRender end index2.SetPreRender = function(arg, preRender) arg._preRender = preRender end index2.SetPreSimulation = function(arg, preSimulation) arg._preSimulation = preSimulation end index2.SetHeartbeat = function(arg, heartbeat) arg._heartbeat = heartbeat end index2.Start = function(arg) local preCameraRender = arg._preCameraRender if preCameraRender ~= nil then local v118 = v116:GenerateGUID() v117:BindToRenderStep(v118, Enum.RenderPriority.Camera.Value - v86[63], preCameraRender) arg._trove:Add(function() v117:UnbindFromRenderStep(v118) end) end local preRender = arg._preRender if preRender ~= nil then arg._trove:Connect(v117.PreRender, preRender) end local preSimulation = arg._preSimulation if preSimulation ~= nil then arg._trove:Connect(v117.PreSimulation, preSimulation) end local heartbeat = arg._heartbeat if heartbeat ~= nil then arg._trove:Connect(v117.Heartbeat, heartbeat) end end return index2 end tbl17.gf = function() local gf = tbl17.cache.gf if not gf then local gf2 = { c = fn35() } tbl17.cache.gf = gf2 gf = gf2 end return gf.c end end do -- gg local function fn35() local v115 = tbl17.bG() tbl17.cF() local v116 = tbl17.aB() tbl17.bM() local v117 = tbl17.k() local function fn36(arg) local tau = math.tau return arg:GetCameraRotation().X > tau end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local hackerDetector = v115.Data.HackerDetector local tbl18 = { _trove = v117.new("hacker_detector"), _fighters = arg, _playerTags = arg2, _isEnabled = hackerDetector.Enabled, _shouldNotify = hackerDetector.Notify, _color = hackerDetector.Color, _speedTimerByPlayer = {}, _notifiedStateSet = {}, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Connect(arg._fighters.RemoteStateRemoved, function(arg2) arg._notifiedStateSet[arg2] = nil arg._speedTimerByPlayer[arg2] = nil end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "HackerDetector", "Enabled" }), function(isEnabled) arg._isEnabled = isEnabled end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "HackerDetector", "Notify" }), function(shouldNotify) arg._shouldNotify = shouldNotify if shouldNotify then arg:_BackfillNotifications() end end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "HackerDetector", "Color" }), function(color) arg._color = color end) end index2.Update = function(l,I)if not l._isEnabled then return;end;for W,W_108 in l._fighters.StateByPlayer,nil,nil do if l._notifiedStateSet[W_108]then continue;end;if l:_IsHacking(W_108,I)then l:_ClassifyHacker(W_108);end;end;end index2._ClassifyHacker = function(arg, arg2) if not arg._playerTags:Add(arg2.Player, "Hacker") then return end if arg._shouldNotify then arg:_NotifyHacker(arg2) end end index2._BackfillNotifications = function(arg) for _, v118 in arg._playerTags:GetPlayersWith("Hacker") do local v119 = arg._fighters.StateByPlayer[v118] if v119 ~= nil and not arg._notifiedStateSet[v119] then arg:_NotifyHacker(v119) end end end index2._NotifyHacker = function(arg, arg2) arg._notifiedStateSet[arg2] = true local player = arg2.Player local displayName = player.DisplayName or player.Name v116.get():Notify({ { Text = displayName, Accent = true }, { Text = " is hacking" } }, { Color = arg._color }) end index2._IsHacking = function(arg, arg2, arg3) return fn36(arg2) or arg:_IsMovingTooFast(arg2, arg3) end index2._IsMovingTooFast = function(arg, arg2, arg3) local state = arg2.Character.State if not state.Alive then arg._speedTimerByPlayer[arg2] = 0 return false end if state.Velocity.Magnitude <= 200 then arg._speedTimerByPlayer[arg2] = 0 return false end local n = (arg._speedTimerByPlayer[arg2] or v86[186]) + arg3 arg._speedTimerByPlayer[arg2] = n return n > 0.25 end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.gg = function() local gg = tbl17.cache.gg if not gg then local gg2 = { c = fn35() } tbl17.cache.gg = gg2 gg = gg2 end return gg.c end end do -- gh local function fn35() local fn36 = nil fn36 = function(arg, arg2, arg3) for k, v115 in debug.getconstants(arg) do if v115 == arg2 then return k, arg end end if arg3 then for _, v115 in debug.getprotos(arg) do local v116, v117 = fn36(v115, arg2, true) if v116 ~= nil then return v116, v117 end end end return nil, nil end return fn36 end tbl17.gh = function() local gh = tbl17.cache.gh if not gh then local gh2 = { c = fn35() } tbl17.cache.gh = gh2 gh = gh2 end return gh.c end end do -- gi local function fn35() local v115 = tbl17.a() local v116 = tbl17.gh() local index2 = {} index2.__index = index2 local function fn36(arg) local routine = arg.Routine if routine ~= nil then return routine end local holder = arg.Holder local name = arg.Name if holder == nil or name == nil then return nil end local v117 = v102(holder, name) if type(v117) ~= "function" then return nil end return v117 end local function fn37(arg) local name = arg.Name if name ~= nil then return name end local routine = arg.Routine if routine == nil then return "?" end return debug.info(routine, "s") end index2.new = function(arg) return setmetatable({ _sources = arg, _restores = {} }, index2) end index2.Initialize = function(arg) local sources = arg._sources local v117 = table.create(#sources) for _, v118 in sources, nil, nil do local v119 = fn36(v118) if v119 == nil then return v115.err("ConstantReplacer", "Initialize", string.format("Failed to find '%s'", tostring(fn37(v118)))) end table.insert(v117, { Method = v119, Source = v118 }) end local restores = arg._restores for _, v118 in v117, nil, nil do local source = v118.Source local v119, v120 = v116(v118.Method, source.Target, source.ShouldRecurse) if v119 == nil or v120 == nil then for _, v121 in restores, nil, nil do debug.setconstant(v121.Method, v121.Index, v121.Constant) end return v115.err("ConstantReplacer", "Initialize", string.format("Failed to find constant in '%s'", tostring(fn37(source)))) end debug.setconstant(v120, v119, source.New) table.insert(restores, { Method = v120, Index = v119, Constant = source.Target }) end return v115.VoidOk end index2.Destroy = function(arg) for _, v117 in arg._restores, nil, nil do debug.setconstant(v117.Method, v117.Index, v117.Constant) end end return index2 end tbl17.gi = function() local gi = tbl17.cache.gi if not gi then local gi2 = { c = fn35() } tbl17.cache.gi = gi2 gi = gi2 end return gi.c end end do -- gj local function fn35() local v115 = tbl17.gi() tbl17.aO() local v116 = tbl17.a() local clientViewModel = tbl17.aS().ClientViewModel local viewModelAnimator = tbl17.aS().ViewModelAnimator local tbl18 = { Play = function() end, Stop = function() end, } local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _disabledSprint = false, _disabledShoot = false, _disabledEquip = false, _disabledReload = false }, index2) end index2.SetSprintDisabled = function(arg, disabledSprint) arg._disabledSprint = disabledSprint return arg:_Load() end index2.SetShootDisabled = function(arg, disabledShoot) arg._disabledShoot = disabledShoot return arg:_Load() end index2.SetEquipDisabled = function(arg, disabledEquip) arg._disabledEquip = disabledEquip return arg:_Load() end index2.SetReloadDisabled = function(arg, disabledReload) arg._disabledReload = disabledReload return arg:_Load() end index2._ShouldSuppress = function(arg, arg2, arg3) if arg._disabledSprint and arg3 == v102(arg2, "_sprint_animation") then return true end if arg._disabledEquip and arg3 == v102(arg2, "_equip_animation") then return v86[34] end if arg._disabledShoot and (string.find(arg3, "Shoot", 1, true) ~= nil or arg3 == "QuickShot") then return true end if arg._disabledReload and string.find(arg3, "Reload", 1, v86[34]) ~= nil then return true end return false end index2._Load = function(arg) if arg._callRedirect ~= nil then return v116.VoidOk end local playAnimation = v102(viewModelAnimator, "PlayAnimation") if playAnimation == nil then return v116.err("AnimationDisabler", "function_lookup", "Failed to find PlayAnimation") end local function fn36(arg2, arg3, ...) local v117 = v102(arg2, "_animation_tracks") local v118 = v117[arg3] if v118 == nil then return end v117[arg3] = tbl18 local v119, v120 = v107(playAnimation, arg2, arg3, ...) v117[arg3] = v118 if not v119 then error(v120, v86[186]) end end local v117 = v115.new({ { Holder = viewModelAnimator, Name = "PlayIdleAnimation", Target = "PlayAnimation", New = "\0)|b_TSODb35" }, { Holder = viewModelAnimator, Name = "PlayEquipAnimation", Target = "PlayAnimation", New = "\0)|b_TSODb35" }, { Holder = viewModelAnimator, Name = "PlaySprintAnimation", Target = "PlayAnimation", New = "\0)|b_TSODb35" }, { Holder = viewModelAnimator, Name = "Inspect", Target = "PlayAnimation", New = "\0)|b_TSODb35" }, { Holder = clientViewModel, Name = "PlayAnimation", Target = "PlayAnimation", New = "\0)|b_TSODb35" }, }) local v118 = v117:Initialize() if not v118.Ok then return v118 end v103(viewModelAnimator, "\0)|b_TSODb35", function(arg2, arg3, ...) if not v102(v102(v102(v102(arg2, "ClientViewModel"), "ClientItem"), "ClientFighter"), "IsLocalPlayer") then return coroutine.wrap(playAnimation)(arg2, arg3, ...) end if arg:_ShouldSuppress(arg2, arg3) then local v119 = table.pack(...) local v120 = fn36 v119.n = 3 + v119.n - 1 table.move(v119, 1, v119.n, 3, v119) v119[1] = arg2 v119[2] = arg3 return v120(table.unpack(v119, 1, v119.n)) end return coroutine.wrap(playAnimation)(arg2, arg3, ...) end) arg._callRedirect = v117 return v116.VoidOk end index2._Revert = function(arg) local callRedirect = arg._callRedirect if callRedirect == nil then return end arg._callRedirect = nil callRedirect:Destroy() v103(viewModelAnimator, "\0)|b_TSODb35", nil) end index2.Destroy = function(arg) arg:_Revert() end return index2 end tbl17.gj = function() local gj = tbl17.cache.gj if not gj then local gj2 = { c = fn35() } tbl17.cache.gj = gj2 gj = gj2 end return gj.c end end do -- gk local function fn35() local v115 = tbl17.a() local cameraController = tbl17.aS().CameraController local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _disabled = v86[153] }, index2) end index2.SetDisabled = function(arg, disabled) arg._disabled = disabled if disabled then return arg:_ApplyPatch() end arg:_RevertPatch() return v115.VoidOk end index2._ApplyPatch = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v116 = getmetatable(cameraController) if v116 == nil then return v115.err("CameraShakeDisabler", "prototype", "CameraController metatable not found") end local v117 = v102(v116, "__index") if v117 == nil then return v115.err("CameraShakeDisabler", "prototype", "Prototype not found") end local shakeOnce = v102(v117, "ShakeOnce") if shakeOnce == nil then return v115.err("CameraShakeDisabler", "function_lookup", "ShakeOnce method not found") end local shake = v102(v117, "Shake") if shake == nil then return v115.err("CameraShakeDisabler", "function_lookup", "Shake method not found") end local restore = {} for k, v118 in { ShakeOnce = shakeOnce, Shake = shake }, nil, nil do local v119 = nil for k2, v120 in debug.getconstants(v118) do if v120 == "_camera_shaker" then v119 = k2 break else v119 = nil end end if v119 == nil then return v115.err("CameraShakeDisabler", "constant_lookup", string.format("Failed to find _camera_shaker constant in %s", tostring(k))) end table.insert(restore, { Method = v118, Index = v119, Constant = "_camera_shaker" }) end v103(cameraController, "_camera_shaker\0mrrp", { ShakeOnce = function() end, Shake = function() end, }) for _, v118 in restore, nil, nil do debug.setconstant(v118.Method, v118.Index, "_camera_shaker\0mrrp") end arg._restore = restore return v115.VoidOk end index2._RevertPatch = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil v103(cameraController, "_camera_shaker\0mrrp", nil) for _, v116 in restore, nil, nil do debug.setconstant(v116.Method, v116.Index, v116.Constant) end end index2.Destroy = function(arg) arg:_RevertPatch() end return index2 end tbl17.gk = function() local gk = tbl17.cache.gk if not gk then gk = { c = fn35() } tbl17.cache.gk = gk end return gk.c end end do -- gl local function fn35() local v115 = tbl17.a() local cameraController = tbl17.aS().CameraController tbl17.ad() tbl17.ge() tbl17.g() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _errorReporter = arg2, _clientFighter = arg, _disabled = v86[153] } setmetatable(tbl18, index2) return tbl18 end index2.SetDisabled = function(arg, disabled) arg._disabled = disabled if disabled then arg:_SetupPatch() else arg:_RevertPatch() end end index2._SetupPatch = function(arg) if arg._restore ~= nil then return end local prototype = arg._clientFighter.Prototype if prototype ~= nil then local v116 = arg:_ApplyPatch(prototype) arg._errorReporter:ReportResult(v116) if v116.Ok then arg._restore = v116.Value end else arg._restore = { Stage = "Awaiting", Connection = arg._clientFighter.Acquired:Once(function(arg2) local v116 = arg:_ApplyPatch(arg2) arg._errorReporter:ReportResult(v116) if v116.Ok then arg._restore = v116.Value else arg._restore = nil end end), } end end index2._ApplyPatch = function(arg, arg2) local getCameraSway = v102(arg2, "GetCameraSway") if getCameraSway == nil then return v115.err("CameraSwayDisabler", "function_lookup", "Failed to find GetCameraSway in prototype") end for _, v116 in debug.getupvalues(getCameraSway) do if type(v116) ~= "table" then continue end for k, v117 in v116, nil, nil do if v117 ~= cameraController then continue end v116[k] = setmetatable({ GetPublicState = function() return "ThirdPerson" end }, { __index = v117 }) return v115.ok({ Stage = "Applied", Container = v116, Index = k, Original = v117 }) end end return v115.err("CameraSwayDisabler", "upvalue_scan", "Failed to find CameraController upvalue") end index2._RevertPatch = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil if restore.Stage == "Awaiting" then restore.Connection:Disconnect() else restore.Container[restore.Index] = restore.Original end end index2.Destroy = function(arg) arg:_RevertPatch() end return index2 end tbl17.gl = function() local gl = tbl17.cache.gl if not gl then gl = { c = fn35() } tbl17.cache.gl = gl end return gl.c end end do -- gm local function fn35() tbl17.aO() tbl17.cX() local v115 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _trove = v115.new("item_modifiers.EquipCooldownModifier"), _playerContext = arg, _isInitialized = false, _aim = { Enabled = v86[153], Percentage = 0 }, _hookRestoreByItem = {}, }, index2) end index2.SetAimEnabled = function(arg, enabled) arg._aim.Enabled = enabled if enabled then arg:_Initialize() end end index2.SetAimPercentage = function(arg, percentage) arg._aim.Percentage = percentage end index2._Initialize = function(arg) if arg._isInitialized then return end arg._isInitialized = true arg._trove:Add(arg._playerContext:ObserveContext("EquipCooldownModifier", function(arg2, arg3) local fighterState = arg2.FighterState arg3:Add(fighterState:OnItemAddedSignal(function(arg4) arg:_HookEquipCooldown(arg4) end)) arg3:Add(fighterState:OnItemRemovedSignal(function(arg4) arg._hookRestoreByItem[arg4] = nil end)) local v116 = next local items, v117 = fighterState:GetItems() for _, v118 in v116, items, v117 do arg:_HookEquipCooldown(v118) end end)) arg._trove:Connect(arg._playerContext.ContextRemoved, function() arg:_RevertAllHooks() table.clear(arg._hookRestoreByItem) end) end index2._HookEquipCooldown = function(arg, arg2) if arg._hookRestoreByItem[arg2] ~= nil then return end local v116 = getmetatable(arg2) local v117 = v102(v116, "__index") local tbl18 = { EquipCooldown = v102(arg2, "_equip_cooldown"), OldMetatable = v116 } arg._hookRestoreByItem[arg2] = tbl18 local equipCooldown = tbl18.EquipCooldown setmetatable(arg2, { __index = function(arg3, arg4) if arg4 == "_equip_cooldown" then local v118 = debug.info(3, "n") if arg._aim.Enabled and v118 == "StartAiming" then return equipCooldown end return tbl18.EquipCooldown end return v117[arg4] end, __newindex = function(arg3, arg4, equipCooldown2) if arg4 == "_equip_cooldown" then local now2 = tick() equipCooldown = now2 + (equipCooldown2 - now2) * arg._aim.Percentage tbl18.EquipCooldown = equipCooldown2 return end v103(arg3, arg4, equipCooldown2) end, }) v103(arg2, "_equip_cooldown", nil) end index2._RevertAllHooks = function(arg) for k, v116 in arg._hookRestoreByItem, nil, nil do setmetatable(k, v116.OldMetatable) v103(k, "_equip_cooldown", v116.EquipCooldown) end end index2.Destroy = function(arg) arg:_RevertAllHooks() arg._trove:Destroy() end return index2 end tbl17.gm = function() local gm = tbl17.cache.gm if not gm then local gm2 = { c = fn35() } tbl17.cache.gm = gm2 gm = gm2 end return gm.c end end do -- gn local function fn35() local v115 = tbl17.gi() tbl17.dm() tbl17.aO() tbl17.cX() local v116 = tbl17.a() local tbl18 = { { Holder = tbl17.aS().Throwable, Name = "_StartThrow", Target = "_cook_detonate_delay", New = "\0", }, } local function fn36(arg) local v117 = v102(arg, "_last_args") local n = v117[4] or 0.05 local huge = v117[v86[54]] or math.huge local cFrame = v102(arg, "_impact_sphere").CFrame for k, v118 in v102(arg, "_segments") do if v118.CFrame == cFrame then return math.min(huge, (k - 2) * n) end end return nil end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl19 = { _inputBinding = arg, _playerContext = arg2, _enabled = v86[153], _explodeOn = "Impact", _removeFuse = false, _trajectoryVisual = nil, _removeFuseReplacer = nil, } setmetatable(tbl19, index2) arg:SetHandler(function(arg3) tbl19:_HandleInput(arg3) end) return tbl19 end index2.SetEnabled = function(arg, enabled) arg._enabled = enabled arg._inputBinding:SetEnabled(enabled) return v116.VoidOk end index2.SetExplodeOn = function(arg, explodeOn) arg._explodeOn = explodeOn end index2.SetRemoveFuse = function(arg, removeFuse) arg._removeFuse = removeFuse if not removeFuse then local removeFuseReplacer = arg._removeFuseReplacer if removeFuseReplacer then removeFuseReplacer:Destroy() arg._removeFuseReplacer = nil end return v116.VoidOk end if arg._removeFuseReplacer ~= nil then return v116.VoidOk end local v117 = v115.new(tbl18) local v118 = v117:Initialize() if v118.Ok then arg._removeFuseReplacer = v117 end return v118 end index2._HandleInput = function(arg, arg2) local type_ = arg2.Type local flag19 = type_ == "StartShooting" or type_ == "StartAiming" if not flag19 and not (type_ == "FinishShooting" or type_ == "FinishAiming") then return end local inner = arg._playerContext.Inner if inner == nil then return end local v117 = inner.ItemBehaviors:FindByObjectId(arg2.ObjectId) if v117 == nil or v117.__type ~= "Throwable" then return end if not v102(v102(v117, "Info"), "CanCook") then return end if flag19 then arg._trajectoryVisual = v102(v117, "_trajectory_visual") if arg._removeFuse then v103(v117, "_cook_detonate_delay", nil) end return end if arg._explodeOn == "Throw" then arg2.Args["\3"] = 0 else local trajectoryVisual = arg._trajectoryVisual arg2.Args["\3"] = trajectoryVisual and fn36(trajectoryVisual) end arg._trajectoryVisual = nil end index2.Destroy = function(arg) if arg._removeFuseReplacer ~= nil then arg._removeFuseReplacer:Destroy() end arg._trajectoryVisual = nil arg._inputBinding:Destroy() end return index2 end tbl17.gn = function() local gn = tbl17.cache.gn if not gn then local gn2 = { c = fn35() } tbl17.cache.gn = gn2 gn = gn2 end return gn.c end end do -- go local function fn35() tbl17.aO() tbl17.cw() tbl17.cX() local v115 = tbl17.k() local v116 = tbl17.d() local handlers = { MaxDoubleJumps = function(arg, arg2, arg3) if arg3 == nil then local maxDoubleJumps = v102(arg, "MaxDoubleJumps") v103(arg2, "MaxDoubleJumps", maxDoubleJumps) return end v103(arg2, "MaxDoubleJumps", arg3.Count) end, MeleeCooldown = function(arg, arg2, arg3) local attackCooldown = v102(arg, "AttackCooldown") if attackCooldown == nil then return end if arg3 == nil then v103(arg2, "AttackCooldown", attackCooldown) return end v103(arg2, "AttackCooldown", attackCooldown * arg3.Percentage) end, DashCooldown = function(arg, arg2, arg3) local dashCooldown = v102(arg, "DashCooldown") if dashCooldown == nil then return end if arg3 == nil then v103(arg2, "DashCooldown", dashCooldown) return end v103(arg2, "DashCooldown", dashCooldown * arg3.Percentage) end, AimSpeed = function(arg, arg2, arg3) local aimSpeed = v102(arg, "AimSpeed") if aimSpeed == nil then return end if arg3 == nil then v103(arg2, "AimSpeed", aimSpeed) return end v103(arg2, "AimSpeed", aimSpeed * arg3.Percentage) end, FireCooldown = function(arg, arg2, arg3) local shootCooldown = v102(arg, "ShootCooldown") if shootCooldown == nil then return end if arg3 == nil then v103(arg2, "ShootCooldown", shootCooldown) return end v103(arg2, "ShootCooldown", shootCooldown * arg3.Percentage) end, AutomaticWeapon = function(arg, arg2, arg3) local inputSpammingEnabled = v102(arg, "InputSpammingEnabled") if inputSpammingEnabled == nil then return end if arg3 == nil then v103(arg2, "InputSpammingEnabled", inputSpammingEnabled) return end local v117 = table.clone(inputSpammingEnabled) v117.StartShooting = 0 v117.StartReloading = 0 v103(arg2, "InputSpammingEnabled", v117) end, ShootRecoil = function(arg, arg2, arg3) local shootRecoil = v102(arg, "ShootRecoil") if shootRecoil == nil then return end if arg3 == nil then v103(arg2, "ShootRecoil", shootRecoil) return end v103(arg2, "ShootRecoil", shootRecoil * arg3.Percentage) end, } local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v115.new("item_modifiers.InfoModifier"), _playerContext = arg, _oldInfoByItem = {}, _changes = {}, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2.SetChange = function(arg, arg2, arg3) if arg._changes[arg2] == arg3 then return end arg._changes[arg2] = arg3 arg:_ApplyNewChangesToAllItems(arg2) end index2._Initialize = function(arg) arg._trove:Add(arg._playerContext:ObserveContext("InfoModifier", function(arg2, arg3) local fighterState = arg2.FighterState arg._fighterState = fighterState arg3:Add(fighterState:OnItemAddedSignal(function(arg4) arg:_StoreItemInfo(arg4) arg:_ApplyNewChanges(arg4) end)) arg3:Add(fighterState:OnItemRemovedSignal(function(arg4) arg:_RemoveItemInfo(arg4) end)) local v117 = next local items, v118 = fighterState:GetItems() for _, v119 in v117, items, v118 do arg:_StoreItemInfo(v119) arg:_ApplyNewChanges(v119) end end)) arg._trove:Connect(arg._playerContext.ContextRemoved, function() arg:_RestoreAllItems() table.clear(arg._oldInfoByItem) arg._fighterState = nil end) end index2._StoreItemInfo = function(arg, arg2) if arg._oldInfoByItem[arg2] ~= nil then return end local info2 = v102(arg2, "Info") if info2 == nil then return end arg._oldInfoByItem[arg2] = v116(info2) end index2._RemoveItemInfo = function(arg, arg2) arg:_RestoreItem(arg2) arg._oldInfoByItem[arg2] = nil end index2._ApplyNewChanges = function(arg, arg2, arg3) local info2 = v102(arg2, "Info") if info2 == nil then return end local v117 = arg._oldInfoByItem[arg2] if v117 == nil then return end if arg3 ~= nil then handlers[arg3](v117, info2, arg._changes[arg3]) else for k, v118 in arg._changes, nil, nil do handlers[k](v117, info2, v118) end end end index2._RestoreItem = function(arg, arg2) local info2 = v102(arg2, "Info") if info2 == nil then return end local v117 = arg._oldInfoByItem[arg2] if v117 == nil then return end for k in arg._changes, nil, nil do handlers[k](v117, info2, nil) end end index2._RestoreAllItems = function(arg) local fighterState = arg._fighterState if fighterState == nil then return end local v117 = next local items, v118 = fighterState:GetItems() for _, v119 in v117, items, v118 do arg:_RestoreItem(v119) end end index2._ApplyNewChangesToAllItems = function(arg, arg2) local fighterState = arg._fighterState if fighterState == nil then return end local v117 = next local items, v118 = fighterState:GetItems() for _, v119 in v117, items, v118 do arg:_ApplyNewChanges(v119, arg2) end end index2.Destroy = function(arg) arg:_RestoreAllItems() arg._trove:Destroy() end return index2 end tbl17.go = function() local go = tbl17.cache.go if not go then local go2 = { c = fn35() } tbl17.cache.go = go2 go = go2 end return go.c end end do -- gp local function fn35() tbl17.aO() tbl17.cw() tbl17.cX() local v115 = tbl17.k() local v116 = tbl17.ez() local tbl18 = { _sliding_spring = 0, _sprinting_spring = 0, _bobbing_speed_spring = v86[186], _bobbing_value_spring = Vector2.zero, _landing_spring = 0, _jump_spring = v86[186], _tilt_spring = Vector2.zero, _impulse_position_spring = Vector3.zero, _recoil_spring = Vector3.zero, _unrecoil_spring = Vector3.zero, } local function fn36(arg) local viewModel = v102(arg, "ViewModel") if viewModel == nil then return end for k, v117 in next, tbl18, nil do v103(v102(viewModel, k), "Value", v117) end end local function fn37(arg) local viewModel = v102(arg, "ViewModel") if viewModel == nil then return end for k in next, tbl18, nil do v103(v102(viewModel, k), "Value", nil) end end local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl19 = { _trove = v115.new("item_modifiers.MotionDisabler"), _playerContext = arg, _disabled = v86[153], _disabledItemSet = {}, } setmetatable(tbl19, index2) tbl19:_Initialize() return tbl19 end index2.SetMotionDisabled = function(arg, disabled) arg._disabled = disabled local fighterState = arg._fighterState if fighterState == nil then return end local v117 = next local items, v118 = fighterState:GetItems() for _, v119 in v117, items, v118 do arg:_UpdateItemMotion(v119) end end index2._Initialize = function(arg) arg._trove:Add(arg._playerContext:ObserveContext("MotionDisabler", function(arg2, arg3) local fighterState = arg2.FighterState arg._fighterState = fighterState arg3:Add(fighterState:OnItemAddedSignal(function(arg4) arg:_UpdateItemMotion(arg4) end)) arg3:Add(fighterState:OnItemRemovedSignal(function(arg4) arg._disabledItemSet[arg4] = nil end)) local v117 = next local items, v118 = fighterState:GetItems() for _, v119 in v117, items, v118 do arg:_UpdateItemMotion(v119) end end)) arg._trove:Connect(arg._playerContext.ContextRemoved, function() arg:_RevertItemMotion() table.clear(arg._disabledItemSet) arg._fighterState = nil end) arg._trove:Connect(v116.Rebuilt, function(arg2) arg._disabledItemSet[arg2] = nil arg:_UpdateItemMotion(arg2) end) end index2._UpdateItemMotion = function(arg, arg2) local v117 = arg._disabledItemSet[arg2] if arg._disabled then if not v117 then fn36(arg2) arg._disabledItemSet[arg2] = true end elseif v117 then fn37(arg2) arg._disabledItemSet[arg2] = nil end end index2._RevertItemMotion = function(arg) for k, v117 in next, arg._disabledItemSet, nil do if v117 then fn37(k) end end end index2.Destroy = function(arg) arg:_RevertItemMotion() arg._trove:Destroy() end return index2 end tbl17.gp = function() local gp = tbl17.cache.gp if not gp then gp = { c = fn35() } tbl17.cache.gp = gp end return gp.c end end do -- gq local function fn35() tbl17.dm() tbl17.cX() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _inputBinding = arg, _playerContext = arg2 } setmetatable(tbl18, index2) arg:SetHandler(function(arg3) tbl18:_HandleInput(arg3) end) return tbl18 end index2.SetEnabled = function(arg, arg2) arg._inputBinding:SetEnabled(arg2) end index2._HandleInput = function(arg, arg2) if arg2.Type ~= "StartShooting" then return end local inner = arg._playerContext.Inner if inner == nil then return end local v115 = inner.ItemBehaviors:FindByObjectId(arg2.ObjectId) if v115 == nil or v115.__type ~= "Gun" then return end arg2.Args["\2"] = true end index2.Destroy = function(arg) arg._inputBinding:Destroy() end return index2 end tbl17.gq = function() local gq = tbl17.cache.gq if not gq then gq = { c = fn35() } tbl17.cache.gq = gq end return gq.c end end do -- gr local function fn35() local v115 = tbl17.gj() local v116 = tbl17.gk() local v117 = tbl17.gl() local v118 = tbl17.bG() local v119 = tbl17.gm() local v120 = tbl17.ad() tbl17.ge() local v121 = tbl17.gn() local v122 = tbl17.go() tbl17.dm() local v123 = tbl17.gp() local v124 = tbl17.gq() tbl17.cX() local v125 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local itemModifiers = v125.new("item_modifiers") local v126 = itemModifiers:Add(v120.new()) local tbl18 = { _trove = itemModifiers, _motionDisabler = itemModifiers:Add(v123.new(arg)), _animationDisabler = itemModifiers:Add(v115.new()), _infoModifier = itemModifiers:Add(v122.new(arg)), _equipCooldownModifier = itemModifiers:Add(v119.new(arg)), _cameraShakeDisabler = itemModifiers:Add(v116.new()), _cameraSwayDisabler = itemModifiers:Add(v117.new(arg2, v126)), _noSpread = itemModifiers:Add(v124.new(arg3:Reserve(), arg)), _grenadeFuse = itemModifiers:Add(v121.new(arg3:Reserve(), arg)), } setmetatable(tbl18, index2) tbl18:_SetupMotionDisabler(itemModifiers) tbl18:_SetupCameraShakeDisabler(itemModifiers, v126) tbl18:_SetupCameraSwayDisabler(itemModifiers, v126) tbl18:_SetupNoSpread(itemModifiers) tbl18:_SetupWeaponEngine(itemModifiers) tbl18:_SetupAimCooldown(itemModifiers) tbl18:_SetupAnimationDisabler(itemModifiers, v126) tbl18:_SetupInfoModifier(itemModifiers) tbl18:_SetupGrenadeFuse(itemModifiers, v126) return tbl18 end index2._SetupMotionDisabler = function(arg, arg2) local function fn36() arg._motionDisabler:SetMotionDisabled(v118.Data.ItemModifiers.NoMotion) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoMotion" }), fn36) fn36() end index2._SetupCameraShakeDisabler = function(arg, arg2, arg3) local function fn36() arg3:ReportResult(arg._cameraShakeDisabler:SetDisabled(v118.Data.ItemModifiers.NoCameraShake)) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoCameraShake" }), fn36) fn36() end index2._SetupCameraSwayDisabler = function(arg, arg2) local function fn36() arg._cameraSwayDisabler:SetDisabled(v118.Data.ItemModifiers.NoCameraSway) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoCameraSway" }), fn36) fn36() end index2._SetupAnimationDisabler = function(arg, arg2, arg3) local function fn36() arg3:ReportResult(arg._animationDisabler:SetShootDisabled(v118.Data.ItemModifiers.NoShootAnimation)) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoShootAnimation" }), fn36) local function fn37() arg3:ReportResult(arg._animationDisabler:SetSprintDisabled(v118.Data.ItemModifiers.NoSprintAnimation)) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoSprintAnimation" }), fn37) local function fn38() arg3:ReportResult(arg._animationDisabler:SetEquipDisabled(v118.Data.ItemModifiers.NoEquipAnimation)) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoEquipAnimation" }), fn38) local function fn39() arg3:ReportResult(arg._animationDisabler:SetReloadDisabled(v118.Data.ItemModifiers.NoReloadAnimation)) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoReloadAnimation" }), fn39) fn36() fn37() fn38() fn39() end index2._SetupNoSpread = function(arg, arg2) local function fn36() arg._noSpread:SetEnabled(v118.Data.ItemModifiers.NoSpread) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "NoSpread" }), fn36) fn36() end index2._SetupAimCooldown = function(arg, arg2) local function fn36() arg._equipCooldownModifier:SetAimEnabled(v118.Data.ItemModifiers.AimCooldown.Enabled) end local function fn37() arg._equipCooldownModifier:SetAimPercentage(v118.Data.ItemModifiers.AimCooldown.Percentage / 100) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "AimCooldown", "Enabled" }), fn36) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "AimCooldown", "Percentage" }), fn37) fn36() fn37() end index2._SetupInfoModifier = function(arg, arg2) local function fn36() local fireCooldown = v118.Data.ItemModifiers.FireCooldown arg._infoModifier:SetChange("FireCooldown", fireCooldown.Enabled and { Percentage = fireCooldown.Percentage / v86[91] } or nil) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "FireCooldown", "Enabled" }), fn36) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "FireCooldown", "Percentage" }), fn36) local function fn37() local aimSpeed = v118.Data.ItemModifiers.AimSpeed arg._infoModifier:SetChange("AimSpeed", aimSpeed.Enabled and { Percentage = aimSpeed.Percentage / 100 } or nil) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "AimSpeed", "Enabled" }), fn37) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "AimSpeed", "Percentage" }), fn37) local function fn38() local meleeCooldown = v118.Data.ItemModifiers.MeleeCooldown arg._infoModifier:SetChange("MeleeCooldown", meleeCooldown.Enabled and { Percentage = meleeCooldown.Percentage / 100 } or nil) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "MeleeCooldown", "Enabled" }), fn38) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "MeleeCooldown", "Percentage" }), fn38) local function fn39() local dashCooldown = v118.Data.ItemModifiers.DashCooldown arg._infoModifier:SetChange("DashCooldown", dashCooldown.Enabled and { Percentage = dashCooldown.Percentage / 100 } or nil) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "DashCooldown", "Enabled" }), fn39) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "DashCooldown", "Percentage" }), fn39) local function fn41() arg._infoModifier:SetChange("MaxDoubleJumps", v118.Data.ItemModifiers.InfiniteDoubleJumps and { Count = 676767 } or nil) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "InfiniteDoubleJumps" }), fn41) local function fn42() local recoil = v118.Data.ItemModifiers.Recoil arg._infoModifier:SetChange("ShootRecoil", recoil.Enabled and { Percentage = 1 - recoil.Percentage / v86[91] } or nil) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "Recoil", "Enabled" }), fn42) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "Recoil", "Percentage" }), fn42) fn42() fn36() fn37() fn38() fn39() fn41() end index2._SetupGrenadeFuse = function(arg, arg2, arg3) local function fn36() arg3:ReportResult(arg._grenadeFuse:SetEnabled(v118.Data.ItemModifiers.GrenadeFuse.Enabled)) end local function fn37() arg._grenadeFuse:SetExplodeOn(v118.Data.ItemModifiers.GrenadeFuse.ExplodeOn) end local function fn38() arg3:ReportResult(arg._grenadeFuse:SetRemoveFuse(v118.Data.ItemModifiers.GrenadeFuse.RemoveFuse)) end arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "GrenadeFuse", "Enabled" }), fn36) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "GrenadeFuse", "ExplodeOn" }), fn37) arg2:Connect(v118:GetPropertyChangedSignal({ "ItemModifiers", "GrenadeFuse", "RemoveFuse" }), fn38) fn36() fn37() fn38() end index2._SetupWeaponEngine = function(arg, arg2) local playersSvc = cloneref(game:GetService("Players")) local rsSvc = cloneref(game:GetService("ReplicatedStorage")) local uisSvc = cloneref(game:GetService("UserInputService")) local localPlayer = playersSvc.LocalPlayer local st = { installed = false, enabled = false, infoCache = setmetatable({}, { __mode = "k" }), reloadCache = setmetatable({}, { __mode = "k" }), fullAutoItems = setmetatable({}, { __mode = "k" }), wrapped = {}, orig = {}, refs = {}, } local function flags() local m = v118.Data.ItemModifiers local fr = m.FireRate local pct = (type(fr) == "table" and fr.Enabled and tonumber(fr.Percentage)) or 100 if pct == nil or pct <= 0 then pct = 100 end return { noSpread = m.NoSpread == true, fastShoot = m.FastShoot == true, fastProjectile = m.FastProjectile == true, fullAuto = m.FullAuto == true, fireRate = math.max(pct / 100, 0.01), } end local function grenadeOption(name) local opts = v118.Data.ItemModifiers.GrenadeOptions if type(opts) ~= "table" then return false end for _, v in ipairs(opts) do if v == name then return true end end return opts[name] == true end local function isLocalItem(item) local f = item ~= nil and item.ClientFighter or nil if f == nil then return false end if f.IsLocalPlayer == true then return true end return f.Player == localPlayer end local function isThrowableItem(item) local info = item ~= nil and item.Info or nil if type(info) ~= "table" then return false end return info.DetonateDelay ~= nil or info.ThrowForceMin ~= nil or info.LobForceMin ~= nil end local function rememberInfo(info, key) if type(info) ~= "table" or info[key] == nil then return nil end local cache = st.infoCache[info] if cache == nil then cache = {} st.infoCache[info] = cache end if cache[key] == nil then cache[key] = info[key] end return cache[key] end local function applyInfoOptions(item) local F = flags() local info = item ~= nil and item.Info or nil if type(info) ~= "table" then return end if not (F.fastShoot or F.fireRate ~= 1) then local cache = st.infoCache[info] if cache ~= nil then for k, v in pairs(cache) do pcall(function() info[k] = v end) end end return end local recoil = rememberInfo(info, "ShootRecoil") if recoil ~= nil then info.ShootRecoil = F.fastShoot and 0 or recoil end local spread = rememberInfo(info, "ShootSpread") if spread ~= nil then info.ShootSpread = F.fastShoot and 0 or spread end local projectileSpeed = rememberInfo(info, "ProjectileSpeed") if projectileSpeed ~= nil then info.ProjectileSpeed = F.fastShoot and 99999999 or projectileSpeed end for _, key in ipairs({ "ShootCooldown", "QuickShotCooldown", "SpinCooldown", "DashCooldown", "Cooldown", "BuildCooldown", "AttackCooldown", "HeavyAttackCooldown", "BurstCooldown" }) do local original = rememberInfo(info, key) if original ~= nil then if F.fastShoot then info[key] = 0 elseif F.fireRate ~= 1 and (key == "ShootCooldown" or key == "QuickShotCooldown" or key == "BurstCooldown" or key == "AttackCooldown") then info[key] = original / F.fireRate else info[key] = original end end end end local function refreshCachedInfo() for info in pairs(st.infoCache) do applyInfoOptions({ Info = info }) end end local function restoreInfo() for info, values in pairs(st.infoCache) do if type(info) == "table" then for k, v in pairs(values) do pcall(function() info[k] = v end) end end end end local function restoreFastProjectile() for item, reloadLength in pairs(st.reloadCache) do if type(item) == "table" then pcall(v103, item, "ReloadLength", reloadLength) end end end local function applyFastProjectile() local F = flags() if not (st.enabled and F.fastProjectile) then restoreFastProjectile() return end pcall(function() local ItemLibrary = require(rsSvc.Modules.ItemLibrary) local Items = v102(ItemLibrary, "Items") if Items == nil then return end for _, item in pairs(Items) do local name = item.Name if (name == "Bow" or name == "Daggers" or name == "Slingshot") and v102(item, "ReloadLength") ~= nil then if st.reloadCache[item] == nil then st.reloadCache[item] = v102(item, "ReloadLength") end v103(item, "ReloadLength", name == "Daggers" and 0.09 or 0) end end end) end local function estimateImpactFuse(item, isLob, cameraCFrame, charge) if typeof(cameraCFrame) ~= "CFrame" or type(item) ~= "table" or type(item.Info) ~= "table" then return nil end local info = item.Info local minForce = isLob and info.LobForceMin or info.ThrowForceMin local maxForce = isLob and info.LobForceMax or info.ThrowForceMax local gravity = isLob and info.LobGravity or info.ThrowGravity if type(minForce) ~= "number" or type(maxForce) ~= "number" then return nil end local power = math.clamp(tonumber(charge) or 1, 0, 1) local speed = minForce + (maxForce - minForce) * power local velocity = cameraCFrame.LookVector * speed local position = cameraCFrame.Position local rayParams = RaycastParams.new() rayParams.FilterType = Enum.RaycastFilterType.Exclude local charModel = localPlayer.Character rayParams.FilterDescendantsInstances = charModel ~= nil and { charModel } or {} local last = position local grav = Vector3.new(0, -(gravity or workspace.Gravity), 0) for t = 0.03, 5, 0.03 do local nextPos = position + velocity * t + grav * (0.5 * t * t) local ok, result = pcall(workspace.Raycast, workspace, last, nextPos - last, rayParams) if ok and result then return math.max(t - 0.015, 0) end last = nextPos end return nil end local function getFullAutoDelay(item) local remaining = type(item._shoot_cooldown) == "number" and math.max(item._shoot_cooldown - tick(), 0) or 0 if remaining > 0 then return math.clamp(remaining, 0.01, 1) end local info = item.Info local cooldown = (info ~= nil and tonumber(info.ShootCooldown)) or 0 if info ~= nil and tonumber(info.BurstCount) ~= nil and info.BurstCount > 1 then cooldown = tonumber(info.BurstCooldown) or cooldown end return math.clamp(cooldown > 0 and cooldown or (1 / 60), 1 / 60, 1) end local function startFullAuto(item, input) if st.fullAutoItems[item] then return end st.fullAutoItems[item] = true task.spawn(function() while true do local F = flags() if not (st.enabled and F.fullAuto and item ~= nil and isLocalItem(item) and uisSvc:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)) then break end task.wait(getFullAutoDelay(item)) local F2 = flags() if not (st.enabled and F2.fullAuto and item ~= nil and isLocalItem(item) and uisSvc:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)) then break end pcall(function() st.orig.ClientInput(item, input) end) end st.fullAutoItems[item] = nil end) end local function install() if st.installed then return true end if localPlayer == nil then return false end local R = st.refs local ok = pcall(function() local ps = localPlayer:WaitForChild("PlayerScripts", 10) local modules = ps:WaitForChild("Modules", 10) local itemTypes = modules:WaitForChild("ItemTypes", 10) R.ClientItem = require(modules.ClientReplicatedClasses.ClientFighter.ClientItem) R.GunItem = require(itemTypes:WaitForChild("Gun", 10)) local th = itemTypes:FindFirstChild("Throwable") or itemTypes:FindFirstChild("Grenade") R.GrenadeItem = (th ~= nil and require(th)) or nil local me = itemTypes:FindFirstChild("Melee") or itemTypes:FindFirstChild("Knife") R.MeleeItem = (me ~= nil and require(me)) or nil end) if not ok or R.ClientItem == nil or R.GunItem == nil then st.installed = false return false end local function hasInfoOpts() local F = flags() return F.fastShoot or F.fireRate ~= 1 end if st.wrapped.ClientInput == nil and type(R.ClientItem.Input) == "function" then st.orig.ClientInput = R.ClientItem.Input R.ClientItem.Input = function(self, input, ...) if hasInfoOpts() and isLocalItem(self) then applyInfoOptions(self) end local result = { st.orig.ClientInput(self, input, ...) } local F = flags() if st.enabled and F.fullAuto and input == "StartShooting" and isLocalItem(self) then startFullAuto(self, input) end return table.unpack(result) end st.wrapped.ClientInput = true end if st.wrapped.Gun == nil and type(R.GunItem.StartShooting) == "function" then st.orig.GunStartShooting = R.GunItem.StartShooting R.GunItem.StartShooting = function(self, ...) if hasInfoOpts() and isLocalItem(self) then applyInfoOptions(self) end local result = { st.orig.GunStartShooting(self, ...) } local F = flags() if st.enabled and F.noSpread and isLocalItem(self) and type(result[3]) == "table" then result[4] = true end return table.unpack(result) end st.wrapped.Gun = true end if R.MeleeItem ~= nil and st.wrapped.Melee == nil and type(R.MeleeItem.StartShooting) == "function" then st.orig.MeleeStartShooting = R.MeleeItem.StartShooting R.MeleeItem.StartShooting = function(self, ...) if hasInfoOpts() and isLocalItem(self) then applyInfoOptions(self) end return st.orig.MeleeStartShooting(self, ...) end st.wrapped.Melee = true end local function wrapGrenade(method) local key = "Grenade" .. method if R.GrenadeItem == nil or st.wrapped[key] ~= nil then return end if type(R.GrenadeItem[method]) ~= "function" then return end st.orig[key] = R.GrenadeItem[method] R.GrenadeItem[method] = function(self, ...) local result = { st.orig[key](self, ...) } if st.enabled and isLocalItem(self) and isThrowableItem(self) and result[1] then local action = result[2] if action == "FinishShooting" or action == "FinishAiming" then if grenadeOption("Explode On Throw") then result[5] = 0.15 elseif grenadeOption("Explode On Impact") then result[5] = estimateImpactFuse(self, action == "FinishAiming", result[3], result[4]) or result[5] elseif grenadeOption("Remove Fuse") then result[5] = 999999 end end end return table.unpack(result) end st.wrapped[key] = true end wrapGrenade("FinishShooting") wrapGrenade("FinishAiming") st.installed = true return true end local function restoreAll() st.enabled = false local R = st.refs if R.ClientItem ~= nil and st.orig.ClientInput ~= nil then pcall(function() R.ClientItem.Input = st.orig.ClientInput end) end if R.GunItem ~= nil and st.orig.GunStartShooting ~= nil then pcall(function() R.GunItem.StartShooting = st.orig.GunStartShooting end) end if R.MeleeItem ~= nil and st.orig.MeleeStartShooting ~= nil then pcall(function() R.MeleeItem.StartShooting = st.orig.MeleeStartShooting end) end if R.GrenadeItem ~= nil then if st.orig.GrenadeFinishShooting ~= nil then pcall(function() R.GrenadeItem.FinishShooting = st.orig.GrenadeFinishShooting end) end if st.orig.GrenadeFinishAiming ~= nil then pcall(function() R.GrenadeItem.FinishAiming = st.orig.GrenadeFinishAiming end) end end st.wrapped = {} st.orig = {} restoreInfo() restoreFastProjectile() end local function update() local F = flags() local anyGrenade = grenadeOption("Explode On Throw") or grenadeOption("Explode On Impact") or grenadeOption("Remove Fuse") local on = F.noSpread or F.fastShoot or F.fastProjectile or F.fullAuto or F.fireRate ~= 1 or anyGrenade if on then if install() then st.enabled = true refreshCachedInfo() applyFastProjectile() else st.enabled = false end else st.enabled = false restoreInfo() restoreFastProjectile() end end for _, path in ipairs({ {"ItemModifiers","NoSpread"}, {"ItemModifiers","FastShoot"}, {"ItemModifiers","FastProjectile"}, {"ItemModifiers","FullAuto"}, {"ItemModifiers","FireRate","Enabled"}, {"ItemModifiers","FireRate","Percentage"} }) do arg2:Connect(v118:GetPropertyChangedSignal(path), update) end task.spawn(update) local eng = {} function eng.Destroy() restoreAll() end arg2:Add(eng) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.gr = function() local gr = tbl17.cache.gr if not gr then gr = { c = fn35() } tbl17.cache.gr = gr end return gr.c end end do -- gs local function fn35() local v115 = tbl17.bG() tbl17.aN() local v116 = tbl17.a() local v117 = tbl17.k() local mechanicsController = tbl17.aS().MechanicsController local v118 = tbl17.c4() local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _trove = v117.new("movement.JumpPower"), _isHookLoaded = false, _isDestroyed = false, _isEnabled = false, _multiplier = 1, } setmetatable(tbl18, index2) tbl18._trove:Add(v118:ObserveEnabledKeybind({ "Movement", "JumpPower" }, function(arg) tbl18:SetMultiplierEnabled(arg) end)) tbl18._trove:Connect(v115:GetPropertyChangedSignal({ "Movement", "JumpPower", "Speed" }), function(arg) tbl18:SetMultiplier(arg) end) tbl18:SetMultiplier(v115.Data.Movement.JumpPower.Speed) return tbl18 end index2._AttemptLoadHook = function(arg) if arg._isHookLoaded then return v116.VoidOk end local v119 = getmetatable(mechanicsController) if v119 == nil then return v116.err("JumpPower", "prototype_lookup", "MechanicsController metatable not found") end local v120 = v102(v119, "__index") local v121 = v86[68] if type(v120) ~= v121 then return v116.err("JumpPower", "prototype_lookup", "MechanicsController prototype not found") end local v122 = v102(v120, "_HookFighter") if type(v122) ~= "function" then return v116.err("JumpPower", "function_lookup", "Failed to find `HookFighter`") end arg:_ReplaceConstantsWithProxy(v122) local localFighter = v102(mechanicsController, "LocalFighter") if localFighter == nil then arg._isHookLoaded = v86[34] return v116.VoidOk end if type(localFighter) ~= "table" then return v116.err("JumpPower", "fighter_lookup", "LocalFighter has an unexpected shape") end local entityAdded = v102(localFighter, "EntityAdded") if type(entityAdded) ~= "table" then return v116.err("JumpPower", "signal_lookup", "LocalFighter.EntityAdded signal not found") end local v123 = v102(entityAdded, "_handlerListHead") local v124 = nil while type(v123) == "table" and v124 == nil do local v125 = v102(v123, "_fn") if type(v125) == "function" then for _, v126 in debug.getconstants(v125) do if v126 == "CustomGravity" then v124 = v125 break end end end v123 = v102(v123, "_next") end if v124 == nil then game:GetService("Players").LocalPlayer:Kick("JumpPower error: ent") return v116.err("JumpPower", "callback_search", "Failed to find `EntityAdded` callback") end arg:_ReplaceConstantsWithProxy(v124) for k in debug.getprotos(v124) do local v125 = (debug.getproto :: any)(v124, k, true)[1] if v125 ~= nil then arg:_ReplaceConstantsWithProxy(v125) end end arg._isHookLoaded = true return v116.VoidOk end index2._ReplaceConstantsWithProxy = function(arg, arg2) for k, v119 in debug.getupvalues(arg2) do if type(v119) == "table" then local v120 = getmetatable(v119) local flag19 = v120 ~= nil and v102(v120, "__index") or nil local flag20 = type(flag19) == "function" and v109(flag19) if not (v102(v119, "BASE_JUMPPOWER") == nil and not flag20) then if flag20 then v119 = v119["meow\0d67"] end local obj = setmetatable({}, { __index = function(arg3, arg4) if arg4 == "meow\0d67" then return v119 end if arg._isDestroyed then debug.setupvalue(arg2, k, v119) return v102(v119, arg4) end if arg4 ~= "BASE_JUMPPOWER" then return v102(v119, arg4) end return v102(v119, "BASE_JUMPPOWER") * (arg._isEnabled and arg._multiplier or 1) end }) debug.setupvalue(arg2, k, obj) break end end end end index2.SetMultiplierEnabled = function(arg, isEnabled) arg._isEnabled = isEnabled return arg:_AttemptLoadHook() end index2.SetMultiplier = function(arg, multiplier) arg._multiplier = multiplier return arg:_AttemptLoadHook() end index2.Destroy = function(arg) arg._trove:Destroy() arg._isDestroyed = true end return index2 end tbl17.gs = function() local gs = tbl17.cache.gs if not gs then local gs2 = { c = fn35() } tbl17.cache.gs = gs2 gs = gs2 end return gs.c end end do -- gu local function fn35() tbl17 .gt();return{{Name="AR2 Head",SoundId="rbxassetid://2062016772"},{Name="AR2 Body",SoundId="rbxassetid://2062015952"},{Name="AR2 Limb",SoundId="rbxassetid://6659353525"},{Name="BB HitM",SoundId="rbxassetid://4645745735"},{Name="BB Kill",SoundId="rbxassetid://2636743632"},{Name="PD Head",SoundId="rbxassetid://4585351098"},{Name="PD Body",SoundId="rbxassetid://4585364605"},{Name="Neverlose",SoundId="rbxassetid://6607204501"},{Name="Gamesense",SoundId="rbxassetid://4817809188"},{Name="Baimware",SoundId="rbxassetid://3124331820"},{Name="Steve",SoundId="rbxassetid://4965083997"},{Name="Body",SoundId="rbxassetid://3213738472"},{Name="Ding",SoundId="rbxassetid://7149516994"},{Name="Mario",SoundId="rbxassetid://2815207981"},{Name="Mario 2",SoundId="rbxassetid://5709456554"},{Name="Minecraft",SoundId="rbxassetid://4018616850"},{Name="Among Us",SoundId="rbxassetid://5700183626"},{Name="Button",SoundId="rbxassetid://12221967"},{Name="Oof",SoundId="rbxassetid://4792539171"},{Name="Sparkle",SoundId="rbxassetid://132463144859699"},{Name="Osu",SoundId="rbxassetid://7149919358"},{Name="Osu Combobreak",SoundId="rbxassetid://3547118594"},{Name="Bambi",SoundId="rbxassetid://8437203821"},{Name="Click",SoundId="rbxassetid://8053704437"},{Name="Snow",SoundId="rbxassetid://6455527632"},{Name="Stone",SoundId="rbxassetid://3581383408"},{Name="Rust",SoundId="rbxassetid://5043539486"},{Name="Splat",SoundId="rbxassetid://12222152"},{Name="Bell",SoundId="rbxassetid://6534947240"},{Name="Slime",SoundId="rbxassetid://6916371803"},{Name="Saber",SoundId="rbxassetid://8415678813"},{Name="Bat",SoundId="rbxassetid://3333907347"},{Name="Bubble",SoundId="rbxassetid://6534947588"},{Name="Pick",SoundId="rbxassetid://1347140027"},{Name="Pop",SoundId="rbxassetid://18803667669"},{Name="EmptyGun",SoundId="rbxassetid://203691822"},{Name="Bamboo",SoundId="rbxassetid://3769434519"},{Name="Stomp",SoundId="rbxassetid://200632875"},{Name="Bag",SoundId="rbxassetid://364942410"},{Name="Hitmarker",SoundId="rbxassetid://1129547534"},{Name="LaserSlash",SoundId="rbxassetid://199145497"},{Name="RailGunF",SoundId="rbxassetid://199145534"},{Name="Bruh",SoundId="rbxassetid://4275842574"},{Name="Crit",SoundId="rbxassetid://296102734"},{Name="Bonk",SoundId="rbxassetid://3765689841"},{Name="Clink",SoundId="rbxassetid://711751971"},{Name="CoD",SoundId="rbxassetid://160432334"},{Name="Lazer Beam",SoundId="rbxassetid://130791043"},{Name="Windows",SoundId="rbxassetid://9066167010"},{Name="HL Med Kit",SoundId="rbxassetid://4720445506"},{Name="HL Door",SoundId="rbxassetid://4996094887"},{Name="HL Crowbar",SoundId="rbxassetid://546410481"},{Name="HL Revolver",SoundId="rbxassetid://1678424590"},{Name="HL Elevator",SoundId="rbxassetid://237877850"},{Name="TF2 HitSound",SoundId="rbxassetid://3455144981"},{Name="TF2",SoundId="rbxassetid://8255306220"},{Name="TF2 Squasher",SoundId="rbxassetid://3466981613"},{Name="TF2 Retro",SoundId="rbxassetid://3466984142"},{Name="TF2 Space",SoundId="rbxassetid://3466982899"},{Name="TF2 Vortex",SoundId="rbxassetid://3466980212"},{Name="TF2 Beepo",SoundId="rbxassetid://3466987025"},{Name="TF2 Bat",SoundId="rbxassetid://3333907347"},{Name="TF2 Pow",SoundId="rbxassetid://679798995"},{Name="TF2 You Suck",SoundId="rbxassetid://1058417264"},{Name="Quake Hitsound",SoundId="rbxassetid://4868633804"},{Name="Fart",SoundId="rbxassetid://131314452"},{Name="Fart2",SoundId="rbxassetid://6367774932"},{Name="FortniteGuns",SoundId="rbxassetid://3008769599"},{Name="Crickets",SoundId="rbxassetid://2101148"},{Name="ScreamingKid",SoundId="rbxassetid://5980352978"},{Name="BitchBot",SoundId="rbxassetid://5709456554"},{Name="BitchBot Head",SoundId="rbxassetid://5043539486"},{Name="BitchBot Body",SoundId="rbxassetid://3744371342"},{Name="Minecraft Experience",SoundId="rbxassetid://1053296915"},{Name="BameWare",SoundId="rbxassetid://7898991882"},{Name="Fatality",SoundId="rbxassetid://7347423703"},{Name="Fatality MKX",SoundId="rbxassetid://6721975770"},{Name="Fatality Original",SoundId="rbxassetid://158012252"},{Name="Doublekill 1",SoundId="rbxassetid://1950547222"},{Name="Doublekill 2",SoundId="rbxassetid://130819307"},{Name="Killing Spree 1",SoundId="rbxassetid://723054723"},{Name="Killing Spree 2",SoundId="rbxassetid://937898383"},{Name="Sit Dog",SoundId="rbxassetid://7349055654"},{Name="Csgo",SoundId="rbxassetid://5764885315"},{Name="Bop",SoundId="rbxassetid://8829676038"},{Name="Grenade Hit",SoundId="rbxassetid://5684745272"},{Name="KillTrocity",SoundId="rbxassetid://6818544945"},{Name="Double Kill",SoundId="rbxassetid://6818527307"},{Name="Triple kill",SoundId="rbxassetid://6818526855"},{Name="Over Kill",SoundId="rbxassetid://6818526995"},{Name="Kill Tacular",SoundId="rbxassetid://6818527070"},{Name="Kill Imanjaro",SoundId="rbxassetid://6818527258"},{Name="Kill Tastrophe",SoundId="rbxassetid://6818526916"},{Name="Kill Pocalypse",SoundId="rbxassetid://6818527144"},{Name="Kill Ionaire",SoundId="rbxassetid://6818527200"},{Name="Killing Spree",SoundId="rbxassetid://6822465178"},{Name="Killing Frenzy",SoundId="rbxassetid://6822465319"},{Name="Carrier Kill",SoundId="rbxassetid://7139067012"},{Name="Clutch Kill",SoundId="rbxassetid://7379106527"},{Name="Taco Bell",SoundId="rbxassetid://5689199277"},{Name="Kombat",SoundId="rbxassetid://8527433497"},{Name="Headshot",SoundId="rbxassetid://8418469749"},{Name="Elevator",SoundId="rbxassetid://8322227967"}};end tbl17.gu = function() local gu = tbl17.cache.gu if not gu then gu = { c = fn35() } tbl17.cache.gu = gu end return gu.c end end do -- gv local function fn35() local v115 = tbl17.e5() local v116 = tbl17.f() local v117 = tbl17.e7() local v118 = tbl17.gu() local v119 = tbl17.ad() local v120 = tbl17.ay() local v121 = tbl17.a() tbl17.gt() local v122 = tbl17.g() local v123 = cloneref(game:GetService("ContentProvider")) local str7 = string.format("%s/%s", "kiciarebuild", "sfx_sounds.json") local function fn36(arg) return arg:match("^%s*(.-)%s*$") or "" end local function fn37(arg) local tbl18 = {} local tbl19 = {} arg = type(arg) == "table" and arg or nil if arg ~= nil then for _, v124 in arg, nil, nil do if type(v124) == "table" then local v125 = (v124.Name ~= nil and { v124.Name } or { v124.name })[1] if type(v125) == "string" then local v126 = fn36(v125) if not (v126 == "" or tbl19[v126]) then local v127 = v115.normalize((v124.SoundId ~= nil and { v124.SoundId } or { v124.soundId })[1]) if v127 ~= nil then tbl19[v126] = true table.insert(tbl18, { Name = v126, SoundId = v127 }) end end end end end end table.sort(tbl18, function(arg2, arg3) return arg2.Name < arg3.Name end) return tbl18 end local index2 = {} index2.__index = index2 index2.new = function() local v124 = v119.new() local tbl18 = { _errorReporter = v124, _configManager = v116.new({ DefaultConfig = v118, CurrentVersion = 1, SavePath = "kiciarebuild", Deserialize = fn37 }), _customAssets = v117.new(), _data = table.clone(v118), _names = {}, _soundIdByName = {}, _nameBySoundId = {}, Changed = v122.new(), } setmetatable(tbl18, index2) v124:ReportResult(tbl18:Reload()) return tbl18 end index2._EnsureDefaultFile = function(arg) if isfile(str7) then return v121.VoidOk end local json = arg._configManager:SaveDefaultToFile("sfx_sounds.json", true) if not json.Ok then return v121.err("SfxSoundStorage", "EnsureDefaultFile", string.format("failed to create a default file: %s", tostring(json.Error.Detail))) end return v121.VoidOk end index2.Reload = function(arg) local v124 = arg:_EnsureDefaultFile() if not v124.Ok then return v124 end local json = arg._configManager:LoadFromFile("sfx_sounds.json") if not json.Ok then arg._data = table.clone(v118) arg:_RebuildLookups() arg.Changed:Fire(arg:GetNames()) return v121.err("SfxSoundStorage", "Reload", json.Error.Detail) end arg._data = json.Value arg:_RebuildLookups() arg.Changed:Fire(arg:GetNames()) return v121.VoidOk end index2._RebuildLookups = function(arg) local names = arg._names local soundIdByName = arg._soundIdByName local nameBySoundId = arg._nameBySoundId table.clear(names) table.clear(soundIdByName) table.clear(nameBySoundId) for _, v124 in arg._data, nil, nil do table.insert(names, v124.Name) soundIdByName[v124.Name] = v124.SoundId nameBySoundId[v124.SoundId] = v124.Name end arg._customAssets:ClearCache() end index2.GetNames = function(arg) return table.clone(arg._names) end index2.FindNameBySoundId = function(arg, arg2) local v124 = v115.normalize(arg2) return v124 ~= nil and arg._nameBySoundId[v124] or nil end index2.GetAsync = function(arg, arg2) local v124 = arg._soundIdByName[arg2] if v124 == nil then return v120.reject() end return arg._customAssets:GetAsync(v124) end index2.Preload = function(arg, soundId) task.spawn(function() local sound = Instance.new("Sound") sound.SoundId = soundId v123:PreloadAsync({ sound }) sound:Destroy() end) end index2._Save = function(arg) arg._configManager:SetData(arg._data) local json = arg._configManager:SaveToFile("sfx_sounds.json") if not json.Ok then return v121.err("SfxSoundStorage", "Save", json.Error.Detail) end return v121.VoidOk end index2.AddCustom = function(arg, arg2, arg3) local v124 = fn36(arg2) if v124 == "" then return v121.err("SfxSoundStorage", "AddCustom", "sound name cannot be empty") end if arg._soundIdByName[v124] ~= nil then return v121.err("SfxSoundStorage", "AddCustom", string.format("sound '%s' already exists", tostring(v124))) end local v125 = v115.normalize(arg3) if v125 == nil then return v121.err("SfxSoundStorage", "AddCustom", string.format("sound id '%s' is invalid", tostring(v125))) end local data = arg._data table.insert(data, { Name = v124, SoundId = v125 }) table.sort(data, function(arg4, arg5) return arg4.Name < arg5.Name end) arg:_RebuildLookups() local v126 = arg:_Save() arg.Changed:Fire(arg:GetNames()) return v126 end index2.RemoveCustom = function(arg, arg2) local data = arg._data local v124 = nil for k, v125 in data, nil, nil do if v125.Name == arg2 then v124 = k break else v124 = nil end end if v124 == nil then return v121.VoidOk end table.remove(data, v124) arg:_RebuildLookups() local v125 = arg:_Save() arg.Changed:Fire(arg:GetNames()) return v125 end index2.Destroy = function(arg) arg.Changed:Destroy() arg._errorReporter:Destroy() end return index2 end tbl17.gv = function() local gv = tbl17.cache.gv if not gv then gv = { c = fn35() } tbl17.cache.gv = gv end return gv.c end end do -- gw local function fn35() tbl17.e9() local v115 = tbl17.a() tbl17.gv() local v116 = tbl17.bG() local v117 = cloneref(game:GetService("HttpService")) local str7 = string.format("%s/cache.json", "kiciarebuild/rivals/esp_images") local tbl18 = { ".png", ".jpg", ".jpeg", ".webp", ".bmp" } local function fn36(arg, arg2) if not isfile(arg) then return v115.ok(nil) end local v118, v119 = v107(readfile, arg) if not v118 or type(v119) ~= "string" then return v115.err("LegacyUserStorageMigration", arg2, string.format("failed to read %s", tostring(arg))) end local v120, v121 = v107(v117.JSONDecode, v117, v119) local flag19 = not v120 if not flag19 then local v122 = v86[68] flag19 = type(v121) ~= v122 end if flag19 then return v115.err("LegacyUserStorageMigration", arg2, string.format("failed to decode %s", tostring(arg))) end local v122 = v86[68] return v115.ok(type(v121.data) == v122 and v121.data or v121) end local function fn37(arg) local tbl19 = {} for _, v118 in arg, nil, nil do tbl19[v118] = true end return tbl19 end local function fn38(arg, arg2) if not arg2[arg] then return arg end local v118 = v86[56] local str8 = string.format("%s (Legacy %d)", arg, v118) while arg2[str8] do v118 += 1 str8 = string.format("%s (Legacy %d)", arg, v118) end return str8 end local function fn39(arg, arg2) if #arg2 == 0 then return v115.VoidOk end return v115.err("LegacyUserStorageMigration", arg, table.concat(arg2, "; ")) end local function fn40(arg, arg2) local v118 = v116:Get(arg) if type(v118) ~= "string" then return end local v119 = arg2[v118] if v119 ~= nil and v119 ~= v118 then v116:Set(arg, v119) end end local function fn41(arg) return arg:match("([^/\\]+)$") or arg end local function fn42(arg) local str8 = arg:lower() for _, v118 in tbl18, nil, nil do if str8:sub(-#v118) == v118 then return true end end return false end local function fn43() local tbl19 = {} local tbl20 = {} local migrateImages = fn36(str7, "MigrateImages") if not migrateImages.Ok then return migrateImages end if migrateImages.Value ~= nil then if true then for _, v118 in migrateImages.Value, nil, nil do if not (type(v118) ~= "table" or type(v118.Path) ~= "string") then local path = isfile(v118.Path) and v118.Path or v118.Url if not (type(path) ~= "string" or tbl20[path]) then tbl20[path] = true table.insert(tbl19, { Name = type(v118.Name) == "string" and v118.Name or fn41(v118.Path), ImageId = path, LegacyPath = v118.Path, LegacyUrl = type(v118.Url) == "string" and v118.Url or nil, }) end end end else -- (anti-tamper freeze trap removed) end end if type(listfiles) == "function" and isfolder("kiciarebuild/rivals/esp_images") then local v118, v119 = v107(listfiles, "kiciarebuild/rivals/esp_images") if v118 and type(v119) == "table" then for _, v120 in v119, nil, nil do local v121 = v86[165] if not (type(v120) ~= v121 or not fn42(v120) or tbl20[v120]) then tbl20[v120] = true table.insert(tbl19, { Name = fn41(v120), ImageId = v120, LegacyPath = v120 }) end end end end return v115.ok(tbl19) end local function fn44(arg, arg2) local v118 = v116:Get(arg) if type(v118) ~= "string" then return end local v119 = arg2[v118] if v119 ~= nil and v119 ~= v118 then v116:Set(arg, v119) end end return { MigrateSounds = function(arg) local json = fn36("kiciarebuild/rivals/custom_sounds.json", "MigrateSounds") if not json.Ok then return json end if json.Value == nil then return v115.VoidOk end local v118 = fn37(arg:GetNames()) local tbl19 = {} local tbl20 = {} for _, v119 in json.Value, nil, nil do local v120 = v86[68] local flag19 = type(v119) ~= v120 if not flag19 then local v121 = v86[165] flag19 = type(v119.name) ~= v121 end if not (flag19 or type(v119.soundId) ~= "string") then local v121 = arg:FindNameBySoundId(v119.soundId) if v121 == nil then v121 = fn38(v119.name, v118) local v122 = arg:AddCustom(v121, v119.soundId) if not v122.Ok then table.insert(tbl20, v122.Error.Detail) else v118[v121] = true tbl19[v119.name] = v121 end continue end tbl19[v119.name] = v121 end end fn40({ "PlayerHit", "Sound", "HeadName" }, tbl19) fn40({ "PlayerHit", "Sound", "BodyName" }, tbl19) fn40({ "PlayerElimination", "Sound", "Name" }, tbl19) return fn39("MigrateSounds", tbl20) end, MigrateImages = function(arg) local v118 = fn43() if not v118.Ok then return v118 end local v119 = fn37(arg:GetNames()) local tbl19 = {} local tbl20 = {} for _, v120 in v118.Value, nil, nil do local v121 = arg:FindNameByImageId(v120.ImageId) if v121 ~= nil then if v120.LegacyPath ~= nil then tbl19[v120.LegacyPath] = v121 end if v120.LegacyUrl ~= nil then tbl19[v120.LegacyUrl] = v121 end else v121 = fn38(v120.Name, v119) local v122 = arg:AddCustom(v121, v120.ImageId) if not v122.Ok then table.insert(tbl20, v122.Error.Detail) else v119[v121] = true if v120.LegacyPath ~= nil then tbl19[v120.LegacyPath] = v121 end if v120.LegacyUrl ~= nil then tbl19[v120.LegacyUrl] = v121 end end end end fn44({ "Esp", "Enemy", "BoxImage", "Name" }, tbl19) fn44({ "Esp", "Team", "BoxImage", "Name" }, tbl19) fn44({ "CustomCrosshair", "Image", "Name" }, tbl19) return fn39("MigrateImages", tbl20) end, } end tbl17.gw = function() local gw = tbl17.cache.gw if not gw then local gw2 = { c = fn35() } tbl17.cache.gw = gw2 gw = gw2 end return gw.c end end do -- gx local function fn35() local v115 = tbl17.g() local v116 = tbl17.k() tbl17.cZ() local index2 = {} index2.__index = index2 local function fn36(arg) return arg:IsA("BasePart") and not arg:HasTag("OutOfBoundsPart") end index2.new = function(arg) local mapGeometry = v116.new("map_geometry") return setmetatable({ _trove = mapGeometry, _activeTrove = mapGeometry:Extend(), _worldInclude = arg, _isEnabled = false, _isRootsDirty = false, _rootEntries = {}, _seenRoots = {}, _rootCountByPart = {}, _parts = {}, _indexByPart = {}, _blocks = {}, _blocksRevision = -1, Revision = 0, Reset = mapGeometry:Add(v115.new()), PartAdded = mapGeometry:Add(v115.new()), PartRemoved = mapGeometry:Add(v115.new()), }, index2) end index2.SetEnabled = function(arg, isEnabled) if arg._isEnabled == isEnabled then return end arg._isEnabled = isEnabled if isEnabled then arg._activeTrove:Connect(arg._worldInclude.MapChanged, function() arg._isRootsDirty = true end) arg._isRootsDirty = true return end arg._activeTrove:Clean() arg._isRootsDirty = false arg:_DestroyRootEntries() table.clear(arg._rootCountByPart) table.clear(arg._parts) table.clear(arg._indexByPart) table.clear(arg._blocks) arg.Revision = arg.Revision + 1 arg.Reset:Fire() end index2.Update = function(arg) if not arg._isEnabled or not arg._isRootsDirty then return end arg._isRootsDirty = false local rootEntries = arg._rootEntries local seenRoots = arg._seenRoots for _, v117 in arg._worldInclude:GetStaticInstances() do if seenRoots[v117] == nil then seenRoots[v117] = true if rootEntries[v117] == nil then arg:_AddRoot(v117) end end end for k, v117 in rootEntries, nil, nil do if seenRoots[k] == nil then rootEntries[k] = nil v117.Trove:Destroy() for k2 in v117.Parts, nil, nil do arg:_Release(k2) end end end table.clear(seenRoots) end index2._AddRoot = function(arg, arg2) local tbl18 = { Trove = v116.new("map_geometry"), Parts = {} } arg._rootEntries[arg2] = tbl18 if fn36(arg2) then arg:_Track(tbl18, arg2) end for _, v117 in arg2:GetDescendants() do if fn36(v117) then arg:_Track(tbl18, v117) end end tbl18.Trove:Connect(arg2.DescendantAdded, function(arg3) if fn36(arg3) then arg:_Track(tbl18, arg3) end end) tbl18.Trove:Connect(arg2.DescendantRemoving, function(arg3) if tbl18.Parts[arg3] ~= nil then tbl18.Parts[arg3] = nil arg:_Release(arg3) end end) end index2._Track = function(arg, arg2, arg3) if arg2.Parts[arg3] ~= nil then return end arg2.Parts[arg3] = true local v117 = arg._rootCountByPart[arg3] if v117 ~= nil then arg._rootCountByPart[arg3] = v117 + 1 return end arg._rootCountByPart[arg3] = 1 local n = #arg._parts + 1 arg._parts[n] = arg3 arg._indexByPart[arg3] = n arg.Revision = arg.Revision + 1 arg.PartAdded:Fire(arg3) end index2._Release = function(arg, arg2) local v117 = arg._rootCountByPart[arg2] if v117 == nil then return end if v86[63] < v117 then arg._rootCountByPart[arg2] = v117 - 1 return end arg._rootCountByPart[arg2] = nil local parts = arg._parts local indexByPart = arg._indexByPart local v118 = indexByPart[arg2] local n = #parts local v119 = parts[n] parts[v118] = v119 parts[n] = nil indexByPart[v119] = v118 indexByPart[arg2] = nil arg.Revision = arg.Revision + 1 arg.PartRemoved:Fire(arg2) end index2._DestroyRootEntries = function(arg) for _, v117 in arg._rootEntries, nil, nil do v117.Trove:Destroy() end table.clear(arg._rootEntries) end index2.GetParts = function(arg) return arg._parts end index2.GetBlocks = function(arg) if arg._blocksRevision ~= arg.Revision then local blocks = arg._blocks table.clear(blocks) for _, v117 in arg._parts, nil, nil do local size = v117.Size if v117:IsA("Part") and v117.Shape == Enum.PartType.Block and v117.Anchored and size.X > 0 and size.Y > v86[186] and size.Z > 0 then table.insert(blocks, v117) end end arg._blocksRevision = arg.Revision end return arg._blocks end index2.Destroy = function(arg) arg._isEnabled = false arg._isRootsDirty = false arg:_DestroyRootEntries() arg._trove:Destroy() end return index2 end tbl17.gx = function() local gx = tbl17.cache.gx if not gx then gx = { c = fn35() } tbl17.cache.gx = gx end return gx.c end end do -- gy local function fn35() local outOfBoundsMachine = tbl17.aS().OutOfBoundsMachine local v115 = tbl17.b() local v116 = tbl17.a() local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _target = nil } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local isOutOfBounds = v102(outOfBoundsMachine, "IsOutOfBounds") if isOutOfBounds == nil then v115.get():Report(v116.err("OobHook", "Initialize", "failed to find IsOutOfBounds").Error) return end local v117 = nil for k, isOutOfBound in debug.getconstants(isOutOfBounds) do if isOutOfBound == "RootPart" then v117 = k break else v117 = nil end end if v117 == nil then v115.get():Report(v116.err("OobHook", "Initialize", "failed to find const index").Error) return end arg._target = { Fn = isOutOfBounds, ConstIndex = v117 } end index2.SetClientCheckDisabled = function(arg, arg2) local target = arg._target if target == nil then return end if arg2 then debug.setconstant(target.Fn, target.ConstIndex, "RootPart ") else debug.setconstant(target.Fn, target.ConstIndex, "RootPart") end end index2.Destroy = function(arg) arg:SetClientCheckDisabled(v86[153]) end return index2 end tbl17.gy = function() local gy = tbl17.cache.gy if not gy then local gy2 = { c = fn35() } tbl17.cache.gy = gy2 gy = gy2 end return gy.c end end do -- gz local function fn35() local v115 = tbl17.k() local v116 = cloneref(game:GetService("CollectionService")) local index2 = {} index2.__index = index2 local function fn36(arg) local attribute = arg:GetAttribute("KillDelay") local v117 = v86[95] return (typeof(attribute) == v117 and { attribute } or { nil })[1] end index2.new = function() local tbl18 = { _trove = v115.new("outOfBoundsZones"), Hazards = {}, SafeZones = {} } setmetatable(tbl18, index2) tbl18:_Track("OutOfBoundsPart", tbl18.Hazards) tbl18:_Track("OutOfBoundsSafePart", tbl18.SafeZones) return tbl18 end index2._Track = function(arg, arg2, arg3) for _, v117 in v116:GetTagged(arg2) do if v117:IsA("BasePart") then arg3[v117] = true end end arg._trove:Connect(v116:GetInstanceAddedSignal(arg2), function(arg4) if arg4:IsA("BasePart") then arg3[arg4] = true end end) arg._trove:Connect(v116:GetInstanceRemovedSignal(arg2), function(arg4) if arg4:IsA("BasePart") then arg3[arg4] = nil end end) end local function fn37(l,I,W)local N=l:GetClosestPointOnSurface(I);return N==I or W>0 and(N-I).Magnitude<=W;end index2.GetHazard = function(I,W,N)for P in I.SafeZones,nil,nil do if fn37 (P,W,0)then return nil;end;end;local P,a=N or 0, nil;local e,c=math.huge, nil;for E in I.Hazards,nil,nil do if not fn37 (E,W,P)then continue;end;N= fn36 (E);local l=N or math.huge;if a==nil or l 0 then return end fn37(arg2, v118) arg._glueInfoByTargetPart[arg2] = nil end index2.FindAnchor = function(arg, arg2) return arg._targetPartBySourcePart[arg2] end index2.Destroy = function(arg) for k, v118 in arg._glueInfoByTargetPart, nil, nil do fn37(k, v118) end table.clear(arg._glueInfoByTargetPart) table.clear(arg._targetPartBySourcePart) end return index2 end tbl17.gA = function() local ga = tbl17.cache.gA if not ga then local ga2 = { c = fn35() } tbl17.cache.gA = ga2 ga = ga2 end return ga.c end end do -- gB local function fn35() tbl17.cr() local v115 = tbl17.bG() tbl17.a3() local v116 = tbl17.b3() local playerModule = tbl17.aS().PlayerModule local v117 = cloneref(game:GetService("UserInputService")) local function fn36(arg) local vector = Vector3.new(arg.X, 0, arg.Z) return vector.Magnitude > 0 and vector.Unit or Vector3.zero end local function fn37()if v117 :GetFocusedTextBox()then return Vector3.zero;end;local I=Vector3.zero;local W=workspace.CurrentCamera.CFrame;local N,P= fn36 (W.LookVector), fn36 (W.RightVector);if v117 .KeyboardEnabled then W=Enum;I=if v117 :IsKeyDown(Enum.KeyCode.S)then(if v117 :IsKeyDown(W.KeyCode.W)then I+N else I)-N else if v117 :IsKeyDown(W.KeyCode.W)then I+N else I;local W_109=Enum;I=if v117 :IsKeyDown(Enum.KeyCode.A)then(if v117 :IsKeyDown(W_109.KeyCode.D)then I+P else I)-P else if v117 :IsKeyDown(W_109.KeyCode.D)then I+P else I;else local W_110= v116 ( playerModule .GetControls, playerModule );local a= v116 (W_110.GetMoveVector,W_110);I=if a.Magnitude>0 then I+N*-a.Z+P*a.X else I;end;return if I.Magnitude>0 then I.Unit else I;end local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _characterContext = arg }, index2) end index2.Update = function(arg, arg2) local autoStrafe = v115.Data.Movement.AutoStrafe if not autoStrafe.Enabled then return end if not autoStrafe.Keybind.State then return end local state = arg._characterContext.State if not state.Alive then return end if not v117:IsKeyDown(Enum.KeyCode.Space) then return end local rootPart = state.RootPart local n = autoStrafe.Speed / 100 rootPart.CFrame = rootPart.CFrame + fn37() * n * arg2 * 60 rootPart.AssemblyLinearVelocity = rootPart.AssemblyLinearVelocity * Vector3.new(0, 1, v86[186]) end return index2 end tbl17.gB = function() local gb = tbl17.cache.gB if not gb then local gb2 = { c = fn35() } tbl17.cache.gB = gb2 gb = gb2 end return gb.c end end do -- gC local function fn35() tbl17.cr() local v115 = tbl17.bG() tbl17.a3() local v116 = tbl17.b3() local playerModule = tbl17.aS().PlayerModule local v117 = cloneref(game:GetService("UserInputService")) local function fn36()if v117 :GetFocusedTextBox()then return Vector3.zero;end;local I,W=Vector3.zero,workspace.CurrentCamera.CFrame;if v117 .KeyboardEnabled then local N=W.LookVector;local P=Vector3.new(N.X,0,N.Z);P=if P.Magnitude>0 then P.Unit else P;I=if v117 :IsKeyDown(Enum.KeyCode.W)then I+P else I;N=Enum;I=if v117 :IsKeyDown(Enum.KeyCode.S)then(if v117 :IsKeyDown(N.KeyCode.A)then I-W.RightVector else I)-P else if v117 :IsKeyDown(N.KeyCode.A)then I-W.RightVector else I;N=Enum;I=if v117 :IsKeyDown(Enum.KeyCode.Space)then(if v117 :IsKeyDown(N.KeyCode.D)then I+W.RightVector else I)+Vector3.new(0,1,0)else if v117 :IsKeyDown(N.KeyCode.D)then I+W.RightVector else I;I=if v117 :IsKeyDown(Enum.KeyCode.LeftControl)or( v117 :IsKeyDown(Enum.KeyCode.LeftShift))then I-Vector3.new(0,1,0)else I;else local N= v116 ( playerModule .GetControls, playerModule );local P= v116 (N.GetMoveVector,N);I=if P.Magnitude>0 then I+W.LookVector*-P.Z+W.RightVector*P.X else I;end;return I;end local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _characterContext = arg, _mover = nil }, index2) end index2._ApplyVelocity = function(arg, parent, vectorVelocity) local mover = arg._mover if mover then mover.Velocity.VectorVelocity = vectorVelocity return end local attachment = Instance.new("Attachment") attachment.Parent = parent local linearVelocity = Instance.new("LinearVelocity") linearVelocity.RelativeTo = Enum.ActuatorRelativeTo.World linearVelocity.MaxForce = math.huge linearVelocity.VectorVelocity = vectorVelocity linearVelocity.Attachment0 = attachment linearVelocity.Parent = parent arg._mover = { Attachment = attachment, Velocity = linearVelocity } end index2._ClearMover = function(arg) local mover = arg._mover if mover then mover.Velocity:Destroy() mover.Attachment:Destroy() arg._mover = nil end end index2.Update = function(arg) local state = arg._characterContext.State if not state.Alive then arg._mover = nil return end local rootPart = state.RootPart local flight = v115.Data.Movement.Flight if not (flight.Enabled and flight.Keybind.State) then arg:_ClearMover() return end local unit = fn36() if v86[186] < unit.Magnitude then unit = unit.Unit end arg:_ApplyVelocity(rootPart, unit * flight.Speed) end index2.BlankVelocity = function(arg) if not arg._mover then return end local state = arg._characterContext.State if state.Alive then state.RootPart.AssemblyLinearVelocity = Vector3.zero end end index2.Destroy = function(arg) arg:_ClearMover() end return index2 end tbl17.gC = function() local gc = tbl17.cache.gC if not gc then local gc2 = { c = fn35() } tbl17.cache.gC = gc2 gc = gc2 end return gc.c end end do -- gD local function fn35() tbl17.cr() local v115 = tbl17.c4() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v116.new("movement.Noclip"), _characterTrove = nil, _characterContext = arg, _collidablePartSet = {}, _enabled = false, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._ClearCharacter = function(arg) local characterTrove = arg._characterTrove if characterTrove ~= nil then arg._characterTrove = nil characterTrove:Destroy() end table.clear(arg._collidablePartSet) end index2._BindCharacter = function(arg, arg2) arg:_ClearCharacter() local model = arg2.Model local Noclip = v116.new("movement.Noclip") arg._characterTrove = Noclip for _, v117 in model:QueryDescendants("BasePart[CanCollide = true]") do arg:_AddPart(v117) end Noclip:Connect(model.DescendantAdded, function(arg3) if arg3:IsA("BasePart") and arg3.CanCollide then arg:_AddPart(arg3) end end) Noclip:Connect(model.DescendantRemoving, function(arg3) if arg3:IsA("BasePart") then arg:_RemovePart(arg3) end end) end index2._Initialize = function(arg) arg._trove:Add(v115:ObserveEnabledKeybind({ "Movement", "Noclip" }, function(arg2) arg:SetEnabled(arg2) end)) local characterContext = arg._characterContext local state = characterContext.State if state.Alive then arg:_BindCharacter(state) end arg._trove:Connect(characterContext.Created, function(arg2) arg:_BindCharacter(arg2) end) arg._trove:Connect(characterContext.Died, function() arg:_ClearCharacter() end) end index2.SetEnabled = function(arg, enabled) if arg._enabled and not enabled then for k in arg._collidablePartSet, nil, nil do k.CanCollide = true end end arg._enabled = enabled end index2._AddPart = function(arg, arg2) arg._collidablePartSet[arg2] = true end index2._RemovePart = function(arg, arg2) arg._collidablePartSet[arg2] = nil end index2.Update = function(arg) if not arg._enabled then return end for k in arg._collidablePartSet, nil, nil do k.CanCollide = v86[153] end end index2.Destroy = function(arg) arg:SetEnabled(false) arg:_ClearCharacter() arg._trove:Destroy() end return index2 end tbl17.gD = function() local gd = tbl17.cache.gD if not gd then local gd2 = { c = fn35() } tbl17.cache.gD = gd2 gd = gd2 end return gd.c end end do -- gE local function fn35() local v115 = tbl17.gB() local v116 = tbl17.gC() local v117 = tbl17.gD() tbl17.cX() local v118 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local physicsController = v118.new("movement.physics_controller") local obj = setmetatable({ _trove = physicsController, _modules = { Initialized = v86[153] } }, index2) physicsController:Add(arg:ObserveContext("physics_controller", function(arg2, arg3) local character = arg2.FighterState.Character obj._modules = { Initialized = true, AutoStrafe = v115.new(character), Flight = arg3:Add(v116.new(character)), Noclip = arg3:Add(v117.new(character)), } end)) physicsController:Connect(arg.ContextRemoved, function() obj._modules = { Initialized = false } end) return obj end index2.PreSimulationUpdate = function(arg, arg2) local modules = arg._modules if modules.Initialized then modules.AutoStrafe:Update(arg2) modules.Flight:Update() modules.Noclip:Update() end end index2.PreCameraRenderUpdate = function(arg) local modules = arg._modules if modules.Initialized then modules.Flight:BlankVelocity() end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.gE = function() local ge = tbl17.cache.gE if not ge then ge = { c = fn35() } tbl17.cache.gE = ge end return ge.c end end do -- gF local function fn35() local v115 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v115.new("instance.GuardedInstance"), _target = arg, _originalByProperty = {}, _overrideByProperty = {}, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Connect(arg._target.Changed, function(arg2) local v116 = arg._overrideByProperty[arg2] if v116 == nil then return end local target = arg._target local v117 = target[arg2] if v117 == v116 then return end arg._originalByProperty[arg2] = v117 target[arg2] = v116 end) end index2.SetOverride = function(arg, arg2, arg3) local target = arg._target if arg._originalByProperty[arg2] == nil then arg._originalByProperty[arg2] = target[arg2] end arg._overrideByProperty[arg2] = arg3 target[arg2] = arg3 end index2.ClearOverride = function(arg, arg2) local v116 = arg._originalByProperty[arg2] if v116 ~= nil then arg._originalByProperty[arg2] = nil arg._overrideByProperty[arg2] = nil arg._target[arg2] = v116 end end index2.ClearAllOverrides = function(arg) for k in arg._overrideByProperty, nil, nil do local v116 = arg._originalByProperty[k] arg._originalByProperty[k] = nil arg._overrideByProperty[k] = nil arg._target[k] = v116 end end index2.Destroy = function(arg) arg._trove:Destroy() local target = arg._target for k, v116 in arg._originalByProperty, nil, nil do target[k] = v116 end end return index2 end tbl17.gF = function() local gf = tbl17.cache.gF if not gf then local gf2 = { c = fn35() } tbl17.cache.gF = gf2 gf = gf2 end return gf.c end end do -- gG local function fn35() local v115 = tbl17.bG() local v116 = tbl17.gF() local v117 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function() local FovChanger = v117.new("player_camera.FovChanger") local tbl18 = { _trove = FovChanger, _cameraTrove = FovChanger:Add(v117.new("player_camera.FovChanger")), _guard = nil } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Connect(workspace:GetPropertyChangedSignal("CurrentCamera"), function() if not (3861 > n25) then arg:_BindCamera() return end -- (anti-tamper freeze trap removed) end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "CameraFov", "Enabled" }), function() arg:_Apply() end) arg._trove:Connect(v115:GetPropertyChangedSignal({ "CameraFov", "Value" }), function() arg:_Apply() end) arg:_BindCamera() end index2._BindCamera = function(arg) arg._cameraTrove:Clean() arg._guard = nil local currentCamera = workspace.CurrentCamera if currentCamera == nil then return end arg._guard = arg._cameraTrove:Add(v116.new(currentCamera)) arg:_Apply() end index2._Apply = function(arg) local guard = arg._guard if guard == nil then return end local cameraFov = v115.Data.CameraFov if cameraFov.Enabled then guard:SetOverride("FieldOfView", cameraFov.Value) else guard:ClearOverride("FieldOfView") end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.gG = function() local gg = tbl17.cache.gG if not gg then gg = { c = fn35() } tbl17.cache.gG = gg end return gg.c end end do -- gH local function fn35() local v115 = tbl17.bG() return { GetMatrix = function() local stretchedResolution = v115.Data.StretchedResolution return stretchedResolution.Enabled and CFrame.new(0, v86[186], 0, stretchedResolution.X, 0, 0, 0, stretchedResolution.Y, v86[186], 0, 0, 1) or nil end } end tbl17.gH = function() local gh = tbl17.cache.gH if not gh then gh = { c = fn35() } tbl17.cache.gH = gh end return gh.c end end do -- gI local function fn35() local v115 = tbl17.bG() local v116 = tbl17.c4() tbl17.dK() tbl17.cX() tbl17.g() local v117 = tbl17.k() tbl17.cZ() local cameraController = tbl17.aS().CameraController local function fn36() return v102(v102(cameraController, "CameraState"), "_pov_state") == "FirstPerson" end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local tbl18 = { _trove = v117.new("player_camera.ThirdPerson"), _playerContext = arg2, _worldInclude = arg3, _submitBodyMode = arg, _isEnabled = false, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local function fn37() local enabledKeybindState = v116:GetEnabledKeybindState({ "ThirdPerson" }) arg._isEnabled = enabledKeybindState arg._submitBodyMode:Fire(not enabledKeybindState and "Default" or v115.Data.ThirdPerson.ShowReplica and "Replica" or "Native") end arg._trove:Add(v116:ObserveEnabledKeybind({ "ThirdPerson" }, fn37)) arg._trove:Connect(v115:GetPropertyChangedSignal({ "ThirdPerson", "ShowReplica" }), fn37) end index2.GetOffset = function(arg, arg2) if not arg._isEnabled then return nil end local inner = arg._playerContext.Inner if inner == nil then return nil end if inner.FighterState.EnvironmentId == nil or not fn36() then return nil end local thirdPerson = v115.Data.ThirdPerson local vector = Vector3.new(thirdPerson.X, thirdPerson.Y, thirdPerson.Z) if thirdPerson.RayCheck then local position = arg2.Position local worldInclude = arg._worldInclude local getParams = worldInclude.GetParams local hit = workspace:Raycast(position, arg2:VectorToWorldSpace(vector), getParams(worldInclude)) if hit ~= nil then vector = arg2:VectorToObjectSpace(hit.Position - position) local magnitude = vector.Magnitude if magnitude > 0.2 then vector = vector.Unit * (magnitude - 0.2) end end end return vector end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.gI = function() local gi = tbl17.cache.gI if not gi then gi = { c = fn35() } tbl17.cache.gI = gi end return gi.c end end do -- gJ local function fn35() local v115 = tbl17.gG() tbl17.dK() tbl17.cX() local v116 = tbl17.g() local v117 = tbl17.gH() local v118 = tbl17.gI() local v119 = tbl17.k() tbl17.cZ() local v120 = cloneref(game:GetService("RunService")) local v121 = cloneref(game:GetService("HttpService")) local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local playerCamera = v119.new("player_camera") local v122 = playerCamera:Add(v116.new()) v122:Connect(function(arg4) arg3:SetBodyMode(arg4) end) local v123 = playerCamera:Add(v118.new(v122, arg, arg2)) playerCamera:Add(v115.new()) local tbl18 = { _trove = playerCamera, _thirdPerson = v123 } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local v122 = v121:GenerateGUID(false) local v123 = nil local cameraType = nil local function fn36() local v124 = v123 if v124 ~= nil and v124.CameraType == Enum.CameraType.Track and cameraType ~= nil then v124.CameraType = cameraType end v123 = nil cameraType = nil end v120:BindToRenderStep(v122, Enum.RenderPriority.Camera.Value + v86[63], function() local currentCamera = workspace.CurrentCamera if currentCamera ~= v123 then fn36() end if currentCamera == nil then return end local cFrame = currentCamera.CFrame local flag19 = v86[153] local offset = arg._thirdPerson:GetOffset(cFrame) if offset ~= nil then if v123 ~= currentCamera then v123 = currentCamera cameraType = currentCamera.CameraType end currentCamera.CameraType = Enum.CameraType.Track cFrame *= CFrame.new(offset) flag19 = true else fn36() end local v124 = v117.GetMatrix() if v124 ~= nil then cFrame *= v124 flag19 = v86[34] end if flag19 then currentCamera.CFrame = cFrame end end) arg._trove:Add(function() v120:UnbindFromRenderStep(v122) fn36() end) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.gJ = function() local gj = tbl17.cache.gJ if not gj then gj = { c = fn35() } tbl17.cache.gJ = gj end return gj.c end end do -- gK local function fn35() local v115 = tbl17.a8() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, color, arg2, arg3, arg4) local tbl18 = { _trove = v116.new("combat_feedback.Cham"), _elapsed = 0, _duration = arg3, _transparency = arg2, _parts = {}, _isDestroyed = false, } setmetatable(tbl18, index2) local v117 = v115.Map[arg4] for _, v118 in arg:GetChildren() do if not (not v118:IsA("BasePart") or v118.Name == "HumanoidRootPart" or v118.Transparency >= 1) then local part = Instance.new("Part") part.Parent = workspace part.Material = v117 part.Color = color part.Anchored = true part.CanCollide = false part.Transparency = tbl18._transparency part.CFrame = v118.CFrame part.Size = v118.Size tbl18._trove:Add(part) table.insert(tbl18._parts, part) end end if #tbl18._parts == 0 then tbl18:Destroy() return tbl18 end return tbl18 end index2.Step = function(arg, arg2) if arg._isDestroyed then return false end arg._elapsed = arg._elapsed + arg2 local n = math.clamp(arg._elapsed / arg._duration, v86[186], v86[63]) local transparency = arg._transparency + (v86[63] - arg._transparency) * n for _, v117 in arg._parts, nil, nil do v117.Transparency = transparency end if v86[63] <= n then arg:Destroy() return v86[153] end return true end index2.Destroy = function(arg) if arg._isDestroyed then return end arg._isDestroyed = true arg._trove:Destroy() end return index2 end tbl17.gK = function() local gk = tbl17.cache.gK if not gk then gk = { c = fn35() } tbl17.cache.gK = gk end return gk.c end end do -- gL local function fn35() local v115 = tbl17.c5() local v116 = tbl17.k() local v117 = tbl17.bI() local index2 = {} index2.__index = index2 local function fn36(arg, target, arg2, arg3, arg4) local v118 = math.sqrt(arg2) local v119 = v115.new(arg, arg4) v119.Speed = v118 v119.Damper = arg3 / 2 * v118 v119.Target = target return v119 end local function fn37(arg) return math.abs(arg.Target - arg.Position) < 0.2 and math.abs(arg.Velocity) < 0.2 end local function fn38(parent, arg, arg2) local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(arg, 0.5) instance.Position = UDim2.fromScale(arg2, 0.5) instance.Size = UDim2.fromScale(v86[186], 1) instance.BackgroundTransparency = 1 instance.BorderSizePixel = 0 instance.ClipsDescendants = false instance.Parent = parent return instance end local function fn39(parent, arg, backgroundColor3, arg2, zIndex) local n = 0 local rotation = 0 local n33 = 0 if arg == "Right" then n = 1 rotation = 180 n33 = v86[63] end local instance = Instance.new(v86[128]) instance.AnchorPoint = Vector2.new(n33, v86[101]) instance.Position = UDim2.fromScale(n, 0.5) instance.Size = UDim2.fromScale(0, 1) instance.BackgroundColor3 = backgroundColor3 instance.BackgroundTransparency = 1 instance.BorderSizePixel = 0 instance.ZIndex = zIndex instance.Parent = parent local uiGradient = Instance.new("UIGradient") uiGradient.Rotation = rotation local colorSequence = ColorSequence.new local tbl18 = {} local v118 = ColorSequenceKeypoint.new(0, backgroundColor3) local v119 = ColorSequenceKeypoint.new(0.35, backgroundColor3:Lerp(Color3.new(1, 1, 1), 0.14)) local new = ColorSequenceKeypoint.new tbl18[1] = v118 tbl18[2] = v119 do local values = table.pack(new(1, backgroundColor3)) table.move(values, 1, values.n, 3, tbl18) end uiGradient.Color = colorSequence(tbl18) uiGradient.Transparency = NumberSequence.new(arg2) uiGradient.Parent = instance return instance end local function fn40(arg, arg2, arg3, arg4, arg5, arg6, arg7) return { Frame = fn39(arg, arg2, arg3, arg4, arg5), Width = fn36(v86[186], arg6.ExpandedWidth, 220, 8, arg7), Transparency = fn36(1, arg6.VisibleTransparency, 260, 10, arg7), Config = arg6, Phase = "enter", HoldElapsed = 0, } end local function fn41(arg) arg.Frame.Size = UDim2.new(v86[186], math.max(v86[186], arg.Width.Position), 1, 0) end local function fn42(arg) arg.Frame.BackgroundTransparency = math.clamp(arg.Transparency.Position, 0, v86[63]) end local function fn43(arg, arg2, arg3) fn41(arg) fn42(arg) if arg.Phase == "enter" and fn37(arg.Transparency) then arg.Phase = "hold" arg.HoldElapsed = 0 return end if arg.Phase == "hold" then arg.HoldElapsed = arg.HoldElapsed + arg2 if arg.HoldElapsed < arg.Config.HoldTime then return end local transparency = arg.Transparency arg.Phase = "overshoot" arg.Width = fn36(arg.Width.Position, arg.Config.OvershootWidth, 120, v86[122], arg3) arg.Transparency = fn36(transparency.Position, 1, 95, 9, arg3) return end if arg.Phase == "overshoot" and fn37(arg.Width) then arg.Phase = "final" arg.Width = fn36(arg.Width.Position, arg.Config.FinalWidth, 90, 9, arg3) end end local function fn44(parent, arg, arg2, arg3) local frame = Instance.new("Frame") frame.BackgroundTransparency = 1 frame.BorderSizePixel = 0 frame.ClipsDescendants = false frame.Size = UDim2.fromScale(v86[63], 1) frame.Parent = parent local v118 = arg2:Lerp(Color3.new(v86[63], v86[63], 1), 0.22) local v119 = arg2:Lerp(Color3.new(1, 1, 1), 0.72) local tbl18 = { Holder = frame, Elapsed = 0, Duration = arg3, AnimationTime = 0, Clock = nil, Bands = {} } local function clock() return tbl18.AnimationTime end tbl18.Clock = clock local bands = {} local tbl19 = {} local v120 = NumberSequenceKeypoint.new(0, 0.9) local v121 = NumberSequenceKeypoint.new(0.22, 0.94) local v122 = NumberSequenceKeypoint.new(0.62, 0.985) tbl19[1] = v120 tbl19[2] = v121 tbl19[3] = v122 do local values = table.pack(NumberSequenceKeypoint.new(v86[63], 1)) table.move(values, 1, values.n, 4, tbl19) end local v123 = fn40(frame, arg, arg2, tbl19, v86[155], { ExpandedWidth = 320, VisibleTransparency = 0.94, OvershootWidth = 360, FinalWidth = 390, HoldTime = 0.28, }, clock) local tbl20 = {} local v124 = NumberSequenceKeypoint.new(0, 0.72) local v125 = NumberSequenceKeypoint.new(0.2, 0.78) local v126 = NumberSequenceKeypoint.new(0.58, v86[173]) tbl20[1] = v124 tbl20[2] = v125 tbl20[3] = v126 do local values = table.pack(NumberSequenceKeypoint.new(1, 1)) table.move(values, 1, values.n, 4, tbl20) end local v127 = fn40(frame, arg, v118, tbl20, v86[26], { ExpandedWidth = 215, VisibleTransparency = 0.76, OvershootWidth = 245, FinalWidth = 265, HoldTime = 0.24, }, clock) local tbl21 = {} local v128 = NumberSequenceKeypoint.new(0, v86[101]) local v129 = NumberSequenceKeypoint.new(0.14, 0.56) local v130 = NumberSequenceKeypoint.new(0.42, 0.72) local new = NumberSequenceKeypoint.new tbl21[1] = v128 tbl21[2] = v129 tbl21[3] = v130 do local values = table.pack(new(1, 1)) table.move(values, 1, values.n, 4, tbl21) end bands[1] = v123 bands[2] = v127 do local values = table.pack(fn40(frame, arg, v119, tbl21, 5, { ExpandedWidth = 90, VisibleTransparency = 0.56, OvershootWidth = 108, FinalWidth = 118, HoldTime = 0.18, }, clock)) table.move(values, 1, values.n, 3, bands) end tbl18.Bands = bands return tbl18 end index2.new = function() local sideGradientFx = v116.new("combat_feedback.side_gradient_fx") local v118 = sideGradientFx:Add(Instance.new("ScreenGui")) v118.IgnoreGuiInset = true v118.ResetOnSpawn = false v118.DisplayOrder = v117.CombatFeedback v118.ZIndexBehavior = Enum.ZIndexBehavior.Global local tbl18 = { _trove = sideGradientFx, _leftSide = fn38(v118, 0, 0), _rightSide = fn38(v118, 1, 1), _flashes = {} } v118.Parent = K.hudParent() return setmetatable(tbl18, index2) end index2.Play = function(arg, arg2, arg3) local n = math.clamp(arg3, v86[62], 3) while #arg._flashes > 14 do local v118 = table.remove(arg._flashes, 1) if v118 ~= nil then v118.Holder:Destroy() end end table.insert(arg._flashes, fn44(arg._leftSide, "Left", arg2, n)) table.insert(arg._flashes, fn44(arg._rightSide, "Right", arg2, n)) end index2.Update = function(arg, arg2) for i = #arg._flashes, v86[63], -1 do local v118 = arg._flashes[i] v118.Elapsed = v118.Elapsed + arg2 local n = arg2 * 1.35 / v118.Duration v118.AnimationTime = v118.AnimationTime + n for _, v119 in v118.Bands, nil, nil do fn43(v119, n, v118.Clock) end if v118.Elapsed >= v118.Duration then v118.Holder:Destroy() table.remove(arg._flashes, i) end end end index2.Destroy = function(arg) arg._trove:Destroy() table.clear(arg._flashes) end return index2 end tbl17.gL = function() local gl = tbl17.cache.gL if not gl then gl = { c = fn35() } tbl17.cache.gL = gl end return gl.c end end do -- gM local function fn35() local v115 = cloneref(game:GetService("SoundService")) return function(soundId, volume, playbackSpeed) local sound = Instance.new("Sound") sound.Volume = volume sound.PlaybackSpeed = playbackSpeed sound.SoundId = soundId sound.PlayOnRemove = true sound.Parent = v115 sound:Destroy() end end tbl17.gM = function() local gm = tbl17.cache.gM if not gm then local gm2 = { c = fn35() } tbl17.cache.gM = gm2 gm = gm2 end return gm.c end end do -- gN local function fn35() local v115 = cloneref(game:GetService("Players")) return function(arg) local playerFromCharacter = v115:GetPlayerFromCharacter(arg) local name = playerFromCharacter ~= nil and playerFromCharacter.Name or arg.Name return name, playerFromCharacter ~= nil and playerFromCharacter.DisplayName or name end end tbl17.gN = function() local gn = tbl17.cache.gN if not gn then local gn2 = { c = fn35() } tbl17.cache.gN = gn2 gn = gn2 end return gn.c end end do -- gO local function fn35() local v115 = tbl17.gK() local v116 = tbl17.bG() tbl17.cY() local v117 = tbl17.ad() local v118 = tbl17.aB() tbl17.cX() tbl17.dv() tbl17.gv() local v119 = tbl17.gL() local v120 = tbl17.k() local v121 = tbl17.gM() local v122 = tbl17.gN() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4) local PlayerElimination = v120.new("combat_feedback.PlayerElimination") local v123 = v117.new() local v124 = arg:Reserve({ "FinisherEffect", "EliminationEffect" }) local tbl18 = { _trove = PlayerElimination, _errorReporter = v123, _replicateBinding = v124, _playerContext = arg2, _sfxSoundStorage = arg4, _enemyRegistry = arg3, _killFlash = PlayerElimination:Add(v119.new()), _chams = {}, _soundId = nil, } setmetatable(tbl18, index2) v124:SetHandler(function(arg5) tbl18:_HandleReplicate(arg5) end) tbl18._trove:Connect(v116:GetPropertyChangedSignal({ "PlayerElimination", "Enabled" }), function(arg5) tbl18:_SetEnabled(arg5) end) local function fn36(arg5) tbl18._soundId = nil if arg5 ~= nil then tbl18._trove:AddPromise(tbl18._sfxSoundStorage:GetAsync(arg5):andThen(function(soundId) tbl18._soundId = soundId tbl18._sfxSoundStorage:Preload(soundId) end):catch(function() v118.get():Notify(string.format("failed to load kill sound '%s'", tostring(arg5))) end)) end end tbl18._trove:Connect(v116:GetPropertyChangedSignal({ "PlayerElimination", "Sound", "Name" }), fn36) local playerElimination = v116.Data.PlayerElimination fn36(playerElimination.Sound.Name) tbl18:_SetEnabled(playerElimination.Enabled) return tbl18 end index2._SetEnabled = function(arg, arg2) arg._replicateBinding:SetEnabled(arg2) end index2._HandleReplicate = function(arg, arg2) local inner = arg._playerContext.Inner if inner == nil then return end local enumName = arg2.EnumName if enumName == "FinisherEffect" then if arg2.Args[3] ~= localPlayer then return end local v123 = arg._enemyRegistry:FindByObjectId(arg2.ObjectId) if v123 == nil then return end arg:_HandleKill(v123) elseif enumName == "EliminationEffect" then if arg2.ObjectId ~= inner.FighterState.ObjectId then return end local v123 = arg2.Args[v86[63]] if v123 == nil or v123 == localPlayer then return end local character = v123.Character if character == nil then return end arg:_HandleKill(character) end end index2._HandleKill = function(arg, arg2) local playerElimination = v116.Data.PlayerElimination local sound = playerElimination.Sound if sound.Enabled then local soundId = arg._soundId if soundId ~= nil then v121(soundId, sound.Volume, sound.Pitch) end end local notification = playerElimination.Notification if notification.Enabled then local v123, v124 = v122(arg2) local v125 = string.gsub(notification.Text, "%%(%w+)%%", { NAME = v123, DNAME = v124 }) task.spawn(function() v118.get():Notify(v125) end) end local killFlash = playerElimination.KillFlash if killFlash.Enabled then arg._killFlash:Play(killFlash.Color, killFlash.Duration) end local chams = playerElimination.Chams if chams.Enabled then local v123 = v115.new(arg2, chams.Color, chams.Transparency, chams.Duration, chams.Material) table.insert(arg._chams, v123) end end index2.PreRender = function(arg, arg2) arg._killFlash:Update(arg2) for i = #arg._chams, 1, -1 do if not arg._chams[i]:Step(arg2) then table.remove(arg._chams, i) end end end index2.Destroy = function(arg) for _, v123 in arg._chams, nil, nil do v123:Destroy() end table.clear(arg._chams) arg._errorReporter:Destroy() arg._trove:Destroy() arg._replicateBinding:Destroy() end return index2 end tbl17.gO = function() local go = tbl17.cache.gO if not go then go = { c = fn35() } tbl17.cache.gO = go end return go.c end end do -- gP local function fn35() local v115 = tbl17.a() local clientViewModel = tbl17.aS().ClientViewModel local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({}, index2) end index2.SetEnabled = function(arg, arg2) if arg2 then return arg:_Apply() end return arg:_Revert() end index2._Apply = function(arg) if arg._restore ~= nil then return v115.VoidOk end local playHitmarkerSound = v102(clientViewModel, "PlayHitmarkerSound") if playHitmarkerSound == nil then return v115.err("NoGameHitsound", "function_lookup", "Failed to find PlayHitmarkerSound in ClientViewModel") end v103(clientViewModel, "PlayHitmarkerSound", function() end) arg._restore = { Method = playHitmarkerSound } return v115.VoidOk end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return v115.VoidOk end v103(clientViewModel, "PlayHitmarkerSound", restore.Method) arg._restore = nil return v115.VoidOk end index2.Destroy = function(arg) arg:_Revert() end return index2 end tbl17.gP = function() local gp = tbl17.cache.gP if not gp then gp = { c = fn35() } tbl17.cache.gP = gp end return gp.c end end do -- gQ local function fn35() local v115 = tbl17.gK() local v116 = tbl17.bG() local v117 = tbl17.ad() local v118 = tbl17.gP() local v119 = tbl17.aB() tbl17.cX() tbl17.dv() tbl17.gv() local v120 = tbl17.gL() local v121 = tbl17.k() local v122 = tbl17.gM() local v123 = tbl17.gN() local index2 = {} index2.__index = index2 local function fn36(arg) local v124 = v86[133] return tostring(math.round(arg * 10) / v124) end index2.new = function(arg, arg2, arg3) local PlayerHit = v121.new("combat_feedback.PlayerHit") local v124 = v117.new() local v125 = arg:Reserve({ "DamageNumberEffect" }) local tbl18 = { _trove = PlayerHit, _errorReporter = v124, _replicateBinding = v125, _playerContext = arg2, _sfxSoundStorage = arg3, _noGameHitsound = PlayerHit:Add(v118.new()), _hitFlash = PlayerHit:Add(v120.new()), _chams = {}, _headSoundId = nil, _bodySoundId = nil, } setmetatable(tbl18, index2) v125:SetHandler(function(arg4) tbl18:_HandleReplicate(arg4) end) tbl18._trove:Connect(v116:GetPropertyChangedSignal({ "PlayerHit", v86[44] }), function(arg4) tbl18:_SetEnabled(arg4) end) tbl18._trove:Connect(v116:GetPropertyChangedSignal({ "PlayerHit", "Sound", "DisableGameSound" }), function(arg4) tbl18._errorReporter:ReportResult(tbl18._noGameHitsound:SetEnabled(arg4)) end) local function fn37(arg4) tbl18._headSoundId = nil if arg4 ~= nil then tbl18._trove:AddPromise(tbl18._sfxSoundStorage:GetAsync(arg4):andThen(function(headSoundId) tbl18._headSoundId = headSoundId tbl18._sfxSoundStorage:Preload(headSoundId) end):catch(function() v119.get():Notify(string.format("failed to load head sound '%s'", tostring(arg4))) end)) end end tbl18._trove:Connect(v116:GetPropertyChangedSignal({ "PlayerHit", "Sound", "HeadName" }), fn37) local function fn38(arg4) tbl18._bodySoundId = nil if arg4 ~= nil then tbl18._trove:AddPromise(tbl18._sfxSoundStorage:GetAsync(arg4):andThen(function(bodySoundId) tbl18._bodySoundId = bodySoundId tbl18._sfxSoundStorage:Preload(bodySoundId) end):catch(function() v119.get():Notify(string.format("failed to load body sound '%s'", tostring(arg4))) end)) end end tbl18._trove:Connect(v116:GetPropertyChangedSignal({ "PlayerHit", "Sound", "BodyName" }), fn38) local playerHit = v116.Data.PlayerHit local sound = playerHit.Sound fn37(sound.HeadName) fn38(sound.BodyName) tbl18:_SetEnabled(playerHit.Enabled) tbl18._errorReporter:ReportResult(tbl18._noGameHitsound:SetEnabled(playerHit.Sound.DisableGameSound)) return tbl18 end index2._SetEnabled = function(arg, arg2) arg._replicateBinding:SetEnabled(arg2) end index2._HandleReplicate = function(arg, arg2) if arg2.EnumName ~= "DamageNumberEffect" then return end local inner = arg._playerContext.Inner if inner == nil then return end if arg2.ObjectId ~= inner.FighterState.ObjectId then return end local args = arg2.Args local parent = args[1].Parent if parent == nil then return end arg:_HandleHit(args[2], args[v86[155]] == true and "Head" or "Body", parent) end index2._HandleHit = function(arg, arg2, arg3, arg4) local playerHit = v116.Data.PlayerHit local sound = playerHit.Sound if sound.Enabled then local flag19 = arg3 == "Head" local headSoundId = flag19 and arg._headSoundId or arg._bodySoundId if headSoundId ~= nil then v122(headSoundId, flag19 and sound.HeadVolume or sound.BodyVolume, flag19 and sound.HeadPitch or sound.BodyPitch) end end local notification = playerHit.Notification if notification.Enabled then local v124, v125 = v123(arg4) local str7 = notification.Text:gsub("%%(%w+)%%", { NAME = v124, DNAME = v125, PART = arg3 }) task.spawn(function() v119.get():Notify(v119.template(str7, { DMG = fn36(arg2) })) end) end local hitFlash = playerHit.HitFlash if hitFlash.Enabled then arg._hitFlash:Play(hitFlash.Color, hitFlash.Duration) end local chams = playerHit.Chams if chams.Enabled then local v124 = v115.new(arg4, chams.Color, chams.Transparency, chams.Duration, chams.Material) table.insert(arg._chams, v124) end end index2.PreRender = function(arg, arg2) arg._hitFlash:Update(arg2) for i = #arg._chams, 1, -1 do if not arg._chams[i]:Step(arg2) then table.remove(arg._chams, i) end end end index2.Destroy = function(arg) for _, v124 in arg._chams, nil, nil do v124:Destroy() end table.clear(arg._chams) arg._errorReporter:Destroy() arg._trove:Destroy() arg._replicateBinding:Destroy() end return index2 end tbl17.gQ = function() local gq = tbl17.cache.gQ if not gq then local gq2 = { c = fn35() } tbl17.cache.gQ = gq2 gq = gq2 end return gq.c end end do -- gR local function fn35() local constants = tbl17.aS().Constants return { IsArcadeServer = v102(constants, "IS_ARCADE_SERVER"), IsPublicServer = v102(constants, "IS_PUBLIC_SERVER"), IsPrivateServer = v102(constants, "IS_PRIVATE_SERVER"), } end tbl17.gR = function() local gr = tbl17.cache.gR if not gr then gr = { c = fn35() } tbl17.cache.gR = gr end return gr.c end end do -- gS local function fn35() return { Manipulate = 0 } end tbl17.gS = function() local gs = tbl17.cache.gS if not gs then local gs2 = { c = fn35() } tbl17.cache.gS = gs2 gs = gs2 end return gs.c end end do -- gT local function fn35() local index2 = {} index2.__index = index2 local code = Enum.Font.Code index2.new = function(displayOrder) local screenGui = Instance.new("ScreenGui") screenGui.DisplayOrder = displayOrder screenGui.Parent = K.hudParent() local instance = Instance.new(v86[128]) instance.BackgroundTransparency = v86[63] instance.Interactable = false instance.AnchorPoint = Vector2.new(0.5, 0) instance.Position = UDim2.new(0.5, v86[186], 0.5, 10) instance.Size = UDim2.fromScale(1, v86[63]) instance.Parent = screenGui local uiListLayout = Instance.new("UIListLayout") uiListLayout.Padding = UDim.new(v86[186], v86[175]) uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder uiListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center uiListLayout.Parent = instance local tbl18 = { _screenGui = screenGui, _container = instance, _listLayout = uiListLayout, _indicators = {}, _textSize = 16, _font = Font.fromEnum(code), } setmetatable(tbl18, index2) return tbl18 end index2.SetTextSize = function(arg, textSize) arg._textSize = textSize for _, v115 in arg._indicators, nil, nil do v115.TextSize = textSize end end index2.SetFont = function(arg, font) arg._font = font for _, v115 in arg._indicators, nil, nil do v115.FontFace = font end end index2.SetListOffset = function(arg, arg2) arg._container.Position = UDim2.new(v86[101], v86[186], 0.5, arg2) end index2.SetVerticalPadding = function(arg, arg2) arg._listLayout.Padding = UDim.new(0, arg2) end index2.Show = function(arg, arg2, text, layoutOrder) local v115 = arg._indicators[arg2] if v115 == nil then local textSize = arg._textSize local textLabel = Instance.new("TextLabel") textLabel.BackgroundTransparency = 1 textLabel.Interactable = false textLabel.Size = UDim2.new(v86[63], v86[186], v86[186], textSize) textLabel.FontFace = arg._font textLabel.TextSize = textSize textLabel.TextColor3 = Color3.new(v86[63], 1, v86[63]) Instance.new("UIStroke").Parent = textLabel textLabel.Parent = arg._container arg._indicators[arg2] = textLabel v115 = textLabel end v115.LayoutOrder = layoutOrder v115.Text = text end index2.Hide = function(arg, arg2) local indicators = arg._indicators local v115 = indicators[arg2] if v115 ~= nil then indicators[arg2] = nil v115:Destroy() end end index2.Destroy = function(arg) arg._screenGui:Destroy() end return index2 end tbl17.gT = function() local gt = tbl17.cache.gT if not gt then local gt2 = { c = fn35() } tbl17.cache.gT = gt2 gt = gt2 end return gt.c end end do -- gU local function fn35() tbl17.c_() return function(l,I,W)local N=W.Parent;local P,a=l:Check(I,W,N);if P then return true,I;end;P=W.Position-I;local e=P.Magnitude;local c,E=P/e,W.Size.Magnitude/2;local P_111,p=math.min(9.9,e-E),false;if a~=nil and P_111>0 and a.Distance0.99 then Vector3.xAxis else e).Unit;a,e=E:Cross(c).Unit,p and 6 or 7;for p_112=0,e-1,1 do P_111=math.tau*p_112/e;c=I+(E*math.cos(P_111)+a*math.sin(P_111))*9.9;if l:Check(c,W,N)then return false,c;end;end;return false,nil;end end tbl17.gU = function() local gu = tbl17.cache.gU if not gu then gu = { c = fn35() } tbl17.cache.gU = gu end return gu.c end end do -- gV local function fn35() local v115 = tbl17.cn() local v116 = tbl17.cN() local v117 = tbl17.cq() local v118 = tbl17.bG() local v119 = tbl17.bI() tbl17.c_() tbl17.cF() local v120 = tbl17.gS() tbl17.dm() tbl17.cU() local v121 = tbl17.c4() tbl17.cX() tbl17.cE() local v122 = tbl17.c6() local v123 = tbl17.c7() local v124 = tbl17.dc() local v125 = tbl17.ci() tbl17.gT() local v126 = tbl17.k() local v127 = tbl17.aH() local v128 = tbl17.dd() local v129 = tbl17.de() local v130 = tbl17.df() local v131 = tbl17.cO() local v132 = tbl17.gU() local v133 = tbl17.dg() local data = v118.Data local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local silentAim = v126.new("silent_aim") local silentAim2 = data.SilentAim local fov = silentAim2.Fov local targetConditions = silentAim2.TargetConditions local v134 = silentAim2.TargetHitboxes[v127.DefaultProfile.Class] local manipulate = silentAim2.Manipulate local obj = setmetatable({}, { __mode = "k" }) local function fn36(arg6, arg7, arg8) if manipulate.Enabled then local mode = manipulate.Mode if mode == "OnAllTargets" or arg8 and mode == "OnBestTarget" then local v135, v136 = v132(arg3, arg6, arg7) if not v135 then obj[arg7] = v136 end return v136 ~= nil end end obj[arg7] = nil return not targetConditions.Visible or arg3:Check(arg6, arg7, arg7.Parent) end local v135 = silentAim:Add(v117.new(v119.Fov, fov.Radius, fov.Circle, true)) local followTarget = fov.Circle.FollowTarget local speed = followTarget.Speed local damper = followTarget.Damper local snapDistance = followTarget.SnapDistance local v136 = v122.new(v133(), speed, damper, snapDistance) local v137 = v124.new(arg2, arg, targetConditions, v134, fn36) local tbl18 = { _trove = silentAim, _playerContext = arg2, _inputBinding = arg4, _textIndicatorList = arg5, _targetSelection = v125.new(v137, v115.buildMeasure(silentAim2.Fov.Radius, silentAim2.TargetConditions.WithinFov), v130), _targetAcquisition = v123.new(), _computeTargetPoint = v115.buildTargetPoint(silentAim2.HitboxPoint), _fovRender = v135, _fovFollower = v136, _active = false, _visibleOriginByHitbox = obj, _currentTarget = nil, _currentHitbox = nil, _targetScreenPosition = nil, } setmetatable(tbl18, index2) silentAim:Add(v121:ObserveEnabledKeybind({ "SilentAim" }, function(active) tbl18._active = active arg4:SetEnabled(active) end)) arg4:SetHandler(function(arg6) tbl18:_HandleInput(arg6) end) local v138 = v129(arg2, silentAim, "features.SilentAim", v137, function() return data.SilentAim.TargetHitboxes end) local function fn37(selection) tbl18._targetSelection:SetHitboxSelectionMode(v115.buildHitboxSelectionMode(selection)) end local function fn38(m) manipulate = m v137:UseBestFirstConditionCheck(m.Enabled and m.Mode == "OnBestTarget") end silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "HitboxPoint" }), function(point) tbl18._computeTargetPoint = v115.buildTargetPoint(point) end) silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "Fov" }), function(f) tbl18._targetSelection:SetMeasure(v115.buildMeasure(f.Radius, targetConditions.WithinFov)) v135:SetRadius(f.Radius) v135:SetProperties(f.Circle) local ft = f.Circle.FollowTarget v136:SetProperties(ft.Speed, ft.Damper, ft.SnapDistance) end) silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "TargetConditions" }), function(c) targetConditions = c v137:SetConditions(c) tbl18._targetSelection:SetMeasure(v115.buildMeasure(data.SilentAim.Fov.Radius, c.WithinFov)) end) silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "TargetHitboxes" }), v138) silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "HitboxSelection" }), fn37) silentAim:Connect(v118:GetPropertyChangedSignal({ "SilentAim", "Manipulate" }), fn38) fn38(silentAim2.Manipulate) fn37(silentAim2.HitboxSelection) v138() return tbl18 end index2.GetTargetScreenPosition = function(arg) return arg._targetScreenPosition end index2.Update = function(arg, arg2) local inner = arg._playerContext.Inner local silentAim = data.SilentAim local flag19 = inner ~= nil and inner.ItemBehaviors:EquippedItemAsGun() or nil arg:_UpdateTarget(arg2, flag19, silentAim) arg:_UpdateRender(arg2, flag19, silentAim) end index2._UpdateRender = function(arg, arg2, arg3, arg4) arg:_UpdateFovRender(arg2, arg3, arg4) arg:_UpdateTextIndicator(arg4) end index2._UpdateFovRender = function(arg, arg2, arg3, arg4) local circle = arg4.Fov.Circle local flag19 = arg4.Enabled and circle.Visible and arg3 ~= nil local fovRender = arg._fovRender local fovFollower = arg._fovFollower fovRender:SetVisible(flag19) local v134 = v133() fovFollower:SetInitial(v134) local followTarget = circle.FollowTarget fovFollower:SetTarget(flag19 and followTarget.Enabled and arg._targetScreenPosition or nil) if flag19 then local position = followTarget.Enabled and fovFollower:GetPosition() or v134 fovRender:SetPosition(UDim2.fromOffset(position.X, position.Y)) end fovRender:Update(arg2) end index2._UpdateTextIndicator = function(arg, arg2) local manipulate = arg2.Manipulate if not (manipulate.Enabled and manipulate.ShowIndicator) then arg._textIndicatorList:Hide("Manipulated") return end local currentHitbox = arg._currentHitbox if currentHitbox == nil or arg._visibleOriginByHitbox[currentHitbox] == nil then arg._textIndicatorList:Hide("Manipulated") return end arg._textIndicatorList:Show("Manipulated", "Manipulated", v120.Manipulate) end index2._Reset = function(arg) arg._currentTarget = nil arg._currentHitbox = nil arg._targetScreenPosition = nil arg._targetAcquisition:Reset() end index2._UpdateTarget = function(arg, arg2, arg3, arg4) if not arg._active or arg3 == nil or v128(arg3, arg4.ActivationConditions) then arg:_Reset() return end local v134, v135 = arg._targetSelection:SelectBest() if v134 == nil or v135 == nil then arg:_Reset() return end local circle = arg4.Fov.Circle if circle.Visible and circle.FollowTarget.Enabled then arg._targetScreenPosition = arg._computeTargetPoint(workspace.CurrentCamera, v133(), v135) else arg._targetScreenPosition = nil end if not arg._targetAcquisition:Acquire(arg2, v134, arg4.ReactionTime, arg4.SwitchDelay) then return end arg._currentTarget = v134 arg._currentHitbox = v135 end index2._HandleInput = function(arg, arg2) if arg2.Type ~= "StartShooting" then return end local currentHitbox = arg._currentHitbox if currentHitbox == nil then return end local inner = arg._playerContext.Inner if inner == nil then return end if not (data.SilentAim.ActivationChance / 100 >= math.random()) then return end local v134 = inner.FighterState:FindItemByObjectId(arg2.ObjectId) if v134 == nil then return end if v102(v102(v134, "Info"), "Type") ~= "Gun" then return end local _v135, v136 = arg._computeTargetPoint(workspace.CurrentCamera, v133(), currentHitbox) local v137 = arg2.Args["\1"] if type(v137) ~= "table" then return end local v138 = v116.decode(v137["\0"]) local v139 = v116.decode(v137["\1"]) if v138 == nil or v139 == nil then return end local position = v138.Position local v140 = v131(position, currentHitbox, v136) if v140 == nil then return end local v141 = arg._visibleOriginByHitbox[currentHitbox] if v141 ~= nil then v137["\0"] = v116.encode(CFrame.lookAt(v141, v136)) v137["\1"] = v116.encode(CFrame.lookAt(v141, v136)) else v137["\0"] = v116.encode(CFrame.lookAt(position, v136)) v137["\1"] = v116.encode(CFrame.lookAt(v139.Position, v136)) end v137["\2"] = currentHitbox v137["\3"] = v116.encode(CFrame.new(v140)) end index2.Destroy = function(arg) arg._trove:Destroy() arg._inputBinding:Destroy() end return index2 end tbl17.gV = function() local gv = tbl17.cache.gV if not gv then gv = { c = fn35() } tbl17.cache.gV = gv end return gv.c end end do -- gX local function fn35() tbl17 .gW();return{GreenHaze={SkyboxUp="rbxassetid://160193458",SkyboxBk="rbxassetid://160193404",SkyboxFt="rbxassetid://160193461",SunAngularSize=0,SkyboxLf="rbxassetid://160193469",SkyboxRt="rbxassetid://160193463",SkyboxDn="rbxassetid://160193466"},Space2={StarCount=3000,SkyboxUp="rbxassetid://11844053742",MoonTextureId="rbxassetid://11844121592",SkyboxBk="rbxassetid://11844076072",SkyboxDn="rbxassetid://11844069700",SkyboxFt="rbxassetid://11844067209",SunAngularSize=11,SkyboxLf="rbxassetid://11844063543",SkyboxRt="rbxassetid://11844058446",MoonAngularSize=20},PinkMountains={StarCount=3000,SkyboxUp="rbxassetid://160188588",SkyboxFt="rbxassetid://160188609",SkyboxLf="rbxassetid://160188589",SkyboxDn="rbxassetid://160188614",SunAngularSize=21,SkyboxBk="rbxassetid://160188495",SkyboxRt="rbxassetid://160188597",MoonAngularSize=0},Valentines={StarCount=3000,SkyboxUp="rbxassetid://11427771954",SkyboxFt="rbxassetid://11427769401",SkyboxLf="rbxassetid://11427769401",SkyboxDn="rbxassetid://11427770685",SunAngularSize=21,SkyboxBk="rbxassetid://11427769401",SkyboxRt="rbxassetid://11427769401",MoonAngularSize=0},PinkArt={StarCount=3000,SkyboxUp="rbxassetid://79190209626172",SkyboxFt="rbxassetid://104560113223878",SkyboxLf="rbxassetid://80395333901607",SkyboxDn="rbxassetid://78865378050055",SunAngularSize=21,SkyboxBk="rbxassetid://71607054149497",SkyboxRt="rbxassetid://87570388049514",MoonAngularSize=0},PurplePlanet={StarCount=3000,SkyboxUp="rbxassetid://16262366016",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://16262360469",SkyboxLf="rbxassetid://16262362003",SkyboxDn="rbxassetid://16262358026",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxBk="rbxassetid://16262356578",SkyboxRt="rbxassetid://16262363873",MoonAngularSize=0},Blizzard={StarCount=3000,SkyboxUp="rbxassetid://16653228333",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://16653221738",SkyboxFt="rbxassetid://16653224051",SkyboxDn="rbxassetid://16653222701",SunTextureId="rbxassetid://6196665106",SunAngularSize=21,SkyboxLf="rbxassetid://16653225849",SkyboxRt="rbxassetid://16653227200",MoonAngularSize=0},Winter={StarCount=3000,SkyboxUp="rbxassetid://155674931",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://155657655",SkyboxFt="rbxassetid://155657609",SkyboxLf="rbxassetid://155657671",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxDn="rbxassetid://155674246",SkyboxRt="rbxassetid://155657619",MoonAngularSize=11},FlamingSunset={StarCount=3000,SkyboxUp="rbxassetid://415688354",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://415688378",SkyboxFt="rbxassetid://415688242",SkyboxDn="rbxassetid://415688193",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxLf="rbxassetid://415688310",SkyboxRt="rbxassetid://415688274",MoonAngularSize=0},Mountains={StarCount=3000,SkyboxUp="rbxassetid://15359412677",SkyboxLf="rbxassetid://15359411633",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://15359411132",SkyboxBk="rbxassetid://15359410490",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://15359412131",SkyboxRt="rbxassetid://15359417656",MoonAngularSize=0},FPSBoost={StarCount=3000,SkyboxUp="rbxassetid://11457548274",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://11457548274",SkyboxLf="rbxassetid://11457548274",SkyboxDn="rbxassetid://11457548274",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://11457548274",SkyboxRt="rbxassetid://11457548274",MoonAngularSize=0},AestheticMountains={StarCount=3000,SkyboxUp="rbxassetid://15470207755",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://15470202648",SkyboxBk="rbxassetid://15470198023",SkyboxFt="rbxassetid://15470200128",SunTextureId="rbxassetid://6196665106",SunAngularSize=21,SkyboxDn="rbxassetid://15470151245",SkyboxRt="rbxassetid://15470204862",MoonAngularSize=11},BetterNight3={StarCount=500,SkyboxUp="rbxassetid://2670644331",MoonTextureId="rbxassetid://1075087760",SkyboxLf="rbxassetid://2670643070",SkyboxBk="rbxassetid://2670643994",SkyboxFt="rbxassetid://2670643214",SunTextureId="rbxassetid://6196665106",SunAngularSize=21,SkyboxDn="rbxassetid://2670643365",SkyboxRt="rbxassetid://2670644173",MoonAngularSize=1.5},Galaxy2={StarCount=500,SkyboxUp="rbxassetid://14164405298",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://14164398493",SkyboxBk="rbxassetid://14164368678",SkyboxFt="rbxassetid://14164389230",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://14164386126",SkyboxRt="rbxassetid://14164402782",MoonAngularSize=0},Aesthetic3={StarCount=500,SkyboxUp="rbxassetid://151165227",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://151165191",SkyboxBk="rbxassetid://151165214",SkyboxFt="rbxassetid://151165224",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://151165197",SkyboxRt="rbxassetid://151165206",MoonAngularSize=0},PurpleSpace={StarCount=3000,SkyboxUp="rbxassetid://15983964246",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://15983967420",SkyboxBk="rbxassetid://15983968922",SkyboxFt="rbxassetid://5260817288",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://15983966825",SkyboxRt="rbxassetid://15983966246",MoonAngularSize=0},Pink={StarCount=3000,SkyboxUp="rbxassetid://271077958",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://271042310",SkyboxBk="rbxassetid://271042516",SkyboxFt="rbxassetid://271042556",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://271077243",SkyboxRt="rbxassetid://271042467",MoonAngularSize=0},PurpleNight={StarCount=3000,SkyboxUp="rbxassetid://5084576400",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://5260817288",SkyboxBk="rbxassetid://5260808177",SkyboxDn="rbxassetid://5260653793",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://5260800833",SkyboxRt="rbxassetid://5260800833",MoonAngularSize=0},Flame={StarCount=3000,SkyboxUp="rbxassetid://6286790025",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://6286785801",SkyboxBk="rbxassetid://6286780109",SkyboxFt="rbxassetid://6286784186",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxDn="rbxassetid://6286782353",SkyboxRt="rbxassetid://6286788245",MoonAngularSize=0},Galaxy3={StarCount=3000,SkyboxUp="rbxassetid://14543371676",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://14543257810",SkyboxBk="rbxassetid://14543264135",SkyboxDn="rbxassetid://14543358958",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://14543275895",SkyboxRt="rbxassetid://14543280890",MoonAngularSize=0},Storm={SkyboxUp="rbxassetid://1618913654",MoonTextureId="rbxassetid://1075087760",SkyboxFt="rbxassetid://1618913244",SkyboxBk="rbxassetid://1618912481",SkyboxDn="rbxassetid://1618913943",SunTextureId="rbxassetid://1084351190",SunAngularSize=0,SkyboxLf="rbxassetid://1618912849",SkyboxRt="rbxassetid://1618911568",MoonAngularSize=0},Milkyway={StarCount=3000,SkyboxUp="rbxassetid://137817405681365",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://104400530594543",SkyboxBk="rbxassetid://129876530632297",SkyboxDn="rbxassetid://108406529909981",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://73372229972523",SkyboxRt="rbxassetid://87408857415924",MoonAngularSize=0},PurpleClouds={StarCount=3000,SkyboxUp="rbxassetid://570557727",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://570557775",SkyboxLf="rbxassetid://570557620",SkyboxBk="rbxassetid://570557514",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://570557559",SkyboxRt="rbxassetid://570557672",MoonAngularSize=0},BlueClouds={StarCount=3000,SkyboxUp="rbxassetid://591059642",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://591057861",SkyboxBk="rbxassetid://591058823",SkyboxFt="rbxassetid://591058104",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxDn="rbxassetid://591059876",SkyboxRt="rbxassetid://591057625",MoonAngularSize=0},BetterNight={StarCount=3000,SkyboxUp="rbxassetid://15470303050",SkyboxFt="rbxassetid://15470294431",SkyboxBk="rbxassetid://15470289121",SkyboxDn="rbxassetid://15470291746",SkyboxLf="rbxassetid://15470297162",SkyboxRt="rbxassetid://15470299887"},Cloudy={StarCount=3000,SkyboxUp="rbxassetid://4495867486",SkyboxFt="rbxassetid://4495865458",SkyboxBk="rbxassetid://4495864450",SkyboxDn="rbxassetid://4495864887",SkyboxLf="rbxassetid://4495866035",SkyboxRt="rbxassetid://4495866584"},NetherWorld={StarCount=3000,SkyboxUp="rbxassetid://14365019327",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://14365018399",SkyboxLf="rbxassetid://14365018705",SkyboxDn="rbxassetid://14365023350",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://14365019002",SkyboxRt="rbxassetid://14365018143",MoonAngularSize=0},NewYork={StarCount=3000,SkyboxUp="rbxassetid://11333967970",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://11333973069",SkyboxFt="rbxassetid://11333964303",SkyboxDn="rbxassetid://11333969768",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxLf="rbxassetid://11333971332",SkyboxRt="rbxassetid://11333982864",MoonAngularSize=0},Purple2={StarCount=3000,SkyboxUp="rbxassetid://8107849791",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://8107841671",SkyboxFt="rbxassetid://8107841671",SkyboxDn="rbxassetid://6444884785",SunTextureId="rbxassetid://6196665106",SunAngularSize=11,SkyboxLf="rbxassetid://8107841671",SkyboxRt="rbxassetid://8107841671",MoonAngularSize=0},FunnyStorm={StarCount=3000,SkyboxUp="rbxassetid://6280942402",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://6280935347",SkyboxLf="rbxassetid://6280938749",SkyboxBk="rbxassetid://6280934001",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://6280936575",SkyboxRt="rbxassetid://6280940989",MoonAngularSize=0},Galaxy={StarCount=3000,SkyboxUp="rbxassetid://159454288",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://159454293",SkyboxLf="rbxassetid://159454293",SkyboxDn="rbxassetid://159454296",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://159454299",SkyboxRt="rbxassetid://159454293",MoonAngularSize=0},BlueSpace={StarCount=3000,SkyboxUp="rbxassetid://16876552681",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://16876548320",SkyboxBk="rbxassetid://16876541778",SkyboxFt="rbxassetid://16876546384",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxDn="rbxassetid://16876543880",SkyboxRt="rbxassetid://16876550345",MoonAngularSize=0},Purple3={StarCount=3000,SkyboxUp="rbxassetid://433274285",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://433274131",SkyboxLf="rbxassetid://433274370",SkyboxDn="rbxassetid://433274194",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://433274085",SkyboxRt="rbxassetid://433274429",MoonAngularSize=0},Nebula2={StarCount=3000,SkyboxUp="rbxassetid://16932810138",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://16932800523",SkyboxLf="rbxassetid://16932803722",SkyboxDn="rbxassetid://16932797813",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxBk="rbxassetid://16932794531",SkyboxRt="rbxassetid://16932806825",MoonAngularSize=0},Nebula={StarCount=3000,SkyboxUp="rbxassetid://5260824661",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://5260800833",SkyboxDn="rbxassetid://5260653793",SkyboxBk="rbxassetid://5260808177",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://5260817288",SkyboxRt="rbxassetid://5260811073",MoonAngularSize=0},LunarNight={StarCount=0,SkyboxUp="rbxassetid://187712111",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://187713366",SkyboxFt="rbxassetid://187712836",SkyboxLf="rbxassetid://187713755",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://187712428",SkyboxRt="rbxassetid://187714525",MoonAngularSize=0},Purple={StarCount=3000,SkyboxUp="rbxassetid://8539981085",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://8539982183",SkyboxFt="rbxassetid://8539981721",SkyboxLf="rbxassetid://8539981424",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://8539981943",SkyboxRt="rbxassetid://8539980766",MoonAngularSize=0},Hell={StarCount=3000,SkyboxUp="rbxassetid://11730857150",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://11730840088",SkyboxFt="rbxassetid://11730849615",SkyboxLf="rbxassetid://11730852920",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://11730842997",SkyboxRt="rbxassetid://11730855491",MoonAngularSize=11},Nebula6={StarCount=3000,SkyboxUp="rbxassetid://16694204069",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://16694197080",SkyboxDn="rbxassetid://16694190947",SkyboxBk="rbxassetid://16694187412",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://16694194795",SkyboxRt="rbxassetid://16694200892",MoonAngularSize=11},DarkishPink={StarCount=3000,SkyboxUp="rbxassetid://570555929",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://570555840",SkyboxDn="rbxassetid://570555964",SkyboxBk="rbxassetid://570555736",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://570555800",SkyboxRt="rbxassetid://570555882",MoonAngularSize=11},RedNight={StarCount=3000,SkyboxUp="rbxassetid://401664936",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://401664839",SkyboxFt="rbxassetid://401664960",SkyboxLf="rbxassetid://401664881",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://401664862",SkyboxRt="rbxassetid://401664901",MoonAngularSize=0},Space={StarCount=3000,SkyboxUp="rbxassetid://166510114",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://166510057",SkyboxBk="rbxassetid://166509999",SkyboxFt="rbxassetid://166510116",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://166510092",SkyboxRt="rbxassetid://166510131",MoonAngularSize=0},OverPlanet={StarCount=3000,SkyboxUp="rbxassetid://165052345",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://165052365",SkyboxDn="rbxassetid://165052286",SkyboxBk="rbxassetid://165052268",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://165052328",SkyboxRt="rbxassetid://165052306",MoonAngularSize=11},Orange={StarCount=3000,SkyboxUp="rbxassetid://150939082",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://150939038",SkyboxBk="rbxassetid://150939022",SkyboxFt="rbxassetid://150939047",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://150939056",SkyboxRt="rbxassetid://150939063",MoonAngularSize=0},Pastel={StarCount=3000,SkyboxUp="rbxassetid://2128462236",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://2128462480",SkyboxBk="rbxassetid://2128458653",SkyboxFt="rbxassetid://2128458653",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://2128462027",SkyboxRt="rbxassetid://2128462027",MoonAngularSize=0},Beach={StarCount=0,SkyboxUp="rbxassetid://173380790",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://173380627",SkyboxBk="rbxassetid://173380597",SkyboxFt="rbxassetid://173380642",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxLf="rbxassetid://173380671",SkyboxRt="rbxassetid://173380774",MoonAngularSize=11},FakeClouds={StarCount=3000,SkyboxUp="rbxassetid://8496897504",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://8496896250",SkyboxBk="rbxassetid://8496892810",SkyboxFt="rbxassetid://8496892810",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://8496892810",SkyboxRt="rbxassetid://8496892810",MoonAngularSize=0},Aesthetic2={StarCount=3000,SkyboxUp="rbxassetid://600835177",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://600830446",SkyboxFt="rbxassetid://600832720",SkyboxLf="rbxassetid://600886090",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://600831635",SkyboxRt="rbxassetid://600833862",MoonAngularSize=0},Nebula4={StarCount=3000,SkyboxUp="rbxassetid://17103639457",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://17103622190",SkyboxBk="rbxassetid://17103618635",SkyboxFt="rbxassetid://17103624898",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://17103628153",SkyboxRt="rbxassetid://17103636666",MoonAngularSize=0},BluePlanet={StarCount=3000,SkyboxUp="rbxassetid://16889004122",SkyboxLf="rbxassetid://16888998994",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://16888991855",SkyboxBk="rbxassetid://16888989874",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://16888995219",SkyboxRt="rbxassetid://16889000916",MoonAngularSize=0},Nebula5={StarCount=3000,SkyboxUp="rbxassetid://17124369657",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://17124359797",SkyboxBk="rbxassetid://17124357467",SkyboxFt="rbxassetid://17124362093",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://17124365127",SkyboxRt="rbxassetid://17124367200",MoonAngularSize=0},LunarNight2={StarCount=3000,SkyboxUp="rbxassetid://14365026442",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://14365026242",SkyboxLf="rbxassetid://14365025904",SkyboxBk="rbxassetid://14365026085",SunTextureId="rbxassetid://8281961896",SunAngularSize=21,SkyboxFt="rbxassetid://14365025735",SkyboxRt="rbxassetid://14365025444",MoonAngularSize=0},Pinkie={StarCount=0,SkyboxUp="rbxassetid://11554996247",MoonTextureId="rbxassetid://6444320592",SkyboxDn="rbxassetid://11555013415",SkyboxBk="rbxassetid://11555017034",SkyboxFt="rbxassetid://11555010145",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://11555006545",SkyboxRt="rbxassetid://11555000712",MoonAngularSize=1.5},PurpleMountains={StarCount=3000,SkyboxUp="rbxassetid://17901365106",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://17901359687",SkyboxDn="rbxassetid://17901366771",SkyboxBk="rbxassetid://17901353811",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://17901356262",SkyboxRt="rbxassetid://17901362326",MoonAngularSize=0},DarkClouds={StarCount=0,SkyboxUp="rbxassetid://190477146",SkyboxDn="rbxassetid://190477222",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://190477185",SkyboxBk="rbxassetid://190477248",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://190477200",SkyboxRt="rbxassetid://190477166",MoonAngularSize=1.5},BetterNight2={StarCount=3000,SkyboxBk="rbxassetid://248431616",SkyboxUp="rbxassetid://248431605",SkyboxDn="rbxassetid://248431677",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://248431686",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxFt="rbxassetid://248431598",SkyboxRt="rbxassetid://248431611",MoonAngularSize=1.5},DarkMountains={StarCount=3000,SkyboxUp="rbxassetid://5098819127",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://5098814730",SkyboxFt="rbxassetid://5098815653",SkyboxDn="rbxassetid://5098815227",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxLf="rbxassetid://5098816155",SkyboxRt="rbxassetid://5098820352",MoonAngularSize=0},Nebula3={StarCount=3000,SkyboxUp="rbxassetid://17839226876",MoonTextureId="rbxassetid://6444320592",SkyboxBk="rbxassetid://17839210699",SkyboxFt="rbxassetid://17839218166",SkyboxLf="rbxassetid://17839220800",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxDn="rbxassetid://17839215896",SkyboxRt="rbxassetid://17839223605",MoonAngularSize=0},BetterSky={StarCount=3000,SkyboxUp="rbxassetid://591059642",MoonTextureId="rbxassetid://6444320592",SkyboxLf="rbxassetid://591057861",SkyboxBk="rbxassetid://591058823",SkyboxFt="rbxassetid://591058104",SunTextureId="rbxassetid://6196665106",SunAngularSize=0,SkyboxDn="rbxassetid://591059876",SkyboxRt="rbxassetid://591057625",MoonAngularSize=0},MagentaOrange={StarCount=3000,SkyboxUp="rbxassetid://566616187",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://566616141",SkyboxBk="rbxassetid://566616113",SkyboxDn="rbxassetid://566616232",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://566616044",SkyboxRt="rbxassetid://566616082",MoonAngularSize=0},Aesthetic={StarCount=3000,SkyboxUp="rbxassetid://1417494643",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://1417494253",SkyboxBk="rbxassetid://1417494030",SkyboxDn="rbxassetid://1417494146",SunTextureId="rbxassetid://8281961896",SunAngularSize=0,SkyboxLf="rbxassetid://1417494402",SkyboxRt="rbxassetid://1417494499",MoonAngularSize=0},Alien={StarCount=0,SkyboxUp="rbxassetid://159248176",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://159248187",SkyboxBk="rbxassetid://159248188",SkyboxDn="rbxassetid://159248183",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://159248173",SkyboxRt="rbxassetid://159248192",MoonAngularSize=0},Lunar={StarCount=3000,SkyboxUp="rbxassetid://179724054",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://179724018",SkyboxBk="rbxassetid://179723991",SkyboxDn="rbxassetid://179724005",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://179724029",SkyboxRt="rbxassetid://179724037",MoonAngularSize=0},Retro={StarCount=3000,SkyboxUp="rbxassetid://16642401907",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://16642398372",SkyboxBk="rbxassetid://16642396302",SkyboxDn="rbxassetid://16642397027",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://16642399309",SkyboxRt="rbxassetid://16642400745",MoonAngularSize=0},Realistic={StarCount=3000,SkyboxUp="rbxassetid://402560052",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://402559953",SkyboxBk="rbxassetid://402559900",SkyboxDn="rbxassetid://402559927",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://402559983",SkyboxRt="rbxassetid://402560019",MoonAngularSize=0},Midnight={StarCount=3000,SkyboxUp="rbxassetid://154185031",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://154185021",SkyboxBk="rbxassetid://154185004",SkyboxDn="rbxassetid://154184960",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://154184943",SkyboxRt="rbxassetid://154184972",MoonAngularSize=0},Antartica={StarCount=3000,SkyboxUp="rbxassetid://2118766003",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://2118765204",SkyboxBk="rbxassetid://2118763079",SkyboxDn="rbxassetid://2118766919",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://2118764070",SkyboxRt="rbxassetid://2118761853"},Moon={StarCount=3000,SkyboxUp="rbxassetid://17489393055",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://17489388310",SkyboxBk="rbxassetid://17489386489",SkyboxDn="rbxassetid://17489387417",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://17489389632",SkyboxRt="rbxassetid://17489391101"},NightMountains={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://264907379",MoonTextureId="rbxasset://sky/moon.jpg",SkyboxFt="rbxassetid://264909420",SkyboxBk="rbxassetid://264908339",SkyboxDn="rbxassetid://264907909",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://264909758",SkyboxRt="rbxassetid://264908886"},Art={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://9831769868",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://9831766232",SkyboxBk="rbxassetid://9831762777",SkyboxDn="rbxassetid://9831764283",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://9831768023",SkyboxRt="rbxassetid://9831768909"},Ame={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://160186148",MoonTextureId="rbxassetid://6444320592",SkyboxFt="rbxassetid://160186027",SkyboxBk="rbxassetid://160185927",SkyboxDn="rbxassetid://160185945",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://160186075",SkyboxRt="rbxassetid://160186126"},Dawn={StarCount=3000,MoonAngularSize=11,SkyboxUp="rbxassetid://250381047",SkyboxFt="rbxassetid://250380916",SkyboxBk="rbxassetid://250381017",SkyboxDn="rbxassetid://254156892",SunTextureId="rbxasset://sky/sun.jpg",SunAngularSize=21,SkyboxLf="rbxassetid://250380953",SkyboxRt="rbxassetid://250380985"}};end tbl17.gX = function() local gx = tbl17.cache.gX if not gx then gx = { c = fn35() } tbl17.cache.gX = gx end return gx.c end end do -- gY local function fn35() local v115 = tbl17.f() local v116 = tbl17.gX() local v117 = tbl17.ad() local v118 = tbl17.a() local v119 = tbl17.g() tbl17.gW() local str7 = string.format("%s/%s", "kiciarebuild/rivals", "skyboxes.json") local tbl18 = { SkyboxBk = "string", SkyboxDn = v86[165], SkyboxFt = "string", SkyboxLf = "string", SkyboxRt = "string", SkyboxUp = "string", StarCount = "number", CelestialBodiesShown = "boolean", SunAngularSize = v86[95], MoonAngularSize = v86[95], SunTextureId = v86[165], MoonTextureId = "string", } local tbl19 = { "SkyboxUp", "SkyboxDn", "SkyboxFt", "SkyboxBk", "SkyboxLf", "SkyboxRt" } local function fn36(arg) return arg:match("^%s*(.-)%s*$") or "" end local function fn37(arg) if type(arg) == "number" then return string.format("rbxassetid://%s", tostring(arg)) end if type(arg) ~= "string" then return nil end local v120 = fn36(arg) if v120 == "" then return nil end local match = v120:match("^(%d+)$") if match ~= nil then return string.format("rbxassetid://%s", tostring(match)) end return v120 end local function fn38(arg) local tbl20 = {} for k, v120 in arg, nil, nil do local v121 = tbl18[k] if type(v120) == v121 then tbl20[k] = v120 end end return tbl20 end local function fn39(arg) local tbl20 = {} local v120 = v86[68] arg = type(arg) == v120 and arg or nil if arg ~= nil then for k, v121 in arg, nil, nil do if not (type(k) ~= "string" or type(v121) ~= "table") then if not (k == "" or tbl20[k] ~= nil) then tbl20[k] = fn38(v121) end end end end return tbl20 end local index2 = {} index2.__index = index2 index2.new = function() local tbl20 = { _errorReporter = v117.new(), _configManager = v115.new({ DefaultConfig = v116, CurrentVersion = v86[63], SavePath = "kiciarebuild/rivals", Deserialize = fn39, }), _data = table.clone(v116), _names = {}, _presetByName = {}, Changed = v119.new(), } setmetatable(tbl20, index2) return tbl20 end index2.Initialize = function(arg) arg._errorReporter:ReportResult(arg:_EnsureDefaultFile()) arg._errorReporter:ReportResult(arg:Reload()) end index2._EnsureDefaultFile = function(arg) if isfile(str7) then return v118.VoidOk end local json = arg._configManager:SaveDefaultToFile("skyboxes.json", true) if not json.Ok then return v118.err("Skyboxes", "EnsureDefaultFile", string.format("Failed to create default skybox config: %s", tostring(json.Error.Detail))) end return v118.VoidOk end index2.Reload = function(arg) arg:_EnsureDefaultFile() local json = arg._configManager:LoadFromFile("skyboxes.json") if not json.Ok then arg._data = table.clone(v116) arg:_RebuildIndexes() arg.Changed:Fire(arg:GetNames()) return v118.err("Skyboxes", "Reload", json.Error.Detail) end arg._data = json.Value arg:_RebuildIndexes() arg.Changed:Fire(arg:GetNames()) return v118.VoidOk end index2._RebuildIndexes = function(arg) local names = {} local presetByName = {} for k, v120 in arg._data, nil, nil do table.insert(names, k) presetByName[k] = v120 end table.sort(names) arg._names = names arg._presetByName = presetByName end index2.GetNames = function(arg) return table.clone(arg._names) end index2.FindPreset = function(arg, arg2) return arg2 ~= nil and arg._presetByName[arg2] or nil end index2._Save = function(arg) arg._configManager:SetData(arg._data) local json = arg._configManager:SaveToFile("skyboxes.json") if not json.Ok then return v118.err("Skyboxes", "Save", json.Error.Detail) end return v118.VoidOk end index2.Add = function(arg, arg2, arg3) local v120 = fn36(arg2) if v120 == "" then return v118.err("Skyboxes", "Add", "skybox name cannot be empty") end if arg._presetByName[v120] ~= nil then return v118.err("Skyboxes", "Add", string.format("a skybox named \"%s\" already exists", tostring(v120))) end local tbl20 = {} for _, v121 in tbl19, nil, nil do local v122 = fn37(arg3[v121]) if v122 == nil then return v118.err("Skyboxes", "Add", "all six skybox faces are required") end tbl20[v121] = v122 end arg._data[v120] = tbl20 arg:_RebuildIndexes() local v121 = arg:_Save() arg.Changed:Fire(arg:GetNames()) return v121 end index2.Remove = function(arg, arg2) if arg._data[arg2] == nil then return v118.VoidOk end arg._data[arg2] = nil arg:_RebuildIndexes() local v120 = arg:_Save() arg.Changed:Fire(arg:GetNames()) return v120 end index2.Destroy = function(arg) arg._errorReporter:Destroy() arg.Changed:Destroy() end return index2 end tbl17.gY = function() local gy = tbl17.cache.gY if not gy then gy = { c = fn35() } tbl17.cache.gY = gy end return gy.c end end do -- gZ local function fn35() local v115 = tbl17.bG() tbl17.a0() tbl17.cF() local v116 = tbl17.k() local v117 = cloneref(game:GetService("Players")) local v118 = cloneref(game:GetService("Workspace")) local localPlayer = v117.LocalPlayer local tbl18 = { "LeftFoot", "RightFoot" } local tbl19 = { "Left Leg", "Right Leg" } local vector = Vector3.new(2, 0.2, 2) local index2 = {} index2.__index = index2 local function fn36(arg) local parent = arg.Parent if parent == nil then return nil end if parent:IsA("BasePart") then return parent end if parent:IsA("Attachment") then local parent2 = parent.Parent if parent2 ~= nil and parent2:IsA("BasePart") then return parent2 end end return nil end local function fn37(arg) local tbl20 = {} for _, v119 in tbl18, nil, nil do local v120 = arg:FindFirstChild(v119) if v120 ~= nil and v120:IsA("BasePart") then table.insert(tbl20, v120) end end if #tbl20 > 0 then return tbl20 end for _, v119 in tbl19, nil, nil do local v120 = arg:FindFirstChild(v119) if v120 ~= nil and v120:IsA("BasePart") then table.insert(tbl20, v120) end end return tbl20 end local function fn38(arg) if arg <= 0.5 then return Color3.new(arg * 2, 1, 0) end return Color3.new(1, (1 - arg) * 2, 0) end local function fn39(arg) local _v119, v120 = arg.CFrame:ToEulerAnglesYXZ() return CFrame.new(arg.Position - Vector3.new(0, arg.Size.Y * 0.5, 0)) * CFrame.Angles(v86[186], v120, 0) end local function fn40(arg) return v86[63] - (1 - arg) ^ 5 end index2.new = function(arg) local v119 = v116.new() local folder = Instance.new("Folder") folder.Name = "RivalsSoundVisualizer" folder.Parent = v118 v119:Add(folder) local tbl20 = { _trove = v119, _fighters = arg, _adornFolder = folder, _descendantAddedConnection = nil, _hooksBySound = {}, _lastPlayedAtBySound = {}, _activeEffects = {}, _circlePool = {}, _footprintPool = {}, } setmetatable(tbl20, index2) tbl20:_Initialize() return tbl20 end index2._Initialize = function(arg) arg._trove:Connect(v115:GetPropertyChangedSignal({ "SoundVisualizer", "Enabled" }), function(arg2) arg:_SetEnabled(arg2) end) arg:_SetEnabled(v115.Data.SoundVisualizer.Enabled) end index2._SetEnabled = function(arg, arg2) if (arg2 == arg._descendantAddedConnection) ~= nil then return end if arg2 then arg:_StartTracking() else arg:_StopTracking() end end index2._StartTracking = function(arg) arg._descendantAddedConnection = v118.DescendantAdded:Connect(function(descendant) if descendant:IsA("Sound") then arg:_TrackSound(descendant) end end) for _, v119 in v118:QueryDescendants("Sound") do arg:_TrackSound(v119) end end index2._StopTracking = function(arg) local descendantAddedConnection = arg._descendantAddedConnection if descendantAddedConnection == nil then return end arg._descendantAddedConnection = nil descendantAddedConnection:Disconnect() for _, v119 in arg._hooksBySound, nil, nil do v119.Played:Disconnect() v119.Destroying:Disconnect() end table.clear(arg._hooksBySound) table.clear(arg._lastPlayedAtBySound) end index2._TrackSound = function(arg, arg2) if arg._descendantAddedConnection == nil or arg._hooksBySound[arg2] ~= nil then return end arg._hooksBySound[arg2] = { Played = arg2.Played:Connect(function() if true then arg:_OnPlayed(arg2) return end -- (anti-tamper freeze trap removed) end), Destroying = arg2.Destroying:Connect(function() arg:_ForgetSound(arg2) end), } end index2._ForgetSound = function(arg, arg2) local v119 = arg._hooksBySound[arg2] if v119 == nil then return end arg._hooksBySound[arg2] = nil arg._lastPlayedAtBySound[arg2] = nil v119.Played:Disconnect() v119.Destroying:Disconnect() end index2._AcquireCircle = function(arg) local cylinderHandleAdornment = table.remove(arg._circlePool) if cylinderHandleAdornment == nil then cylinderHandleAdornment = Instance.new("CylinderHandleAdornment") cylinderHandleAdornment.Adornee = v118.Terrain cylinderHandleAdornment.AlwaysOnTop = true cylinderHandleAdornment.ZIndex = 5 cylinderHandleAdornment.Height = 0.05 cylinderHandleAdornment.Angle = 360 cylinderHandleAdornment.Parent = arg._adornFolder end cylinderHandleAdornment.Visible = true return cylinderHandleAdornment end index2._AcquireFootprint = function(arg) local boxHandleAdornment = table.remove(arg._footprintPool) if boxHandleAdornment == nil then boxHandleAdornment = Instance.new("BoxHandleAdornment") boxHandleAdornment.Adornee = v118.Terrain boxHandleAdornment.AlwaysOnTop = true boxHandleAdornment.ZIndex = 5 boxHandleAdornment.Parent = arg._adornFolder end boxHandleAdornment.Visible = true return boxHandleAdornment end index2._RecycleEffect = function(arg, arg2) local adornment = arg2.Adornment adornment.Visible = false if arg2.IsCircle then if #arg._circlePool < 32 then table.insert(arg._circlePool, adornment) return end elseif #arg._footprintPool < 32 then table.insert(arg._footprintPool, adornment) return end adornment:Destroy() end index2._PushEffect = function(arg, arg2) local activeEffects = arg._activeEffects if #activeEffects >= 96 then local v119 = table.remove(activeEffects, 1) if v119 ~= nil then arg:_RecycleEffect(v119) end end table.insert(activeEffects, arg2) end index2.PreRender = function(arg, arg2) local activeEffects = arg._activeEffects if #activeEffects == 0 then return end for i = #activeEffects, 1, -1 do local v119 = activeEffects[i] v119.Elapsed = v119.Elapsed + arg2 local n = math.clamp(v119.Elapsed / v119.Duration, 0, 1) if v119.IsCircle then local adornment = v119.Adornment local radius = v119.MaxRadius * fn40(n) adornment.Radius = radius adornment.InnerRadius = math.max(v86[186], radius - 0.15) adornment.Transparency = 0.2 + 0.8 * n ^ 4 else v119.Adornment.Transparency = 0.2 + 0.8 * n * n end if n >= 1 then arg:_RecycleEffect(v119) table.remove(activeEffects, i) end end end index2._SpawnCircle = function(arg, arg2, color3, arg3, arg4) local v119 = arg:_AcquireCircle() v119.Color3 = color3 v119.Transparency = 0.2 v119.Radius = 0.01 v119.InnerRadius = v86[186] v119.CFrame = arg2 * CFrame.Angles(1.5707963267948966, v86[186], 0) arg:_PushEffect({ Adornment = v119, IsCircle = true, Elapsed = 0, Duration = arg3, MaxRadius = arg4 }) end index2._SpawnFootprint = function(arg, cFrame, size, color3, arg2) local v119 = arg:_AcquireFootprint() v119.Size = size v119.Color3 = color3 v119.Transparency = 0.2 v119.CFrame = cFrame arg:_PushEffect({ Adornment = v119, IsCircle = false, Elapsed = v86[186], Duration = arg2, MaxRadius = 0 }) end index2._PassesSourceFilter = function(arg, arg2, arg3) if arg2 == "All" or arg3 == nil then return true end local flag19 = arg3 == localPlayer.Character if arg2 == "Self" then return flag19 end if flag19 then return false end local v119 = arg._fighters.StateByModel[arg3] if v119 ~= nil then if arg2 == "Enemies" and not v119.IsEnemy then return v86[153] end if arg2 == "Team" and v119.IsEnemy then return v86[153] end end return true end index2._SpawnVisuals = function(arg, arg2, arg3, arg4, arg5, arg6) local flag19 = #arg4 > 0 if arg2 == "Circle" then if flag19 then for _, v119 in arg4, nil, nil do local v120 = v86[48] local n = math.max(v119.Size.X, v119.Size.Z) * 0.5 + v120 arg:_SpawnCircle(fn39(v119), arg5, arg6, n) end else local n = math.max(arg3.Size.X, arg3.Size.Z) * 0.5 + 0.3 arg:_SpawnCircle(fn39(arg3), arg5, arg6, n) end return end if flag19 then for _, v119 in arg4, nil, nil do local vector2 = Vector3.new(v119.Size.X + v86[62], 0.15, v119.Size.Z + v86[62]) arg:_SpawnFootprint(fn39(v119), vector2, arg5, arg6) end else local size = arg3.Size.Magnitude > 0 and arg3.Size or vector arg:_SpawnFootprint(fn39(arg3), size, arg5, arg6) end end index2._OnPlayed = function(arg, arg2) if arg2.Volume <= 0 then return end local now2 = os.clock() local v119 = arg._lastPlayedAtBySound[arg2] if v119 ~= nil and now2 - v119 < v86[126] then return end arg._lastPlayedAtBySound[arg2] = now2 local v120 = fn36(arg2) if v120 == nil then return end local currentCamera = v118.CurrentCamera if currentCamera == nil then return end local magnitude = (currentCamera.CFrame.Position - v120.Position).Magnitude local rollOffMaxDistance = arg2.RollOffMaxDistance if rollOffMaxDistance > 0 and magnitude > rollOffMaxDistance then return end local soundVisualizer = v115.Data.SoundVisualizer if soundVisualizer.MinVolume > 0 and arg2.Volume < soundVisualizer.MinVolume then return end local model = v120:FindFirstAncestorOfClass("Model") if not arg:_PassesSourceFilter(soundVisualizer.Source, model) then return end local n = math.clamp(arg2.Volume * (rollOffMaxDistance > 0 and 1 - math.clamp(magnitude / rollOffMaxDistance, 0, v86[63]) or 1), v86[186], 1) local n33 = 0.6 + 1.9 * n local tbl20 = model ~= nil and fn37(model) or {} local flag19 = #tbl20 > 0 if not soundVisualizer.Types[flag19 and "Footsteps" or "Other"] then return end local footsteps = flag19 and soundVisualizer.Footsteps or soundVisualizer.Other arg:_SpawnVisuals(footsteps.Mode, v120, tbl20, footsteps.UseLoudnessColor and fn38(n) or footsteps.Color, n33) end index2.Destroy = function(arg) arg:_StopTracking() arg._trove:Destroy() end return index2 end tbl17.gZ = function() local gz = tbl17.cache.gZ if not gz then gz = { c = fn35() } tbl17.cache.gZ = gz end return gz.c end end do -- g_ local function fn35() local v115 = tbl17.cK() local v116 = tbl17.ad() local v117 = tbl17.a() local v118 = tbl17.b2() local mechanicsController = tbl17.aS().MechanicsController local updateStateRemote = tbl17.aS().UpdateStateRemote local v119 = mechanicsController local v120 = getmetatable(mechanicsController) local flag19 = v120 ~= nil and v102(v120, "__index") or nil local flag20 = type(flag19) == "table" and v102(flag19, "_UpdateServerState") or nil local v121 = (type(flag20) == "function" and { flag20 } or { nil })[1] local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _errorReporter = v116.new(), _dummy = Color3.new(), _forcedValueByEnumByte = {}, _loadFailure = nil, _restore = nil, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local tbl18 = { Replication = { Fighter = { UpdateState = { FireServer = function(arg2, arg3, arg4, ...) local v122 = arg._forcedValueByEnumByte[arg3] if v122 ~= nil then arg4 = v122 end local v123 = fireServer local v124 = table.pack(...) local v125 = updateStateRemote v124.n = 4 + v124.n - 1 table.move(v124, 1, v124.n, 4, v124) v124[1] = v125 v124[2] = arg3 v124[3] = arg4 v123(table.unpack(v124, 1, v124.n)) end }, }, }, } v110(arg._dummy, { __index = function() return tbl18 end }) end index2.SetForced = function(arg, arg2, arg3) local v122 = v115.encode(arg2) if v122 == nil or arg._forcedValueByEnumByte[v122] == arg3 then return end if not arg:_EnsureLoaded().Ok then return end arg._forcedValueByEnumByte[v122] = arg3 fireServer(updateStateRemote, v122, arg3) end index2.GetOutgoingValue = function(arg, arg2) local v122 = v115.encode(arg2) local v123 = (v122 ~= nil and { arg._forcedValueByEnumByte[v122] } or { nil })[1] if v123 ~= nil then return v123 end return v102(v119, arg2) end index2.ClearForced = function(arg, arg2) local v122 = v115.encode(arg2) if v122 == nil or arg._forcedValueByEnumByte[v122] == nil then return end arg._forcedValueByEnumByte[v122] = nil fireServer(updateStateRemote, v122, v102(v119, arg2)) end index2._EnsureLoaded = function(arg) if arg._restore ~= nil then return v117.VoidOk end local loadFailure = arg._loadFailure if loadFailure ~= nil then return loadFailure end local v122 = arg._errorReporter:ReportResult(arg:_Load()) if not v122.Ok then arg._loadFailure = v122 end return v122 end index2._Load = function(arg) if arg._restore ~= nil then return v117.VoidOk end local v122 = v121 if v122 == nil then return v117.err("StateHook", "function_lookup", "_UpdateServerState not found") end local v123 = nil local v124 = nil for k, v125 in debug.getupvalues(v121) do if not (typeof(v125) ~= "Instance" or not v118(v125, game:GetService("ReplicatedStorage"))) then v123 = k v124 = v125 end end if v123 == nil or v124 == nil then return v117.err("StateHook", "upvalue_lookup", "ReplicatedStorage not found in _UpdateServerState") end debug.setupvalue(v121, v123, arg._dummy) arg._restore = { Fn = v122, Index = v123, Original = v124 } return v117.VoidOk end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil debug.setupvalue(restore.Fn, restore.Index, restore.Original) end index2.Destroy = function(arg) arg:_Revert() arg._errorReporter:Destroy() end return index2 end tbl17.g_ = function() local g = tbl17.cache.g_ if not g then local g2 = { c = fn35() } tbl17.cache.g_ = g2 g = g2 end return g.c end end do -- g0 local function fn35() local v115 = tbl17.bG() tbl17.dr() tbl17.cX() local v116 = tbl17.k() local v117 = cloneref(game:GetService("CollectionService")) local userId = cloneref(game:GetService("Players")).LocalPlayer.UserId local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local obj = setmetatable({ _trove = v116.new("tripmine"), _playerContext = arg, _duelers = arg2, _tripmineDataByHitbox = {} }, index2) obj:_Initialize() return obj end index2.Destroy = function(arg) arg._trove:Destroy() end index2._Initialize = function(arg) local trove = arg._trove local function fn36(arg2) local hitbox = arg2:WaitForChild("Hitbox", 3) if hitbox == nil then return end arg._tripmineDataByHitbox[hitbox] = { EnvironmentId = arg2:GetAttribute("EnvironmentID"), PlacedBy = arg2:GetAttribute("PlacedByUserID"), TeamId = arg2:GetAttribute("TeamID"), } local connection = nil connection = hitbox.Destroying:Connect(function() if true then arg._tripmineDataByHitbox[hitbox] = nil trove:Remove(connection) return end -- (anti-tamper freeze trap removed) end) trove:Add(connection) end for _, v118 in v117:GetTagged("SubspaceTripmine") do fn36(v118) end trove:Connect(v117:GetInstanceAddedSignal("SubspaceTripmine"), fn36) end index2.Update = function(arg) if not v115.Data.SubspaceTripmines.AutoTrigger then return end local inner = arg._playerContext.Inner if not inner then return end local key, v118 = next(arg._tripmineDataByHitbox) if key == nil then return end local fighterState = inner.FighterState local localState = arg._duelers.LocalState local flag19 = true if v118.PlacedBy ~= userId then if localState then local teamId = v118.TeamId flag19 = localState:GetTeamId() == teamId else flag19 = localState end end if fighterState.EnvironmentId ~= v118.EnvironmentId or flag19 and not v115.Data.SubspaceTripmines.TeamTrigger then return end if key.LocalTransparencyModifier ~= (flag19 and 0.5 or 1) then return end local state = fighterState.Character.State if not state.Alive then return end local hitboxBody = state.HitboxBody firetouchinterest(key, hitboxBody, v86[186]) firetouchinterest(key, hitboxBody, v86[63]) end return index2 end tbl17.g0 = function() local g0 = tbl17.cache.g0 if not g0 then local g02 = { c = fn35() } tbl17.cache.g0 = g02 g0 = g02 end return g0.c end end do -- g1 local function fn35() return {} end tbl17.g1 = function() local g1 = tbl17.cache.g1 if not g1 then g1 = { c = fn35() } tbl17.cache.g1 = g1 end return g1.c end end do -- g2 local function fn35() tbl17.aG() local v115 = tbl17.bG() tbl17.cF() tbl17.cU() local v116 = tbl17.c4() tbl17.cX() local v117 = tbl17.da() local v118 = tbl17.k() local v119 = tbl17.aH() tbl17.cZ() local v120 = tbl17.dd() local v121 = tbl17.db() local v122 = tbl17.dg() local v123 = cloneref(game:GetService("Workspace")) local data = v115.Data local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local triggerbot = v118.new("triggerbot") local obj = setmetatable({ _trove = triggerbot, _playerContext = arg, _fighters = arg2, _worldInclude = arg3, _includedHitboxes = v119.DefaultProfile.HitboxSet, _targetHitboxes = data.Triggerbot.TargetHitboxes[v119.DefaultProfile.Class], _active = false, _reactionElapsed = nil, _releaseRemaining = 0, }, index2) obj._trove:Add(v116:ObserveEnabledKeybind({ "Triggerbot" }, function(active) obj._active = active end)) local function fn36(...) end local v124 = nil triggerbot:Add(arg:ObserveContext("features.Triggerbot", function(arg4, arg5) v124 = arg4 local function fn37(...) end arg5:Connect(arg4.ItemBehaviors.EquippedItemChanged, fn37) fn37() end)) triggerbot:Connect(arg.ContextRemoved, function() obj._includedHitboxes = v119.DefaultProfile.HitboxSet end) triggerbot:Connect(v115:GetPropertyChangedSignal({ "Triggerbot", "TargetHitboxes" }), function() fn36(v124 ~= nil and v124.ItemBehaviors:GetEquippedGunName() or nil) end) return obj end index2.Destroy = function(arg) arg._trove:Destroy() end index2.ResetFiringState = function(arg) arg._reactionElapsed = nil arg._releaseRemaining = 0 end index2._CheckCrosshair = function(arg, arg2, arg3) local currentCamera = v123.CurrentCamera local v124 = v122() local v125 = currentCamera:ViewportPointToRay(v124.X, v124.Y) local paramsIncluding = arg._worldInclude:GetParamsIncluding(arg._includedHitboxes) local hit = v123:Raycast(v125.Origin, v125.Direction * 2000, paramsIncluding) if hit == nil then return v86[153] end local model = hit.Instance:FindFirstAncestorOfClass("Model") if model == nil then return v86[153] end local v126 = arg._fighters.StateByModel[model] if v126 == nil or not v126.IsEnemy then return v86[153] end local targetConditions = arg3.TargetConditions if targetConditions.Vulnerable and v126:IsInvincible() then return false end local state = v126.Character.State if not state.Alive then return false end local freefall = Enum.HumanoidStateType.Freefall if not (state.Humanoid:GetState() == freefall and arg._targetHitboxes.Air or arg._targetHitboxes.Ground)[hit.Instance.Name] then return v86[153] end local notDeflecting = targetConditions.NotDeflecting local notShielded = targetConditions.NotShielded if v117.isShielded(arg2, v126, v121().Position, notDeflecting, notShielded) then return false end return true end index2.Update = function(arg, arg2) local triggerbot = v115.Data.Triggerbot if not arg._active then arg:ResetFiringState() return end local inner = arg._playerContext.Inner if inner == nil then arg:ResetFiringState() return end local equipped = inner.ItemBehaviors:GetEquipped() if equipped == nil or equipped.__type ~= "Gun" or v120(equipped, triggerbot.ActivationConditions) then arg:ResetFiringState() return end local v124 = arg:_CheckCrosshair(equipped, triggerbot) if v124 then if arg._reactionElapsed == nil then arg._reactionElapsed = 0 else arg._reactionElapsed = arg._reactionElapsed + arg2 end else arg._reactionElapsed = nil end if v124 and arg._reactionElapsed ~= nil and arg._reactionElapsed >= triggerbot.ReactionTime then arg._releaseRemaining = triggerbot.ReleaseTime inner.FighterState:Input("StartShooting") return end arg._releaseRemaining = math.max(0, arg._releaseRemaining - arg2) if arg._releaseRemaining > v86[186] then inner.FighterState:Input("StartShooting") end end return index2 end tbl17.g2 = function() local g2 = tbl17.cache.g2 if not g2 then local g22 = { c = fn35() } tbl17.cache.g2 = g22 g2 = g22 end return g2.c end end do -- g4 local function fn35() tbl17.g3() return { Groups = { "Items", "Arms" }, ConfigGroupMap = { Arms = "Arms", Items = "Item" } } end tbl17.g4 = function() local g4 = tbl17.cache.g4 if not g4 then local g42 = { c = fn35() } tbl17.cache.g4 = g42 g4 = g42 end return g4.c end end do -- g5 local function fn35() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = {} for _, v115 in arg, nil, nil do tbl18[v115] = {} end local tbl19 = { _groups = arg, _set = tbl18 } setmetatable(tbl19, index2) return tbl19 end index2.NewEntryForGroups = function(arg, arg2, arg3, arg4) local set = arg._set for _, v115 in arg._groups, nil, nil do if not (arg4 ~= nil and not arg4[v115]) then local v116 = set[v115] if v116[arg2] == nil then v116[arg2] = arg3(v115) end end end end index2.NewEntryForGroup = function(arg, arg2, arg3, arg4) local v115 = arg._set[arg2] if v115[arg3] == nil then v115[arg3] = arg4() end end index2.RemoveEntryFromGroups = function(arg, arg2, arg3, arg4) local set = arg._set for _, v115 in arg._groups, nil, nil do if not (arg4 ~= nil and arg4[v115]) then local v116 = set[v115] local v117 = v116[arg2] if v117 ~= nil then arg3(v117) v116[arg2] = nil end end end end index2.RemoveEntriesFromGroup = function(arg, arg2, arg3) local v115 = arg._set[arg2] for k, v116 in v115, nil, nil do arg3(v116) v115[k] = nil end end index2.ForEachEntryInGroup = function(arg, arg2, arg3) for k, v115 in arg._set[arg2], nil, nil do arg3(k, v115) end end index2.ForEachEntryInGroups = function(arg, arg2) local set = arg._set for _, v115 in arg._groups, nil, nil do for k, v116 in set[v115], nil, nil do arg2(k, v116) end end end return index2 end tbl17.g5 = function() local g5 = tbl17.cache.g5 if not g5 then local g52 = { c = fn35() } tbl17.cache.g5 = g52 g5 = g52 end return g5.c end end do -- g6 local function fn35() local groups = tbl17.g4().Groups tbl17.cU() tbl17.aO() tbl17.cX() local v115 = tbl17.g() local v116 = tbl17.k() local v117 = tbl17.ez() tbl17.g3() local function fn36(arg) local tbl18 = {} local tbl19 = {} local model = v102(v102(arg, "ViewModel"), "Model") if model == nil then return { Items = tbl18, Arms = tbl19 } end local function lower(s) return string.lower(tostring(s)) end local function isArmName(name) local n = lower(name) if n == "leftarm" or n == "rightarm" then return true end if n == "leftitem" or n == "rightitem" then return true end if n:find("arm", 1, true) ~= nil then return true end if n:find("glove", 1, true) ~= nil then return true end if n:find("sleeve", 1, true) ~= nil then return true end return false end local function isIgnoredName(name) local n = lower(name) return n == "camera" or n == "humanoidrootpart" or n == "charmholder" or n:find("charm", 1, true) ~= nil end -- Arms: LeftArm / RightArm anywhere in the tree. -- Items: every other part/model under the viewmodel that isn't a known -- helper. This covers ItemVisual plus skins that hang geometry off -- RightItem/LeftItem or their own named roots. local function scan(node, inArm) for _, v118 in node:GetChildren() do local name = v118.Name if isIgnoredName(name) then -- skip helpers elseif isArmName(name) then table.insert(tbl19, v118) elseif v118:IsA("BasePart") then if inArm then table.insert(tbl19, v118) else table.insert(tbl18, v118) end elseif v118:IsA("Model") or v118:IsA("Folder") then if lower(name) == "itemvisual" then table.insert(tbl18, v118) else scan(v118, inArm) end end end end scan(model, false) return { Items = tbl18, Arms = tbl19 } end local function fn37(arg, arg2) for _, v118 in groups, nil, nil do local v119 = arg[v118] local v120 = arg2[v118] if #v119 ~= #v120 then return false end for k, v121 in v119, nil, nil do if v120[k] ~= v121 then return false end end end return true end local index2 = {} index2.__index = index2 index2.new = function(arg) local v118 = v116.new() local tbl18 = { _trove = v118, Entries = {}, EntryAdded = v115.new(), EntryRemoved = v115.new(), EntryRefreshed = v115.new(), } setmetatable(tbl18, index2) v118:Add(arg:ObserveContext("ViewmodelCollector", function(arg2, arg3) arg3:Add(function() tbl18:_RemoveAllItems() end) local itemBehaviors = arg2.ItemBehaviors arg3:Connect(itemBehaviors.ItemAdded, function(item) tbl18:_AddItem(item.Inner) end) arg3:Connect(itemBehaviors.ItemRemoved, function(item) tbl18:_RemoveItem(item.Inner) end) for _, v119 in itemBehaviors:GetItems() do tbl18:_AddItem(v119.Inner) end end)) v118:Connect(v117.Rebuilt, function(I) tbl18 :_RefreshItem(I);end) return tbl18 end index2._AddItem = function(I,W)local N= fn36 (W);I.Entries[W]=N;I.EntryAdded:Fire(W,N);end index2._RemoveItem = function(l,I)l.Entries[I]=nil;l.EntryRemoved:Fire(I);end index2._RefreshItem = function(I,W)local N= fn36 (W);if fn37 (I.Entries[W],N)then return;end;I.Entries[W]=N;I.EntryRefreshed:Fire(W,N);end index2._RemoveAllItems = function(arg) local entries = arg.Entries for k in entries, nil, nil do entries[k] = nil arg.EntryRemoved:Fire(k) end end index2.Destroy = function(arg) arg._trove:Destroy() arg.EntryAdded:Destroy() if n26 < 4780 then -- (anti-tamper freeze trap removed) end arg.EntryRemoved:Destroy() arg.EntryRefreshed:Destroy() end return index2 end tbl17.g6 = function() local g6 = tbl17.cache.g6 if not g6 then g6 = { c = fn35() } tbl17.cache.g6 = g6 end return g6.c end end do -- g7 local function fn35() local v115 = tbl17.dC() local v116 = tbl17.bG() local v117 = tbl17.g4() local v118 = tbl17.g5() tbl17.aO() local v119 = tbl17.a8() local v120 = tbl17.k() tbl17.g6() tbl17.g3() local groups = v117.Groups local configGroupMap = v117.ConfigGroupMap local data = v116.Data local function fn36(arg) local v121 = data.Chams[configGroupMap[arg]] -- Arms mirror the held item's chams look exactly (material, color, -- transparency, strip). The Arms enable toggle still gates it separately. if arg == "Arms" then local item = data.Chams.Item if item ~= nil then v121 = { Material = item.Material, Color = item.Color, Transparency = item.Transparency, StripTextures = item.StripTextures, } end end return { Material = v119.Map[v121.Material], Color = v121.Color, Transparency = v121.Transparency, NullTextures = v121.StripTextures, } end local index2 = {} index2.__index = index2 index2.new = function(arg) local v121 = v120.new() local tbl18 = { _trove = v121, _enabledGroups = { Arms = false, Items = false }, _collector = arg, _groupedEntries = v118.new(groups), } setmetatable(tbl18, index2) v121:Connect(arg.EntryAdded, function(I,W) tbl18 :_AddOverridesToEnabledGroups(I,W);end) v121:Connect(arg.EntryRefreshed, function(I,W) tbl18 :_RemoveOverridesForItem(I,false); tbl18 :_AddOverridesToEnabledGroups(I,W);end) v121:Connect(arg.EntryRemoved, function(I) tbl18 :_RemoveOverridesForItem(I,false);end) for _, v122 in groups, nil, nil do local v123 = configGroupMap[v122] v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, "Enabled" }), function(arg2) tbl18:_SetEnabled(v122, arg2) end) local function fn37() tbl18:_ApplyFullSpec(v122) end for _, v124 in { "Material", "StripTextures" }, nil, nil do v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, v124 }), fn37) end v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, "Color" }), function(I) tbl18 :_ApplyColor( v122 ,I);end) v121:Connect(v116:GetPropertyChangedSignal({ "Chams", v123, "Transparency" }), function(I) tbl18 :_ApplyTransparency( v122 ,I);end) tbl18:_SetEnabled(v122, data.Chams[v123].Enabled) end return tbl18 end index2._SetEnabled = function(arg, arg2, arg3) local enabledGroups = arg._enabledGroups if enabledGroups[arg2] == arg3 then return end enabledGroups[arg2] = arg3 if arg3 then for k, v121 in arg._collector.Entries, nil, nil do arg:_AddOverridesToEnabledGroup(arg2, k, v121) end else arg:_RemoveOverridesFromGroup(arg2, true) end end index2._AddOverridesToEnabledGroups = function(arg, arg2, arg3) arg._groupedEntries:NewEntryForGroups(arg2, function(arg4) local v121 = fn36(arg4) local tbl18 = {} for _, v122 in arg3[arg4], nil, nil do local v123 = v115.new(v122) v123:SetSpec(v121) table.insert(tbl18, v123) end return tbl18 end, arg._enabledGroups) end index2._AddOverridesToEnabledGroup = function(arg, arg2, arg3, arg4) arg._groupedEntries:NewEntryForGroup(arg2, arg3, function() local v121 = fn36(arg2) local tbl18 = {} for _, v122 in arg4[arg2], nil, nil do local v123 = v115.new(v122) v123:SetSpec(v121) table.insert(tbl18, v123) end return tbl18 end) end index2._RemoveOverridesForItem = function(arg, arg2, arg3) arg._groupedEntries:RemoveEntryFromGroups(arg2, function(arg4) for _, v121 in arg4, nil, nil do v121:Destroy(arg3) end end) end index2._RemoveOverridesFromGroup = function(arg, arg2, arg3) arg._groupedEntries:RemoveEntriesFromGroup(arg2, function(arg4) for _, v121 in arg4, nil, nil do v121:Destroy(arg3) end end) end index2._ApplyFullSpec = function(arg, arg2) if not arg._enabledGroups[arg2] then return end local v121 = fn36(arg2) arg._groupedEntries:ForEachEntryInGroup(arg2, function(arg3, arg4) for _, v122 in arg4, nil, nil do v122:SetSpec(v121) end end) end index2._ApplyColor = function(l,I,W)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_113)for I,I_114 in l_113,nil,nil do I_114:SetColor(W);end;end);end index2._ApplyTransparency = function(l,I,W)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_115)for I,I_116 in l_115,nil,nil do I_116:SetTransparency(W);end;end);end index2.Destroy = function(arg) arg._trove:Destroy() for _, v121 in groups, nil, nil do arg:_RemoveOverridesFromGroup(v121, true) end end return index2 end tbl17.g7 = function() local g7 = tbl17.cache.g7 if not g7 then g7 = { c = fn35() } tbl17.cache.g7 = g7 end return g7.c end end do -- g8 local function fn35() local v115 = tbl17.bG() tbl17.a9() local v116 = tbl17.g4() local v117 = tbl17.g5() tbl17.aO() local v118 = tbl17.k() tbl17.g6() tbl17.g3() local groups = v116.Groups local configGroupMap = v116.ConfigGroupMap local data = v115.Data local tbl18 = { "FillColor", "FillTransparency", "OutlineColor", "OutlineTransparency" } local function fn36(arg) return data.ViewModelHighlight[configGroupMap[arg]] end local function fn37(arg, arg2) arg.DepthMode = arg2.AlwaysOnTop and Enum.HighlightDepthMode.AlwaysOnTop or Enum.HighlightDepthMode.Occluded arg.FillColor = arg2.FillColor arg.FillTransparency = arg2.FillTransparency arg.OutlineColor = arg2.OutlineColor arg.OutlineTransparency = arg2.OutlineTransparency end local function createHighlight(parent, adornee, arg) local highlight = Instance.new("Highlight") fn37(highlight, arg) highlight.Adornee = adornee highlight.Parent = parent return highlight end local index2 = {} index2.__index = index2 index2.new = function(arg) local v119 = v118.new() local v120 = v119:Add(Instance.new("Folder")) local tbl19 = { _trove = v119, _highlightContainer = v120, _enabledGroups = { Arms = false, Items = false }, _collector = arg, _groupedEntries = v117.new(groups), } setmetatable(tbl19, index2) v119:Connect(arg.EntryAdded, function(I,W) tbl19 :_AddOverridesToEnabledGroups(I,W);end) v119:Connect(arg.EntryRefreshed, function(I,W) tbl19 :_RemoveHighlightsForItem(I); tbl19 :_AddOverridesToEnabledGroups(I,W);end) v119:Connect(arg.EntryRemoved, function(I) tbl19 :_RemoveHighlightsForItem(I);end) for _, v121 in groups, nil, nil do local v122 = configGroupMap[v121] v119:Connect(v115:GetPropertyChangedSignal({ "ViewModelHighlight", v122, "Enabled" }), function(arg2) tbl19:_SetEnabled(v121, arg2) end) local function fn38() tbl19:_ApplyConfig(v121) end for _, v123 in { "AlwaysOnTop" }, nil, nil do v119:Connect(v115:GetPropertyChangedSignal({ "ViewModelHighlight", v122, v123 }), fn38) end for _, v123 in tbl18, nil, nil do v119:Connect(v115:GetPropertyChangedSignal({ "ViewModelHighlight", v122, v123 }), function(I) tbl19 :_ApplyColorFromConfig( v121 , v123 ,I);end) end tbl19:_SetEnabled(v121, data.ViewModelHighlight[v122].Enabled) end v120.Parent = K.hudParent() return tbl19 end index2._SetEnabled = function(arg, arg2, arg3) local enabledGroups = arg._enabledGroups if enabledGroups[arg2] == arg3 then return end enabledGroups[arg2] = arg3 if arg3 then for k, v119 in arg._collector.Entries, nil, nil do arg:_AddOverridesToEnabledGroup(arg2, k, v119) end else arg:_RemoveHighlightsFromGroup(arg2) end end index2._AddOverridesToEnabledGroups = function(arg, arg2, arg3) arg._groupedEntries:NewEntryForGroups(arg2, function(arg4) local v119 = fn36(arg4) local tbl19 = {} for _, v120 in arg3[arg4], nil, nil do local v121 = createHighlight(arg._highlightContainer, v120, v119) table.insert(tbl19, v121) end return tbl19 end, arg._enabledGroups) end index2._AddOverridesToEnabledGroup = function(arg, arg2, arg3, arg4) arg._groupedEntries:NewEntryForGroup(arg2, arg3, function() local v119 = fn36(arg2) local tbl19 = {} for _, v120 in arg4[arg2], nil, nil do local v121 = createHighlight(arg._highlightContainer, v120, v119) table.insert(tbl19, v121) end return tbl19 end) end index2._RemoveHighlightsForItem = function(arg, arg2) arg._groupedEntries:RemoveEntryFromGroups(arg2, function(arg3) for _, v119 in arg3, nil, nil do v119:Destroy() end end) end index2._RemoveHighlightsFromGroup = function(arg, arg2) arg._groupedEntries:RemoveEntriesFromGroup(arg2, function(arg3) for _, v119 in arg3, nil, nil do v119:Destroy() end end) end index2._ApplyConfig = function(arg, arg2) if not arg._enabledGroups[arg2] then return end local v119 = fn36(arg2) arg._groupedEntries:ForEachEntryInGroup(arg2, function(arg3, arg4) for _, v120 in arg4, nil, nil do fn37(v120, v119) end end) end index2._ApplyColorFromConfig = function(l,I,W,N)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_117)for I,I_118 in l_117,nil,nil do I_118[W]=N;end;end);end index2.Destroy = function(arg) for _, v119 in groups, nil, nil do arg:_RemoveHighlightsFromGroup(v119) end arg._trove:Destroy() end return index2 end tbl17.g8 = function() local g8 = tbl17.cache.g8 if not g8 then g8 = { c = fn35() } tbl17.cache.g8 = g8 end return g8.c end end do -- g9 local function fn35() local v115 = tbl17.ay() local v116 = nil local index2 = {} index2.__index = index2 local color = Color3.new(v86[63], 1, v86[63]) local function fn36(arg) local opposite = arg.Opposite if opposite == nil then return -1 end return arg.Normal:Dot(opposite) end local function fn37(arg) return ("%.3f,%.3f,%.3f"):format(arg.X, arg.Y, arg.Z) end local function fn38(arg, arg2, arg3, arg4) return v115.new(function(arg5) local v117 = v116 if v117 == nil then v117 = cloneref(game:GetService("UGCValidationService")) v116 = v117 end local v118, v119 = v107(v117.GetMeshDataBinaryString, v117, arg) if not v118 then arg5(arg4) return end local v120, v121 = v107(v117.CreateEditableMeshFromBinaryStringRobloxOnly, v117, v119) if not v120 or v121 == nil then arg5(arg4) return end local tbl18 = {} for _, v122 in v121:GetFaces() do local faceVertices = v121:GetFaceVertices(v122) if not (#faceVertices < 3) then local tbl19 = {} for k, v123 in faceVertices, nil, nil do tbl19[k] = v121:GetPosition(v123) end local v123 = (tbl19[v86[56]] - tbl19[1]):Cross(tbl19[3] - tbl19[1]) if not (v123.Magnitude < 1e-06) then table.insert(tbl18, { FaceId = v122, Verts = faceVertices, Positions = tbl19, Normal = v123.Unit }) end end end for _, v122 in tbl18, nil, nil do v121:RemoveFace(v122.FaceId) end v121:RemoveUnused() local tbl19 = {} local tbl20 = {} for _, v122 in tbl18, nil, nil do local n = #v122.Verts for i = 1, n do local n33 = i % n + 1 local v123 = v122.Positions[i] local v124 = v122.Positions[n33] local v125 = fn37(v123) local v126 = fn37(v124) local str7 = v125 .. "|" .. v126 if v126 < v125 then str7 = v126 .. "|" .. v125 end local v127 = tbl19[str7] if v127 == nil then local tbl21 = { PointA = v123, PointB = v124, Normal = v122.Normal, Opposite = nil } tbl19[str7] = tbl21 table.insert(tbl20, tbl21) elseif v127.Opposite == nil then v127.Opposite = v122.Normal end end end local v122 = math.cos(math.rad(arg3)) local tbl21 = {} for _, v123 in tbl20, nil, nil do if fn36(v123) < v122 then table.insert(tbl21, v123) end end if #tbl21 > 10000 then table.sort(tbl21, function(arg6, arg7) return fn36(arg6) < fn36(arg7) end) for i = #tbl21, 10001, -1 do tbl21[i] = nil end end if #tbl21 == v86[186] then arg5(arg4) return end local n = arg2 * 0.5 for _, v123 in tbl21, nil, nil do local n33 = v123.PointB - v123.PointA if not (n33.Magnitude < 1e-06) then local v124 = v123.Normal:Cross(n33.Unit) if not (v124.Magnitude < 1e-06) then local unit = v124.Unit local n34 = v123.Normal * 0.001 if not v107(function() local v125 = v121:AddVertex(v123.PointA - unit * n + n34) local v126 = v121:AddVertex(v123.PointA + unit * n + n34) local v127 = v121:AddVertex(v123.PointB + unit * n + n34) local v128 = v121:AddVertex(v123.PointB - unit * n + n34) for i = 1, 4 do v121:AddColor(color, 1) end v121:AddTriangle(v125, v126, v127) v121:AddTriangle(v125, v127, v128) end) then break else end end end end arg5(Content.fromObject(v121)) end) end local function fn39(arg, arg2, arg3) local v117 = tostring return string.format("%s|%s|%s", tostring(arg), tostring(arg2), v117(arg3)) end local tbl18 = {} local function fn40(arg, arg2, arg3, arg4) local v117 = fn39(arg, arg2, arg3) local v118 = tbl18[v117] if v118 ~= nil then return v115.resolve(v118) end local v119 = getthreadidentity() setthreadidentity(v86[162]) local v120 = fn38(arg, arg2, arg3, arg4) setthreadidentity(v119) return v120:andThen(function(arg5) tbl18[v117] = arg5 return arg5 end) end local function fn41(arg, meshContent, color2) local v117 = getthreadidentity() setthreadidentity(8) arg.MeshContent = meshContent arg.Color = color2 setthreadidentity(v117) end local function fn42(arg, color2) local v117 = getthreadidentity() setthreadidentity(v86[162]) arg.Color = color2 setthreadidentity(v117) end index2.new = function(arg, arg2, arg3, arg4) local tbl19 = { _meshPartSnapshots = {}, _width = arg2, _creaseDegrees = arg4 or 30, _color = arg3, _descendantAddedConnection = nil, _partDestroyingConnections = {}, _pendingContent = {}, } setmetatable(tbl19, index2) if arg:IsA("MeshPart") then tbl19:_AddPart(arg) end for _, v117 in arg:QueryDescendants("MeshPart") do tbl19:_AddPart(v117) end tbl19._descendantAddedConnection = arg.DescendantAdded:Connect(function(descendant) if descendant:IsA("MeshPart") then tbl19:_AddPart(descendant) end end) return tbl19 end index2._RemovePendingPromise = function(arg, arg2) local v117 = arg._pendingContent[arg2] if v117 ~= nil then v117:cancel() end end local function fn43(arg) local meshSize = arg.MeshSize local size = arg.Size local n = 0 local n33 = 0 for _, v117 in { { meshSize.X, size.X }, { meshSize.Y, size.Y }, { meshSize.Z, size.Z } }, nil, nil do if v117[2] > 1e-06 then n += v117[1] / v117[v86[56]] n33 += v86[63] end end if n33 == 0 then return v86[63] end return n / n33 end index2._ApplyWireframe = function(arg, arg2, arg3, arg4) arg:_RemovePendingPromise(arg2) local creaseDegrees = arg._creaseDegrees local v117 = fn40(arg3, arg._width * fn43(arg2), creaseDegrees, arg4) arg._pendingContent[arg2] = v117 v117:andThen(function(arg5) fn41(arg2, arg5, arg._color) end):finally(function() arg._pendingContent[arg2] = nil end) end index2._AddPart = function(arg, arg2) if arg._meshPartSnapshots[arg2] ~= nil then return end local meshId = arg2.MeshId if meshId == "" then return end local meshContent = arg2.MeshContent local tbl19 = { OriginalMeshId = meshId, OriginalMeshContent = meshContent, OriginalColor = arg2.Color } arg:_ApplyWireframe(arg2, meshId, meshContent) arg._meshPartSnapshots[arg2] = tbl19 arg._partDestroyingConnections[arg2] = arg2.Destroying:Once(function() arg:_RemovePendingPromise(arg2) arg._partDestroyingConnections[arg2] = nil arg._meshPartSnapshots[arg2] = nil end) end index2.SetWidth = function(arg, width) arg._width = width arg:_Regenerate() end index2.SetCreaseDegrees = function(arg, creaseDegrees) arg._creaseDegrees = creaseDegrees arg:_Regenerate() end index2._Regenerate = function(arg) for k, v117 in arg._meshPartSnapshots, nil, nil do arg:_ApplyWireframe(k, v117.OriginalMeshId, v117.OriginalMeshContent) end end index2.SetColor = function(arg, color2) arg._color = color2 for k in arg._meshPartSnapshots, nil, nil do fn42(k, color2) end end index2.Destroy = function(arg, arg2) arg._descendantAddedConnection:Disconnect() for _, v117 in arg._partDestroyingConnections, nil, nil do v117:Disconnect() end for _, v117 in arg._pendingContent, nil, nil do v117:cancel() end if arg2 then for k, v117 in arg._meshPartSnapshots, nil, nil do fn41(k, v117.OriginalMeshContent, v117.OriginalColor) end end end return index2 end tbl17.g9 = function() local g9 = tbl17.cache.g9 if not g9 then local g92 = { c = fn35() } tbl17.cache.g9 = g92 g9 = g92 end return g9.c end end do -- ha local function fn35() tbl17.aO() local v115 = tbl17.k() local v116 = tbl17.g9() local v117 = tbl17.bG() local v118 = tbl17.g4() local v119 = tbl17.g5() tbl17.g6() tbl17.g3() local groups = v118.Groups local configGroupMap = v118.ConfigGroupMap local data = v117.Data local function fn36(arg) return data.ViewModelWireframe[configGroupMap[arg]] end local index2 = {} index2.__index = index2 index2.new = function(arg) local v120 = v115.new() local tbl18 = { _trove = v120, _enabledGroups = { Arms = v86[153], Items = false }, _collector = arg, _groupedEntries = v119.new(groups), } setmetatable(tbl18, index2) v120:Connect(arg.EntryAdded, function(I,W) tbl18 :_AddWireframesToEnabledGroups(I,W);end) v120:Connect(arg.EntryRefreshed, function(I,W) tbl18 :_RemoveWireframesForItem(I,false); tbl18 :_AddWireframesToEnabledGroups(I,W);end) v120:Connect(arg.EntryRemoved, function(I) tbl18 :_RemoveWireframesForItem(I,false);end) for _, v121 in groups, nil, nil do local v122 = configGroupMap[v121] v120:Connect(v117:GetPropertyChangedSignal({ "ViewModelWireframe", v122, v86[44] }), function(arg2) tbl18:_SetEnabled(v121, arg2) end) v120:Connect(v117:GetPropertyChangedSignal({ "ViewModelWireframe", v122, "Width" }), function(arg2) tbl18:_ApplyWidth(v121, arg2) end) v120:Connect(v117:GetPropertyChangedSignal({ "ViewModelWireframe", v122, "Color" }), function(I) tbl18 :_ApplyColor( v121 ,I);end) tbl18:_SetEnabled(v121, fn36(v121).Enabled) end return tbl18 end index2._SetEnabled = function(arg, arg2, arg3) if arg._enabledGroups[arg2] == arg3 then return end arg._enabledGroups[arg2] = arg3 if arg3 then for k, v120 in arg._collector.Entries, nil, nil do arg:_AddWireframesToEnabledGroup(arg2, k, v120) end else arg:_RemoveWireframesFromGroup(arg2, v86[34]) end end index2._AddWireframesToEnabledGroups = function(arg, arg2, arg3) arg._groupedEntries:NewEntryForGroups(arg2, function(arg4) local v120 = fn36(arg4) local tbl18 = {} for _, v121 in arg3[arg4], nil, nil do table.insert(tbl18, v116.new(v121, v120.Width, v120.Color)) end return tbl18 end, arg._enabledGroups) end index2._AddWireframesToEnabledGroup = function(arg, arg2, arg3, arg4) arg._groupedEntries:NewEntryForGroup(arg2, arg3, function() local v120 = fn36(arg2) local tbl18 = {} for _, v121 in arg4[arg2], nil, nil do table.insert(tbl18, v116.new(v121, v120.Width, v120.Color)) end return tbl18 end) end index2._RemoveWireframesForItem = function(arg, arg2, arg3) arg._groupedEntries:RemoveEntryFromGroups(arg2, function(arg4) for _, v120 in arg4, nil, nil do v120:Destroy(arg3) end end) end index2._RemoveWireframesFromGroup = function(arg, arg2, arg3) arg._groupedEntries:RemoveEntriesFromGroup(arg2, function(arg4) for _, v120 in arg4, nil, nil do v120:Destroy(arg3) end end) end index2._ApplyWidth = function(arg, arg2, arg3) if not arg._enabledGroups[arg2] then return end arg._groupedEntries:ForEachEntryInGroup(arg2, function(arg4, arg5) for _, v120 in arg5, nil, nil do v120:SetWidth(arg3) end end) end index2._ApplyColor = function(l,I,W)if not l._enabledGroups[I]then return;end;l._groupedEntries:ForEachEntryInGroup(I,function(l,l_119)for I,I_120 in l_119,nil,nil do I_120:SetColor(W);end;end);end index2.Destroy = function(arg) arg._trove:Destroy() for _, v120 in groups, nil, nil do arg:_RemoveWireframesFromGroup(v120, true) end end return index2 end tbl17.ha = function() local ha = tbl17.cache.ha if not ha then local ha2 = { c = fn35() } tbl17.cache.ha = ha2 ha = ha2 end return ha.c end end do -- hb local function fn35() tbl17.cX() local v115 = tbl17.g7() local v116 = tbl17.g6() local v117 = tbl17.g8() local v118 = tbl17.ha() local index2 = {} index2.__index = index2 index2.new = function(arg) local v119 = v116.new(arg) local tbl18 = { _collector = v119, _chams = v115.new(v119), _highlight = v117.new(v119), _wireframe = v118.new(v119) } setmetatable(tbl18, index2) return tbl18 end index2.Destroy = function(arg) arg._collector:Destroy() arg._chams:Destroy() arg._highlight:Destroy() arg._wireframe:Destroy() end return index2 end tbl17.hb = function() local hb = tbl17.cache.hb if not hb then local hb2 = { c = fn35() } tbl17.cache.hb = hb2 hb = hb2 end return hb.c end end do -- hc local function fn35() local v115 = tbl17.bG() tbl17.aO() local v116 = tbl17.a() local v117 = tbl17.k() local clientViewModel = tbl17.aS().ClientViewModel local v118 = tbl17.ad() local v119 = tbl17.dI() local index2 = {} index2.__index = index2 local function fn36() return false end local function fn37(arg) local viewModelOffset = v115.Data.ViewModelOffset local cframe = CFrame.fromOrientation return CFrame.new(viewModelOffset.X * arg, viewModelOffset.Y * arg, viewModelOffset.Z * arg) * cframe(math.rad(viewModelOffset.Pitch * arg), math.rad(viewModelOffset.Yaw * arg), math.rad(viewModelOffset.Roll * arg)) end index2.new = function(arg) local v120 = v118.new() local ViewModelOffset = v117.new("item_modifiers.ViewModelOffset") local tbl18 = { _trove = ViewModelOffset, _errorReporter = v120, _isThirdPerson = arg or fn36 } setmetatable(tbl18, index2) ViewModelOffset:Connect(v115:GetPropertyChangedSignal({ "ViewModelOffset", "Enabled" }), function(arg2) tbl18._errorReporter:ReportResult(tbl18:_SetEnabled(arg2)) end) tbl18._errorReporter:ReportResult(tbl18:_SetEnabled(v115.Data.ViewModelOffset.Enabled)) return tbl18 end index2._SetEnabled = function(arg, arg2) if arg2 then return arg:_LoadHook() end arg:_RevertHook() return v116.VoidOk end index2._LoadHook = function(arg) if arg._restore ~= nil then return v116.VoidOk end local setCFrame = v102(clientViewModel, "SetCFrame") if setCFrame == nil then return v116.err("ViewModelOffset", "function_lookup", "ClientViewModel.SetCFrame not found") end v103(clientViewModel, "SetCFrame", function(arg2, cFrame) local primaryPart = v102(arg2, "Model").PrimaryPart if not v119(arg2) then setCFrame(arg2, cFrame) return end if arg._isThirdPerson() then primaryPart.CFrame = cFrame return end local v120 = fn37(v86[63] - v102(arg2, "_aim_spring").p) if v120 ~= nil then primaryPart.CFrame = cFrame * v120 else primaryPart.CFrame = cFrame end end) arg._restore = { Method = setCFrame } return v116.VoidOk end index2._RevertHook = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil v103(clientViewModel, "SetCFrame", restore.Method) end index2.Destroy = function(arg) arg._trove:Destroy() arg._errorReporter:Destroy() arg:_RevertHook() end return index2 end tbl17.hc = function() local hc = tbl17.cache.hc if not hc then local hc2 = { c = fn35() } tbl17.cache.hc = hc2 hc = hc2 end return hc.c end end do -- hd local function fn35() local v115 = tbl17.bG() local v116 = tbl17.c4() local v117 = tbl17.a() local v118 = tbl17.k() local v119 = getmetatable(tbl17.aS().MechanicsController) local flag19 = v119 ~= nil and v102(v119, "__index") or nil local flag20 = type(flag19) == "table" and v102(flag19, "_GetWalkSpeed") or nil local v120 = (type(flag20) == "function" and { flag20 } or { nil })[v86[63]] local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _trove = v118.new("movement.WalkSpeed"), _isHookLoaded = v86[153], _multiplierEnabled = false, _multiplier = 1, _slidingMultiplierEnabled = v86[153], _slidingMultiplier = 1, } setmetatable(tbl18, index2) tbl18._trove:Add(v116:ObserveEnabledKeybind({ "Movement", "WalkSpeed" }, function(arg) tbl18:SetMultiplierEnabled(arg) end)) tbl18._trove:Add(v116:ObserveEnabledKeybind({ "Movement", "Sliding" }, function(arg) tbl18:SetSlidingMultiplierEnabled(arg) end)) tbl18._trove:Connect(v115:GetPropertyChangedSignal({ "Movement", "WalkSpeed", "Speed" }), function(arg) tbl18:SetMultiplier(arg) end) tbl18._trove:Connect(v115:GetPropertyChangedSignal({ "Movement", "Sliding", "Speed" }), function(arg) tbl18:SetSlidingMultiplier(arg) end) tbl18:SetMultiplier(v115.Data.Movement.WalkSpeed.Speed) tbl18:SetSlidingMultiplier(v115.Data.Movement.Sliding.Speed) return tbl18 end index2._AttemptLoadHook = function(arg) if arg._isHookLoaded then return v117.VoidOk end if v120 == nil then return v117.err("WalkSpeed", "function_lookup", "Failed to find `_GetWalkSpeed`") end local v121 = nil for k, v122 in debug.getupvalues(v120) do if type(v122) == "table" and v102(v122, "BASE_WALKSPEED") ~= nil then v121 = k break else v121 = nil end end if v121 == nil then return v117.err("WalkSpeed", "upvalue_search", "Failed to find `BASE_WALKSPEED` upvalue") end arg._upvalueIndex = v121 local v122 = debug.getupvalue(v120, v121) arg._oldUpvalueByFunction = v122 debug.setupvalue(v120, v121, setmetatable({}, { __index = function(arg2, arg3) if arg3 == "BASE_WALKSPEED" then local baseWalkspeed = v102(v122, "BASE_WALKSPEED") if arg._slidingMultiplierEnabled and debug.info(3, "n") == "Slide" then return baseWalkspeed * arg._slidingMultiplier end if arg._multiplierEnabled then return baseWalkspeed * arg._multiplier end return baseWalkspeed end game:GetService("Players").LocalPlayer:Kick("Unexpected behavior (client physics 1)") return nil end })) arg._isHookLoaded = true return v117.VoidOk end index2.SetMultiplierEnabled = function(arg, multiplierEnabled) arg._multiplierEnabled = multiplierEnabled return arg:_AttemptLoadHook() end index2.SetMultiplier = function(arg, multiplier) arg._multiplier = multiplier return arg:_AttemptLoadHook() end index2.SetSlidingMultiplierEnabled = function(arg, slidingMultiplierEnabled) arg._slidingMultiplierEnabled = slidingMultiplierEnabled return arg:_AttemptLoadHook() end index2.SetSlidingMultiplier = function(arg, slidingMultiplier) arg._slidingMultiplier = slidingMultiplier return arg:_AttemptLoadHook() end index2.Destroy = function(arg) arg._trove:Destroy() if arg._isHookLoaded and arg._upvalueIndex ~= nil and arg._oldUpvalueByFunction ~= nil and v120 ~= nil then debug.setupvalue(v120, arg._upvalueIndex, arg._oldUpvalueByFunction) end end return index2 end tbl17.hd = function() local hd = tbl17.cache.hd if not hd then hd = { c = fn35() } tbl17.cache.hd = hd end return hd.c end end do -- he local function fn35() local tbl18 = {} local tbl19 = {} for _, v115 in { { Name = "Soft Rain", Url = "https://github.com/kiciahook-org/v3-assets/raw/refs/heads/main/soft-rain.ogg", }, { Name = "Light Rain", Url = "https://github.com/kiciahook-org/v3-assets/raw/refs/heads/main/light-rain.ogg", }, }, nil, nil do table.insert(tbl18, v115.Name) tbl19[v115.Name] = v115.Url end return { Names = tbl18, UrlByName = tbl19 } end tbl17.he = function() local he = tbl17.cache.he if not he then he = { c = fn35() } tbl17.cache.he = he end return he.c end end do -- hf local function fn35() local v115 = tbl17.he() local v116 = tbl17.e5() local v117 = tbl17.bG() local v118 = tbl17.e7() local v119 = tbl17.aB() tbl17.ay() local v120 = tbl17.k() local v121 = cloneref(game:GetService("SoundService")) local function createSound() local sound = Instance.new("Sound") sound.Looped = true sound.Parent = v121 return sound end local function fn36() local ambience = v117.Data.Ambience if not ambience.Enabled then return nil end return v116.normalize(ambience.CustomSound) or v115.UrlByName[ambience.Sound] end local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _trove = v120.new(), _assetPromise = nil, _sound = nil, _customAssets = v118.new(), _currentSource = nil, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local function fn37() arg:_Sync() end for _, v122 in { v86[44], "Sound", "CustomSound", "Volume" }, nil, nil do arg._trove:Connect(v117:GetPropertyChangedSignal({ "Ambience", v122 }), fn37) end arg:_Sync() end index2._Sync = function(arg) local v122 = fn36() if v122 == nil then arg:_Stop() return end local sound = arg._sound or createSound() arg._sound = sound sound.Volume = v117.Data.Ambience.Volume if v122 == arg._currentSource then return end arg._currentSource = v122 arg:_CancelAssetPromise() local response2 = arg._customAssets:GetAsync(v122) arg._assetPromise = response2 response2:andThen(function(soundId) sound.SoundId = soundId sound:Play() end):catch(function(arg2) local v123 = tostring v119.get():Notify(string.format("failed to load ambience sound '%s': %s", tostring(v122), v123(arg2))) end):finally(function() arg._assetPromise = nil end) end index2._CancelAssetPromise = function(arg) local assetPromise = arg._assetPromise if assetPromise ~= nil then assetPromise:cancel() end end index2._Stop = function(arg) arg._currentSource = nil arg:_CancelAssetPromise() local sound = arg._sound if sound ~= nil then arg._sound = nil sound:Destroy() end end index2.Destroy = function(arg) arg:_Stop() arg._trove:Destroy() end return index2 end tbl17.hf = function() local hf = tbl17.cache.hf if not hf then local hf2 = { c = fn35() } tbl17.cache.hf = hf2 hf = hf2 end return hf.c end end do -- hg local function fn35() local v115 = tbl17.g() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local EnsuredChildren = v116.new("instance.EnsuredChildren") local tbl18 = { _trove = EnsuredChildren, _parent = arg, _className = arg2, _createFallback = arg3, _childSet = {}, _isCreating = false, ChildAdded = EnsuredChildren:Add(v115.new()), ChildRemoved = EnsuredChildren:Add(v115.new()), } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Connect(arg._parent.ChildAdded, function(arg2) if arg._isCreating or not arg2:IsA(arg._className) or arg._childSet[arg2] then return end local fallback = arg._fallback if fallback ~= nil then arg._fallback = nil arg._childSet[fallback] = nil fallback:Destroy() arg.ChildRemoved:Fire(fallback) end arg._childSet[arg2] = true arg.ChildAdded:Fire(arg2) end) arg._trove:Connect(arg._parent.ChildRemoved, function(arg2) if not arg._childSet[arg2] then return end arg._childSet[arg2] = nil if arg._fallback == arg2 then arg._fallback = nil end arg.ChildRemoved:Fire(arg2) if next(arg._childSet) == nil then arg:_AddFallback() end end) for _, v117 in arg._parent:GetChildren() do if v117:IsA(arg._className) then arg._childSet[v117] = v86[34] arg.ChildAdded:Fire(v117) end end if next(arg._childSet) == nil then arg:_AddFallback() end end index2._AddFallback = function(arg) local v117 = arg._createFallback() arg._isCreating = true v117.Parent = arg._parent arg._isCreating = false arg._childSet[v117] = true arg._fallback = v117 arg.ChildAdded:Fire(v117) end index2.Observe = function(arg, arg2, arg3) local Observe = v116.new("instance.EnsuredChildren.Observe") Observe:Connect(arg.ChildAdded, arg2) Observe:Connect(arg.ChildRemoved, arg3) for k in arg._childSet, nil, nil do arg2(k) end return Observe end index2.Destroy = function(arg) arg._trove:Destroy() local fallback = arg._fallback if fallback ~= nil then arg._fallback = nil fallback:Destroy() end end return index2 end tbl17.hg = function() local hg = tbl17.cache.hg if not hg then local hg2 = { c = fn35() } tbl17.cache.hg = hg2 hg = hg2 end return hg.c end end do -- hh local function fn35() local v115 = tbl17.bG() local v116 = tbl17.hg() local v117 = tbl17.gF() local v118 = tbl17.k() local v119 = cloneref(game:GetService("Lighting")) local tbl18 = { "Color", "Decay", "Density", "Offset", "Glare", "Haze" } local tbl19 = { "Atmosphere", v86[44] } local index2 = {} index2.__index = index2 index2.new = function() local tbl20 = { _trove = v118.new("world_visuals.AtmosphereController"), _activeTrove = nil, _guardByAtmosphere = {}, } setmetatable(tbl20, index2) tbl20:_Initialize() return tbl20 end index2._Initialize = function(arg) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), function() arg:_Rebuild() end) for _, v120 in tbl18, nil, nil do arg._trove:Connect(v115:GetPropertyChangedSignal({ "Atmosphere", v120 }), function() arg:_Reconcile() end) end arg:_Rebuild() end index2._Rebuild = function(arg) local activeTrove = arg._activeTrove if activeTrove ~= nil then arg._activeTrove = nil for k in arg._guardByAtmosphere, nil, nil do arg:_RemoveGuard(k) end activeTrove:Destroy() end if not v115:Get(tbl19) then return end local v120 = arg._trove:Extend() arg._activeTrove = v120 v120:Add(v120:Add(v116.new(v119, "Atmosphere", function() return Instance.new("Atmosphere") end)):Observe(function(arg2) arg:_SetupGuard(arg2) end, function(arg2) arg:_RemoveGuard(arg2) end)) end index2._Reconcile = function(arg) for _, v120 in arg._guardByAtmosphere, nil, nil do arg:_ApplyOverrides(v120) end end index2._ApplyOverrides = function(arg, arg2) for _, v120 in tbl18, nil, nil do arg2:SetOverride(v120, v115:Get({ "Atmosphere", v120 })) end end index2._SetupGuard = function(arg, arg2) local v120 = v117.new(arg2) arg._guardByAtmosphere[arg2] = v120 arg:_ApplyOverrides(v120) end index2._RemoveGuard = function(arg, arg2) arg._guardByAtmosphere[arg2]:Destroy() arg._guardByAtmosphere[arg2] = nil end index2.Destroy = function(arg) for k in arg._guardByAtmosphere, nil, nil do arg:_RemoveGuard(k) end arg._trove:Destroy() end return index2 end tbl17.hh = function() local hh = tbl17.cache.hh if not hh then hh = { c = fn35() } tbl17.cache.hh = hh end return hh.c end end do -- hi local function fn35() local v115 = tbl17.bG() local v116 = tbl17.gF() local v117 = tbl17.k() local tbl18 = { { Path = "ClockTime", Property = "ClockTime" }, { Path = "Brightness", Property = "Brightness" }, { Path = "ExposureCompensation", Property = "ExposureCompensation" }, { Path = "EnvironmentDiffuseScale", Property = "EnvironmentDiffuseScale" }, { Path = "EnvironmentSpecularScale", Property = "EnvironmentSpecularScale" }, { Path = "GeographicLatitude", Property = "GeographicLatitude" }, { Path = "ShadowSoftness", Property = "ShadowSoftness" }, { Path = "ShadowColor", Property = "ShadowColor" }, { Path = "LightingStyle", Property = "LightingStyle", Transform = function(arg) return Enum.LightingStyle[arg] end, }, } local tbl19 = { "Lighting", "Enabled" } local v118 = cloneref(game:GetService("Lighting")) local index2 = {} index2.__index = index2 index2.new = function() local LightingController = v117.new("world_visuals.LightingController") local tbl20 = { _trove = LightingController, _guardedLighting = LightingController:Add(v116.new(v118)) } setmetatable(tbl20, index2) tbl20:_Initialize() return tbl20 end index2._Initialize = function(arg) if not (n26 >= 4821) then arg:_BindGenerics() arg:_BindAmbient() arg:_BindColorShift() arg:_BindFog() return end -- (anti-tamper freeze trap removed) end index2._BindGenerics = function(arg) for _, v119 in tbl18, nil, nil do local tbl20 = { "Lighting", v119.Path, v86[44] } local tbl21 = { "Lighting", v119.Path, "Value" } local function fn36() if not v115:Get(tbl19) or not v115:Get(tbl20) then arg._guardedLighting:ClearOverride(v119.Property) return end local v120 = v115:Get(tbl21) local transform = v119.Transform arg._guardedLighting:SetOverride(v119.Property, transform ~= nil and transform(v120) or v120) end arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36) fn36() end end index2._BindAmbient = function(arg) local tbl20 = { "Lighting", "Ambient", "Enabled" } local tbl21 = { "Lighting", "Ambient", "Indoor" } local tbl22 = { "Lighting", "Ambient", "Outdoor" } local function fn36() if not v115:Get(tbl19) or not v115:Get(tbl20) then arg._guardedLighting:ClearOverride("Ambient") arg._guardedLighting:ClearOverride("OutdoorAmbient") return end local v119 = v115:Get(tbl21) local v120 = v115:Get(tbl22) arg._guardedLighting:SetOverride("Ambient", v119) arg._guardedLighting:SetOverride("OutdoorAmbient", v120) end arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl22), fn36) fn36() end index2._BindColorShift = function(arg) local tbl20 = { "Lighting", "ColorShift", "Enabled" } local tbl21 = { "Lighting", "ColorShift", "Top" } local tbl22 = { "Lighting", "ColorShift", "Bottom" } local function fn36() if not v115:Get(tbl19) or not v115:Get(tbl20) then arg._guardedLighting:ClearOverride("ColorShift_Top") arg._guardedLighting:ClearOverride("ColorShift_Bottom") return end local v119 = v115:Get(tbl21) local v120 = v115:Get(tbl22) arg._guardedLighting:SetOverride("ColorShift_Top", v119) arg._guardedLighting:SetOverride("ColorShift_Bottom", v120) end arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl22), fn36) fn36() end index2._BindFog = function(arg) local tbl20 = { "Lighting", "Fog", "Enabled" } local tbl21 = { "Lighting", "Fog", "Color" } local tbl22 = { "Lighting", "Fog", "Start" } local tbl23 = { "Lighting", "Fog", "End" } local function fn36() if not v115:Get(tbl19) or not v115:Get(tbl20) then arg._guardedLighting:ClearOverride("FogColor") arg._guardedLighting:ClearOverride("FogStart") arg._guardedLighting:ClearOverride("FogEnd") return end local v119 = v115:Get(tbl21) local v120 = v115:Get(tbl22) local v121 = v115:Get(tbl23) arg._guardedLighting:SetOverride("FogColor", v119) arg._guardedLighting:SetOverride("FogStart", v120) arg._guardedLighting:SetOverride("FogEnd", v121) end arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl21), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl22), fn36) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl23), fn36) fn36() end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.hi = function() local hi = tbl17.cache.hi if not hi then hi = { c = fn35() } tbl17.cache.hi = hi end return hi.c end end do -- hj local function fn35()local l=Color3.fromRGB(214,230,255);return table.freeze({PartsPrecreate=480,PartsExpansion=32,DefaultPartCount=40,DefaultColor=l,DefaultThickness=4,DefaultPulseSpeed=40,DefaultHold=0.25,DefaultDissipate=0.55,FadeEdge=0.1,CleanupBuffer=0.05,DefaultMaxRadius=7,FlashBrightness=8,FlashRange=70,FlickerMin=2,FlickerMax=3,FlickerOnMin=0.02,FlickerOnMax=0.045,FlickerOffMin=0.02,FlickerOffMax=0.05,FlickerDim=0.15,FlickerMaxDuration=0.28500000000000003,ExplosionSize=0.45,SparkDistanceSpread=0.3,SparkSpeedSpread=0.5});end tbl17.hj = function() local hj = tbl17.cache.hj if not hj then hj = { c = fn35() } tbl17.cache.hj = hj end return hj.c end end do -- hk local function fn35()local l,I,W=CFrame.lookAt(Vector3.new(),Vector3.new(1,0,0)):Inverse(),0.1*math.tau,0.9*math.tau;return table.freeze({XInverse=l,OffsetAngle=6.123233995736766E-17,RollOffsetLow=I,RollOffsetHigh=W,FadeEdge=0.1});end tbl17.hk = function() local hk = tbl17.cache.hk if not hk then hk = { c = fn35() } tbl17.cache.hk = hk end return hk.c end end do -- hm local function fn35() return function(l,I,W,N,P)return I*(1-l)^3+W*3*l*(1-l)^2+N*3*(1-l)*l^2+P*l^3;end end tbl17.hm = function() local hm = tbl17.cache.hm if not hm then hm = { c = fn35() } tbl17.cache.hm = hm end return hm.c end end do -- hn local function fn35() return function(l,I,W,N,P,a,e)return math.clamp(N/(2*P)-math.abs((l-I*W+0.5*N)/P),a,e);end end tbl17.hn = function() local hn = tbl17.cache.hn if not hn then hn = { c = fn35() } tbl17.cache.hn = hn end return hn.c end end do -- ho local function fn35() return function(l)return math.exp(-5000*(l-0.5)^10);end end tbl17.ho = function() local ho = tbl17.cache.ho if not ho then ho = { c = fn35() } tbl17.cache.ho = ho end return ho.c end end do -- hp local function fn35() return function(l,I,W,N,P)return N+(P-N)*(math.noise(l,I,W)+0.5);end end tbl17.hp = function() local hp = tbl17.cache.hp if not hp then local hp2 = { c = fn35() } tbl17.cache.hp = hp2 hp = hp2 end return hp.c end end do -- hq local function fn35() local v115 = tbl17.hk() tbl17.hl() local v116 = tbl17.hm() local v117 = tbl17.hn() local v118 = tbl17.ho() local v119 = tbl17.hp() local v120 = tbl17.fk() local v121 = cloneref(game:GetService("RunService")) local part = Instance.new("Part") local smooth = Enum.SurfaceType.Smooth part.TopSurface = Enum.SurfaceType.Smooth part.BottomSurface = smooth local v122 = v86[153] part.Anchored = true part.CanCollide = v122 part.Locked = v86[34] part.CastShadow = false part.CanTouch = v86[153] part.CanQuery = false part.Shape = Enum.PartType.Cylinder part.Name = "BoltPart" part.Material = Enum.Material.Neon part.Color = Color3.new(1, v86[63], 1) part.Transparency = v86[63] local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local v123 = v86[91] return setmetatable({ _parts = {}, _partsHidden = false, _disabledTransparency = 1, _startT = 0, _ranNum = math.random() * v123, Enabled = true, AutoDestroy = true, Attachment0 = arg, Attachment1 = arg2, CurveSize0 = 0, CurveSize1 = 0, MinRadius = v86[186], MaxRadius = 2.4, Frequency = v86[63], AnimationSpeed = 7, Thickness = 1, MinThicknessMultiplier = 0.2, MaxThicknessMultiplier = v86[63], MinTransparency = 0, MaxTransparency = v86[63], PulseLength = 1000000, PulseSpeed = 2, FadeLength = 0.2, ContractFrom = 0.5, Color = Color3.new(1, v86[63], v86[63]), ColorOffsetSpeed = 3, SpaceCurveFunction = v116, OpacityProfileFunction = v117, RadialProfileFunction = v118, }, index2) end index2.Destroy = function(arg) arg.Enabled = false if arg._dissipateConnection then arg._dissipateConnection:Disconnect() arg._dissipateConnection = nil end end index2.Restart = function(arg) arg.Enabled = true arg._partsHidden = false arg._startT = os.clock() local v123 = v86[91] arg._ranNum = math.random() * v123 end index2.DestroyDissipate = function(arg, arg2, arg3) local n = arg2 or 0.2 local n33 = arg3 or 0.5 local now2 = os.clock() local minTransparency = arg.MinTransparency local contractFrom = arg.ContractFrom local n34 = arg.ContractFrom + v86[63] / #arg._parts * arg.FadeLength local maxRadius = arg.MaxRadius local minThicknessMultiplier = arg.MinThicknessMultiplier arg._dissipateConnection = v121.Heartbeat:Connect(function() local n35 = os.clock() - now2 arg.MinThicknessMultiplier = minThicknessMultiplier + (-v86[56] - minThicknessMultiplier) * n35 / n if n35 < n * 0.4 then arg.MinTransparency = minTransparency + (contractFrom - minTransparency) * n35 / n * v86[28] elseif n35 < n then local n36 = (n35 - n * v86[28]) / n * 0.6 arg.MinTransparency = contractFrom + (n34 - contractFrom) * n36 arg.MaxRadius = maxRadius * (1 + n33 * n36) arg.MinRadius = arg.MinRadius + (arg.MaxRadius - arg.MinRadius) * n36 else local startT = arg._startT if os.clock() - startT < (arg.PulseLength + 1) / arg.PulseSpeed then arg:Destroy() end if arg._dissipateConnection then arg._dissipateConnection:Disconnect() end arg._dissipateConnection = nil end end) end index2._UpdateGeometry = function(I,W,N,P,a,e,c,E)local p,T=1-I.MaxTransparency,1-I.MinTransparency;local t=I.OpacityProfileFunction(N,P,I.PulseSpeed,I.PulseLength,I.FadeLength,p,T);p=I.Thickness*a*t;t=p>0 and t or 0;local T_121=1-I.ContractFrom;local x=1/(E*I.FadeLength);if t>T_121 then W.Size=Vector3.new((c-e).Magnitude,p,p);W.CFrame=CFrame.lookAt((e+c)*0.5,c)* v115 .XInverse;W.Transparency=1-t;return true;elseif t>T_121-x then a=(1-(t-(T_121-x))*E*I.FadeLength)*(N=(I.PulseLength+1)/I.PulseSpeed then if I.AutoDestroy then I:Destroy();end;return;end;local J,B,X,H=I.Attachment0,I.Attachment1,I.CurveSize0,I.CurveSize1;local k,D,Q,F=J.WorldPosition,J.WorldPosition+J.WorldAxis*X,B.WorldPosition-B.WorldAxis*H,B.WorldPosition;J=x(0,k,D,Q,F);X,H=J,J;for R=1,a,1 do B,J=P[R],R/a;local P_122=c*-t+E*10*J-0.2+e*4;local m=5*(c*0.01*-t/10+E*J)+e*4;local e_123,c_124,E_125,o= v119 (5*P_122,1.5,1*m,0, v115 .RollOffsetLow)+ v119 (0.5*P_122,1.5,0.1*m,0, v115 .RollOffsetHigh), v119 (3.4,m,P_122,W,N)*S(J), v119 (2.3,m,P_122,p,T),x(J,k,D,Q,F);local W_126=if R~=a then(CFrame.new(X,o)*CFrame.Angles(0,0,e_123)*CFrame.Angles(math.acos(math.clamp( v119 (m,P_122,2.7, v115 .OffsetAngle,1),-1,1)),0,0)*CFrame.new(0,0,-c_124)).Position else o;if I:_UpdateGeometry(B,J,t,E_125,H,W_126,a)then I:_UpdateColor(B,J,t);end;X,H=o,W_126;end;end index2.GetTemplate = function() return part end return index2 end tbl17.hq = function() local hq = tbl17.cache.hq if not hq then local hq2 = { c = fn35() } tbl17.cache.hq = hq2 hq = hq2 end return hq.c end end do -- hr local function fn35()local l=Color3.fromRGB(210,228,255);return table.freeze({DefaultMinBranches=3,DefaultMaxBranches=4,DefaultColor=l,DefaultThickness=4,DefaultPulseSpeed=40,ThicknessFraction=0.55,BranchMaxRadius=5,TrunkFork={OriginMinPercent=0.1,OriginMaxPercent=0.6,Spread=0.8,LengthMinFraction=0.3,LengthMaxFraction=0.6,ScaleByRemaining=true},ChildFork={OriginMinPercent=0.25,OriginMaxPercent=0.8,Spread=0.85,LengthMinFraction=0.45,LengthMaxFraction=0.72,ScaleByRemaining=false},MaxGenerations=3,MaxTotalBranches=12,MaxChildren=2,ForkChanceByGeneration={0.7,0.45},ChildThicknessFalloff=0.62,ChildRadiusFalloff=0.7,PartsByGeneration={12,8,5}});end tbl17.hr = function() local hr = tbl17.cache.hr if not hr then local hr2 = { c = fn35() } tbl17.cache.hr = hr2 hr = hr2 end return hr.c end end do -- hs local function fn35() return function(arg) local v115 = arg:Cross(Vector3.yAxis) if v115.Magnitude < 0.001 then v115 = arg:Cross(Vector3.xAxis) end local unit = v115.Unit return unit, arg:Cross(unit).Unit end end tbl17.hs = function() local hs = tbl17.cache.hs if not hs then hs = { c = fn35() } tbl17.cache.hs = hs end return hs.c end end do -- ht local function fn35() return function(arg, arg2) return arg + math.random() * (arg2 - arg) end end tbl17.ht = function() local ht = tbl17.cache.ht if not ht then local ht2 = { c = fn35() } tbl17.cache.ht = ht2 ht = ht2 end return ht.c end end do -- hu local function fn35() tbl17.a1() local v115 = tbl17.k() local v116 = tbl17.hr() local v117 = tbl17.hq() local v118 = tbl17.hs() local v119 = tbl17.ht() local function fn36(arg, arg2, arg3, arg4, arg5, arg6) local v120 = v119(arg6.OriginMinPercent, arg6.OriginMaxPercent) local v121 = v119(arg6.LengthMinFraction, arg6.LengthMaxFraction) local n if arg6.ScaleByRemaining then n = v121 * (1 - v120) else n = v121 end local tau = math.tau local n33 = math.random() * tau return arg + arg2 * arg3 * v120, (arg2.Unit + (math.cos(n33) * arg4 + math.sin(n33) * arg5) * arg6.Spread).Unit, arg3 * n end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local tbl18 = arg5 or {} local tbl19 = { Color = tbl18.Color or v116.DefaultColor, Thickness = (tbl18.Thickness or v116.DefaultThickness) * v116.ThicknessFraction, PulseSpeed = tbl18.PulseSpeed or v116.DefaultPulseSpeed, MaxBranches = tbl18.MaxBranches or v116.MaxTotalBranches, } return setmetatable({ _trove = v115.new(), _host = arg, _trunk = arg2, _bolts = {}, _startT = os.clock(), _holdTime = arg3, _dissipateTime = arg4, _remainingBudget = tbl19.MaxBranches, Options = tbl19, }, index2) end index2.Destroy = function(arg) for _, v120 in arg._bolts, nil, nil do v120:Destroy() arg._host.RemoveBolt(v120) end table.clear(arg._bolts) arg._trove:Destroy() end index2.Create = function(arg) local trunk = arg._trunk local worldPosition = trunk.Attachment0.WorldPosition local n = trunk.Attachment1.WorldPosition - worldPosition local v120, v121 = v118(n.Unit) for i = 1, math.random(v116.DefaultMinBranches, v116.DefaultMaxBranches) do local v122, v123, v124 = fn36(worldPosition, n.Unit, n.Magnitude, v120, v121, v116.TrunkFork) arg:_SpawnBranch(v122, v123, v124, arg.Options.Thickness, v116.BranchMaxRadius, 1) end end index2._SpawnBranch = function(arg, worldPosition, arg2, arg3, thickness, maxRadius, arg4) if arg._remainingBudget <= v86[186] then return end arg._remainingBudget = arg._remainingBudget - v86[63] local v120 = arg._trove:Add(Instance.new("Attachment")) v120.WorldPosition = worldPosition v120.Parent = arg._host.Anchor local v121 = arg._trove:Add(Instance.new("Attachment")) v121.WorldPosition = worldPosition + arg2 * arg3 v121.Parent = arg._host.Anchor local options = arg.Options local partsByGeneration = v116.PartsByGeneration local v122 = v117.new(v120, v121) v122.Color = options.Color v122.Thickness = thickness v122.MaxRadius = maxRadius v122.PulseSpeed = options.PulseSpeed arg._host.AddBolt(v122, partsByGeneration[arg4] or partsByGeneration[#partsByGeneration]) table.insert(arg._bolts, v122) if v116.MaxGenerations <= arg4 then return end local v123 = v116.ForkChanceByGeneration[arg4] or v86[186] local v124, v125 = v118(arg2) for i = v86[63], v116.MaxChildren do if not (arg._remainingBudget <= v86[186]) then if not (math.random() > v123) then local v126, v127, v128 = fn36(worldPosition, arg2, arg3, v124, v125, v116.ChildFork) arg:_SpawnBranch(v126, v127, v128, thickness * v116.ChildThicknessFalloff, maxRadius * v116.ChildRadiusFalloff, arg4 + 1) end continue end break end end index2.Update = function(l)local I=os.clock()-l._startT;if I 0 and options.NumBolts or v86[186] for i = v126, numBolts do arg:_SpawnBolt(worldPosition, upVector, size) end end index2._SpawnBolt = function(arg, worldPosition, arg2, arg3) local host = arg._host local trove = arg._trove local v121 = v116(arg2, v117.BoltInnerAngleMin, v117.BoltInnerAngleMax) local boltDistanceScale = v117.BoltDistanceScale local worldPosition2 = worldPosition + v121 * v120(v117.BoltDistanceMin, v117.BoltDistanceMax) * boltDistanceScale * arg3 local v122 = trove:Add(Instance.new("Attachment")) v122.WorldPosition = worldPosition v122.WorldAxis = v121 v122.Parent = host.Anchor local v123 = trove:Add(Instance.new("Attachment")) v123.WorldPosition = worldPosition2 v123.WorldAxis = v116(-arg2, v117.BoltOuterAngleMin, v117.BoltOuterAngleMax) v123.Parent = host.Anchor local v124 = v118.new(v122, v123) v124.AnimationSpeed = v86[186] v124.Thickness = 1 v124.Color = arg.Options.BoltColor v124.Frequency = 2 v124.MinRadius = 0 v124.MaxRadius = v117.BoltMaxRadiusScale * arg3 v124.PulseLength = 0.8 v124.PulseSpeed = 5 v124.FadeLength = 0.4 v124.ColorOffsetSpeed = 20 v124.MinThicknessMultiplier = 0.7 v124.MaxThicknessMultiplier = 1 host.AddBolt(v124, v117.BoltPartCount) table.insert(arg._bolts, { Bolt = v124, Attachment1 = v123, Velocity = v121 * v117.BoltVelocityScale * arg3 }) end index2.Update = function(I)local W=os.clock()-I._startT;if not I._emittersCut and W> v117 .EmitterBurstTime then I._emittersCut=true;for l,l_128 in I._emitters,nil,nil do l_128.Enabled=false;end;end;for l,W_129 in I._bolts,nil,nil do l=W_129.Attachment1;l.WorldPosition=l.WorldPosition+W_129.Velocity;end;end index2.Destroy = function(arg) for _, v121 in arg._bolts, nil, nil do v121.Bolt:Destroy() arg._host.RemoveBolt(v121.Bolt) end table.clear(arg._bolts) table.clear(arg._emitters) arg._trove:Destroy() end return index2 end tbl17.hx = function() local hx = tbl17.cache.hx if not hx then local hx2 = { c = fn35() } tbl17.cache.hx = hx2 hx = hx2 end return hx.c end end do -- hy local function fn35()local l=Color3.fromRGB(238,246,255);return table.freeze({DefaultMaxSparks=18,DefaultMinSpeed=10,DefaultMaxSpeed=22,DefaultMinDistance=6,DefaultMaxDistance=22,DefaultMinParts=4,DefaultMaxParts=7,DefaultColor=l,DefaultThickness=2.2,DefaultMaxRadius=4,PulseLength=0.4});end tbl17.hy = function() local hy = tbl17.cache.hy if not hy then hy = { c = fn35() } tbl17.cache.hy = hy end return hy.c end end do -- hz local function fn35() tbl17.a1() local v115 = tbl17.k() local v116 = tbl17.hy() local v117 = tbl17.hq() local v118 = tbl17.ht() local v119 = Random.new() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) local tbl18 = arg3 or {} local tbl19 = { MaxSparkCount = tbl18.MaxSparkCount or v116.DefaultMaxSparks, MinSpeed = tbl18.MinSpeed or v116.DefaultMinSpeed, MaxSpeed = tbl18.MaxSpeed or v116.DefaultMaxSpeed, MinDistance = tbl18.MinDistance or v116.DefaultMinDistance, MaxDistance = tbl18.MaxDistance or v116.DefaultMaxDistance, MinParts = tbl18.MinParts or v116.DefaultMinParts, MaxParts = tbl18.MaxParts or v116.DefaultMaxParts, Color = tbl18.Color or v116.DefaultColor, Thickness = tbl18.Thickness or v116.DefaultThickness, MaxRadius = tbl18.MaxRadius or v116.DefaultMaxRadius, } return setmetatable({ _trove = v115.new("lightning_sparks"), _host = arg, _parentBolt = arg2, _sparks = {}, Options = tbl19 }, index2) end index2.Create = function(arg) for i = 1, arg.Options.MaxSparkCount do arg:_SpawnSpark() end end index2._SpawnSpark = function(arg) local options = arg.Options local host = arg._host local trove = arg._trove local v120 = trove:Add(Instance.new("Attachment")) v120.Parent = host.Anchor local v121 = trove:Add(Instance.new("Attachment")) v121.Parent = host.Anchor local v122 = v117.new(v120, v121) v122.Color = options.Color v122.Thickness = options.Thickness v122.MaxRadius = options.MaxRadius v122.PulseLength = v116.PulseLength v122.AutoDestroy = false local tbl18 = { Bolt = v122, Attachment0 = v120, Attachment1 = v121, StartT = 0, Lifetime = v86[186] } host.AddBolt(v122, math.random(options.MinParts, options.MaxParts)) arg:_Respawn(tbl18) table.insert(arg._sparks, tbl18) end index2._Respawn = function(arg, arg2) local options = arg.Options local parentBolt = arg._parentBolt local v120 = parentBolt.Attachment0.WorldPosition:Lerp(parentBolt.Attachment1.WorldPosition, math.random()) local v121 = v118(options.MinDistance, options.MaxDistance) arg2.Attachment0.WorldPosition = v120 arg2.Attachment1.WorldPosition = v120 + v119:NextUnitVector() * v121 local v122 = v118(options.MinSpeed, options.MaxSpeed) arg2.Bolt.PulseSpeed = v122 arg2.Lifetime = (arg2.Bolt.PulseLength + 1) / v122 arg2.StartT = os.clock() arg2.Bolt:Restart() end index2.Update = function(l)local I=os.clock();for W,W_130 in l._sparks,nil,nil do if I-W_130.StartT>=W_130.Lifetime then l:_Respawn(W_130);end;end;end index2.Destroy = function(arg) for _, v120 in arg._sparks, nil, nil do v120.Bolt:Destroy() arg._host.RemoveBolt(v120.Bolt) end table.clear(arg._sparks) arg._trove:Destroy() end return index2 end tbl17.hz = function() local hz = tbl17.cache.hz if not hz then hz = { c = fn35() } tbl17.cache.hz = hz end return hz.c end end do -- hA local function fn35() local v115 = tbl17.dE() local v116 = cloneref(game:GetService("Workspace")) local cframe = CFrame.new(0, 1e9, 0) local function fn36(arg, parent) local clone = arg:Clone() clone.CFrame = cframe clone.Anchored = true clone.Parent = parent return clone end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3) arg2 = arg2 or 5 arg3 = arg3 or v116 local v117 = v115(arg) local tbl18 = {} for i = 1, arg2 do table.insert(tbl18, fn36(v117, arg3)) end v117.Parent = nil return setmetatable({ Open = tbl18, InUse = {}, CurrentCacheParent = arg3, Template = v117, ExpansionSize = v86[133] }, index2) end index2.Destroy = function(arg) for _, v117 in arg.Open, nil, nil do v117:Destroy() end for _, v117 in arg.InUse, nil, nil do v117:Destroy() end arg.Template:Destroy() table.clear(arg.Open) table.clear(arg.InUse) end index2.CreatePart = function(arg) return fn36(arg.Template, arg.CurrentCacheParent) end index2.GetPart = function(arg) local v117 = table.remove(arg.Open) if v117 == nil then arg:Expand(math.max(0, arg.ExpansionSize - 1)) v117 = arg:CreatePart() end table.insert(arg.InUse, v117) return v117 end index2.ReturnPart = function(arg, arg2) local v117 = table.find(arg.InUse, arg2) if v117 == nil then return end table.remove(arg.InUse, v117) table.insert(arg.Open, arg2) arg2.CFrame = cframe arg2.Anchored = true end index2.SetCacheParent = function(arg, currentCacheParent) arg.CurrentCacheParent = currentCacheParent for _, v117 in arg.Open, nil, nil do v117.Parent = currentCacheParent end for _, v117 in arg.InUse, nil, nil do v117.Parent = currentCacheParent end end index2.Expand = function(arg, arg2) local expansionSize = arg2 or arg.ExpansionSize for i = 1, expansionSize do table.insert(arg.Open, arg:CreatePart()) end end return index2 end tbl17.hA = function() local ha = tbl17.cache.hA if not ha then local ha2 = { c = fn35() } tbl17.cache.hA = ha2 ha = ha2 end return ha.c end end do -- hC local function fn35() local v115 = tbl17.hj() local v116 = tbl17.hq() local v117 = tbl17.hu() local v118 = tbl17.hx() local v119 = tbl17.hz() local v120 = tbl17.hA() local v121 = tbl17.k() tbl17.hB() local v122 = tbl17.ht() local v123 = tbl17.fk() local v124 = cloneref(game:GetService("TweenService")) local v125 = cloneref(game:GetService("Workspace")) local function fn36(arg) local v126 if typeof(arg) == "ColorSequence" then v126 = v123(arg, 0.5) else v126 = arg end local v127 = v86[48] return v126:Lerp(Color3.new(1, 1, 1), v127) end local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _trove = v121.new("lightning"), _folder = nil, _anchor = nil, _cache = nil, _host = nil, _bolts = {}, _effects = {}, }, index2) end index2.Destroy = function(arg) arg._trove:Destroy() end index2.Initialise = function(arg) local trove = arg._trove local folder = Instance.new("Folder") folder.Name = "kh_lightning" folder.Parent = v125 trove:Add(folder) local part = Instance.new("Part") part.Name = "anchor" part.Anchored = true part.CanCollide = false part.CanQuery = false part.CanTouch = false part.Transparency = 1 part.Size = Vector3.one part.Parent = folder trove:Add(part) local partsPrecreate = v115.PartsPrecreate local v126 = trove:Add(v120.new(v116.GetTemplate(), partsPrecreate, folder)) v126.ExpansionSize = v115.PartsExpansion arg._folder = folder arg._anchor = part arg._cache = v126 arg._host = { Anchor = part, AddBolt = function(arg2, arg3) arg:AddBolt(arg2, arg3) end, RemoveBolt = function(arg2) arg:RemoveBolt(arg2) end, } end index2.Update = function(l)for I,I_131 in l._effects,nil,nil do I_131:Update();end;for I,I_132 in l._bolts,nil,nil do I_132:Update();end;end index2._TrackEffect = function(arg, arg2, arg3) table.insert(arg._effects, arg3) arg2:Add(function() local v126 = table.find(arg._effects, arg3) if v126 then table.remove(arg._effects, v126) end arg3:Destroy() end) end index2.AddBolt = function(arg, arg2, arg3) local v126 = arg3 or v86[192] for i = 1, v126 do arg2._parts[i] = arg._cache:GetPart() end arg2._partsHidden = false arg2._disabledTransparency = 1 arg2._startT = os.clock() local v127 = v86[91] arg2._ranNum = math.random() * v127 table.insert(arg._bolts, arg2) end index2.RemoveBolt = function(arg, arg2) local v126 = table.find(arg._bolts, arg2) if v126 then table.remove(arg._bolts, v126) end for _, v127 in arg2._parts, nil, nil do arg._cache:ReturnPart(v127) end table.clear(arg2._parts) end index2.Strike = function(arg, arg2, arg3, arg4) local tbl18 = arg4 or {} local v126 = arg._trove:Extend() local v127 = arg:_SpawnTrunk(v126, arg2, arg3, tbl18) local tbl19 = { Trove = v126, Bolt = v127, To = arg3, Options = tbl18, HoldTime = tbl18.HoldTime or v115.DefaultHold, DissipateTime = tbl18.DissipateTime or v115.DefaultDissipate, } arg:_SpawnBranches(tbl19) arg:_SpawnSparks(tbl19) arg:_SpawnExplosion(tbl19) arg:_SpawnFlash(tbl19) arg:_ScheduleFade(tbl19) arg:_ScheduleCleanup(tbl19) return v127 end index2._SpawnTrunk = function(arg, arg2, worldPosition, worldPosition2, arg3) local v126 = arg2:Add(Instance.new("Attachment")) v126.WorldPosition = worldPosition v126.Parent = arg._anchor local v127 = arg2:Add(Instance.new("Attachment")) v127.WorldPosition = worldPosition2 v127.Parent = arg._anchor local v128 = v116.new(v126, v127) v128.Color = arg3.Color or v115.DefaultColor v128.Thickness = arg3.Thickness or v115.DefaultThickness v128.PulseSpeed = arg3.PulseSpeed or v115.DefaultPulseSpeed v128.MaxRadius = arg3.MaxRadius or v115.DefaultMaxRadius arg:AddBolt(v128, arg3.PartCount or v115.DefaultPartCount) arg2:Add(function() v128:Destroy() arg:RemoveBolt(v128) end) return v128 end index2._SpawnBranches = function(arg, arg2) local bolt = arg2.Bolt local v126 = v117.new(arg._host, bolt, arg2.HoldTime, arg2.DissipateTime, { Color = bolt.Color, Thickness = bolt.Thickness, PulseSpeed = bolt.PulseSpeed, MaxBranches = arg2.Options.Branches, }) v126:Create() arg:_TrackEffect(arg2.Trove, v126) end index2._SpawnSparks = function(arg, arg2) local sparks = arg2.Options.Sparks if sparks and sparks.Enabled == false then return end local distance = sparks and sparks.Distance local speed = sparks and sparks.Speed local v126 = v119.new(arg._host, arg2.Bolt, { Color = sparks and sparks.Color or arg2.Bolt.Color, MaxSparkCount = sparks and sparks.Count, Thickness = sparks and sparks.Thickness, MaxRadius = sparks and sparks.Jaggedness, MinDistance = distance and distance * v115.SparkDistanceSpread, MaxDistance = distance, MinSpeed = speed and speed * v115.SparkSpeedSpread, MaxSpeed = speed, }) v126:Create() arg:_TrackEffect(arg2.Trove, v126) end index2._SpawnExplosion = function(arg, arg2) local explosion = arg2.Options.Explosion if explosion and not explosion.Enabled then return end local color = explosion and explosion.Color or arg2.Bolt.Color local v126 = v118.new(arg._host, arg2.To, { Color = color, BoltColor = color, Size = explosion and explosion.Size or v115.ExplosionSize, NumBolts = explosion and explosion.Bolts, }) v126:Create() arg:_TrackEffect(arg2.Trove, v126) end index2._SpawnFlash = function(arg, arg2) local flashBrightness = arg2.Options.FlashBrightness or v115.FlashBrightness local part = Instance.new("Part") part.Anchored = true part.CanCollide = v86[153] part.CanQuery = false part.CanTouch = false part.Transparency = 1 part.Size = Vector3.one part.CFrame = CFrame.new(arg2.To) part.Parent = arg._folder arg2.Trove:Add(part) local pointLight = Instance.new("PointLight") pointLight.Color = fn36(arg2.Bolt.Color) pointLight.Brightness = flashBrightness pointLight.Range = v115.FlashRange pointLight.Parent = part arg2.Trove:Add(task.spawn(function() for i = v86[63], math.random(v115.FlickerMin, v115.FlickerMax) do pointLight.Brightness = flashBrightness * v122(0.6, 1) task.wait(v122(v115.FlickerOnMin, v115.FlickerOnMax)) pointLight.Brightness = flashBrightness * v115.FlickerDim task.wait(v122(v115.FlickerOffMin, v115.FlickerOffMax)) end pointLight.Brightness = flashBrightness v124:Create(pointLight, TweenInfo.new(arg2.DissipateTime), { Brightness = 0 }):Play() end)) end index2._ScheduleFade = function(arg, arg2) arg2.Trove:Add(task.delay(arg2.HoldTime, function() arg2.Bolt:Fade(arg2.DissipateTime) end)) end index2._ScheduleCleanup = function(arg, arg2) local cleanupBuffer = v115.CleanupBuffer arg2.Trove:Add(task.delay(math.max(arg2.HoldTime + arg2.DissipateTime, v115.FlickerMaxDuration + arg2.DissipateTime, v118.Duration) + cleanupBuffer, function() arg._trove:Remove(arg2.Trove) end)) end return index2 end tbl17.hC = function() local hc = tbl17.cache.hC if not hc then local hc2 = { c = fn35() } tbl17.cache.hC = hc2 hc = hc2 end return hc.c end end do -- hD local function fn35() local v115 = tbl17.bG() local v116 = tbl17.k() local v117 = cloneref(game:GetService("Lighting")) local index2 = {} index2.__index = index2 index2.new = function() local tbl18 = { _trove = v116.new(), _activeTrove = nil, _blurEffect = nil, _lastCameraCFrame = nil } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local trove = arg._trove local function fn36() arg:_Rebuild() end trove:Connect(v115:GetPropertyChangedSignal({ "MotionBlur", "Enabled" }), fn36) trove:Connect(v115:GetPropertyChangedSignal({ "MotionBlur", "Intensity" }), fn36) trove:Connect(v115:GetPropertyChangedSignal({ "MotionBlur", "Sensitivity" }), fn36) if v115.Data.MotionBlur.Enabled then arg:_Rebuild() end end index2._Rebuild = function(arg) local activeTrove = arg._activeTrove if activeTrove ~= nil then arg._activeTrove = nil arg._blurEffect = nil arg._lastCameraCFrame = nil activeTrove:Destroy() end if not v115.Data.MotionBlur.Enabled then return end local v118 = arg._trove:Extend() arg._activeTrove = v118 local blurEffect = Instance.new("BlurEffect") blurEffect.Size = 0 blurEffect.Parent = v117 v118:Add(blurEffect) arg._blurEffect = blurEffect end local function fn36(arg, arg2, arg3) local n = (arg.Position - arg2.Position).Magnitude / arg3 local _v118, v119 = arg:ToObjectSpace(arg2):ToAxisAngle() return n * v86[126] + math.abs(v119) / arg3 * 3 end index2._OnPreRender = function(arg, arg2) local blurEffect = arg._blurEffect if blurEffect == nil then return end local currentCamera = workspace.CurrentCamera if currentCamera == nil then return end local motionBlur = v115.Data.MotionBlur local cFrame = currentCamera.CFrame local lastCameraCFrame = arg._lastCameraCFrame arg._lastCameraCFrame = cFrame if lastCameraCFrame == nil then return end blurEffect.Size = blurEffect.Size + (math.clamp(fn36(cFrame, lastCameraCFrame, arg2) * motionBlur.Sensitivity, 0, motionBlur.Intensity) - blurEffect.Size) * math.min(1, arg2 * v86[149]) end index2.PreRender = function(arg, arg2) if arg._activeTrove == nil then return end arg:_OnPreRender(arg2) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.hD = function() local hd = tbl17.cache.hD if not hd then local hd2 = { c = fn35() } tbl17.cache.hD = hd2 hd = hd2 end return hd.c end end do -- hE local function fn35() local v115 = tbl17.gF() local v116 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _trove = v116.new("world_visuals.EffectOverride"), _guardTroveByEffect = {}, _createEffect = arg2, _effect = arg2(), } setmetatable(tbl18, index2) tbl18:_Initialize(arg) return tbl18 end index2._Initialize = function(arg, arg2) local className = arg._effect.ClassName arg._trove:Connect(arg._effect.Destroying, function() arg._effect = arg._createEffect() end) arg._trove:Connect(arg2.DescendantAdded, function(arg3) if arg._effect ~= arg3 and className == arg3.ClassName then arg:_SetupGuard(arg3) if n26 >= 4818 then -- (anti-tamper freeze trap removed) end end end) for _, v117 in arg2:GetDescendants() do if arg._effect ~= v117 and className == v117.ClassName then arg:_SetupGuard(v117) end end end index2._SetupGuard = function(arg, arg2) local EffectOverride = v116.new("world_visuals.EffectOverride") v115.new(arg2):SetOverride("Enabled", false) EffectOverride:Connect(arg2.Destroying, function() arg._guardTroveByEffect[arg2] = nil EffectOverride:Destroy() end) arg._guardTroveByEffect[arg2] = EffectOverride end index2.Get = function(arg) return arg._effect end index2.Destroy = function(arg) arg._trove:Destroy() arg._effect:Destroy() for _, v117 in arg._guardTroveByEffect, nil, nil do v117:Destroy() end end return index2 end tbl17.hE = function() local he = tbl17.cache.hE if not he then he = { c = fn35() } tbl17.cache.hE = he end return he.c end end do -- hF local function fn35() local v115 = tbl17.bG() local v116 = tbl17.hE() tbl17.gF() local v117 = tbl17.k() local v118 = cloneref(game:GetService("Lighting")) local function fn36(arg) return arg end local function fn37(arg, arg2) local v119 = table.create(#arg2) for _, v120 in arg2, nil, nil do if type(v120) == "string" then table.insert(v119, { Name = v120, Path = { arg, v120 }, Transform = fn36 }) else local insert = table.insert local tbl18 = { Name = v120.Name } local path = {} local subKey = v120.SubKey or v120.Name path[1] = arg path[2] = subKey tbl18.Path = path tbl18.Transform = v120.Transform or fn36 insert(v119, tbl18) end end return v119 end local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v117.new("world_visuals.PostEffectController"), _className = arg.ClassName, _effectOverride = nil, _enabledPath = { arg.RootKey, "Enabled" }, _properties = fn37(arg.RootKey, arg.Properties), } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Connect(v115:GetPropertyChangedSignal(arg._enabledPath), function() arg:_Rebuild() end) for _, v119 in arg._properties, nil, nil do arg._trove:Connect(v115:GetPropertyChangedSignal(v119.Path), function() arg:_Reconcile() end) end arg:_Rebuild() end index2._Rebuild = function(arg) local effectOverride = arg._effectOverride if effectOverride ~= nil then arg._effectOverride = nil effectOverride:Destroy() end if not v115:Get(arg._enabledPath) then return end arg._effectOverride = v116.new(v118, function() local instance = Instance.new(arg._className) arg:_ApplyProperties(instance) instance.Parent = v118 return instance end) end index2._Reconcile = function(arg) if not v115:Get(arg._enabledPath) then return end local effectOverride = arg._effectOverride if effectOverride == nil then return end arg:_ApplyProperties(effectOverride:Get()) end index2._ApplyProperties = function(arg, arg2) for _, v119 in arg._properties, nil, nil do arg2[v119.Name] = v119.Transform(v115:Get(v119.Path)) end end index2.Destroy = function(arg) arg._trove:Destroy() local effectOverride = arg._effectOverride if effectOverride ~= nil then arg._effectOverride = nil effectOverride:Destroy() end end return index2 end tbl17.hF = function() local hf = tbl17.cache.hF if not hf then local hf2 = { c = fn35() } tbl17.cache.hF = hf2 hf = hf2 end return hf.c end end do -- hG local function fn35() local v115 = tbl17.bG() local v116 = tbl17.hg() local v117 = tbl17.gF() tbl17.gY() local v118 = tbl17.k() local v119 = cloneref(game:GetService("Lighting")) local tbl18 = { "SkyboxBk", "SkyboxDn", "SkyboxFt", "SkyboxLf", "SkyboxRt", "SkyboxUp", "StarCount", "CelestialBodiesShown", "SunAngularSize", "MoonAngularSize", "SunTextureId", "MoonTextureId", } local tbl19 = { "Skybox", v86[44] } local tbl20 = { "Skybox", "Preset" } local function fn36(arg, arg2) if arg2 == nil then arg:ClearAllOverrides() return end for _, v120 in tbl18, nil, nil do local v121 = arg2[v120] if v121 == nil then arg:ClearOverride(v120) else arg:SetOverride(v120, v121) end end end local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl21 = { _trove = v118.new("world_visuals.sky_controller"), _activeTrove = nil, _skyboxes = arg, _guardBySky = {}, } setmetatable(tbl21, index2) tbl21:_Initialize() return tbl21 end index2._Initialize = function(arg) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl19), function() arg:_Rebuild() end) arg._trove:Connect(v115:GetPropertyChangedSignal(tbl20), function() arg:_Reconcile() end) arg:_Rebuild() end index2._Rebuild = function(arg) local activeTrove = arg._activeTrove if activeTrove ~= nil then arg._activeTrove = nil for k in arg._guardBySky, nil, nil do arg:_RemoveGuard(k) end activeTrove:Destroy() end if not v115:Get(tbl19) then return end local v120 = arg._trove:Extend() arg._activeTrove = v120 v120:Add(v120:Add(v116.new(v119, "Sky", function() return Instance.new("Sky") end)):Observe(function(arg2) arg:_SetupGuard(arg2) end, function(arg2) arg:_RemoveGuard(arg2) end)) end index2._Reconcile = function(arg) local v120 = arg._skyboxes:FindPreset(v115:Get(tbl20)) for _, v121 in arg._guardBySky, nil, nil do fn36(v121, v120) end end index2._SetupGuard = function(arg, arg2) local v120 = v117.new(arg2) arg._guardBySky[arg2] = v120 local v121 = arg._skyboxes:FindPreset(v115:Get(tbl20)) if v121 ~= nil then fn36(v120, v121) end end index2._RemoveGuard = function(arg, arg2) arg._guardBySky[arg2]:Destroy() arg._guardBySky[arg2] = nil end index2.Destroy = function(arg) for k in arg._guardBySky, nil, nil do arg:_RemoveGuard(k) end arg._trove:Destroy() end return index2 end tbl17.hG = function() local hg = tbl17.cache.hG if not hg then local hg2 = { c = fn35() } tbl17.cache.hG = hg2 hg = hg2 end return hg.c end end do -- hI local function fn35() local v115 = tbl17.e5() local v116 = tbl17.hH() local v117 = tbl17.bG() tbl17.hC() local v118 = tbl17.k() local v119 = cloneref(game:GetService("SoundService")) local v120 = cloneref(game:GetService("Workspace")) local v121 = cloneref(game:GetService("Players")) local function fn36(arg) local numberSequence = NumberSequence.new local tbl18 = {} local v122 = NumberSequenceKeypoint.new(0, v86[63]) local v123 = NumberSequenceKeypoint.new(v86[126], arg) local v124 = NumberSequenceKeypoint.new(0.85, arg) local new = NumberSequenceKeypoint.new tbl18[1] = v122 tbl18[2] = v123 tbl18[3] = v124 do local values = table.pack(new(1, 1)) table.move(values, 1, values.n, 4, tbl18) end return numberSequence(tbl18) end local function fn37(arg, arg2) local keypoints = arg.Keypoints local v122 = table.create(#keypoints) for _, v123 in keypoints, nil, nil do table.insert(v122, NumberSequenceKeypoint.new(v123.Time, v123.Value * arg2, v123.Envelope * arg2)) end return NumberSequence.new(v122) end local function fn38(arg) local v122 = v115.normalize(arg) if v122 == nil then return v116.ThunderSoundId end local v123 = v115.classify(v122) if v123 == "Asset" then return v122 end if v123 == "File" then local v124, v125 = v107(getcustomasset, v122) if v124 and type(v125) == "string" then return v125 end end return nil end local index2 = {} index2.__index = index2 index2.new = function(arg) local v122 = v118.new() local part = Instance.new("Part") part.Name = "WeatherEmitter" part.Anchored = true part.CanCollide = false part.CanQuery = false part.CanTouch = v86[153] part.Transparency = v86[63] part.Size = Vector3.new(140, 1, 140) part.Parent = v120 v122:Add(part) local tbl18 = { _trove = v122, _lightning = arg, _part = part, _activeTrove = nil, _emitters = {}, _height = v117.Data.Weather.Height, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2.Destroy = function(arg) arg._trove:Destroy() end index2._Initialize = function(arg) local trove = arg._trove local function fn39() arg:_Rebuild() end local function fn40() arg:_Reconcile() end for _, v122 in { { "Weather", "Enabled" }, { "Weather", "Preset" } }, nil, nil do trove:Connect(v117:GetPropertyChangedSignal(v122), fn39) end for _, v122 in { { "Weather", "Intensity" }, { "Weather", "Rate" }, { "Weather", "Height" }, { "Weather", "Color" }, { "Weather", "Wind", "Strength" }, { "Weather", "Wind", "Angle" }, { "Weather", "Speed" }, { "Weather", "Glow" }, { "Weather", "Size" }, { "Weather", "Spread" }, }, nil, nil do trove:Connect(v117:GetPropertyChangedSignal(v122), fn40) end if v117.Data.Weather.Enabled then arg:_Rebuild() end end index2._Rebuild = function(arg) local activeTrove = arg._activeTrove if activeTrove ~= nil then arg._activeTrove = nil arg._emitters = {} activeTrove:Destroy() end if not v117.Data.Weather.Enabled then return end local v122 = v116.EmitterSpecsByPreset[v117.Data.Weather.Preset] if v122 == nil then return end local v123 = arg._trove:Extend() arg._activeTrove = v123 local v124 = table.create(#v122) for _, v125 in v122, nil, nil do local particleEmitter = Instance.new("ParticleEmitter") particleEmitter.Shape = Enum.ParticleEmitterShape.Box particleEmitter.EmissionDirection = Enum.NormalId.Bottom particleEmitter.Enabled = true particleEmitter.Texture = v125.Texture particleEmitter.Transparency = fn36(v125.TransparencyMax) particleEmitter.Lifetime = NumberRange.new(v125.LifetimeMin, v125.LifetimeMax) particleEmitter.Rotation = NumberRange.new(v125.RotationMin, v125.RotationMax) particleEmitter.RotSpeed = NumberRange.new(v125.RotationSpeedMin, v125.RotationSpeedMax) particleEmitter.LightInfluence = 0 if v125.Orientation then particleEmitter.Orientation = v125.Orientation end particleEmitter.Parent = arg._part v123:Add(particleEmitter) table.insert(v124, { Emitter = particleEmitter, Spec = v125 }) end arg._emitters = v124 arg:_Reconcile() if v116.LightningPresetSet[v117.Data.Weather.Preset] then arg:_ScheduleLightning(v123) end end index2._ScheduleLightning = function(arg, arg2) arg2:Add(task.spawn(function() while true do task.wait(v117.Data.Weather.Lightning.Interval) if v117.Data.Weather.Lightning.Enabled then arg:_FireStrike() end end end)) end index2._FireStrike = function(arg) local currentCamera = v120.CurrentCamera if currentCamera == nil then return end local lightning = v117.Data.Weather.Lightning local height = lightning.Height local position = currentCamera.CFrame.Position local tau = math.tau local n = math.random() * tau local distance = lightning.Distance local n33 = math.min(v116.LightningRadiusMin, distance) local n34 = n33 + math.random() * (distance - n33) local n35 = position.X + math.cos(n) * n34 local n36 = position.Z + math.sin(n) * n34 local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Exclude local character = v121.LocalPlayer and v121.LocalPlayer.Character if character then raycastParams.FilterDescendantsInstances = { character } end local n37 = position.Y - v116.LightningGroundDrop local hit = v120:Raycast(Vector3.new(n35, position.Y + height, n36), Vector3.new(0, -v116.LightningRayLength, 0), raycastParams) if hit then n37 = hit.Position.Y end local vector = Vector3.new(n35, n37, n36) local vector2 = Vector3.new local lightningJitter = v116.LightningJitter local n38 = n35 + (math.random() - 0.5) * lightningJitter local lightningJitter2 = v116.LightningJitter local tbl18 = { Color = lightning.Color, Thickness = lightning.Thickness, MaxRadius = lightning.Jaggedness, Branches = lightning.Branches, FlashBrightness = lightning.Flash, Sparks = { Enabled = lightning.Sparks.Enabled, Color = lightning.Sparks.Color, Count = lightning.Sparks.Count, Thickness = lightning.Sparks.Thickness, Distance = lightning.Sparks.Distance, Speed = lightning.Sparks.Speed, Jaggedness = lightning.Sparks.Jaggedness, }, Explosion = { Enabled = lightning.Explosion.Enabled, Size = lightning.Explosion.Size, Bolts = lightning.Explosion.Bolts, Color = lightning.Explosion.Color, }, } arg._lightning:Strike(vector2(n38, n37 + height, n36 + (math.random() - 0.5) * lightningJitter2), vector, tbl18) if lightning.Sound.Enabled then local v122 = fn38(lightning.Sound.SoundId) if v122 ~= nil then local volume = lightning.Sound.Volume local delay = lightning.Sound.Delay arg:_PlayThunder(math.sqrt((n35 - position.X) ^ 2 + (n36 - position.Z) ^ 2), volume, delay, v122) end end end index2._PlayThunder = function(arg, arg2, arg3, arg4, soundId) local n = arg4 and arg2 / v116.ThunderSpeed or 0 local volume = arg3 * math.max(v116.ThunderVolumeFloor, 1 - arg2 / v116.ThunderFalloff) local n33 = v116.ThunderPitchMax - v116.ThunderPitchMin local playbackSpeed = v116.ThunderPitchMin + math.random() * n33 local activeTrove = arg._activeTrove if activeTrove == nil then return end activeTrove:Add(task.delay(n, function() local sound = Instance.new("Sound") sound.SoundId = soundId sound.Volume = volume sound.PlaybackSpeed = playbackSpeed sound.PlayOnRemove = v86[34] sound.Parent = v119 sound:Destroy() end)) end index2._Reconcile = function(arg) local weather = v117.Data.Weather local intensity = weather.Intensity local rate = weather.Rate local speed = weather.Speed local size = weather.Size local glow = weather.Glow local spread = weather.Spread local colorSequence = ColorSequence.new(weather.Color) local v122 = math.rad(weather.Wind.Angle) local strength = weather.Wind.Strength local n = math.sin(v122) * strength local n33 = math.cos(v122) * strength arg._height = weather.Height for _, v123 in arg._emitters, nil, nil do local emitter = v123.Emitter local spec = v123.Spec emitter.Rate = spec.BaseRate * intensity * rate emitter.Speed = NumberRange.new(spec.SpeedMin * speed, spec.SpeedMax * speed) emitter.Size = fn37(NumberSequence.new(spec.SizeStart, spec.SizeEnd), size) emitter.LightEmission = glow local n34 = spec.BaseSpread * spread emitter.SpreadAngle = Vector2.new(n34, n34) emitter.Color = colorSequence emitter.Acceleration = Vector3.new(n, spec.BaseAccelerationY, n33) end end index2.Update = function(arg) arg._lightning:Update() if arg._activeTrove then local currentCamera = v120.CurrentCamera if currentCamera then arg._part.Position = currentCamera.CFrame.Position + Vector3.new(v86[186], arg._height, 0) end end end return index2 end tbl17.hI = function() local hi = tbl17.cache.hI if not hi then hi = { c = fn35() } tbl17.cache.hI = hi end return hi.c end end do -- hJ local function fn35() tbl17 .hF();return{{ClassName="BloomEffect",RootKey="Bloom",Properties={"Intensity","Size","Threshold"}},{ClassName="ColorCorrectionEffect",RootKey="ColorCorrection",Properties={"TintColor","Saturation","Brightness","Contrast"}},{ClassName="ColorGradingEffect",RootKey="ColorGrading",Properties={{Name="TonemapperPreset",Transform=function(l)return l=="Retro"and Enum.TonemapperPreset.Retro or Enum.TonemapperPreset.Default;end}}},{ClassName="DepthOfFieldEffect",RootKey="DepthOfField",Properties={"FarIntensity","FocusDistance","InFocusRadius","NearIntensity"}},{ClassName="SunRaysEffect",RootKey="SunRays",Properties={"Intensity","Spread"}}};end tbl17.hJ = function() local hj = tbl17.cache.hJ if not hj then hj = { c = fn35() } tbl17.cache.hJ = hj end return hj.c end end do -- hK local function fn35() local v115 = tbl17.hh() local v116 = tbl17.hi() local v117 = tbl17.hC() local v118 = tbl17.hD() local v119 = tbl17.hF() local v120 = tbl17.hG() tbl17.gY() local v121 = tbl17.k() local v122 = tbl17.hI() local v123 = tbl17.hJ() local index2 = {} index2.__index = index2 index2.new = function(arg) local worldVisuals = v121.new("world_visuals") local v124 = v118.new() local v125 = v117.new() v125:Initialise() local v126 = v122.new(v125) local tbl18 = { _trove = worldVisuals, _motionBlurController = v124, _weatherController = v126 } worldVisuals:Add(v116.new()) worldVisuals:Add(v120.new(arg)) worldVisuals:Add(v115.new()) worldVisuals:Add(v125) worldVisuals:Add(v126) worldVisuals:Add(v124) for _, v127 in v123, nil, nil do worldVisuals:Add(v119.new(v127)) end return setmetatable(tbl18, index2) end index2.PreRender = function(arg, arg2) arg._motionBlurController:PreRender(arg2) arg._weatherController:Update() end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.hK = function() local hk = tbl17.cache.hK if not hk then hk = { c = fn35() } tbl17.cache.hK = hk end return hk.c end end do -- hL local function fn35() tbl17.aO() tbl17.cw() tbl17.cX() tbl17.bN() tbl17.k() local function fn36(arg, arg2, arg3) local function fn37(arg4) arg:SetContext(arg4 ~= nil and v102(arg4, "Name") or nil) end arg3:Add(arg2:OnEquippedItemChangedSignal(fn37)) fn37(arg2:GetEquippedItem()) end return function(arg, arg2, arg3) local v115 = arg2:Extend() arg2:Add(arg3.ContextAdded:Connect(function(arg4) v115:Clean() fn36(arg, arg4.FighterState, v115) end)) arg2:Add(arg3.ContextRemoved:Connect(function() v115:Clean() end)) local inner = arg3.Inner if inner then fn36(arg, inner.FighterState, v115) end end end tbl17.hL = function() local hl = tbl17.cache.hL if not hl then local hl2 = { c = fn35() } tbl17.cache.hL = hl2 hl = hl2 end return hl.c end end do -- hO local function fn35() tbl17 .aE();return function(l)l:AddSection({Title="Anti Katana",Side="left"}):AddToggle({Label="Enabled",Config={"AntiKatana","Enabled"}});end;end tbl17.hO = function() local ho = tbl17.cache.hO if not ho then ho = { c = fn35() } tbl17.cache.hO = ho end return ho.c end end do -- hP local function fn35() tbl17 .aE();local I= tbl17 .aT();return function(l)local W=l:AddSection({Title="Auto Weapon Ban",Side="right"});W:AddToggle({Label="Enabled",Config={"AutoBan","Enabled"}});W:AddMultiDropdown({Label="First Ban Choices",Options=I,Config={"AutoBan","FirstWeapons"}});W:AddMultiDropdown({Label="Second Ban Choices",Options=I,Config={"AutoBan","SecondWeapons"}});end;end tbl17.hP = function() local hp = tbl17.cache.hP if not hp then hp = { c = fn35() } tbl17.cache.hP = hp end return hp.c end end do -- hQ local function fn35() local tbl18 = {} for _, v115 in tbl17.aS().DuelLibrary.MapOrder, nil, nil do table.insert(tbl18, v115) end return table.freeze(tbl18) end tbl17.hQ = function() local hq = tbl17.cache.hQ if not hq then hq = { c = fn35() } tbl17.cache.hQ = hq end return hq.c end end do -- hR local function fn35()local I,W= tbl17 .a6(), tbl17 .bG(); tbl17 .aE();local N,P,a,e= tbl17 .hQ(), tbl17 .aS().Constants, tbl17 .aS().ItemLibrary,{{Name="Primary",Class="Primary"},{Name="Secondary",Class="Secondary"},{Name="Melee",Class="Melee"},{Name="Utility",Class="Utility"}};local function l(c)local E={};for p,T in a.Items,nil,nil do if p=="MISSING_WEAPON"then continue;end;local a=E[T.Class];if a==nil then a=c and{"Unselected"}or{};E[T.Class]=a;end;table.insert(a,p);end;for a,a_133 in E,nil,nil do table.sort(a_133);end;return E;end;local a_134={"1","2","3"};local function c()return I({"Default"},N);end;local function I_135(N,E)return{"AutoLoadout","Loadouts",N,E};end;return function(N)local E,p=N:AddSection({Title="Setup",Side="left"}),N:AddSection({Title="Slot Editor",Side="right"});local N_136,T=E:AddToggle({Label="Enabled",Config={"AutoLoadout","Enabled"}}),E:AddToggle({Label="Use Map-Specific Loadouts",Config={"AutoLoadout","PerMap"}});local t,x=E:AddGroup({Source=T}):AddDropdown({Label="Map",Options=c()}),E:AddToggle({Label="Use Fallback Loadouts",Config={"AutoLoadout","MultipleLoadouts"}});local c,S,J,B,X=E:AddGroup({Source=x}):AddDropdown({Label="Loadout Priority (1 highest)",Options=a_134}),l(false),l(true),P.DEFAULT_WEAPONS,{};for l,P in e,nil,nil do X[l]=p:AddDropdown({Label=P.Name,Options=S[P.Class]});end;local function l()local P=t.Value;return T.Value and type(P)=="string"and P or"Default";end;local function P()local a=c.Value;return x.Value and type(a)=="string"and a or"1";end;local a=false;local function E_137()if a then return;end;local p={};for H,k in X,nil,nil do p[H]=k.Value;end;W:Set(I_135(l(),P()),p);end;local function p_138(H,k)local D,Q=S[e[H].Class],k and k[H];if Q and(table.find(D,Q))then return Q;end;if l()=="Default"and P()=="1"then return B[H];end;return"Unselected";end;local function B_139()a=true;local H=W:Get(I_135(l(),P()),true);for I,k in X,nil,nil do local D=e[I].Class;k:SetOptions(l()=="Default"and P()=="1"and S[D]or J[D]);k:Set(p_138(I,H),true);end;a=false;end;N_136:OnChanged(function()if next((W:Get({"AutoLoadout","Loadouts"},true)))then return;end;E_137();end);T:OnChanged(B_139);t:OnChanged(B_139);x:OnChanged(B_139);c:OnChanged(B_139);for l,l_140 in X,nil,nil do l_140:OnChanged(E_137);end;N_136:Connect(W:GetPropertyChangedSignal({"AutoLoadout","Loadouts"}),B_139);B_139();end;end tbl17.hR = function() local hr = tbl17.cache.hR if not hr then local hr2 = { c = fn35() } tbl17.cache.hR = hr2 hr = hr2 end return hr.c end end do -- hS local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Auto Pickup",Side="left"});I:AddToggle({Label="Enabled",Config={"AutoPickupDrops","Enabled"}});I:AddMultiDropdown({Label="Pickup Types",Options={"Ammo","Health"},Config={"AutoPickupDrops","Types"}});end;end tbl17.hS = function() local hs = tbl17.cache.hS if not hs then hs = { c = fn35() } tbl17.cache.hS = hs end return hs.c end end do -- hT local function fn35() local serverOsTime = tbl17.aS().ServerOsTime local duelLibrary = tbl17.aS().DuelLibrary local get = serverOsTime.Get local v115 = tbl17.b3()(get, serverOsTime) local matchmakingQueues = v102(duelLibrary, "MatchmakingQueues") local tbl18 = {} for _, v116 in v102(duelLibrary, "MatchmakingQueueOrder") do local v117 = v102(matchmakingQueues, v116) if v117 ~= nil then local terminalsReleaseTime = v102(v117, "TerminalsReleaseTime") if terminalsReleaseTime and terminalsReleaseTime <= v115 then table.insert(tbl18, v116) end end end for _, v116 in v102(duelLibrary, "ArcadeModeOrder") do table.insert(tbl18, v116) end return tbl18 end tbl17.hT = function() local ht = tbl17.cache.hT if not ht then local ht2 = { c = fn35() } tbl17.cache.hT = ht2 ht = ht2 end return ht.c end end do -- hU local function fn35()local I= tbl17 .hT(); tbl17 .aE();return function(l)local W=l:AddSection({Title="Auto Queue",Side="left"});W:AddToggle({Label="Enabled",Config={"AutoQueue","Enabled"}});W:AddDropdown({Label="Queue",Options=I,Config={"AutoQueue","Queue"}});end;end tbl17.hU = function() local hu = tbl17.cache.hU if not hu then hu = { c = fn35() } tbl17.cache.hU = hu end return hu.c end end do -- hV local function fn35() tbl17 .aE();return function(l)l:AddSection({Title="Auto Respawn",Side="right"}):AddToggle({Label="Enabled",Config={"AutoRespawn","Enabled"}});end;end tbl17.hV = function() local hv = tbl17.cache.hV if not hv then hv = { c = fn35() } tbl17.cache.hV = hv end return hv.c end end do -- hW local function fn35() tbl17 .aE();local I= tbl17 .hQ();return function(l)local W=l:AddSection({Title="Auto Map Vote",Side="left"});W:AddToggle({Label="Enabled",Config={"AutoVote","Enabled"}});W:AddMultiDropdown({Label="Maps to Vote For",Options=I,Config={"AutoVote","Maps"},Search=true});end;end tbl17.hW = function() local hw = tbl17.cache.hW if not hw then local hw2 = { c = fn35() } tbl17.cache.hW = hw2 hw = hw2 end return hw.c end end do -- hX local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Hacker Detector",Side="left"});I:AddToggle({Label="Enabled",Config={"HackerDetector","Enabled"}});I:AddToggle({Label="Notify",Config={"HackerDetector","Notify"}});I:AddColor({Row=I:AddLabel({Label="Text Color"}).Row,Config={"HackerDetector","Color"},Animatable=true});end;end tbl17.hX = function() local hx = tbl17.cache.hX if not hx then hx = { c = fn35() } tbl17.cache.hX = hx end return hx.c end end do -- hY local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Moderator Detector",Side="right"});I:AddToggle({Label="Enabled",Config={"ModDetector","Enabled"}});I:AddMultiDropdown({Label="Moderator Responses",Options={"Notify","Kick","ToLobby"},Config={"ModDetector","Moderators"}});I:AddMultiDropdown({Label="Mod Friends",Options={"Notify","Kick","ToLobby"},Config={"ModDetector","ModFriends"}});I:AddColor({Row=I:AddLabel({Label="Text Color"}).Row,Config={"ModDetector","Color"},Animatable=true});end;end tbl17.hY = function() local hy = tbl17.cache.hY if not hy then local hy2 = { c = fn35() } tbl17.cache.hY = hy2 hy = hy2 end return hy.c end end do -- hZ local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Subspace Tripmines",Side="right"});I:AddToggle({Label="Auto Trigger",Config={"SubspaceTripmines","AutoTrigger"}});I:AddToggle({Label="Team Trigger",Config={"SubspaceTripmines","TeamTrigger"}});end;end tbl17.hZ = function() local hz = tbl17.cache.hZ if not hz then hz = { c = fn35() } tbl17.cache.hZ = hz end return hz.c end end do -- h_ local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P,a,e,c,E,p,T,t= tbl17 .hO(), tbl17 .hP(), tbl17 .hR(), tbl17 .hS(), tbl17 .hU(), tbl17 .hV(), tbl17 .hW(), tbl17 .hX(), tbl17 .hY(), tbl17 .hZ(),{Automation="rbxassetid://70979486241131",Detection="rbxassetid://132868138496209",Match="rbxassetid://99293705721130"};return function(l,x)l=x:AddTab({Label="Automation",Icon=t.Automation,Description="Match flow, loadouts, in-match automation, and detection."});x=l:AddTab({Label="Match Flow",Icon=t.Match,Description="Automate queueing, voting, bans, and respawns."}):Grid({Columns=2});a(x);c(x);W(x);e(x);N((l:AddTab({Label="Auto Loadout",Icon=t.Automation,Description="Configure map-specific and fallback loadouts."}):Grid({Columns=2})));x=l:AddTab({Label="In-Match Automation",Icon=t.Match,Description="Automate pickups, counters, and tripmines."}):Grid({Columns=2});P(x);I(x);T(x);x=l:AddTab({Label="Detection",Icon=t.Detection,Description="Detect hackers and moderators."}):Grid({Columns=2});E(x);p(x);end;end tbl17.h_ = function() local h = tbl17.cache.h_ if not h then h = { c = fn35() } tbl17.cache.h_ = h end return h.c end end do -- h0 local function fn35() tbl17.aF() tbl17.bN() local v115 = tbl17.aH() return function(arg, arg2) local v116 = nil local function fn36() local class = v115.resolveProfile(arg:GetContext()).Class if class == v116 then return end v116 = class for _, v117 in arg2, nil, nil do v117.Dropdown:SetVisible(v117.Class == class) end end arg2[1].Dropdown:Connect(arg.ContextChanged, fn36) fn36() end end tbl17.h0 = function() local h0 = tbl17.cache.h0 if not h0 then local h02 = { c = fn35() } tbl17.cache.h0 = h02 h0 = h02 end return h0.c end end do -- h1 local function fn35() tbl17 .aE();return function(l,I)local function W(...)return{I,"Fov",...};end;l:AddColor({Row=l:AddToggle({Label="Show Targeting Circle",Config=W("Circle","Visible")}).Row,Gradient="editable",Alpha=true,Config=W("Circle","Stroke","Gradient"),Transparency=W("Circle","Stroke","Transparency")});l:AddSlider({Label="Radius (px)",Min=1,Max=600,Config=W("Radius")});l:AddSlider({Label="Thickness",Min=0,Max=25,Config=W("Circle","Stroke","Thickness")});l:AddColor({Row=l:AddToggle({Label="Filled",Config=W("Circle","Fill","Enabled")}).Row,Gradient="editable",Alpha=true,Config=W("Circle","Fill","Gradient"),Transparency=W("Circle","Fill","Transparency")});l:AddGroup({Source=l:AddToggle({Label="Animated",Config=W("Circle","Animated","Enabled")})}):AddSlider({Label="Animation Speed (deg/s)",Min=0,Max=360,Config=W("Circle","Animated","Speed")});local I_141=l:AddGroup({Source=l:AddToggle({Label="Follow Target",Config=W("Circle","FollowTarget","Enabled")})});I_141:AddSlider({Label="Follow Speed",Default=20,Min=1,Max=50,Config=W("Circle","FollowTarget","Speed")});I_141:AddSlider({Label="Follow Damper",Default=1,Min=0,Max=30,Config=W("Circle","FollowTarget","Damper")});I_141:AddSlider({Label="Snap Distance",Default=5,Min=0,Max=10,Config=W("Circle","FollowTarget","SnapDistance")});end;end tbl17.h1 = function() local h1 = tbl17.cache.h1 if not h1 then h1 = { c = fn35() } tbl17.cache.h1 = h1 end return h1.c end end do -- h2 local function fn35() tbl17 .aF(); tbl17 .aE();return function(l,I,W)local N={};if W.Kind=="Stateless"then for P,a in W.Classes,nil,nil do local e,c={I,"TargetHitboxes",P},{};for E in a,nil,nil do table.insert(c,E);end;a=l:AddMultiDropdown({Label="Allowed Hitboxes",Options=c,Config=e});table.insert(N,{Dropdown=a,Path=e,Class=P});end;else for P,a in W.Classes,nil,nil do for W,e in a,nil,nil do local a_142,c={I,"TargetHitboxes",P,W},{};for I in e,nil,nil do table.insert(c,I);end;e=l:AddMultiDropdown({Label=string.format("%s Allowed Hitboxes",tostring(W)),Options=c,Config=a_142});table.insert(N,{Dropdown=e,Path=a_142,Class=P});end;end;end;return N;end;end tbl17.h2 = function() local h2 = tbl17.cache.h2 if not h2 then local h22 = { c = fn35() } tbl17.cache.h2 = h22 h2 = h22 end return h2.c end end do -- h3 local function fn35() return function(arg) local tbl18 = {} for k in next, arg, nil do table.insert(tbl18, k) end return tbl18 end end tbl17.h3 = function() local h3 = tbl17.cache.h3 if not h3 then local h32 = { c = fn35() } tbl17.cache.h3 = h32 h3 = h32 end return h3.c end end do -- h4 local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P= tbl17 .dX(), tbl17 .h2(), tbl17 .h3(), tbl17 .a7();return function(l,a,e,c,E)local p,T,t,x=e.Options,e.Labels,E.Options,E.Labels;l:AddMultiDropdown({Label="Target Filters",Options=N(p),Default=I(P(p)),Labels=T,Config={a,"TargetConditions"}});E=l:AddGroup({Source=l:AddDropdown({Label="Aim Point",Options={"Center","Surface"},Labels={Surface="Closest Point"},Config={a,"HitboxPoint","Type"}}),Option="Surface"});E:AddSlider({Label="Surface Reduction (%)",Min=0,Max=100,Step=0.01,Config={a,"HitboxPoint","Surface","SizeReductionPercentage"}});E:AddToggle({Label="Preserve Depth",Config={a,"HitboxPoint","Surface","PreserveDepth"}});p=l:AddGroup({Source=l:AddDropdown({Label="Hitbox Selection",Options={"ClosestToCrosshair","Random"},Labels={ClosestToCrosshair="Closest to Crosshair",Random="Weighted Random"},Config={a,"HitboxSelection","Type"}}),Option="Random"});for I in t,nil,nil do p:AddSlider({Label=x[I]or I,Min=0,Max=100,Step=1,Config={a,"HitboxSelection","Random",I}});end;return W(l,a,c);end;end tbl17.h4 = function() local h4 = tbl17.cache.h4 if not h4 then local h42 = { c = fn35() } tbl17.cache.h4 = h42 h4 = h42 end return h4.c end end do -- h5 local function fn35() tbl17 .aF(); tbl17 .aE();local I,W= tbl17 .h1(), tbl17 .h4();return function(l,N,P)local a,e=l:AddSection({Title="Targeting",Side="left"}),l:AddSection({Title="Targeting FOV",Side="right"});l=W(a,N,P.TargetConditions,P.TargetHitboxes,P.RandomHitboxPercentages);I(e,N);return l;end;end tbl17.h5 = function() local h5 = tbl17.cache.h5 if not h5 then h5 = { c = fn35() } tbl17.cache.h5 = h5 end return h5.c end end do -- h6 local function fn35() tbl17 .aE();local I= tbl17 .a6();return function(l,W,N,P,a,e)local c,E=if e==nil then if W=="Enabled"then(P[#P]:gsub("(%l)(%u)","%1 %2"))else W else e,l:AddToggle({Label=W,Config=I(P,{"Enabled"})});local W_143=l:AddKeybind({Row=E.Row,Modes=N,InKeybindList=a,ListLabel=c,ConfigMap={Key=I(P,{"Keybind","Bind"}),Mode=I(P,{"Keybind","Kind"}),Active=I(P,{"Keybind","State"}),ShowInList=I(P,{"Keybind","ShowInList"}),Invisible=I(P,{"Keybind","Invisible"})}});W_143:SetFeatureEnabled(E.Value);E:Connect(E.ValueChanged,function(l)W_143:SetFeatureEnabled(l);end);return E,W_143;end;end tbl17.h6 = function() local h6 = tbl17.cache.h6 if not h6 then local h62 = { c = fn35() } tbl17.cache.h6 = h62 h6 = h62 end return h6.c end end do -- h7 local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P,a= tbl17 .dX(), tbl17 .h5(), tbl17 .h6(), tbl17 .h3(), tbl17 .a7();local function l(e,c)N(e,"Enable Aimbot",{"Always","Toggle","Hold"},{"Aimbot"},true);local N,E=c.Options,c.Labels;e:AddMultiDropdown({Label="Activation Rules",Options=P(N),Default=I(a(N)),Config={"Aimbot","ActivationConditions"},Labels=E});e:AddSlider({Label="Reaction Delay (s)",Min=0,Max=2,Step=0.01,Config={"Aimbot","ReactionTime"}});e:AddSlider({Label="Switch Delay (s)",Min=0,Max=2,Step=0.01,Config={"Aimbot","SwitchDelay"}});c={"Lock","Linear","Spring"};table.insert(c,3,"AI");E=e:AddDropdown({Label="Aim Mode",Options=c,Config={"Aimbot","Mode","Type"}});e:AddGroup({Source=E,Option="Linear"}):AddSlider({Label="Linear Speed",Min=0.01,Max=1,Step=0.01,Config={"Aimbot","Mode","Speed"}});e:AddGroup({Source=E,Option="AI"}):AddSlider({Label="AI Speed",Min=0.01,Max=1,Step=0.01,Config={"Aimbot","Mode","Speed"}});e:AddGroup({Source=E,Option="Spring"}):AddSlider({Label="Spring Speed",Min=0.01,Max=1,Step=0.01,Config={"Aimbot","Mode","Speed"}});end;local function I_144(N)local P=N:AddToggle({Label="Enable Target Lock",Config={"Aimbot","TargetLock","Enabled"}});local a=N:AddKeybind({Row=P.Row,Modes={"Tap"},Default={Key="None",Mode="Tap"},InKeybindList=true,ListLabel="Target Lock",ConfigMap={Key={"Aimbot","TargetLock","Bind"},ShowInList={"Aimbot","TargetLock","BindShowInList"},Invisible={"Aimbot","TargetLock","BindInvisible"}}});a:SetFeatureEnabled(P.Value==true);P:Connect(P.ValueChanged,function(e)a:SetFeatureEnabled(e==true);end);N:AddGroup({Source=P}):AddDropdown({Label="Lock Mode",Options={"ToggleLock","AutoLock","ManualOnly"},Labels={ToggleLock="Toggle Lock",AutoLock="Auto Lock",ManualOnly="Manual Only"},Config={"Aimbot","TargetLock","Mode"}});end;return function(N,P)local a,e=N:AddSection({Title="Activation",Side="left"}),N:AddSection({Title="Target Lock",Side="right"});if P.PinHint~=nil then a:AddLabel({Label=P.PinHint});end;l(a,P.ActivationConditions);I_144(e);return W(N,"Aimbot",P);end;end tbl17.h7 = function() local h7 = tbl17.cache.h7 if not h7 then h7 = { c = fn35() } tbl17.cache.h7 = h7 end return h7.c end end do -- h8 local function fn35()local I= tbl17 .aB(); tbl17 .gv(); tbl17 .aE();return function(l,W)return function()l:Dialog({Title="Manage Sounds",Description="Add or remove custom sounds."},function(l)local N,P;l:AddPage({Title="Add a Sound",Description="Enter a name and sound source.",Glyph="+",ActionText="Add Sound",OnAction=function()local a,e=N,P;local c=W:AddCustom(a.Value,e.Value);if not c.Ok then I.get():Notify(c.Error.Detail);return false;end;a:Set("",true);e:Set("",true);return true;end},function(a)N=a:AddTextBox({Label="Name"});P=a:AddTextBox({Label="Sound Source",Placeholder="Id / File name / Url"});end);local N_145,P_146;P_146=l:AddPage({Title="Remove a Sound",Description="Select a sound to remove.",Glyph="\226\136\146",ActionText="Remove Sound",Variant="danger",ActionEnabled=false,Confirmation={Title="Remove selected sound?",Description=function()local l=N_145.Value;if l==nil then return"The selected sound will be permanently removed.";end;return string.format("\"%s\" will be permanently removed.",tostring(l));end,ActionText="Confirm"},OnOpen=function()local l=N_145;l:SetOptions(W:GetNames());P_146:SetActionEnabled(l.Value~=nil);end,OnAction=function()local l=N_145.Value;if l==nil then return false;end;local a=W:RemoveCustom(l);if not a.Ok then I.get():Notify(a.Error.Detail);return false;end;return true;end},function(l)local I=l:AddList({Label="Sound",Options=W:GetNames(),Height=150,Search=true,SelectFirst=false});N_145=I;I:Connect(I.ValueChanged,function(l)P_146:SetActionEnabled(l~=nil);end);I:Connect(W.Changed,function(l)I:SetOptions(l);end);end);end);end;end;end tbl17.h8 = function() local h8 = tbl17.cache.h8 if not h8 then local h82 = { c = fn35() } tbl17.cache.h8 = h82 h8 = h82 end return h8.c end end do -- h9 local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P,a= tbl17 .dX(), tbl17 .h5(), tbl17 .h6(), tbl17 .h3(), tbl17 .a7();local function l(e,c)N(e,"Enable Silent Aim",{"Always","Toggle","Hold"},{"SilentAim"},true);e:AddSlider({Label="Activation Chance (%)",Min=0,Max=100,Config={"SilentAim","ActivationChance"}});local N=c.ExpandActivationSection;if N~=nil then N(e);end;N=c.ActivationConditions;local c_147,E=N.Options,N.Labels;e:AddMultiDropdown({Label="Activation Rules",Options=P(c_147),Default=I(a(c_147)),Config={"SilentAim","ActivationConditions"},Labels=E});e:AddSlider({Label="Reaction Delay (s)",Min=0,Max=2,Step=0.01,Config={"SilentAim","ReactionTime"}});e:AddSlider({Label="Switch Delay (s)",Min=0,Max=2,Step=0.01,Config={"SilentAim","SwitchDelay"}});end;return function(I,N)local P=I:AddSection({Title="Activation",Side="left"});if N.PinHint~=nil then P:AddLabel({Label=N.PinHint});end;l(P,N);return W(I,"SilentAim",N);end;end tbl17.h9 = function() local h9 = tbl17.cache.h9 if not h9 then h9 = { c = fn35() } tbl17.cache.h9 = h9 end return h9.c end end do -- ia local function fn35() tbl17 .aF(); tbl17 .aE();local I,W,N,P,a= tbl17 .dX(), tbl17 .h2(), tbl17 .h6(), tbl17 .h3(), tbl17 .a7();return function(l,e)local c,E=e.ActivationConditions,e.TargetConditions;local p,T,t,x,S=c.Options,c.Labels,E.Options,E.Labels,l:AddSection({Title="Triggerbot",Side="left"});if e.PinHint~=nil then S:AddLabel({Label=e.PinHint});end;N(S,"Enable Triggerbot",{"Always","Toggle","Hold"},{"Triggerbot"},true);S:AddMultiDropdown({Label="Activation Rules",Options=P(p),Default=I(a(p)),Labels=T,Config={"Triggerbot","ActivationConditions"}});S:AddMultiDropdown({Label="Target Filters",Options=P(t),Default=I(a(t)),Labels=x,Config={"Triggerbot","TargetConditions"}});S:AddSlider({Label="Reaction Delay (s)",Min=0,Max=2,Step=0.01,Config={"Triggerbot","ReactionTime"}});S:AddSlider({Label="Release Delay (s)",Min=0,Max=2,Step=0.01,Config={"Triggerbot","ReleaseTime"}});return(W(S,"Triggerbot",e.TargetHitboxes));end;end tbl17.ia = function() local ia = tbl17.cache.ia if not ia then local ia2 = { c = fn35() } tbl17.cache.ia = ia2 ia = ia2 end return ia.c end end do -- ib local function fn35()local I= tbl17 .a8(); tbl17 .aE(); tbl17 .hN();return function(l,W,N)local P=W:AddSection({Title="Elimination Feedback",Side="right"});P:AddToggle({Label="Enable Elimination Feedback",Config={"PlayerElimination","Enabled"}});P:AddDivider({Label="Sound"});W=P:AddGroup({Source=P:AddToggle({Label="Play Elimination Sound",Config={"PlayerElimination","Sound","Enabled"}})});local a=W:AddDropdown({Label="Elimination Sound",Options=l.SfxSoundStorage:GetNames(),Config={"PlayerElimination","Sound","Name"}});a:Connect(l.SfxSoundStorage.Changed,function(e)a:SetOptions(e);end);W:AddSlider({Label="Elimination Volume",Min=0.1,Max=10,Step=0.1,Config={"PlayerElimination","Sound","Volume"}});W:AddSlider({Label="Elimination Pitch",Min=0.1,Max=3,Step=0.1,Config={"PlayerElimination","Sound","Pitch"}});W:AddButton({Label="Manage Custom Sounds",OnClick=N});P:AddDivider({Label="Visual Chams"});l=P:AddToggle({Label="Enable Elimination Chams",Config={"PlayerElimination","Chams","Enabled"}});P:AddColor({Row=l.Row,Alpha=true,Config={"PlayerElimination","Chams","Color"},Transparency={"PlayerElimination","Chams","Transparency"},Animatable=true});W=P:AddGroup({Source=l});W:AddSlider({Label="Elimination Chams Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerElimination","Chams","Duration"}});W:AddDropdown({Label="Elimination Chams Material",Options=I.Names,Config={"PlayerElimination","Chams","Material"}});P:AddDivider({Label="Flash"});l=P:AddToggle({Label="Enable Elimination Flash",Config={"PlayerElimination","KillFlash","Enabled"}});P:AddColor({Row=l.Row,Config={"PlayerElimination","KillFlash","Color"},Animatable=true});P:AddGroup({Source=l}):AddSlider({Label="Elimination Flash Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerElimination","KillFlash","Duration"}});P:AddDivider({Label="Notification"});P:AddGroup({Source=P:AddToggle({Label="Enable Elimination Notification",Config={"PlayerElimination","Notification","Enabled"}})}):AddTextBox({Label="Elimination Notification Text",Config={"PlayerElimination","Notification","Text"}});end;end tbl17.ib = function() local ib = tbl17.cache.ib if not ib then local ib2 = { c = fn35() } tbl17.cache.ib = ib2 ib = ib2 end return ib.c end end do -- ic local function fn35()local I= tbl17 .a8(); tbl17 .aE(); tbl17 .hN();return function(l,W,N)local P=W:AddSection({Title="Hit Feedback",Side="left"});P:AddToggle({Label="Enable Hit Feedback",Config={"PlayerHit","Enabled"}});P:AddDivider({Label="Sound"});local a,e=P:AddGroup({Source=P:AddToggle({Label="Play Hit Sound",Config={"PlayerHit","Sound","Enabled"}})}),l.SfxSoundStorage:GetNames();local c=a:AddDropdown({Label="Headshot Sound",Options=e,Config={"PlayerHit","Sound","HeadName"}});c:Connect(l.SfxSoundStorage.Changed,function(E)c:SetOptions(E);end);a:AddSlider({Label="Headshot Volume",Min=0.1,Max=10,Step=0.1,Config={"PlayerHit","Sound","HeadVolume"}});a:AddSlider({Label="Headshot Pitch",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","Sound","HeadPitch"}});local c_148=a:AddDropdown({Label="Body Hit Sound",Options=e,Config={"PlayerHit","Sound","BodyName"}});c_148:Connect(l.SfxSoundStorage.Changed,function(e)c_148:SetOptions(e);end);a:AddSlider({Label="Body Hit Volume",Min=0.1,Max=10,Step=0.1,Config={"PlayerHit","Sound","BodyVolume"}});a:AddSlider({Label="Body Hit Pitch",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","Sound","BodyPitch"}});a:AddToggle({Label="Mute Game Hit Sound",Config={"PlayerHit","Sound","DisableGameSound"}});a:AddButton({Label="Manage Custom Sounds",OnClick=N});P:AddDivider({Label="Visual Chams"});l=P:AddToggle({Label="Enable Hit Chams",Config={"PlayerHit","Chams","Enabled"}});P:AddColor({Row=l.Row,Alpha=true,Config={"PlayerHit","Chams","Color"},Transparency={"PlayerHit","Chams","Transparency"},Animatable=true});N=P:AddGroup({Source=l});N:AddSlider({Label="Hit Chams Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","Chams","Duration"}});N:AddDropdown({Label="Hit Chams Material",Options=I.Names,Config={"PlayerHit","Chams","Material"}});P:AddDivider({Label="Flash"});W=P:AddToggle({Label="Enable Hit Flash",Config={"PlayerHit","HitFlash","Enabled"}});P:AddColor({Row=W.Row,Config={"PlayerHit","HitFlash","Color"},Animatable=true});P:AddGroup({Source=W}):AddSlider({Label="Hit Flash Duration",Min=0.1,Max=3,Step=0.1,Config={"PlayerHit","HitFlash","Duration"}});P:AddDivider({Label="Notification"});P:AddGroup({Source=P:AddToggle({Label="Enable Hit Notification",Config={"PlayerHit","Notification","Enabled"}})}):AddTextBox({Label="Hit Notification Text",Config={"PlayerHit","Notification","Text"}});end;end tbl17.ic = function() local ic = tbl17.cache.ic if not ic then local ic2 = { c = fn35() } tbl17.cache.ic = ic2 ic = ic2 end return ic.c end end do -- id local function fn35() tbl17 .aE();local function l(I,W,N,P,a,e)I:AddGroup({Source=I:AddToggle({Label=W,Config={"ItemModifiers",P,"Enabled"}})}):AddSlider({Label=N,Min=a,Max=e,Config={"ItemModifiers",P,"Percentage"}});end;return function(I)local W,N,P,a=I:AddSection({Title="Aim & Fire",Side="left"}),I:AddSection({Title="Cooldowns",Side="left"}),I:AddSection({Title="Melee",Side="right"}),I:AddSection({Title="Grenades",Side="right"});l(W,"Reduce Recoil","Recoil Reduction (%)","Recoil",0,100);W:AddToggle({Label="Remove Spread",Config={"ItemModifiers","NoSpread"}});W:AddToggle({Label="Fast Shoot",Config={"ItemModifiers","FastShoot"}});W:AddToggle({Label="Fast Projectile",Config={"ItemModifiers","FastProjectile"}});W:AddToggle({Label="Full Auto",Config={"ItemModifiers","FullAuto"}});W:AddGroup({Source=W:AddToggle({Label="Fire Rate Override",Config={"ItemModifiers","FireRate","Enabled"}})}):AddSlider({Label="Fire Rate (%)",Min=1,Max=100,Config={"ItemModifiers","FireRate","Percentage"}});l(W,"Aim Speed Override","Aim Speed (%)","AimSpeed",50,500);l(N,"Fire Cooldown Override","Percentage","FireCooldown",0,100);l(N,"Aim Cooldown Override","Percentage","AimCooldown",1,100);l(N,"Melee Cooldown Override","Percentage","MeleeCooldown",0,100);l(N,"Dash Cooldown Override","Percentage","DashCooldown",0,100);P:AddToggle({Label="Always Backstab",Config={"ItemModifiers","AlwaysBackstab"}});P:AddGroup({Source=P:AddToggle({Label="Extend Melee Range",Config={"ItemModifiers","ExtendMeleeRange","Enabled"}})}):AddSlider({Label="Range",Min=5,Max=20,Config={"ItemModifiers","ExtendMeleeRange","Range"}});a:AddGroup({Source=a:AddToggle({Label="Fuse Override",Config={"ItemModifiers","GrenadeFuse","Enabled"}})}):AddDropdown({Label="Explode On",Options={"Impact","Throw"},Config={"ItemModifiers","GrenadeFuse","ExplodeOn"}});a:AddToggle({Label="Remove Fuse",Config={"ItemModifiers","GrenadeFuse","RemoveFuse"}});end;end tbl17.id = function() local id = tbl17.cache.id if not id then local id2 = { c = fn35() } tbl17.cache.id = id2 id = id2 end return id.c end end do -- ie local function fn35()local I= tbl17 .gR(); tbl17 .aE();local W= tbl17 .h6();local function l(N)W(N,"Enable Ragebot",{"Always","Toggle","Hold"},{"Ragebot"},true);if not I.IsArcadeServer then N:AddToggle({Label="Utilize Health Lead",Config={"Ragebot","UtilizeHealthLead"}});end;end;return function(I)l(I:AddSection({Title="Activation",Side="left"}));local l,W=I:AddSection({Title="Weapon Strategy",Side="left"}),{"Primary","Secondary","Melee"};for I,I_149 in W,nil,nil do l:AddToggle({Label=string.format("%s Enabled",tostring(I_149)),Config={"Ragebot","Weapons","Enabled",I_149}});end;end;end tbl17.ie = function() local ie = tbl17.cache.ie if not ie then ie = { c = fn35() } tbl17.cache.ie = ie end return ie.c end end do -- ih local function fn35() tbl17 .aE();local I= tbl17 .h6();local function l(W)I(W,"Enable Ragebot",{"Always","Toggle","Hold"},{"Ragebot"},true);W:AddToggle({Label="Prioritize Hackers",Config={"Ragebot","PrioritizeHackers"}});W:AddSlider({Label="Stability",Min=0,Max=1.5,Step=0.001,Config={"Ragebot","Stability"}});W:AddSlider({Label="Shoot Frames",Min=1,Max=5,Config={"Ragebot","ShootFrames"}});end;local function I_150(W)local N={"Primary","Secondary","Melee"};for P,P_151 in N,nil,nil do W:AddToggle({Label=string.format("%s Enabled",tostring(P_151)),Config={"Ragebot","Weapons","Enabled",P_151}});end;W:AddOrderedList({Label="Weapon Priority",Items=N,Default=N,Config={"Ragebot","Weapons","Priority"}});W:AddDropdown({Label="On Empty",Options={"Reload","Swap","SwapOrReload"},Labels={SwapOrReload="Swap or Reload"},Config={"Ragebot","Weapons","OnEmpty"}});end;local function W(N,P)local a=N:AddGroup({Source=P,Option="ProjectileBreaker"});a:AddRangeSlider({Label="Forward Depth",Min=0,Max=10,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthForward"}});a:AddSlider({Label="Forward Frequency",Min=0,Max=20,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthForwardFrequency"}});a:AddRangeSlider({Label="Upward Depth",Min=0,Max=10,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthUp"}});a:AddSlider({Label="Upward Frequency",Min=0,Max=20,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","DepthUpFrequency"}});a:AddSlider({Label="Reposition Interval (s)",Min=0.05,Max=2,Step=0.01,Config={"Ragebot","Evasion","ProjectileBreaker","RepositionInterval"}});a:AddToggle({Label="Fallback Character Origin",Config={"Ragebot","Evasion","ProjectileBreaker","FallbackAnchorFromCharacter"}});a:AddSlider({Label="Fallback Radius",Min=5,Max=100000000,Config={"Ragebot","Evasion","ProjectileBreaker","FallbackBaseRadius"}});a:AddSlider({Label="Fallback Random Factor",Min=0,Max=1,Step=0.1,Config={"Ragebot","Evasion","ProjectileBreaker","FallbackRadiusRandomFactor"}});end;local function N(P)local a=P:AddDropdown({Label="Evasion Mode",Options={"Off","Random","Translocate","ProjectileBreaker"},Labels={ProjectileBreaker="Projectile Breaker"},Config={"Ragebot","Evasion","Mode"}});local e=P:AddGroup({Source=a,Option="Random"});e:AddToggle({Label="Character Origin",Config={"Ragebot","Evasion","Random","AnchorFromCharacter"}});e:AddSlider({Label="Base Radius",Min=5,Max=100000000,Config={"Ragebot","Evasion","Random","BaseRadius"}});e:AddSlider({Label="Random Factor",Min=0,Max=1,Step=0.1,Config={"Ragebot","Evasion","Random","RadiusRandomFactor"}});P:AddGroup({Source=a,Option="Translocate"}):AddSlider({Label="Offset",Min=-5,Max=5,Step=0.1,Config={"Ragebot","Evasion","Translocate","Offset"}});W(P,a);end;return function(W)l(W:AddSection({Title="Activation",Side="left"}));I_150(W:AddSection({Title="Weapon Strategy",Side="left"}));N(W:AddSection({Title="Evasion",Side="right"}));end;end tbl17.ih = function() local ih = tbl17.cache.ih if not ih then ih = { c = fn35() } tbl17.cache.ih = ih end return ih.c end end do -- ii local function fn35() tbl17 .aE();local I= tbl17 .h6();return function(l,W)local N=l:AddSection({Title="Flickbot",Side="right"});I(N,"Enable Flickbot",{"Hold","Toggle"},{"Flickbot"},true);N:AddGroup({Source=N:AddToggle({Label="Shoot",Config={"Flickbot","Shoot"}})}):AddSlider({Label="Shot Delay (ms)",Min=0,Max=250,Config={"Flickbot","ShotDelay"}});N:AddSlider({Label="Cooldown (ms)",Min=0,Max=2000,Config={"Flickbot","Cooldown"}});N:AddSlider({Label="Flick Duration (ms)",Min=30,Max=400,Config={"Flickbot","FlickDuration"}});N:AddSlider({Label="Curvature",Min=0,Max=50,Config={"Flickbot","Curvature"}});N:AddSlider({Label="Humanness",Min=0,Max=100,Config={"Flickbot","Humanness"}});N:AddButton({Label="Open Aimbot Targeting",OnClick=W});end;end tbl17.ii = function() local ii = tbl17.cache.ii if not ii then ii = { c = fn35() } tbl17.cache.ii = ii end return ii.c end end do -- ij local function fn35()local I,W,N,P= tbl17 .aU(), tbl17 .gR(), tbl17 .aW(), tbl17 .aY(); tbl17 .aE(); tbl17 .hN();local a,e,c,E,p,T,t,x,S= tbl17 .h0(), tbl17 .h7(), tbl17 .h8(), tbl17 .h9(), tbl17 .ia(), tbl17 .ib(), tbl17 .ic(), tbl17 .id(),{Combat="rbxassetid://99199363807265",CameraAim="rbxassetid://83752373575368",SilentAim="rbxassetid://109514269737059",FireAssist="rbxassetid://81854854241463",WeaponHandling="rbxassetid://128279962545721",HitFeedback="rbxassetid://140427675871522",Ragebot="rbxassetid://125012650497883"};return function(J,B)local X=B:AddTab({Label="Combat",Icon=S.Combat,Description="Aim assistance, fire control, weapon handling, feedback, and ragebot."});local H=X:AddTab({Label="Aimbot",Icon=S.CameraAim,Description="Camera-based aim assistance and target locking."});local k,D=H:Grid({Columns=2}),table.clone(I.BuildSpec);D.PinHint="Hold a weapon, then click the pin next to a setting to give that weapon its own value.";a(J.StoreProfiles,e(k,D));D,k=X:AddTab({Label="Silent Aim",Icon=S.SilentAim,Description="Redirect projectiles toward targets without moving the camera."}):Grid({Columns=2}),table.clone(N.BuildSpec);k.PinHint="Hold a weapon, then click the pin next to a setting to give that weapon its own value.";a(J.StoreProfiles,E(D,k));k=X:AddTab({Label="Ragebot",Icon=S.Ragebot,Description="Aggressive targeting, weapon priority, and evasive movement."}):Grid({Columns=2});if W.IsArcadeServer then tbl17 .ie()(k);else tbl17 .ih()(k);end;D,k=X:AddTab({Label="Fire Assist",Icon=S.FireAssist,Description="Automatic firing and fast camera flicks."}):Grid({Columns=2}),table.clone(P.BuildSpec);k.PinHint="Hold a weapon, then click the pin next to a setting to give that weapon its own value.";a(J.StoreProfiles,p(D,k)); tbl17 .ii()(D,function()H:Open();end);x((X:AddTab({Label="Weapon Handling",Icon=S.WeaponHandling,Description="Aim, firing, cooldown, melee, and grenade behavior."}):Grid({Columns=2})));D,k=X:AddTab({Label="Hit Feedback",Icon=S.HitFeedback,Description="Sound, visual, flash, and notification feedback."}):Grid({Columns=2}),c(B,J.SfxSoundStorage);t(J,D,k);T(J,D,k);end;end tbl17.ij = function() local ij = tbl17.cache.ij if not ij then ij = { c = fn35() } tbl17.cache.ij = ij end return ij.c end end do -- ik local function fn35() return function(l,I)if I==""then return 0;end;local W,N=l:lower(),I:lower();l=W:find(N,1,true);if l then return-1000+l;end;local l_152,I_153,P,a,e,c=#W,#N,1,1,0,0;while P<=l_152 and a<=I_153 do if W:byte(P)==N:byte(a)then a,e,c=a+1,P,if e~=0 then c+(P-e-1)else c;end;P+=1;end;if a>I_153 then return c;end;return nil;end end tbl17.ik = function() local ik = tbl17.cache.ik if not ik then local ik2 = { c = fn35() } tbl17.cache.ik = ik2 ik = ik2 end return ik.c end end do -- il local function fn35() tbl17.dW() local v115 = tbl17.d7() tbl17.aE() tbl17.hN() local v116 = tbl17.em() local v117 = tbl17.eT() local v118 = tbl17.aT() local v119 = tbl17.ik() local v120 = tbl17.n() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local function fn36(arg, arg2, arg3) local n = os.clock() + arg3 for _, v121 in arg2, nil, nil do local v122 = arg:FindFirstChild(v121) if v122 ~= nil then arg = v122 else local n33 = n - os.clock() if n33 <= 0 then return nil end arg = arg:WaitForChild(v121, n33) end if arg == nil then return nil end end return arg end local function fn37(arg) return v117.Images[arg] or "rbxassetid://89204837120267" end local function fn38(arg) if arg == nil or arg == "Unselected" then return nil end if arg == "None" then return "NONE_COSMETIC" end if arg == "Random" then return "RANDOM_COSMETIC" end return arg end local function fn39(arg) if arg == "NONE_COSMETIC" then return "None" end if arg == "RANDOM_COSMETIC" then return "Random" end if arg == nil then return "Unselected" end return arg end local udim2 = UDim2.fromOffset(v86[160], 50) local tbl18 = { { Name = "Unselected", Image = "rbxassetid://17562770037", ImageSize = udim2 }, { Name = "None", Image = "rbxassetid://17562770037", ImageSize = udim2 }, { Name = "Random", Image = "rbxassetid://94238795177693", ImageSize = udim2 }, } local tbl19 = { Unselected = true, None = v86[34], Random = true } local function fn40(arg) if arg == "" then return nil end return function(arg2, arg3) if tbl19[arg2.Name] then return true end return v119(arg3, arg) ~= nil end end local function fn41(arg, arg2) local v121 = table.clone(tbl18) for _, v122 in arg, nil, nil do table.insert(v121, { Name = v122, Image = fn37(v122), Render = arg2 and arg2(v122) }) end return v121 end local function fn42(arg) if arg == "All" then return {} end return v117.Skins[arg] or {} end local cFrame = CFrame.Angles(0, 3.4906585039886591, 0) * CFrame.Angles(-0.26179938779914941, 0, 0) * CFrame.new(v86[186], 0, 1) local function fn43(arg, arg2) return function(arg3, arg4) arg4.HideImage() local viewportFrame = Instance.new("ViewportFrame") viewportFrame.Size = UDim2.fromScale(1, 1) viewportFrame.Position = UDim2.fromScale(0.5, 0.5) viewportFrame.AnchorPoint = Vector2.new(0.5, 0.5) viewportFrame.BackgroundTransparency = 1 viewportFrame.Parent = arg4.Content local camera = Instance.new("Camera") camera.FieldOfView = 25 camera.CFrame = cFrame camera.Parent = viewportFrame viewportFrame.CurrentCamera = camera local clone = arg:Clone() clone:PivotTo(CFrame.identity) v116.applyWrap(v116.recordOriginalProperties(clone), arg2) clone.Parent = viewportFrame end end local function fn44(arg, arg2) return function(arg3, arg4) local v121 = arg:FindFirstChild(arg2) if v121 == nil then return end arg4.HideImage() local viewportFrame = Instance.new("ViewportFrame") viewportFrame.Size = UDim2.fromScale(1, 1) if not flag3 then return end viewportFrame.Position = UDim2.fromScale(0.5, 0.5) viewportFrame.AnchorPoint = Vector2.new(0.5, 0.5) viewportFrame.BackgroundTransparency = v86[63] viewportFrame.Parent = arg4.Content local camera = Instance.new("Camera") camera.FieldOfView = 25 camera.Parent = viewportFrame viewportFrame.CurrentCamera = camera local clone = v121:Clone() if clone:IsA("Model") then local primary = clone:FindFirstChild("Primary") if primary and primary:IsA("BasePart") then clone.PrimaryPart = primary end clone:PivotTo(CFrame.identity) local hook = clone:FindFirstChild("Hook") if hook then hook:Destroy() end end clone.Parent = viewportFrame camera.CFrame = CFrame.Angles(0, 3.62836073281, 0) * CFrame.Angles(-0.26179938779914941, 0, 0) * CFrame.new(0, 0, v86[48]) end end local function fn45(arg, arg2) local tbl20 = {} local tbl21 = {} for _, v121 in v115.SeasonCharms, nil, nil do local v122 = tostring local seasonName = v121.SeasonName local str7 = string.format("Season %s (%s)", tostring(v121.Version), v122(seasonName)) table.insert(tbl20, str7) tbl21[str7] = v121.CharmName end local tbl22 = { "Off" } for _, v121 in v115.RankNames, nil, nil do table.insert(tbl22, v121) end local v121 = arg2:AddDropdown({ Label = "Season", Options = tbl20, CloseOnSelect = v86[34] }) local v122 = arg2:AddDropdown({ Label = "Rank", Options = tbl22, CloseOnSelect = v86[34] }) local v123 = arg2:AddTextBox({ Label = "Leaderboard Rank (optional, e.g. 1)" }) local function fn46() local value = v121.Value return value ~= nil and tbl21[value] or nil end local function fn47() local match = v123.Value:match("^%s*(.-)%s*$") if match == nil or match == "" then return nil end local num = tonumber(match) if num == nil or num < 1 then return nil end return math.floor(num) end local rankCharm = arg.Cosmetics:GetRankCharm() local function fn48() local v124 = fn46() if v124 == nil then return end local str7 = v122.Value or "Off" if str7 == "Off" then rankCharm:SetForSeason(v124, nil, nil) return end rankCharm:SetForSeason(v124, str7, fn47()) end local function fn49() local v124 = fn46() if v124 == nil then v122:Set("Off", true) v123:Set("", true) return end local forSeason, v125 = rankCharm:GetForSeason(v124) v122:Set(forSeason or "Off", true) v123:Set(v125 ~= nil and tostring(v125) or "", true) end v121:OnChanged(fn49) v122:OnChanged(fn48) v123:OnChanged(fn48) return fn49 end return function(arg, arg2) local v121 = arg2.Skins:Grid({ Columns = 1 }) local v122 = v121:AddSection({ Title = "Apply To", Side = "left" }) local v123 = v121:AddSection({ Title = "Skin Catalog", Side = "left" }) local v124 = arg2.Wraps:Grid({ Columns = 1 }) local v125 = v124:AddSection({ Title = "Apply To", Side = "left" }) local v126 = v124:AddSection({ Title = "Wrap Catalog", Side = "left" }) local v127 = arg2.Charms:Grid({ Columns = 1 }) local v128 = v127:AddSection({ Title = "Apply To", Side = "left" }) local v129 = v127:AddSection({ Title = "Rank Charm Override", Side = "left" }) local v130 = v127:AddSection({ Title = "Charm Catalog", Side = "left" }) local v131 = arg2.Finishers:Grid({ Columns = 1 }) local v132 = v131:AddSection({ Title = "Apply To", Side = v86[42] }) local v133 = v131:AddSection({ Title = "Finisher Catalog", Side = "left" }) local str7 = v118[1] local tbl20 = {} local tbl21 = {} local flag19 = false local function fn46(arg3) if str7 ~= "All" then local v134 = arg3(str7) if v134 ~= nil then arg.Cosmetics:SetSkinChangerChoice(str7, v134) end return end local tbl22 = {} for _, v134 in v118, nil, nil do tbl22[v134] = arg3(v134) end arg.Cosmetics:SetSkinChangerChoices(tbl22) end local function fn47() local v134 = arg.Cosmetics:ExportState() local str8 if not v134.RuntimeEnabled then str8 = "Cosmetic changes are disabled. Enable them on Overview." else str8 = "Custom loadout is ready." if not v134.SkinChangerEnabled then str8 = "Custom loadout is disabled. Enable it on Overview." end end for _, v135 in tbl21, nil, nil do v135:SetLabel(str8) end end local fn48 = nil local function fn49(arg3) local v134 = arg3:AddDropdown({ Label = "Apply To", Options = { "All Weapons", unpack(v118) }, Default = str7, Search = true, CloseOnSelect = true, }) table.insert(tbl20, v134) table.insert(tbl21, arg3:AddLabel({ Label = "", TextColor = Color3.fromRGB(255, 190, 90) })) v134:OnChanged(function(arg4) if flag19 or arg4 == nil then return end str7 = arg4 == "All Weapons" and "All" or arg4 local str8 = str7 == "All" and "All Weapons" or str7 flag19 = true for _, v135 in tbl20, nil, nil do v135:Set(str8, true) end flag19 = false fn47() fn48() end) end fn49(v122) fn49(v125) fn49(v128) fn49(v132) local v134 = v123:AddTextBox({ Label = "Search Skins" }) local v135 = v123:AddSkinChanger({ HeightMode = "Fill", State = "Loading" }) local v136 = v126:AddTextBox({ Label = "Search Wraps" }) local v137 = v126:AddToggle({ Label = "Inverted Wrap" }) local v138 = v126:AddSkinChanger({ HeightMode = "Fill", State = "Loading" }) local v139 = v126:AddButton({ Label = "Retry Loading Wrap Catalog", Variant = "primary" }) v139:SetVisible(false) local v140 = v130:AddTextBox({ Label = "Search Charms" }) local v141 = v130:AddSkinChanger({ HeightMode = "Fill", State = "Loading" }) local v142 = v130:AddButton({ Label = "Retry Loading Charm Catalog", Variant = "primary" }) v142:SetVisible(false) local v143 = v133:AddTextBox({ Label = "Search Finishers" }) local v144 = v133:AddSkinChanger({ HeightMode = "Fill", State = "Loading" }) local tbl22 = {} local tbl23 = {} local tbl24 = {} local tbl25 = {} local flag20 = false local flag21 = false local function fn50(arg3, arg4, arg5, arg6) arg3:SetFilter(fn40(arg4)) if arg4 ~= "" then for _, v145 in arg5, nil, nil do if v119(v145:lower(), arg4) ~= nil then arg3:SetState("Ready") return end end arg3:SetState("NoMatches") return end if #arg5 == 0 and not arg6 then arg3:SetState("Empty") return end arg3:SetState("Ready") end v134:OnChanged(function(arg3) fn50(v135, arg3, tbl22, str7 == "All") end) v136:OnChanged(function(arg3) if flag20 then fn50(v138, arg3, tbl23, v86[153]) end end) v140:OnChanged(function(arg3) if flag21 then fn50(v141, arg3, tbl24, false) end end) v143:OnChanged(function(arg3) fn50(v144, arg3, tbl25, false) end) local function fn51(arg3, arg4, arg5, arg6) arg3:SetClearFilterAction(function() arg4:Set("", true) fn50(arg3, "", arg5(), arg6()) end) end fn51(v135, v134, function() return tbl22 end, function() return str7 == "All" end) fn51(v138, v136, function() return tbl23 end, function() if true then return false end return nil -- (anti-tamper freeze trap removed) end) fn51(v141, v140, function() return tbl24 end, function() return false end) fn51(v144, v143, function() return tbl25 end, function() return v86[153] end) local function fn52() if str7 == "All" then v135:Set(v86[96], true) v138:Set("Unselected", true) v141:Set("Unselected", true) v144:Set("Unselected", true) v137:Set(false, v86[34]) return end local skinChangerSelections = arg.Cosmetics:GetSkinChangerSelections(str7) if skinChangerSelections == nil then v135:Set("Unselected", true) v138:Set(v86[96], true) v137:Set(false, v86[34]) v141:Set(v86[96], v86[34]) v144:Set("Unselected", v86[34]) return end local v145 = v86[34] v135:Set(fn39(skinChangerSelections.Skin), v145) local wrap = skinChangerSelections.Wrap if wrap ~= nil then v138:Set(fn39(wrap.Name), true) v137:Set(wrap.Inverted, true) else v138:Set("Unselected", true) v137:Set(false, v86[34]) end v141:Set(fn39(skinChangerSelections.Charm), true) local v146 = v86[34] v144:Set(fn39(skinChangerSelections.Finisher), v146) end local flag22 = false arg2.Skins:OnFirstOpen(function() v135:SetState("Loading") tbl22 = fn42(str7) v135:SetItems(fn41(tbl22)) flag22 = true fn50(v135, v134.Value, tbl22, str7 == "All") fn52() end) local flag23 = false local v145 = nil local function fn53() if flag23 then return end if v145 ~= nil then v120:Remove(v145) v145 = nil end flag23 = true flag20 = false v139:SetVisible(false) v138:SetState("Loading") local thread = task.spawn(function() local v146 = fn36(localPlayer, { "PlayerScripts", "Assets", "Misc", "Wrap" }, v86[175]) if v146 == nil or not v146:IsA("Model") then v138:SetState("Unavailable", "Wrap previews could not be loaded. Retry when assets are available.") v139:SetVisible(v86[34]) flag23 = false return end tbl23 = v117.Wraps v138:SetItems(fn41(tbl23, function(arg3) return fn43(v146, arg3) end)) flag20 = v86[34] flag23 = false fn50(v138, v136.Value, tbl23, false) fn52() end) v145 = thread v120:Add(thread) end v139:OnClick(fn53) arg2.Wraps:OnFirstOpen(fn53) local flag24 = false local v146 = nil local function fn54() if flag24 then return end if v146 ~= nil then v120:Remove(v146) v146 = nil end flag24 = true flag21 = false v142:SetVisible(v86[153]) v141:SetState("Loading") local thread = task.spawn(function() local v147 = fn36(localPlayer, { "PlayerScripts", "Assets", "Charms" }, 5) if v147 == nil then v141:SetState("Unavailable", "Charm previews could not be loaded. Retry when assets are available.") v142:SetVisible(v86[34]) flag24 = v86[153] return end tbl24 = v117.Charms v141:SetItems(fn41(tbl24, function(arg3) return fn44(v147, arg3) end)) flag21 = v86[34] flag24 = false fn50(v141, v140.Value, tbl24, v86[153]) fn52() end) v146 = thread v120:Add(thread) end v142:OnClick(fn54) arg2.Charms:OnFirstOpen(fn54) arg2.Finishers:OnFirstOpen(function() v144:SetState("Loading") tbl25 = v117.Finishers v144:SetItems(fn41(tbl25)) fn50(v144, v143.Value, tbl25, false) fn52() end) fn48 = function() if flag22 then v135:SetState("Loading") tbl22 = fn42(str7) v135:SetItems(fn41(tbl22), true) fn50(v135, v134.Value, tbl22, str7 == "All") end fn52() end v135:OnChanged(function(arg3) if str7 == "All" then if arg3 == nil or not tbl19[arg3] then return end fn46(function() return { Kind = "Skin", Name = fn38(arg3) } end) return end arg.Cosmetics:SetSkinChangerChoice(str7, { Kind = "Skin", Name = fn38(arg3) }) end) v138:OnChanged(function() if not flag3 then return end fn46(function() local value = v138.Value if value == nil or value == "Unselected" then return { Kind = "Wrap", Wrap = nil } end return { Kind = "Wrap", Wrap = { Name = fn38(value), Inverted = v137.Value } } end) end) v137:OnChanged(function(arg3) fn46(function(arg4) local skinChangerSelections = arg.Cosmetics:GetSkinChangerSelections(arg4) local wrap = skinChangerSelections ~= nil and skinChangerSelections.Wrap or nil if wrap == nil then return nil end return { Kind = "Wrap", Wrap = { Name = wrap.Name, Inverted = arg3 } } end) end) v141:OnChanged(function(arg3) fn46(function() return { Kind = "Charm", Name = fn38(arg3) } end) end) v144:OnChanged(function(arg3) fn46(function() return { Kind = "Finisher", Name = fn38(arg3) } end) end) local function fn55() end if v129 ~= nil then fn55 = fn45(arg, v129) end v135:Connect(arg.CosmeticsConfig.StateConfigLoaded, function() fn52() fn55() fn47() end) fn55() fn47() return fn47 end end tbl17.il = function() local il = tbl17.cache.il if not il then il = { c = fn35() } tbl17.cache.il = il end return il.c end end do -- im local function fn35() tbl17 .aL(); tbl17 .aE(); tbl17 .hN();local I,W= tbl17 .e1(), tbl17 .dY();return function(l,N,P)local a,e,c=N:AddSection({Title="Cosmetic Runtime",Side="left"}),N:AddSection({Title="Unlock All",Side="left"}),N:AddSection({Title="Community",Side="right"});local E,p,T=a:AddToggle({Label="Enable Cosmetic Changes",OnChanged=function(t)l.CosmeticsConfig:SetRuntimeEnabled(t);P();end}),a:AddLabel({Label="Cosmetic features are paused until cosmetic changes are enabled.",TextColor=Color3.fromRGB(255,190,90)}),a:AddToggle({Label="Use Custom Loadout",Tooltip="Applies the choices from the Skins, Wraps, Charms, and Finishers catalogs.",OnChanged=function(t)l.Cosmetics:SetSkinChangerEnabled(t);P();end});a:AddButton({Label="Reroll Random Cosmetics",OnClick=function()l.Cosmetics:RerollAll();end});local a_154,t,x=e:AddToggle({Label="Unlock All Cosmetics",OnChanged=function(S)l.Cosmetics:SetUnlockerEnabled(S);end}),e:AddMultiDropdown({Label="Cosmetic Types to Unlock",Options=W.All,Search=true,OnChanged=function(W)l.CosmeticsConfig:SetUnlockedTypes(W);end}),e:AddMultiDropdown({Label="Cosmetic Rarities to Unlock",Options=I,Search=true,Default={Legendary=true,Mythical=true,Unobtainable=true},OnChanged=function(I)l.CosmeticsConfig:SetUnlockedRarities(I);end});c:AddToggle({Label="Share Skins",Config={"UserServer","ShareSkins"}});c:AddToggle({Label="Show Active Cosmetics",Config={"UserServer","ShowActive"}});local function I(W)E:Set(W.RuntimeEnabled,true);T:Set(W.SkinChangerEnabled,true);a_154:Set(W.UnlockerEnabled,true);p:SetVisible(not W.RuntimeEnabled);t:Set(W.Types,true);x:Set(W.Rarities,true);P();end;E:OnChanged(function(W)p:SetVisible(not W);end);E:Connect(l.CosmeticsConfig.StateConfigLoaded,I);N=l.CosmeticsConfig:GetStateConfigState();I(N);l.CosmeticsConfig:SetUnlockedTypes(N.Types);l.CosmeticsConfig:SetUnlockedRarities(N.Rarities);end;end tbl17.im = function() local im = tbl17.cache.im if not im then im = { c = fn35() } tbl17.cache.im = im end return im.c end end do -- io local function fn35()local I= tbl17 .aE(); tbl17 .hN();local function l(W,N)if W.Ok then return false;end;I.Notifications.get():Notify({{Text=N.." failed: "},{Text=tostring(W.Error.Detail)}});return true;end;return function(W,N)local P,a,e,c=N:AddSection({Title="Library",Side="left"}),N:AddSection({Title="Transfer",Side="right"}),N:AddSection({Title="Automation",Side="right"}),W.CosmeticsConfig;local W_155,N_156,E,p=P:AddTextBox({Label="Cosmetic Preset Name"}),P:AddButton({Label="Create Cosmetic Preset"}),P:AddLabel({Label="No Cosmetic Presets yet. Enter a name to create one.",TextColor=Color3.fromRGB(255,190,90)}),P:AddList({Label="Cosmetic Preset Library",Height=140,Search=true,SelectFirst=false,OnChanged=function(T)c:SetPresetName(T);end});P:AddButton({Label="Load Selected Cosmetic Preset",Confirm=true,OnClick=function()l(c:LoadStateConfig(),"Loading cosmetic preset");end});P:AddButton({Label="Save to Selected Cosmetic Preset",Confirm=true,OnClick=function()l(c:SaveStateConfig(),"Saving cosmetic preset");end});a:AddButton({Label="Export to Clipboard",OnClick=function()local T=c:ExportStateToJson();if T.Ok then setclipboard(T.Value);I.Notifications.get():Notify("Copied your current cosmetics to the clipboard");else l(T,"Exporting cosmetics");end;end});local I=a:AddTextBox({Label="Import (paste cosmetics)",FocusLostOnly=true});a:AddButton({Label="Import Cosmetics",Confirm=true,OnClick=function()local a=I.Value;if a~=""then l(c:LoadStateFromJson(a),"Importing cosmetics");end;end});local function I_157()return c:GetAllStateConfigs();end;local function a_158(T,t)return e:AddDropdown({Label=T,Options=I_157(),GetOptions=I_157,Search=true,CloseOnSelect=true,OnChanged=function(T)t(T);end});end;local T,t,x,S=e:AddToggle({Label="Auto Load Cosmetic Preset",OnChanged=function(J)c:SetAutoLoadEnabled(J);end}),a_158("Cosmetic Preset to Auto Load",function(J)c:SetAutoLoadPresetName(J);end),e:AddToggle({Label="Auto Save Cosmetic Preset",OnChanged=function(e)c:SetAutoSaveEnabled(e);end}),a_158("Cosmetic Preset to Auto Save",function(a)c:SetAutoSavePresetName(a);end);local function a_159()local e,J=c:GetState(),I_157();p:SetOptions(J);p:Set(e.PresetName,true);E:SetVisible(#J==0);T:Set(e.AutoLoad,true);t:Set(e.AutoLoadPresetName,true);x:Set(e.AutoSave,true);S:Set(e.AutoSavePresetName,true);end;P:AddButton({Label="Delete Selected Cosmetic Preset",Confirm=true,OnClick=function()l(c:DeleteCurrentPreset(),"Deleting cosmetic preset");a_159();end});N_156:OnClick(function()local I=W_155.Value:gsub("%s+","");if#I==0 then return;end;l(c:CreateDefaultPreset(I),"Creating cosmetic preset");a_159();end);a_159();end;end tbl17.io = function() local io = tbl17.cache.io if not io then local io2 = { c = fn35() } tbl17.cache.io = io2 io = io2 end return io.c end end do -- ip local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P= tbl17 .il(), tbl17 .im(), tbl17 .io(),{Overview="rbxassetid://89644754139307",Skins="rbxassetid://97652569554326",Wraps="rbxassetid://76631821212930",Charms="rbxassetid://125353572203968",Finishers="rbxassetid://82039875682356",Presets="rbxassetid://119633739754015"};return function(l,a)local e=a:AddTab({Label="Cosmetics",Icon="rbxassetid://128162112866809",Description="Manage cosmetic runtime, catalogs, and cosmetic presets."});N(l,(e:AddTab({Label="Presets",Icon=P.Presets,Description="Create, load, automate, and delete whole cosmetic loadouts."}):Grid({Columns=2})));W(l,e:AddTab({Label="Overview",Icon=P.Overview,Description="Enable cosmetic features, unlock cosmetics, reroll, and share your active look."}):Grid({Columns=2}),(I(l,{Skins=e:AddTab({Label="Skins",Icon=P.Skins,Description="Browse and apply weapon skin variants."}),Wraps=e:AddTab({Label="Wraps",Icon=P.Wraps,Description="Browse weapon wraps and control inverted patterns."}),Charms=e:AddTab({Label="Charms",Icon=P.Charms,Description="Browse weapon charms and optionally override rank charms."}),Finishers=e:AddTab({Label="Finishers",Icon=P.Finishers,Description="Browse and apply weapon finishers."})})));end;end tbl17.ip = function() local ip = tbl17.cache.ip if not ip then ip = { c = fn35() } tbl17.cache.ip = ip end return ip.c end end do -- iq local function fn35()local I= tbl17 .dj(); tbl17 .aE();return function(l)local W=l:AddSection({Title="Animation Player",Side="left"});W:AddToggle({Label="Enable Animation Player",Config={"AnimationPlayer","Enabled"}});W:AddDropdown({Label="Animation",Options=I.Names,Config={"AnimationPlayer","Animation"}});W:AddTextBox({Label="Custom Animation ID",Config={"AnimationPlayer","CustomId"}});W:AddSlider({Label="Speed",Min=0,Max=5,Step=0.01,Config={"AnimationPlayer","Speed"}});W:AddSlider({Label="Start",Min=0,Max=100,Config={"AnimationPlayer","Start"}});W:AddSlider({Label="End",Min=0,Max=100,Config={"AnimationPlayer","End"}});end;end tbl17.iq = function() local iq = tbl17.cache.iq if not iq then iq = { c = fn35() } tbl17.cache.iq = iq end return iq.c end end do -- ir local function fn35()local I= tbl17 .a8(); tbl17 .aE();return function(l)local W=l:AddSection({Title="Character Appearance",Side="right"});l=W:AddToggle({Label="Enable Character Chams",Config={"Chams","Character","Enabled"}});W:AddColor({Row=l.Row,Alpha=true,Config={"Chams","Character","Color"},Transparency={"Chams","Character","Transparency"},Animatable=true});local N=W:AddGroup({Source=l});N:AddDropdown({Label="Character Chams Material",Options=I.List,Config={"Chams","Character","Material"}});N:AddToggle({Label="Strip Character Chams Textures",Config={"Chams","Character","StripTextures"}});end;end tbl17.ir = function() local ir = tbl17.cache.ir if not ir then local ir2 = { c = fn35() } tbl17.cache.ir = ir2 ir = ir2 end return ir.c end end do -- is local function fn35() tbl17 .aE();local I= tbl17 .a2();local W= tbl17 .a7()(I);return function(l)local I=l:AddSection({Title="Device Spoof",Side="left"});I:AddToggle({Label="Enable Device Spoof",Config={"DeviceSpoof","Enabled"}});I:AddDropdown({Label="Presented Platform",Options=W,Config={"DeviceSpoof","SpoofType"}});end;end tbl17.is = function() local is = tbl17.cache.is if not is then is = { c = fn35() } tbl17.cache.is = is end return is.c end end do -- it local function fn35() tbl17 .aE();local I= tbl17 .h6();local function l(W,N,P,a,e)W:AddGroup({Source=I(W,N,{"Always","Toggle","Hold"},{"Movement",P},a)}):AddSlider({Label=e.Label,Min=e.Min,Max=e.Max,Step=e.Step,Config={"Movement",P,"Speed"}});end;return function(W)local N,P=W:AddSection({Title="Ground",Side="left"}),W:AddSection({Title="Air",Side="right"});l(N,"Walk Speed","WalkSpeed",true,{Label="Multiplier",Min=1,Max=10,Step=0.01});l(N,"Sliding","Sliding",true,{Label="Multiplier",Min=1,Max=10,Step=0.01});I(N,"Noclip",{"Always","Toggle","Hold"},{"Movement","Noclip"},true);l(N,"Auto Strafe","AutoStrafe",true,{Label="Speed",Min=1,Max=200});l(P,"Jump Power","JumpPower",false,{Label="Multiplier",Min=0.1,Max=10,Step=0.01});l(P,"Flight","Flight",true,{Label="Speed",Min=25,Max=500});P:AddToggle({Label="Infinite Double Jumps",Config={"ItemModifiers","InfiniteDoubleJumps"}});N=P:AddGroup({Source=I(P,"Long Jump",{"Tap"},{"Movement","LongJump"},true)});N:AddDropdown({Label="Mode",Options={"Under Feet","Camera Look"},Config={"Movement","LongJump","Mode"}});N:AddSlider({Label="Force",Min=0,Max=300,Config={"Movement","LongJump","Force"}});N:AddSlider({Label="Upward Velocity",Min=0,Max=200,Config={"Movement","LongJump","UpwardVelocity"}});N:AddSlider({Label="Behind Offset",Min=0,Max=8,Step=0.1,Config={"Movement","LongJump","Behind"}});end;end tbl17.it = function() local it = tbl17.cache.it if not it then it = { c = fn35() } tbl17.cache.it = it end return it.c end end do -- iu local function fn35() tbl17 .hM(); tbl17 .aE();local function l(I,W,N,P,a)local e=I:AddKeybind({Label=N,Modes={"Toggle"},Default={Key="None",Mode="Toggle"},InKeybindList=true,ListLabel=P,ConfigMap={Key={"Movement","MovementRecorder",a,"Keybind","Bind"},Mode={"Movement","MovementRecorder",a,"Keybind","Kind"},Active={"Movement","MovementRecorder",a,"Keybind","State"},ShowInList={"Movement","MovementRecorder",a,"Keybind","ShowInList"},Invisible={"Movement","MovementRecorder",a,"Keybind","Invisible"}}});e:SetFeatureEnabled(W.Value==true);W:Connect(W.ValueChanged,function(I)e:SetFeatureEnabled(I==true);end);end;return function(I,W)local N,P,a,e,c,E=W:AddSection({Title="Recorder",Side="left"}),W:AddSection({Title="Markers",Side="left"}),W:AddSection({Title="Record / Replay",Side="left"}),W:AddSection({Title="Playback Alignment",Side="right"}),W:AddSection({Title="Save Recording",Side="right"}),W:AddSection({Title="Recording Library",Side="right"});W=N:AddToggle({Label="Enable Movement Recorder",Config={"Movement","MovementRecorder","Enabled"}});N:AddToggle({Label="Hide Recorder UI",Config={"Movement","MovementRecorder","HideUI"}});N:AddToggle({Label="Hide Recorder Notifications",Config={"Movement","MovementRecorder","HideNotifications"}});P:AddSlider({Label="Open Distance",Min=1,Max=25,Step=0.5,Config={"Movement","MovementRecorder","OpenDistance"}});P:AddSlider({Label="Render Distance",Min=10,Max=250,Config={"Movement","MovementRecorder","RenderDistance"}});l(a,W,"Record","Record","Record");l(a,W,"Replay","Replay","Replay");e:AddSlider({Label="Look Align Speed",Tooltip="How fast the camera turns to the recording's starting look angle",Min=45,Max=720,Step=5,Config={"Movement","MovementRecorder","LookAlignSpeed"}});e:AddSlider({Label="Look Smoothness",Tooltip="How smoothened camera look is",Min=0,Max=100,Config={"Movement","MovementRecorder","LookSmoothing"}});e:AddSlider({Label="Align Snap Distance",Tooltip="Once this close to the start, position is considered aligned",Min=0.1,Max=5,Step=0.1,Config={"Movement","MovementRecorder","AlignSnapDistance"}});local l=c:AddTextBox({Label="Recording Name",Placeholder="my recording"});c:AddButton({Label="Save or Overwrite Recording",Confirm=true,OnClick=function()I:SaveRecording(l.Value);end});local l_160,W_161=E:AddDropdown({Label="Map",Options=I:GetRecordingMaps(),Search=true}),E:AddDropdown({Label="Recording",Options={},Search=true});local N_162,P_163,a_164=E:AddButton({Label="Replay Selected Recording",OnClick=function()local e=W_161.Value;if type(e)=="string"then I:ReplayRecording(e);end;end}),E:AddLabel({Label="No saved recordings yet. Record a route, then save it to build your library.",TextColor=Color3.fromRGB(255,190,90)}),E:AddButton({Label="Delete Recording",Confirm=true,OnClick=function()local e=W_161.Value;if type(e)=="string"and e~=""then I:DeleteRecording(e);end;end});local function e_165()local c=W_161.Value;local E=type(c)=="string"and c~="";N_162:SetVisible(E);a_164:SetVisible(E);P_163:SetVisible(#I:GetRecordingMaps()==0);end;local function N_166()local P=l_160.Value;local a=type(P)=="string"and(I:GetRecordingNames(P))or{};W_161:SetOptions(a);if W_161.Value==nil and a[1]~=nil then W_161:Set(a[1],true);end;e_165();end;local function W_167()local P=I:GetRecordingMaps();l_160:SetOptions(P);if l_160.Value==nil and P[1]~=nil then l_160:Set(P[1],true);end;N_166();end;l_160:OnChanged(N_166);l_160:Connect(I.RecordingsChanged,W_167);W_167();end;end tbl17.iu = function() local iu = tbl17.cache.iu if not iu then iu = { c = fn35() } tbl17.cache.iu = iu end return iu.c end end do -- iv local function fn35()local I= tbl17 .bG(); tbl17 .aE();local W= tbl17 .a6();local function l(N,P)local a=I:Get(P);if type(a)=="number"then N:Set(tostring(a),true);end;N:OnChanged(function(a)local e=tonumber(a);if e~=nil and e~=I:Get(P)then I:Set(P,e);end;end);N:Connect(I:GetPropertyChangedSignal(P),function(I)if type(I)=="number"then N:Set(tostring(I),true);end;end);end;local I_168={{Field="Name",Label="Name",Value={Kind="text",Placeholder="Value"}},{Field="DisplayName",Label="Display Name",Value={Kind="text",Placeholder="Value"}},{Field="Avatar",Label="Avatar",Value={Kind="text",Placeholder="User ID"}},{Field="Winstreak",Label="Winstreak",Value={Kind="number",Placeholder="Value"}},{Field="Level",Label="Level",Value={Kind="number",Placeholder="Value"}},{Field="CasualWins",Label="Casual Wins",Value={Kind="number",Placeholder="Value"}},{Field="RankedWins",Label="Ranked Wins",Value={Kind="number",Placeholder="Value"}},{Field="CasualWinPercent",Label="Casual Win %",Value={Kind="percent",Placeholder="Win %"}},{Field="RankedWinPercent",Label="Ranked Win %",Value={Kind="percent",Placeholder="Win %"}},{Field="RankedElo",Label="Ranked ELO",Value={Kind="number",Placeholder="Value"}},{Field="LeaderboardRank",Label="Leaderboard Rank",Value={Kind="number",Placeholder="Value"}},{Field="FavoriteMap",Label="Favorite Map",Value={Kind="text",Placeholder="Favorite Map"}},{Field="NametagStatus",Label="Nametag Status",Value={Kind="dropdown",Placeholder="Status",Options={"Prime","Contraband"}}},{Field="Influencer",Label="Influencer",Value={Kind="toggle"}},{Field="RobloxEmployee",Label="Roblox Employee",Value={Kind="toggle"}},{Field="NosniyTeam",Label="Nosniy Games Team",Value={Kind="toggle"}}};local N,P=W(I_168,{{Field="Ping",Label="Ping",Value={Kind="dropdown",Placeholder="Ping Value",Options={"Low","Medium","High"}}},{Field="Keys",Label="Keys",Value={Kind="number",Placeholder="Value"}},{Field="EventCurrency",Label="Event Currency",Value={Kind="number",Placeholder="Value"}}}),I_168;local function I_169(a,e,c,E)for p,p_170 in E,nil,nil do local E_171,T=a:AddToggle({Label=string.format("%s %s",tostring(e),tostring(p_170.Label)),Config=W(c,{p_170.Field,"Enabled"})}),p_170.Value;if T.Kind=="toggle"then continue;end;local e_172,t=W(c,{p_170.Field,"Value"}),a:AddGroup({Source=E_171});if T.Kind=="percent"then t:AddSlider({Label=T.Placeholder,Min=0,Max=100,Step=0.1,Config=e_172});elseif T.Kind=="number"then l(t:AddTextBox({Label=T.Placeholder}),e_172);elseif T.Kind=="text"then t:AddTextBox({Label=T.Placeholder,Config=e_172});elseif T.Kind=="dropdown"then t:AddDropdown({Label=T.Placeholder,Options=T.Options,Config=e_172});end;end;end;return function(l)local W,a=l:AddMultiSection({Titles={"Local Player","Other Player"},Side="right"});I_169(W,"Local Player",{"PlayerSpoofer","LocalPlayer"},N);I_169(a,"Other Player",{"PlayerSpoofer","OtherPlayers"},P);end;end tbl17.iv = function() local iv = tbl17.cache.iv if not iv then local iv2 = { c = fn35() } tbl17.cache.iv = iv2 iv = iv2 end return iv.c end end do -- iw local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P,a= tbl17 .iq(), tbl17 .ir(), tbl17 .is(), tbl17 .it(),{Player="rbxassetid://114567720540659",Movement="rbxassetid://114280087699339",Recorder="rbxassetid://70520152532392",Character="rbxassetid://101118444346965",Identity="rbxassetid://109514257830136"};return function(e,c)local E=c:AddTab({Label="Player",Icon=a.Player,Description="Movement, character appearance, and identity."});P((E:AddTab({Label="Movement",Icon=a.Movement,Description="Ground and air movement."}):Grid({Columns=2})));c=e.MovementRecorder;if c then tbl17 .iu()(c,(E:AddTab({Label="Movement Recorder",Icon=a.Recorder,Description="Record, replay, and manage movement routes."}):Grid({Columns=2})));end;c=E:AddTab({Label="Character",Icon=a.Character,Description="Animations and character appearance."}):Grid({Columns=2});I(c);W(c);e=E:AddTab({Label="Identity Spoofing",Icon=a.Identity,Description="Presented device and player identity."}):Grid({Columns=2});N(e); tbl17 .iv()(e);end;end tbl17.iw = function() local iw = tbl17.cache.iw if not iw then local iw2 = { c = fn35() } tbl17.cache.iw = iw2 iw = iw2 end return iw.c end end do -- ix local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Camera FOV",Side="left"});I:AddToggle({Label="Enable Camera FOV",Config={"CameraFov","Enabled"}});I:AddSlider({Label="Field of View",Min=30,Max=120,Config={"CameraFov","Value"}});end;end tbl17.ix = function() local ix = tbl17.cache.ix if not ix then local ix2 = { c = fn35() } tbl17.cache.ix = ix2 ix = ix2 end return ix.c end end do -- iy local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Gameplay Overlays",Side="right"});I:AddToggle({Label="Hide Flashbang Effect",Config={"Removables","NoFlashbang"}});I:AddToggle({Label="Hide Burn Effect",Config={"Removables","NoBurnEffect"}});I:AddToggle({Label="Hide ADS Vignette",Config={"Removables","NoAdsVignette"}});I:AddToggle({Label="Hide Scope Overlay",Config={"Removables","NoScopeOverlay"}});I:AddToggle({Label="Hide Scope Reticle",Config={"Removables","NoScopeReticle"}});I:AddToggle({Label="Hide Hitmarker",Config={"Removables","NoHitmarker"}});end;end tbl17.iy = function() local iy = tbl17.cache.iy if not iy then local iy2 = { c = fn35() } tbl17.cache.iy = iy2 iy = iy2 end return iy.c end end do -- iz local function fn35() tbl17 .aE();return function(l)local I=l:AddSection({Title="Stretched Resolution",Side="right"});I:AddToggle({Label="Enable Stretched Resolution",Config={"StretchedResolution","Enabled"}});I:AddSlider({Label="X Scale",Min=0.01,Max=1,Step=0.01,Config={"StretchedResolution","X"}});I:AddSlider({Label="Y Scale",Min=0.01,Max=1,Step=0.01,Config={"StretchedResolution","Y"}});end;end tbl17.iz = function() local iz = tbl17.cache.iz if not iz then local iz2 = { c = fn35() } tbl17.cache.iz = iz2 iz = iz2 end return iz.c end end do -- iA local function fn35() tbl17 .aE();local I= tbl17 .h6();return function(l)local W=l:AddSection({Title="Third Person",Side="left"});I(W,"Enable Third Person",{"Toggle"},{"ThirdPerson"},true);W:AddToggle({Label="Ray Check",Config={"ThirdPerson","RayCheck"}});W:AddToggle({Label="Show Replica",Config={"ThirdPerson","ShowReplica"}});W:AddSlider({Label="X Offset",Min=-15,Max=15,Step=0.1,Config={"ThirdPerson","X"}});W:AddSlider({Label="Y Offset",Min=-5,Max=10,Step=0.1,Config={"ThirdPerson","Y"}});W:AddSlider({Label="Z Offset",Min=0,Max=15,Step=0.1,Config={"ThirdPerson","Z"}});end;end tbl17.iA = function() local ia = tbl17.cache.iA if not ia then local ia2 = { c = fn35() } tbl17.cache.iA = ia2 ia = ia2 end return ia.c end end do -- iB local function fn35() tbl17 .aE();local I,W,N,P= tbl17 .ix(), tbl17 .iy(), tbl17 .iz(), tbl17 .iA();return function(l)P(l);I(l);W(l);N(l);end;end tbl17.iB = function() local ib = tbl17.cache.iB if not ib then ib = { c = fn35() } tbl17.cache.iB = ib end return ib.c end end do -- iC local function fn35()local I= tbl17 .aB(); tbl17 .aE(); tbl17 .hN();return function(l,W,N,P)local a=l.ImageStorage;W:AddButton({Label="Manage Images",OnClick=function()N:Dialog({Title="Manage Images",Description="Add or remove custom images."},function(l)local N,e;l:AddPage({Title="Add an Image",Description="Enter a name and image source.",Glyph="+",ActionText="Add Image",OnAction=function()local c,E=N,e;local p=a:AddCustom(c.Value,E.Value);if not p.Ok then I.get():Notify(p.Error.Detail);return false;end;c:Set("",true);E:Set("",true);return true;end},function(c)N=c:AddTextBox({Label="Name"});e=c:AddTextBox({Label="Image Source",Placeholder="Id / File name / Url"});end);local N_173,e_174;e_174=l:AddPage({Title="Remove an Image",Description="Select an image to remove.",Glyph="\226\136\146",ActionText="Remove Image",Variant="danger",ActionEnabled=false,Confirmation={Title="Remove selected image?",Description=function()local l=N_173.Value;if l==nil then return"The selected image will be permanently removed.";end;return string.format("\"%s\" will be permanently removed.",tostring(l));end,ActionText="Confirm"},OnOpen=function()local l=N_173;l:SetOptions(a:GetNames());e_174:SetActionEnabled(l.Value~=nil);end,OnAction=function()local l=N_173.Value;if l==nil then return false;end;local c=a:RemoveCustom(l);if not c.Ok then I.get():Notify(c.Error.Detail);return false;end;return true;end},function(l)local I=l:AddList({Label="Image",Options=a:GetNames(),Height=150,Search=true,SelectFirst=false});N_173=I;I:Connect(I.ValueChanged,function(l)e_174:SetActionEnabled(l~=nil);end);I:Connect(a.Changed,function(l)I:SetOptions(l);end);end);end);end});local l_175=W:AddDropdown({Label="Image",Options=a:GetNames(),Config=P});l_175:Connect(a.Changed,function(I)l_175:SetOptions(I);end);end;end tbl17.iC = function() local ic = tbl17.cache.iC if not ic then ic = { c = fn35() } tbl17.cache.iC = ic end return ic.c end end do -- iD local function fn35() tbl17 .aE(); tbl17 .hN();local I= tbl17 .iC();return function(l,W,N)N:AddSlider({Label="Crosshair Image Size",Min=8,Max=256,Step=1,Config={"CustomCrosshair","Image","Size"}});N:AddSlider({Label="Crosshair Image Transparency",Min=0,Max=1,Step=0.01,Config={"CustomCrosshair","Image","Transparency"}});N:AddDivider({Label="Crosshair Image Selection"});I(l,N,W,{"CustomCrosshair","Image","Name"});end;end tbl17.iD = function() local id = tbl17.cache.iD if not id then id = { c = fn35() } tbl17.cache.iD = id end return id.c end end do -- iE local function fn35() tbl17 .aE();local l={{Label="Top Line",Key="Top"},{Label="Bottom Line",Key="Bottom"},{Label="Left Line",Key="Left"},{Label="Right Line",Key="Right"}};return function(I)for W,W_176 in l,nil,nil do I:AddColor({Row=I:AddToggle({Label=W_176.Label,Config={"CustomCrosshair",W_176.Key,"Enabled"}}).Row,Gradient="editable",Config={"CustomCrosshair",W_176.Key,"Color"}});end;end;end tbl17.iE = function() local ie = tbl17.cache.iE if not ie then ie = { c = fn35() } tbl17.cache.iE = ie end return ie.c end end do -- iF local function fn35() tbl17 .aE(); tbl17 .hN();local I,W= tbl17 .iD(), tbl17 .iE();local function l(N)N:AddSlider({Label="Line Length",Min=1,Max=100,Step=1,Config={"CustomCrosshair","Length"}});N:AddSlider({Label="Line Thickness",Min=1,Max=20,Step=1,Config={"CustomCrosshair","Thickness"}});N:AddSlider({Label="Line Gap",Min=0,Max=100,Step=1,Config={"CustomCrosshair","Gap"}});local P=N:AddToggle({Label="Crosshair Outline",Config={"CustomCrosshair","Outline","Enabled"}});N:AddColor({Row=P.Row,Config={"CustomCrosshair","Outline","Color"},Animatable=true});N:AddGroup({Source=P}):AddSlider({Label="Crosshair Outline Thickness",Min=0,Max=10,Step=1,Config={"CustomCrosshair","Outline","Thickness"}});end;return function(N,P,a)local e=a:AddGroup({Source=a:AddToggle({Label="Enable Crosshair",Config={"CustomCrosshair","Enabled"}})});a=e:AddDropdown({Label="Crosshair Style",Options={"Lines","Image"},Config={"CustomCrosshair","Style"}});local c=e:AddGroup({Source=a,Option="Lines"});l(c);c:AddDivider({Label="Lines"});W(c);I(N,P,e:AddGroup({Source=a,Option="Image"}));return a;end;end tbl17.iF = function() local if_ = tbl17.cache.iF if not if_ then local if_2 = { c = fn35() } tbl17.cache.iF = if_2 if_ = if_2 end return if_.c end end do -- iG local function fn35() tbl17 .aE();local I= tbl17 .a6();local function l(W,...)return I(W,{...});end;return function(I,W,N,P)local a=I:AddGroup({Source=I:AddToggle({Label=P,Config=l(W,"Enabled")})});I=a:AddDropdown({Label=P.." Mode",Options=N,Config=l(W,"Kind")});a:AddSlider({Label=P.." Speed",Min=0.1,Max=5,Step=0.1,Config=l(W,"Speed")});if table.find(N,"Shimmer")then local e=a:AddGroup({Source=I,Option="Shimmer"});e:AddColor({Row=e:AddLabel({Label=P.." Fade Color"}).Row,Config=l(W,"Shimmer","Color"),Animatable=true});end;if table.find(N,"Perimeter")then local e=a:AddGroup({Source=I,Option="Perimeter"});e:AddColor({Row=e:AddLabel({Label=P.." Perimeter Gradient"}).Row,Gradient="editable",Config=l(W,"Perimeter","Color")});end;if table.find(N,"PingPong")then local N_177=a:AddGroup({Source=I,Option="PingPong"});N_177:AddSlider({Label=P.." Ping Pong Rotation",Min=0,Max=360,Step=1,Config=l(W,"PingPong","Rotation")});N_177:AddColor({Row=N_177:AddLabel({Label=P.." Background Color",NoSeparator=true}).Row,Config=l(W,"PingPong","BackgroundColor"),Animatable=true});N_177:AddColor({Row=N_177:AddLabel({Label=P.." Main Color"}).Row,Config=l(W,"PingPong","MainColor"),Animatable=true});end;end;end tbl17.iG = function() local ig = tbl17.cache.iG if not ig then ig = { c = fn35() } tbl17.cache.iG = ig end return ig.c end end do -- iH local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Follow Target",Tooltip="Drags the crosshair toward the aimbot / silent aim target",Config={"CustomCrosshair","FollowTarget","Enabled"}})});I:AddDropdown({Label="Follow Target Mode",Options={"Crosshair","Crosshair + Text"},Config={"CustomCrosshair","FollowTarget","Mode"}});I:AddSlider({Label="Follow Speed",Default=20,Min=1,Max=50,Config={"CustomCrosshair","FollowTarget","Speed"}});I:AddSlider({Label="Follow Damper",Default=1,Min=0,Max=30,Config={"CustomCrosshair","FollowTarget","Damper"}});I:AddSlider({Label="Snap Distance",Default=5,Min=0,Max=10,Config={"CustomCrosshair","FollowTarget","SnapDistance"}});end;end tbl17.iH = function() local ih = tbl17.cache.iH if not ih then local ih2 = { c = fn35() } tbl17.cache.iH = ih2 ih = ih2 end return ih.c end end do -- iI local function fn35() tbl17 .aE();return function(l,I)l:AddGroup({Source=l:AddToggle({Label="Rotate Crosshair",Config={"CustomCrosshair","Rotation","Enabled"}})}):AddSlider({Label="Crosshair Rotation Speed",Min=0,Max=720,Step=1,Tooltip="Degrees per second",Config={"CustomCrosshair","Rotation","Speed"}});local W=l:AddGroup({Source=I,Option="Lines"});I=W:AddGroup({Source=W:AddToggle({Label="Crosshair Spread",Tooltip="Pulses the gap outward by the range below",Config={"CustomCrosshair","Spread","Enabled"}})});I:AddRangeSlider({Label="Crosshair Spread Range",Min=0,Max=100,Step=1,Default={Min=4,Max=16},Config={"CustomCrosshair","Spread","Range"}});I:AddSlider({Label="Spread Speed",Min=0,Max=20,Step=0.1,Config={"CustomCrosshair","Spread","Speed"}});end;end tbl17.iI = function() local ii = tbl17.cache.iI if not ii then local ii2 = { c = fn35() } tbl17.cache.iI = ii2 ii = ii2 end return ii.c end end do -- iJ local function fn35() tbl17 .aE();local I,W,N= tbl17 .iG(), tbl17 .iH(), tbl17 .iI();return function(l,P)l:AddSlider({Label="Rotation",Min=0,Max=360,Step=1,Tooltip="Static tilt of the whole crosshair",Config={"CustomCrosshair","Rotation","Angle"}});N(l,P);I(l:AddGroup({Source=P,Option="Lines"}),{"CustomCrosshair","Animation"},{"Shimmer","Perimeter","PingPong"},"Animate Crosshair");W(l);end;end tbl17.iJ = function() local ij = tbl17.cache.iJ if not ij then ij = { c = fn35() } tbl17.cache.iJ = ij end return ij.c end end do -- iK local function fn35()local I= tbl17 .az(); tbl17 .aE();local W= tbl17 .iG();local function l(N)N:AddTextBox({Label="Crosshair Text Content",FocusLostOnly=true,Config={"CustomCrosshair","Text","Content"}});N:AddDropdown({Label="Crosshair Text Font",Options=I.Order,Config={"CustomCrosshair","Text","Font"}});N:AddSlider({Label="Crosshair Text Size",Min=6,Max=48,Step=1,Config={"CustomCrosshair","Text","Size"}});N:AddSlider({Label="Crosshair Text Offset",Min=0,Max=100,Step=1,Tooltip="Pixels below the crosshair",Config={"CustomCrosshair","Text","Offset"}});N:AddColor({Row=N:AddLabel({Label="Crosshair Text Color"}).Row,Gradient="editable",Config={"CustomCrosshair","Text","Color"}});local I=N:AddToggle({Label="Crosshair Text Outline",Config={"CustomCrosshair","Text","Outline","Enabled"}});N:AddColor({Row=I.Row,Config={"CustomCrosshair","Text","Outline","Color"},Animatable=true});N:AddGroup({Source=I}):AddSlider({Label="Crosshair Text Outline Thickness",Min=0,Max=10,Step=1,Config={"CustomCrosshair","Text","Outline","Thickness"}});W(N,{"CustomCrosshair","Text","Animation"},{"Shimmer","PingPong"},"Animate Crosshair Text");end;return function(I)l(I:AddGroup({Source=I:AddToggle({Label="Enable Crosshair Text",Tooltip="A custom label beneath the crosshair",Config={"CustomCrosshair","Text","Enabled"}})}));end;end tbl17.iK = function() local ik = tbl17.cache.iK if not ik then local ik2 = { c = fn35() } tbl17.cache.iK = ik2 ik = ik2 end return ik.c end end do -- iL local function fn35()local I,W,N= tbl17 .iF(), tbl17 .iJ(), tbl17 .iK(); tbl17 .aE(); tbl17 .hN();return function(l,P,a)local e,c,E=a:AddSection({Title="Crosshair",Side="left"}),a:AddSection({Title="Text",Side="left"}),a:AddSection({Title="Motion & Effects",Side="right"});a=I(l,P,e);N(c);W(E,a);end;end tbl17.iL = function() local il = tbl17.cache.iL if not il then il = { c = fn35() } tbl17.cache.iL = il end return il.c end end do -- iR local function fn35() tbl17 .aE();local function l(I,W)I:AddDropdown({Label=W.." Mode",Options={"Circle","Origin"},Config={"SoundVisualizer",W,"Mode"}});I:AddColor({Row=I:AddToggle({Label=W.." Use Loudness Color",Config={"SoundVisualizer",W,"UseLoudnessColor"}}).Row,Config={"SoundVisualizer",W,"Color"},Animatable=true});end;return function(I)local W,N,P=I:AddSection({Title="Activation & Filtering",Side="left"}),I:AddMultiSection({Titles={"Footsteps","Other"},Side="right"});W:AddToggle({Label="Enable Sound ESP",Config={"SoundVisualizer","Enabled"}});W:AddDropdown({Label="Sound Source",Options={"All","Enemies","Team","Self"},Config={"SoundVisualizer","Source"}});W:AddMultiDropdown({Label="Sound Types",Options={"Footsteps","Other"},Config={"SoundVisualizer","Types"}});W:AddSlider({Label="Minimum Volume",Min=0,Max=1,Step=0.01,Config={"SoundVisualizer","MinVolume"}});l(N,"Footsteps");l(P,"Other");end;end tbl17.iR = function() local ir = tbl17.cache.iR if not ir then local ir2 = { c = fn35() } tbl17.cache.iR = ir2 ir = ir2 end return ir.c end end do -- iS local function fn35()local I= tbl17 .dy(); tbl17 .aE();return function(l,W)l:AddColor({Row=l:AddToggle({Label="Enable Bullet Tracers",Config={"BulletTracers","Enabled"}}).Row,Config={"BulletTracers","Color"},Animatable=true});l:AddDropdown({Label="Tracer Style",Options=I.Names,Config={"BulletTracers","Style"}});l:AddSlider({Label="Tracer Width",Min=0.02,Max=0.5,Step=0.01,Config={"BulletTracers","Width"}});l:AddSlider({Label="Texture Length",Min=0.5,Max=20,Step=0.1,Config={"BulletTracers","TextureLength"}});l:AddSlider({Label="Texture Speed",Min=0,Max=10,Step=0.1,Config={"BulletTracers","TextureSpeed"}});l:AddSlider({Label="Tracer Lifetime",Min=0.1,Max=5,Step=0.1,Config={"BulletTracers","Lifetime"}});l:AddSlider({Label="Fade Time",Min=0,Max=5,Step=0.1,Config={"BulletTracers","FadeTime"}});if W==nil then return;end;W:AddSlider({Label="Emission",Min=0,Max=1,Step=0.01,Config={"BulletTracers","Emission"}});W:AddSlider({Label="Glow",Min=1,Max=25,Config={"BulletTracers","Glow"}});l=W:AddGroup({Source=W:AddToggle({Label="Expand Tracers",Config={"BulletTracers","Expand"}})});l:AddSlider({Label="Expand Speed",Min=1,Max=60,Config={"BulletTracers","ExpandSpeed"}});l:AddSlider({Label="Expand Damper",Min=0.1,Max=1,Step=0.01,Config={"BulletTracers","ExpandDamper"}});end;end tbl17.iS = function() local is = tbl17.cache.iS if not is then is = { c = fn35() } tbl17.cache.iS = is end return is.c end end do -- iT local function fn35()local I= tbl17 .a8(); tbl17 .aE();local function l(W,N,P)local a=W:AddToggle({Label=P.." Chams",Config={"Chams",N,"Enabled"}});W:AddColor({Row=a.Row,Alpha=true,Config={"Chams",N,"Color"},Transparency={"Chams",N,"Transparency"},Animatable=true});local e=W:AddGroup({Source=a});e:AddDropdown({Label=P.." Chams Material",Options=I.List,Config={"Chams",N,"Material"}});e:AddToggle({Label="Strip "..P.." Textures",Config={"Chams",N,"StripTextures"}});end;return function(I,W)l(I,"Arms","Arms");l(W,"Item","Held Item");end;end tbl17.iT = function() local it = tbl17.cache.iT if not it then local it2 = { c = fn35() } tbl17.cache.iT = it2 it = it2 end return it.c end end do -- iU local function fn35() tbl17 .aE();local function l(I,W,N)I:AddDivider({Label="Highlight"});local P=I:AddToggle({Label=N.." Highlight",Config={"ViewModelHighlight",W,"Enabled"}});I:AddColor({Row=P.Row,Config={"ViewModelHighlight",W,"FillColor"},Animatable=true});I:AddToggle({Label=N.." Render Above",Config={"ViewModelHighlight",W,"AlwaysOnTop"}});local a=I:AddGroup({Source=P});a:AddSlider({Label=N.." Fill Transparency",Min=-10,Max=10,Step=0.01,Config={"ViewModelHighlight",W,"FillTransparency"}});a:AddColor({Label=N.." Outline",Config={"ViewModelHighlight",W,"OutlineColor"},Animatable=true});a:AddSlider({Label=N.." Outline Transparency",Min=-10,Max=10,Step=0.01,Config={"ViewModelHighlight",W,"OutlineTransparency"}});end;return function(I,W)l(I,"Arms","Arms");l(W,"Item","Held Item");end;end tbl17.iU = function() local iu = tbl17.cache.iU if not iu then iu = { c = fn35() } tbl17.cache.iU = iu end return iu.c end end do -- iV local function fn35() tbl17 .aE();return function(l)l:AddToggle({Label="Hide Shoot Animation",Config={"ItemModifiers","NoShootAnimation"}});l:AddToggle({Label="Hide Sprint Animation",Config={"ItemModifiers","NoSprintAnimation"}});l:AddToggle({Label="Hide Equip Animation",Config={"ItemModifiers","NoEquipAnimation"}});l:AddToggle({Label="Hide Reload Animation",Config={"ItemModifiers","NoReloadAnimation"}});l:AddDivider({Label="Motion"});l:AddToggle({Label="Remove Weapon Motion",Config={"ItemModifiers","NoMotion"}});l:AddToggle({Label="Remove Camera Shake",Config={"ItemModifiers","NoCameraShake"}});l:AddToggle({Label="Remove Camera Sway",Config={"ItemModifiers","NoCameraSway"}});end;end tbl17.iV = function() local iv = tbl17.cache.iV if not iv then local iv2 = { c = fn35() } tbl17.cache.iV = iv2 iv = iv2 end return iv.c end end do -- iW local function fn35() tbl17 .aE();return function(l)l:AddToggle({Label="Enable Viewmodel Position",Config={"ViewModelOffset","Enabled"}});l:AddSlider({Label="X",Min=-7.5,Max=7.5,Step=0.01,Config={"ViewModelOffset","X"}});l:AddSlider({Label="Y",Min=-7.5,Max=7.5,Step=0.01,Config={"ViewModelOffset","Y"}});l:AddSlider({Label="Z",Min=-7.5,Max=7.5,Step=0.01,Config={"ViewModelOffset","Z"}});l:AddSlider({Label="Pitch",Min=-180,Max=180,Config={"ViewModelOffset","Pitch"}});l:AddSlider({Label="Yaw",Min=-180,Max=180,Config={"ViewModelOffset","Yaw"}});l:AddSlider({Label="Roll",Min=-180,Max=180,Config={"ViewModelOffset","Roll"}});end;end tbl17.iW = function() local iw = tbl17.cache.iW if not iw then iw = { c = fn35() } tbl17.cache.iW = iw end return iw.c end end do -- iX local function fn35() tbl17 .aE();return function(l)l:AddToggle({Label="Hide Muzzle Flash",Config={"Removables","NoMuzzleFlash"}});l:AddToggle({Label="Hide Game Tracers",Config={"Removables","NoGunTracers"}});end;end tbl17.iX = function() local ix = tbl17.cache.iX if not ix then local ix2 = { c = fn35() } tbl17.cache.iX = ix2 ix = ix2 end return ix.c end end do -- iY local function fn35() tbl17 .aE();local function l(I,W,N)I:AddDivider({Label="Wireframe"});local P=I:AddToggle({Label=N.." Wireframe",Config={"ViewModelWireframe",W,"Enabled"}});I:AddColor({Row=P.Row,Config={"ViewModelWireframe",W,"Color"},Animatable=true});I:AddGroup({Source=P}):AddSlider({Label=N.." Wireframe Width",Min=0.001,Max=0.02,Step=5.0E-4,Config={"ViewModelWireframe",W,"Width"}});end;return function(I,W)l(I,"Arms","Arms");l(W,"Item","Held Item");end;end tbl17.iY = function() local iy = tbl17.cache.iY if not iy then local iy2 = { c = fn35() } tbl17.cache.iY = iy2 iy = iy2 end return iy.c end end do -- iZ local function fn35() tbl17 .aE();local I,W,N,P,a,e,c= tbl17 .iS(), tbl17 .iT(), tbl17 .iU(), tbl17 .iV(), tbl17 .iW(), tbl17 .iX(), tbl17 .iY();return function(l)local E,p,T,t,x=l:AddSection({Title="Viewmodel Position",Side="left"}),l:AddSection({Title="Motion & Animation",Side="left"}),l:AddSection({Title="Bullet Tracers",Side="left"}),l:AddMultiSection({Titles={"Arms","Held Item"},Side="right"});local S,J=l:AddSection({Title="Advanced Tracers",Side="right"}),l:AddSection({Title="Suppressions",Side="right"});a(E);P(p);I(T,S);W(t,x);N(t,x);c(t,x);e(J);end;end tbl17.iZ = function() local iz = tbl17.cache.iZ if not iz then iz = { c = fn35() } tbl17.cache.iZ = iz end return iz.c end end do -- i_ local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P,a,e= tbl17 .iB(), tbl17 .iL(), tbl17 .iQ(), tbl17 .iR(), tbl17 .iZ(),{Visuals="rbxassetid://127234874352422",PlayerEsp="rbxassetid://85332511060401",Crosshair="rbxassetid://83752373575368",Weapon="rbxassetid://121406454377051",Camera="rbxassetid://114084146151777",Sound="rbxassetid://102139623610548"};return function(l,c)local E=c:AddTab({Label="Visuals",Icon=e.Visuals,Description="Player information, crosshair, weapon, camera, and sound visuals."});N(l,c,(E:AddTab({Label="Player ESP",Icon=e.PlayerEsp,Description="Player overlays, team-specific styling, and a synchronized preview."}):Grid({Columns=2})));W(l,c,(E:AddTab({Label="Crosshair",Icon=e.Crosshair,Description="Crosshair lines, images, text, motion, and target-follow effects."}):Grid({Columns=2})));a((E:AddTab({Label="Weapon Visuals",Icon=e.Weapon,Description="Viewmodel position, materials, motion, and projectile effects."}):Grid({Columns=2})));I((E:AddTab({Label="Camera & Screen",Icon=e.Camera,Description="Third person, camera field of view, overlays, and screen scaling."}):Grid({Columns=2})));P((E:AddTab({Label="Sound ESP",Icon=e.Sound,Description="Visualize footsteps and other sounds by source and loudness."}):Grid({Columns=2})));end;end tbl17.i_ = function() local i = tbl17.cache.i_ if not i then local i2 = { c = fn35() } tbl17.cache.i_ = i2 i = i2 end return i.c end end do -- i0 local function fn35() tbl17 .aE();return function(l)l:AddDivider({Label="Atmosphere"});local I=l:AddToggle({Label="Atmosphere",Config={"Atmosphere","Enabled"}});l:AddColor({Row=I.Row,Tooltip="Atmosphere color.",Config={"Atmosphere","Color"},Animatable=true});l:AddColor({Row=I.Row,Tooltip="Atmosphere decay color.",Config={"Atmosphere","Decay"},Animatable=true});local W=l:AddGroup({Source=I});W:AddSlider({Label="Density",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Density"}});W:AddSlider({Label="Offset",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Offset"}});W:AddSlider({Label="Glare",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Glare"}});W:AddSlider({Label="Haze",Min=0,Max=1,Step=0.01,Config={"Atmosphere","Haze"}});end;end tbl17.i0 = function() local i0 = tbl17.cache.i0 if not i0 then i0 = { c = fn35() } tbl17.cache.i0 = i0 end return i0.c end end do -- i1 local function fn35() tbl17 .aE();local I= tbl17 .i0();return function(l)local W={Master=l:AddSection({Title="Lighting Override",Side="left"}),TimeExposure=l:AddSection({Title="Time & Exposure",Side="left"}),ShadowsQuality=l:AddSection({Title="Shadows & Quality",Side="left"}),AmbientColors=l:AddSection({Title="Ambient Colors",Side="right"}),FogAtmosphere=l:AddSection({Title="Fog & Atmosphere",Side="right"})};W.Master:AddToggle({Label="Enable Lighting Override",Config={"Lighting","Enabled"}});l=W.TimeExposure:AddToggle({Label="Clock Time",Config={"Lighting","ClockTime","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Time",Min=0,Max=24,Step=0.01,Config={"Lighting","ClockTime","Value"}});l=W.TimeExposure:AddToggle({Label="Geographic Latitude",Config={"Lighting","GeographicLatitude","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Latitude",Min=-90,Max=90,Step=0.001,Config={"Lighting","GeographicLatitude","Value"}});l=W.TimeExposure:AddToggle({Label="Brightness",Config={"Lighting","Brightness","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Brightness",Min=0,Max=10,Step=0.01,Config={"Lighting","Brightness","Value"}});l=W.TimeExposure:AddToggle({Label="Exposure Compensation",Config={"Lighting","ExposureCompensation","Enabled"}});W.TimeExposure:AddGroup({Source=l}):AddSlider({Label="Exposure",Min=-5,Max=5,Step=0.01,Config={"Lighting","ExposureCompensation","Value"}});W.ShadowsQuality:AddToggle({Label="Disable Global Shadows",Config={"Lighting","DisableGlobalShadows"}});l=W.ShadowsQuality:AddToggle({Label="Shadow Softness",Config={"Lighting","ShadowSoftness","Enabled"}});W.ShadowsQuality:AddGroup({Source=l}):AddSlider({Label="Softness",Min=0,Max=1,Step=0.01,Config={"Lighting","ShadowSoftness","Value"}});l=W.ShadowsQuality:AddToggle({Label="Lighting Style",Config={"Lighting","LightingStyle","Enabled"}});W.ShadowsQuality:AddGroup({Source=l}):AddDropdown({Label="Style",Options={"Realistic","Soft"},Config={"Lighting","LightingStyle","Value"}});l=W.ShadowsQuality:AddToggle({Label="Shadow Color",Config={"Lighting","ShadowColor","Enabled"}});W.ShadowsQuality:AddColor({Row=l.Row,Config={"Lighting","ShadowColor","Value"},Animatable=true});W.ShadowsQuality:AddToggle({Label="Prioritize Lighting Quality",Config={"Lighting","PrioritizeLightingQuality"}});l=W.AmbientColors:AddToggle({Label="Ambient Colors",Config={"Lighting","Ambient","Enabled"}});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Indoor ambient color.",Config={"Lighting","Ambient","Indoor"},Animatable=true});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Outdoor ambient color.",Config={"Lighting","Ambient","Outdoor"},Animatable=true});l=W.AmbientColors:AddToggle({Label="Color Shift",Config={"Lighting","ColorShift","Enabled"}});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Top color shift.",Config={"Lighting","ColorShift","Top"},Animatable=true});W.AmbientColors:AddColor({Row=l.Row,Tooltip="Bottom color shift.",Config={"Lighting","ColorShift","Bottom"},Animatable=true});l=W.AmbientColors:AddToggle({Label="Environment Diffuse Scale",Config={"Lighting","EnvironmentDiffuseScale","Enabled"}});W.AmbientColors:AddGroup({Source=l}):AddSlider({Label="Diffuse Scale",Min=0,Max=1,Step=0.01,Config={"Lighting","EnvironmentDiffuseScale","Value"}});l=W.AmbientColors:AddToggle({Label="Environment Specular Scale",Config={"Lighting","EnvironmentSpecularScale","Enabled"}});W.AmbientColors:AddGroup({Source=l}):AddSlider({Label="Specular Scale",Min=0,Max=1,Step=0.01,Config={"Lighting","EnvironmentSpecularScale","Value"}});l=W.FogAtmosphere:AddToggle({Label="Fog",Config={"Lighting","Fog","Enabled"}});W.FogAtmosphere:AddColor({Row=l.Row,Config={"Lighting","Fog","Color"},Animatable=true});local N=W.FogAtmosphere:AddGroup({Source=l});N:AddSlider({Label="Fog Start",Min=0,Max=10000,Config={"Lighting","Fog","Start"}});N:AddSlider({Label="Fog End",Min=0,Max=10000,Config={"Lighting","Fog","End"}});I(W.FogAtmosphere);end;end tbl17.i1 = function() local i1 = tbl17.cache.i1 if not i1 then local i12 = { c = fn35() } tbl17.cache.i1 = i12 i1 = i12 end return i1.c end end do -- i2 local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Bloom",Config={"Bloom","Enabled"}})});I:AddSlider({Label="Intensity",Min=0,Max=1,Step=0.01,Config={"Bloom","Intensity"}});I:AddSlider({Label="Size",Min=0,Max=56,Config={"Bloom","Size"}});I:AddSlider({Label="Threshold",Min=0,Max=5,Step=0.01,Config={"Bloom","Threshold"}});end;end tbl17.i2 = function() local i2 = tbl17.cache.i2 if not i2 then local i22 = { c = fn35() } tbl17.cache.i2 = i22 i2 = i22 end return i2.c end end do -- i3 local function fn35() tbl17 .aE();return function(l)local I=l:AddToggle({Label="Color Correction",Config={"ColorCorrection","Enabled"}});l:AddColor({Row=I.Row,Config={"ColorCorrection","TintColor"},Animatable=true});local W=l:AddGroup({Source=I});W:AddSlider({Label="Saturation",Min=-1,Max=1,Step=0.01,Config={"ColorCorrection","Saturation"}});W:AddSlider({Label="Brightness",Min=-1,Max=1,Step=0.01,Config={"ColorCorrection","Brightness"}});W:AddSlider({Label="Contrast",Min=-1,Max=1,Step=0.01,Config={"ColorCorrection","Contrast"}});end;end tbl17.i3 = function() local i3 = tbl17.cache.i3 if not i3 then local i32 = { c = fn35() } tbl17.cache.i3 = i32 i3 = i32 end return i3.c end end do -- i4 local function fn35() tbl17 .aE();return function(l)l:AddGroup({Source=l:AddToggle({Label="Color Grading",Config={"ColorGrading","Enabled"}})}):AddDropdown({Label="Preset",Options={"Default","Retro"},Config={"ColorGrading","TonemapperPreset"}});end;end tbl17.i4 = function() local i4 = tbl17.cache.i4 if not i4 then local i42 = { c = fn35() } tbl17.cache.i4 = i42 i4 = i42 end return i4.c end end do -- i5 local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Depth of Field",Config={"DepthOfField","Enabled"}})});I:AddSlider({Label="Far Intensity",Min=0,Max=1,Step=0.01,Config={"DepthOfField","FarIntensity"}});I:AddSlider({Label="Focus Distance",Min=0,Max=1000,Config={"DepthOfField","FocusDistance"}});I:AddSlider({Label="In Focus Radius",Min=0,Max=500,Config={"DepthOfField","InFocusRadius"}});I:AddSlider({Label="Near Intensity",Min=0,Max=1,Step=0.01,Config={"DepthOfField","NearIntensity"}});end;end tbl17.i5 = function() local i5 = tbl17.cache.i5 if not i5 then i5 = { c = fn35() } tbl17.cache.i5 = i5 end return i5.c end end do -- i6 local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Motion Blur",Config={"MotionBlur","Enabled"}})});I:AddSlider({Label="Intensity",Min=0,Max=56,Step=0.01,Config={"MotionBlur","Intensity"}});I:AddSlider({Label="Sensitivity",Min=0,Max=5,Step=0.01,Config={"MotionBlur","Sensitivity"}});end;end tbl17.i6 = function() local i6 = tbl17.cache.i6 if not i6 then local i62 = { c = fn35() } tbl17.cache.i6 = i62 i6 = i62 end return i6.c end end do -- i7 local function fn35() tbl17 .aE();return function(l)local I=l:AddGroup({Source=l:AddToggle({Label="Sun Rays",Config={"SunRays","Enabled"}})});I:AddSlider({Label="Intensity",Min=0,Max=1,Step=0.01,Config={"SunRays","Intensity"}});I:AddSlider({Label="Spread",Min=0,Max=1,Step=0.01,Config={"SunRays","Spread"}});end;end tbl17.i7 = function() local i7 = tbl17.cache.i7 if not i7 then local i72 = { c = fn35() } tbl17.cache.i7 = i72 i7 = i72 end return i7.c end end do -- i8 local function fn35() tbl17 .aE();local I,W,N,P,a,e= tbl17 .i2(), tbl17 .i3(), tbl17 .i4(), tbl17 .i5(), tbl17 .i6(), tbl17 .i7();return function(l)local c,E,p=l:AddSection({Title="Tone & Color",Side="left"}),l:AddSection({Title="Focus & Motion",Side="left"}),l:AddSection({Title="Light Effects",Side="right"});W(c);N(c);P(E);a(E);I(p);e(p);end;end tbl17.i8 = function() local i8 = tbl17.cache.i8 if not i8 then local i82 = { c = fn35() } tbl17.cache.i8 = i82 i8 = i82 end return i8.c end end do -- i9 local function fn35()local I= tbl17 .he(); tbl17 .aE();return function(l)local W=l:AddGroup({Source=l:AddToggle({Label="Enable Ambient Sound",Config={"Ambience","Enabled"}})});W:AddDropdown({Label="Preset",Options=I.Names,Config={"Ambience","Sound"}});W:AddTextBox({Label="Custom Sound (ID or URL)",FocusLostOnly=true,Config={"Ambience","CustomSound"}});W:AddSlider({Label="Volume",Min=0,Max=10,Step=0.01,Config={"Ambience","Volume"}});end;end tbl17.i9 = function() local i9 = tbl17.cache.i9 if not i9 then i9 = { c = fn35() } tbl17.cache.i9 = i9 end return i9.c end end do -- ja local function fn35() tbl17 .aE();local function l(...)local I={"Weather","Lightning"};for W=1,select("#",...),1 do table.insert(I,(select(W,...)));end;return I;end;return function(I)I:AddColor({Row=I:AddToggle({Label="Enable Lightning",Tooltip="Strike lightning during rain and blizzards.",Config=l("Enabled")}).Row,Gradient="editable",Tooltip="Colour or gradient of the lightning bolts.",Config=l("Color")});I:AddDivider({Label="Bolt"});I:AddSlider({Label="Interval",Tooltip="Average seconds between strikes.",Min=0.2,Max=10,Step=0.1,Suffix="s",Config=l("Interval")});I:AddSlider({Label="Distance",Tooltip="Farthest a strike can land from the camera.",Min=10,Max=200,Config=l("Distance")});I:AddSlider({Label="Height",Tooltip="Length of each bolt from cloud to ground.",Min=50,Max=400,Config=l("Height")});I:AddSlider({Label="Thickness",Tooltip="Core thickness of the bolts.",Min=0.5,Max=12,Step=0.1,Config=l("Thickness")});I:AddSlider({Label="Jaggedness",Tooltip="How jagged and erratic the bolts look.",Min=0,Max=20,Step=0.1,Config=l("Jaggedness")});I:AddSlider({Label="Branches",Tooltip="Maximum forks that split off each bolt.",Min=0,Max=24,Step=1,Config=l("Branches")});I:AddSlider({Label="Flash",Tooltip="Brightness of the light flash at the impact.",Min=0,Max=20,Step=0.1,Config=l("Flash")});I:AddDivider({Label="Sparks"});local W=I:AddToggle({Label="Sparks",Tooltip="Sparks that crackle off the bolt as it strikes.",Config=l("Sparks","Enabled")});I:AddColor({Row=W.Row,Gradient="editable",Tooltip="Colour or gradient of the sparks.",Config=l("Sparks","Color")});local N=I:AddGroup({Source=W});N:AddSlider({Label="Count",Tooltip="How many sparks each strike throws off.",Min=0,Max=40,Step=1,Config=l("Sparks","Count")});N:AddSlider({Label="Thickness",Tooltip="Thickness of the sparks.",Min=0.2,Max=8,Step=0.1,Config=l("Sparks","Thickness")});N:AddSlider({Label="Distance",Tooltip="How far sparks fly from the bolt.",Min=2,Max=50,Step=0.5,Config=l("Sparks","Distance")});N:AddSlider({Label="Speed",Tooltip="How fast sparks shoot out and fade.",Min=2,Max=40,Step=0.5,Config=l("Sparks","Speed")});N:AddSlider({Label="Jaggedness",Tooltip="How jagged the sparks look.",Min=0,Max=12,Step=0.1,Config=l("Sparks","Jaggedness")});I:AddDivider({Label="Explosion"});N=I:AddToggle({Label="Explosion",Tooltip="Burst of arcs that erupts where the bolt lands.",Config=l("Explosion","Enabled")});I:AddColor({Row=N.Row,Gradient="editable",Tooltip="Colour or gradient of the explosion.",Config=l("Explosion","Color")});W=I:AddGroup({Source=N});W:AddSlider({Label="Size",Tooltip="Size of the impact burst.",Min=0,Max=1,Step=0.01,Config=l("Explosion","Size")});W:AddSlider({Label="Bolts",Tooltip="How many arcs radiate from the impact.",Min=0,Max=30,Step=1,Config=l("Explosion","Bolts")});I:AddDivider({Label="Sound"});N=I:AddGroup({Source=I:AddToggle({Label="Sound",Tooltip="Play a thunder crack with each strike, delayed and quietened by distance.",Config=l("Sound","Enabled")})});N:AddSlider({Label="Volume",Tooltip="Loudness of a strike landing right beside you.",Min=0,Max=3,Step=0.05,Config=l("Sound","Volume")});N:AddToggle({Label="Delay",Tooltip="Lag the crack by the strike's distance, like real thunder. Off plays it instantly.",Config=l("Sound","Delay")});N:AddTextBox({Label="Sound ID",Tooltip="Roblox sound id or local file path for the crack. Leave empty for the default thunder.",FocusLostOnly=true,Config=l("Sound","SoundId")});end;end tbl17.ja = function() local ja = tbl17.cache.ja if not ja then local ja2 = { c = fn35() } tbl17.cache.ja = ja2 ja = ja2 end return ja.c end end do -- jb local function fn35()local I= tbl17 .aB(); tbl17 .gY(); tbl17 .aE();local l={{Label="Up Face",Key="SkyboxUp"},{Label="Down Face",Key="SkyboxDn"},{Label="Front Face",Key="SkyboxFt"},{Label="Back Face",Key="SkyboxBk"},{Label="Left Face",Key="SkyboxLf"},{Label="Right Face",Key="SkyboxRt"}};return function(W,N,P)local function a()P:Dialog({Title="Manage Skyboxes",Description="Add or remove custom skyboxes."},function(P)local e;local c={};P:AddPage({Title="Add a Skybox",Description="Enter a name and six face textures.",Glyph="+",ActionText="Add Skybox",OnAction=function()local E,p=e,{};for T,t in c,nil,nil do p[T]=t.Value;end;local T=N:Add(E.Value,p);if not T.Ok then I.get():Notify(T.Error.Detail);return false;end;E:Set("",true);for E,E_178 in c,nil,nil do E_178:Set("",true);end;return true;end},function(E)e=E:AddTextBox({Label="Name"});for e,e_179 in l,nil,nil do c[e_179.Key]=E:AddTextBox({Label=e_179.Label,Placeholder="Id / Url"});end;end);local l,e_180;e_180=P:AddPage({Title="Remove a Skybox",Description="Select a skybox to remove.",Glyph="\226\136\146",ActionText="Remove Skybox",Variant="danger",ActionEnabled=false,Confirmation={Title="Remove selected skybox?",Description=function()local P=l.Value;if P==nil then return"The selected skybox will be permanently removed.";end;return string.format("\"%s\" will be permanently removed.",tostring(P));end,ActionText="Confirm"},OnOpen=function()local P=l;P:SetOptions(N:GetNames());e_180:SetActionEnabled(P.Value~=nil);end,OnAction=function()local P=l.Value;if P==nil then return false;end;local c=N:Remove(P);if not c.Ok then I.get():Notify(c.Error.Detail);return false;end;return true;end},function(I)local P=I:AddList({Label="Skybox",Options=N:GetNames(),Height=150,Search=true,SelectFirst=false});l=P;P:Connect(P.ValueChanged,function(l)e_180:SetActionEnabled(l~=nil);end);P:Connect(N.Changed,function(l)P:SetOptions(l);end);end);end);end;local l=W:AddGroup({Source=W:AddToggle({Label="Enable Skybox",Config={"Skybox","Enabled"}})}):AddDropdown({Label="Preset",Options=N:GetNames(),Config={"Skybox","Preset"}});W:AddButton({Label="Manage Skyboxes",OnClick=a});l:Connect(N.Changed,function(I)l:SetOptions(I);end);end;end tbl17.jb = function() local jb = tbl17.cache.jb if not jb then local jb2 = { c = fn35() } tbl17.cache.jb = jb2 jb = jb2 end return jb.c end end do -- jc local function fn35() tbl17 .aE();return function(l)local I=l:AddToggle({Label="Enable Weather",Config={"Weather","Enabled"}});l:AddColor({Row=I.Row,Config={"Weather","Color"},Animatable=true});local W=l:AddGroup({Source=I});W:AddDropdown({Label="Preset",Options={"Snow","Rain","Blizzard"},Config={"Weather","Preset"}});W:AddSlider({Label="Intensity",Min=0,Max=2,Step=0.01,Config={"Weather","Intensity"}});W:AddSlider({Label="Rate",Min=0,Max=3,Step=0.01,Config={"Weather","Rate"}});W:AddSlider({Label="Height",Min=10,Max=100,Config={"Weather","Height"}});W:AddSlider({Label="Speed",Min=0.5,Max=3,Step=0.01,Config={"Weather","Speed"}});W:AddSlider({Label="Glow",Min=0,Max=1,Step=0.01,Config={"Weather","Glow"}});W:AddSlider({Label="Size",Min=0.5,Max=2,Step=0.01,Config={"Weather","Size"}});W:AddSlider({Label="Spread",Min=0,Max=3,Step=0.01,Config={"Weather","Spread"}});W:AddSlider({Label="Wind Strength",Min=0,Max=20,Step=0.1,Config={"Weather","Wind","Strength"}});W:AddSlider({Label="Wind Angle",Min=0,Max=360,Config={"Weather","Wind","Angle"}});end;end tbl17.jc = function() local jc = tbl17.cache.jc if not jc then local jc2 = { c = fn35() } tbl17.cache.jc = jc2 jc = jc2 end return jc.c end end do -- jd local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P= tbl17 .i9(), tbl17 .ja(), tbl17 .jb(), tbl17 .jc();return function(l,a,e)local c,E,p,T=a:AddSection({Title="Skybox",Side="left"}),a:AddSection({Title="Ambient Sound",Side="left"}),a:AddSection({Title="Weather",Side="right"}),a:AddSection({Title="Lightning",Side="right"});N(c,l.Skyboxes,e);I(E);P(p);W(T);end;end tbl17.jd = function() local jd = tbl17.cache.jd if not jd then local jd2 = { c = fn35() } tbl17.cache.jd = jd2 jd = jd2 end return jd.c end end do -- je local function fn35() tbl17 .aE(); tbl17 .hN();local I,W,N,P= tbl17 .i1(), tbl17 .i8(), tbl17 .jd(),{World="rbxassetid://125685532120024",Lighting="rbxassetid://139232691165198",PostProcessing="rbxassetid://139684165362622",SkyWeather="rbxassetid://140109651313859"};return function(l,a)local e=a:AddTab({Label="World",Icon=P.World,Description="Lighting, post-processing, sky, and ambient sound."});I((e:AddTab({Label="Lighting",Icon=P.Lighting,Description="Override time, exposure, shadows, ambient light, fog, and atmosphere."}):Grid({Columns=2})));W((e:AddTab({Label="Post Processing",Icon=P.PostProcessing,Description="Tune tone, focus, motion, and light effects."}):Grid({Columns=2})));N(l,e:AddTab({Label="Sky & Weather",Icon=P.SkyWeather,Description="Choose a skybox, ambient sound, weather, and lightning."}):Grid({Columns=2}),a);end;end tbl17.je = function() local je = tbl17.cache.je if not je then local je2 = { c = fn35() } tbl17.cache.je = je2 je = je2 end return je.c end end do -- jf local function fn35()local I,W= tbl17 .bG(), tbl17 .aE(); tbl17 .hN();local N,P,a,e,c,E,p,T= tbl17 .h_(), tbl17 .ij(), tbl17 .ip(), tbl17 .n(), tbl17 .iw(), tbl17 .i_(), tbl17 .je(),cloneref(game:GetService("Players")).LocalPlayer;return function(l)if getgenv().KhForceMobileUi==true then W.ForceMobileLayout();end;local t=W.Menu.new({Icon=K.LithiumLogo,Title=string.format("KiciaHooker fixed by skidcoded | %s",tostring("Skidded Build")),Directory="kiciarebuild/rivals",Config=l.ReactiveStoreAdapter,ColorAnimation=l.ColorAnimation,Persistence=I,State=l.GeneralState,StateData=l.GeneralStateData,OnUnload=function()e:Destroy();end});e:Add(t);local I=l.PlayerIdentities;t:SetWatermarkUsername(I:GetPresented(T));e:Connect(I.IdentityChanged,function(W)if W==T then t:SetWatermarkUsername(I:GetPresented(T));end;end);P(l,t);E(l,t);c(l,t);N(l,t);p(l,t);a(l,t);t:AddSettingsTab();t:SetVisible(not(l.GeneralStateData.SilentLoad==true),true);end;end tbl17.jf = function() local jf = tbl17.cache.jf if not jf then jf = { c = fn35() } tbl17.cache.jf = jf end return jf.c end end do -- jg local function fn35() return function() for _, v115 in getconnections(game:GetService("Players").LocalPlayer.Idled) do if v115.Function == nil then if v115.Disable then v115:Disable() elseif v115.Disconnect then v115:Disconnect() end end end end end tbl17.jg = function() local jg = tbl17.cache.jg if not jg then jg = { c = fn35() } tbl17.cache.jg = jg end return jg.c end end do -- jh local function fn35() local v115 = tbl17.a() local v116 = tbl17.b3() local leaderboardController = tbl17.aS().LeaderboardController local seasonLibrary = tbl17.aS().SeasonLibrary local v117 = tbl17.ad() local v118 = tbl17.dQ() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local index2 = {} index2.__index = index2 local function fn36(arg) local v119 = getmetatable(leaderboardController) if v119 == nil then return nil end local v120 = v102(v119, "__index") if type(v120) ~= "table" then return nil end local v121 = v102(v120, arg) return (type(v121) == "function" and { v121 } or { nil })[1] end local function fn37(arg, arg2) local players = v102(arg, "Players") if type(players) ~= "table" then return arg end local str7 = tostring(localPlayer.UserId) local v119 = table.clone(players) for i = #v119, v86[63], -v86[63] do local v120 = v119[i] if type(v120) == "table" and v102(v120, "key") == str7 then table.remove(v119, i) end end local tbl18 = { key = str7, value = arg2.Value } table.insert(v119, math.clamp(arg2.Rank, 1, #v119 + 1), tbl18) local v120 = table.clone(arg) v120.Players = v119 return v120 end index2.new = function() return setmetatable({ _errorReporter = v117.new(), _resolver = nil, _boardEntryProvider = nil, _restore = nil, _serialsRestore = nil, }, index2) end index2._Install = function(arg) if arg._restore ~= nil then return end local GetRankingByUserID = fn36("GetRankingByUserID") if GetRankingByUserID == nil then arg._errorReporter:Report(v115.err("LeaderboardRankHook", "function_lookup", "GetRankingByUserID unavailable").Error) return end local getHighestELOLeaderboardRanking = v102(seasonLibrary, "GetHighestELOLeaderboardRanking") if getHighestELOLeaderboardRanking == nil then arg._errorReporter:Report(v115.err("LeaderboardRankHook", "function_lookup", "GetHighestELOLeaderboardRanking unavailable").Error) return end for k, v119 in debug.getconstants(getHighestELOLeaderboardRanking) do if v119 == "GetRankingByUserID" then arg._restore = { ConstantIndex = k, Original = v119 } debug.setconstant(getHighestELOLeaderboardRanking, k, "GetRankingByUserID\0kicia") break end end if arg._restore == nil then arg._errorReporter:Report(v115.err("LeaderboardRankHook", "constant_scan", "GetRankingByUserID constant not found").Error) return end v103(leaderboardController, "GetRankingByUserID\0kicia", function(arg2, arg3, arg4) local resolver = arg._resolver if resolver ~= nil and arg3 == "Highest ELO" and arg4 ~= nil then local v119 = resolver(arg4) if v119 ~= nil then return v119 end end return v116(GetRankingByUserID, arg2, arg3, arg4) end) end index2._InstallSerials = function(arg) if arg._serialsRestore ~= nil then return end local leaderboardSerials = v102(leaderboardController, "LeaderboardSerials") if type(leaderboardSerials) ~= "table" then arg._errorReporter:Report(v115.err("LeaderboardRankHook", "table_lookup", "LeaderboardSerials unavailable").Error) return end local v119 = leaderboardSerials local obj = setmetatable({}, { __index = function(arg2, arg3) local v120 = v102(v119, arg3) local boardEntryProvider = arg._boardEntryProvider if boardEntryProvider ~= nil and arg3 == "Highest ELO" and type(v120) == "table" then return fn37(v120, boardEntryProvider()) end return v120 end, __newindex = function(arg2, arg3, arg4) v103(v119, arg3, arg4) end, }) v103(leaderboardController, "LeaderboardSerials", obj) arg._serialsRestore = { Inner = leaderboardSerials } end index2._RevertSerials = function(arg) local serialsRestore = arg._serialsRestore if serialsRestore == nil then return end arg._serialsRestore = nil v103(leaderboardController, "LeaderboardSerials", serialsRestore.Inner) end index2.Set = function(arg, resolver) arg._resolver = resolver arg:_Install() end index2.Unset = function(arg) arg._resolver = nil end index2.SetBoardEntry = function(arg, boardEntryProvider) arg._boardEntryProvider = boardEntryProvider arg:_InstallSerials() end index2.UnsetBoardEntry = function(arg) arg._boardEntryProvider = nil end index2.TriggerRefresh = function(arg) local GetLeaderboardRefreshedSignal = fn36("GetLeaderboardRefreshedSignal") if GetLeaderboardRefreshedSignal == nil then arg._errorReporter:Report(v115.err("LeaderboardRankHook", "function_lookup", "GetLeaderboardRefreshedSignal unavailable").Error) return end local highestElo = v116(GetLeaderboardRefreshedSignal, leaderboardController, "Highest ELO") if highestElo == nil then return end v118(highestElo) end index2._Revert = function(arg) local restore = arg._restore if restore == nil then return end local getHighestELOLeaderboardRanking = v102(seasonLibrary, "GetHighestELOLeaderboardRanking") if getHighestELOLeaderboardRanking ~= nil then debug.setconstant(getHighestELOLeaderboardRanking, restore.ConstantIndex, restore.Original) end v103(leaderboardController, "GetRankingByUserID\0kicia", nil) arg._restore = nil end index2.Destroy = function(arg) arg._resolver = nil arg._boardEntryProvider = nil arg:_Revert() arg:_RevertSerials() arg._errorReporter:Destroy() end return index2 end tbl17.jh = function() local jh = tbl17.cache.jh if not jh then jh = { c = fn35() } tbl17.cache.jh = jh end return jh.c end end do -- ji local function fn35() local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local tbl18 = { _instance = arg, _attribute = arg2, _original = arg:GetAttribute(arg2), _isWriting = v86[153], _connection = nil, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local instance = arg._instance local attribute = arg._attribute arg._connection = instance:GetAttributeChangedSignal(attribute):Connect(function() if arg._isWriting then return end arg._original = instance:GetAttribute(attribute) arg._isWriting = v86[34] local spoofed = arg._spoofed if spoofed ~= nil then instance:SetAttribute(attribute, spoofed.Value) end arg._isWriting = v86[153] end) end index2.Set = function(arg, spoofed) arg._spoofed = spoofed arg._isWriting = true if spoofed ~= nil then arg._instance:SetAttribute(arg._attribute, spoofed.Value) else arg._instance:SetAttribute(arg._attribute, arg._original) end arg._isWriting = false end index2.Destroy = function(arg) arg._connection:Disconnect() arg._instance:SetAttribute(arg._attribute, arg._original) end return index2 end tbl17.ji = function() local ji = tbl17.cache.ji if not ji then ji = { c = fn35() } tbl17.cache.ji = ji end return ji.c end end do -- jj local function fn35() local v115 = tbl17.ji() tbl17.bK() local v116 = tbl17.k() local v117 = tbl17.bW() local v118 = tbl17.bX() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v116.new("player_spoofer.AttributeSink"), _playerRegistry = arg, _guardedAttributeByNameByPlayer = {}, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Add(arg._playerRegistry:ObservePlayers(function(arg2) arg:_Apply(arg2) end, function(arg2) arg:_Cleanup(arg2) end)) end index2.RefreshScope = function(arg, arg2) v117(arg2, function(arg3) arg:_Apply(arg3) end) end index2._Apply = function(arg, arg2) local v119 = v118(arg2) arg:_SetValue(arg2, "StatisticDuelsWinStreak", v119.Winstreak) arg:_SetValue(arg2, "Level", v119.Level) arg:_SetValue(arg2, "DisplayELO", v119.RankedElo) arg:_SetValue(arg2, "PlayerStatus", v119.NametagStatus) arg:_SetConst(arg2, "IsInfluencer", v119.Influencer.Enabled, true) arg:_SetConst(arg2, "IsRobloxEmployee", v119.RobloxEmployee.Enabled, v86[34]) arg:_SetConst(arg2, "GroupRank", v119.NosniyTeam.Enabled, 255) end index2._SetValue = function(arg, arg2, arg3, arg4) if arg4.Enabled then arg:_Bind(arg2, arg3):Set({ Value = arg4.Value }) else arg:_Unbind(arg2, arg3) end end index2._SetConst = function(arg, arg2, arg3, arg4, arg5) if arg4 then arg:_Bind(arg2, arg3):Set({ Value = arg5 }) else arg:_Unbind(arg2, arg3) end end index2._Bind = function(arg, arg2, arg3) local tbl18 = arg._guardedAttributeByNameByPlayer[arg2] if tbl18 == nil then tbl18 = {} arg._guardedAttributeByNameByPlayer[arg2] = tbl18 end local v119 = tbl18[arg3] if v119 == nil then local v120 = v115.new(arg2, arg3) tbl18[arg3] = v120 v119 = v120 end return v119 end index2._Unbind = function(arg, arg2, arg3) local v119 = arg._guardedAttributeByNameByPlayer[arg2] if v119 == nil then return end local v120 = v119[arg3] if v120 ~= nil then v120:Destroy() v119[arg3] = nil end end index2._Cleanup = function(arg, arg2) local v119 = arg._guardedAttributeByNameByPlayer[arg2] if v119 == nil then return end for _, v120 in v119, nil, nil do v120:Destroy() end arg._guardedAttributeByNameByPlayer[arg2] = nil end index2.Destroy = function(arg) for _, v119 in arg._guardedAttributeByNameByPlayer, nil, nil do for _, v120 in v119, nil, nil do v120:Destroy() end end arg._trove:Destroy() end return index2 end tbl17.jj = function() local jj = tbl17.cache.jj if not jj then jj = { c = fn35() } tbl17.cache.jj = jj end return jj.c end end do -- jk local function fn35() local v115 = tbl17.bG() tbl17.jh() local v116 = tbl17.bX() local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local function fn36(arg) local v117 = v116(arg) return v117.LeaderboardRank.Enabled and v117.LeaderboardRank.Value or nil end local function fn37() local localPlayer2 = v115.Data.PlayerSpoofer.LocalPlayer local value if localPlayer2.RankedElo.Enabled then value = localPlayer2.RankedElo.Value else value = localPlayer:GetAttribute("DisplayELO") local n = 0 if type(value) ~= "number" then value = n end end return { Rank = localPlayer2.LeaderboardRank.Value, Value = value } end return { recompute = function(arg) local playerSpoofer = v115.Data.PlayerSpoofer if playerSpoofer.LocalPlayer.LeaderboardRank.Enabled or playerSpoofer.OtherPlayers.LeaderboardRank.Enabled then arg:Set(fn36) else arg:Unset() end if playerSpoofer.LocalPlayer.LeaderboardRank.Enabled then arg:SetBoardEntry(fn37) else arg:UnsetBoardEntry() end arg:TriggerRefresh() end, destroy = function(arg) arg:Unset() arg:UnsetBoardEntry() arg:TriggerRefresh() end, } end tbl17.jk = function() local jk = tbl17.cache.jk if not jk then local jk2 = { c = fn35() } tbl17.cache.jk = jk2 jk = jk2 end return jk.c end end do -- jl local function fn35() local index2 = {} index2.__index = index2 local function fn36(arg) return arg.Value end local function fn37(arg, value) arg.Value = value end index2.new = function(arg) local tbl18 = { _instance = arg, _original = fn36(arg), _isWriting = false, _connection = nil } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local instance = arg._instance arg._connection = instance:GetPropertyChangedSignal("Value"):Connect(function() if arg._isWriting then return end arg._original = fn36(instance) arg._isWriting = true local spoofed = arg._spoofed if spoofed ~= nil then fn37(instance, spoofed.Value) end arg._isWriting = v86[153] end) end index2.Set = function(arg, spoofed) arg._spoofed = spoofed arg._isWriting = true if spoofed ~= nil then fn37(arg._instance, spoofed.Value) else fn37(arg._instance, arg._original) end arg._isWriting = v86[153] end index2.Destroy = function(arg) arg._connection:Disconnect() fn37(arg._instance, arg._original) end return index2 end tbl17.jl = function() local jl = tbl17.cache.jl if not jl then jl = { c = fn35() } tbl17.cache.jl = jl end return jl.c end end do -- jm local function fn35() local v115 = tbl17.jl() tbl17.bK() local v116 = tbl17.k() local v117 = tbl17.bW() local v118 = tbl17.bX() local v119 = tbl17.aR() local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v116.new(), _playerRegistry = arg, _entryByPlayer = {} } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Add(arg._playerRegistry:ObservePlayers(function(arg2) arg:_Watch(arg2) end, function(arg2) arg:_Cleanup(arg2) end)) end index2.RefreshScope = function(arg, arg2) v117(arg2, function(arg3) arg:_Apply(arg3) end) end index2._Watch = function(arg, arg2) if arg._entryByPlayer[arg2] ~= nil then return end local tbl18 = { Trove = v116.new(), Guarded = nil } arg._entryByPlayer[arg2] = tbl18 tbl18.Trove:Add(task.spawn(function() local v120 = v119(arg2, { "CustomLeaderstats", "Current ELO" }) tbl18.Guarded = tbl18.Trove:Add(v115.new(v120)) arg:_Apply(arg2) end)) end index2._Apply = function(arg, arg2) local v120 = arg._entryByPlayer[arg2] if v120 == nil or v120.Guarded == nil then return end local rankedElo = v118(arg2).RankedElo if rankedElo.Enabled then v120.Guarded:Set({ Value = rankedElo.Value }) else v120.Guarded:Set(nil) end end index2._Cleanup = function(arg, arg2) local v120 = arg._entryByPlayer[arg2] if v120 == nil then return end arg._entryByPlayer[arg2] = nil v120.Trove:Destroy() end index2.Destroy = function(arg) for _, v120 in arg._entryByPlayer, nil, nil do v120.Trove:Destroy() end arg._entryByPlayer = {} arg._trove:Destroy() end return index2 end tbl17.jm = function() local jm = tbl17.cache.jm if not jm then jm = { c = fn35() } tbl17.cache.jm = jm end return jm.c end end do -- jn local function fn35() local v115 = tbl17.bG() tbl17.d9() local v116 = tbl17.bX() local function fn36(arg) local v117 = v116(arg.Player) if v117.Level.Enabled then arg.Data.Level = v117.Level.Value end if v117.CasualWins.Enabled then arg.Data.CasualWins = v117.CasualWins.Value end if v117.RankedWins.Enabled then arg.Data.RankedWins = v117.RankedWins.Value end if v117.CasualWinPercent.Enabled then arg.Data.CasualWinPercent = v117.CasualWinPercent.Value / 100 end if v117.RankedWinPercent.Enabled then arg.Data.RankedWinPercent = v117.RankedWinPercent.Value / v86[91] end if v117.RankedElo.Enabled then arg.Data.RankedCurrentELO = v117.RankedElo.Value end if v117.FavoriteMap.Enabled then arg.Data.FavoriteMap = v117.FavoriteMap.Value end end local function fn37(arg) return arg.Level.Enabled or arg.CasualWins.Enabled or arg.RankedWins.Enabled or arg.CasualWinPercent.Enabled or arg.RankedWinPercent.Enabled or arg.RankedElo.Enabled or arg.FavoriteMap.Enabled end return { bind = function(arg) arg:SetHandler(fn36) end, recompute = function(arg) local playerSpoofer = v115.Data.PlayerSpoofer arg:SetEnabled(fn37(playerSpoofer.LocalPlayer) or fn37(playerSpoofer.OtherPlayers)) end, } end tbl17.jn = function() local jn = tbl17.cache.jn if not jn then local jn2 = { c = fn35() } tbl17.cache.jn = jn2 jn = jn2 end return jn.c end end do -- jo local function fn35() local v115 = tbl17.bG() tbl17.dR() local seasonLibrary = tbl17.aS().SeasonLibrary local function fn36(arg) local original = arg:GetOriginal("Seasons") local currentSeason = v102(seasonLibrary, "CurrentSeason") if type(original) ~= "table" or currentSeason == nil then return original end local name = v102(currentSeason, "Name") local universalEloName = v102(seasonLibrary, "UNIVERSAL_ELO_NAME") local currentELO = v115.Data.PlayerSpoofer.LocalPlayer.RankedElo.Value local v116 = table.clone(original) local v117 = v102(v116, name) local v118 = (v117 ~= nil and { (table.clone(v117)) } or { {} })[v86[63]] local rankedPerformances = v102(v118, "RankedPerformances") local v119 = (rankedPerformances ~= nil and { (table.clone(rankedPerformances)) } or { {} })[1] local v120 = v102(v119, universalEloName) local v121 = (v120 ~= nil and { (table.clone(v120)) } or { {} })[1] v121.CurrentELO = currentELO v119[universalEloName] = v121 v118.RankedPerformances = v119 v116[name] = v118 return v116 end return { recompute = function(arg) if v115.Data.PlayerSpoofer.LocalPlayer.RankedElo.Enabled then arg:Set("Seasons", function() return fn36(arg) end) else arg:Unset("Seasons") end arg:TriggerDataChangedSignal("Seasons") end, destroy = function(arg) arg:Unset("Seasons") arg:TriggerDataChangedSignal("Seasons") end, } end tbl17.jo = function() local jo = tbl17.cache.jo if not jo then local jo2 = { c = fn35() } tbl17.cache.jo = jo2 jo = jo2 end return jo.c end end do -- jp local function fn35() tbl17.dR() tbl17.jh() tbl17.bK() tbl17.d9() local v115 = tbl17.k() local v116 = tbl17.bY() local v117 = tbl17.jj() local v118 = tbl17.jk() local v119 = tbl17.jm() local v120 = tbl17.jn() local v121 = tbl17.jo() local index2 = {} index2.__index = index2 local tbl18 = { "Winstreak", "Level", "CasualWins", "RankedWins", "CasualWinPercent", "RankedWinPercent", "RankedElo", "FavoriteMap", } local tbl19 = { "NametagStatus", "Influencer", "RobloxEmployee", "NosniyTeam" } index2.new = function(arg, arg2, arg3, arg4) local statSpoofer = v115.new("player_spoofer.stat_spoofer") local tbl20 = { _trove = statSpoofer, _attributeSink = statSpoofer:Add(v117.new(arg)), _leaderstatSink = statSpoofer:Add(v119.new(arg)), _leaderboardRankHook = arg4, _requestBinding = arg2, _dataHook = arg3, } setmetatable(tbl20, index2) v120.bind(arg2) statSpoofer:Add(arg2) statSpoofer:Add(function() v121.destroy(arg3) end) statSpoofer:Add(function() v118.destroy(arg4) end) tbl20:_Initialize() return tbl20 end index2._Initialize = function(arg) for _, v122 in tbl18, nil, nil do v116(arg._trove, v122, function(arg2) v120.recompute(arg._requestBinding) arg._attributeSink:RefreshScope(arg2) end) end v116(arg._trove, "RankedElo", function(arg2) arg._leaderstatSink:RefreshScope(arg2) if arg2 == "LocalPlayer" then v121.recompute(arg._dataHook) v118.recompute(arg._leaderboardRankHook) end end) v116(arg._trove, "LeaderboardRank", function() v118.recompute(arg._leaderboardRankHook) end) for _, v122 in tbl19, nil, nil do v116(arg._trove, v122, function(arg2) arg._attributeSink:RefreshScope(arg2) end) end v120.recompute(arg._requestBinding) v121.recompute(arg._dataHook) v118.recompute(arg._leaderboardRankHook) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.jp = function() local jp = tbl17.cache.jp if not jp then local jp2 = { c = fn35() } tbl17.cache.jp = jp2 jp = jp2 end return jp.c end end do -- jq local function fn35() local v115 = tbl17.a() local v116 = tbl17.b2() local v117 = tbl17.ad() local utility = tbl17.aS().Utility local localPlayer = cloneref(game:GetService("Players")).LocalPlayer local tbl18 = { Low = { 150, 160 }, Medium = { 60, 75 }, High = { 17, 25 } } local function fn36(arg) return { LocalPlayer = { GetNetworkPing = function() return arg:_RandomPing() end }, } end local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({ _pingType = nil, _errorReporter = v117.new(), _loadFailure = nil, _restore = nil }, index2) end index2.Destroy = function(arg) arg:Revert() arg._errorReporter:Destroy() end index2._Load = function(arg) if arg._restore ~= nil then return v115.VoidOk end local v118 = getmetatable(utility) if v118 == nil then return v115.err("LocalPingHook", "metatable_lookup", "Utility metatable unavailable") end local v119 = v102(v118, "__index") if type(v119) ~= "table" then return v115.err("LocalPingHook", "index_lookup", "Utility __index unavailable") end local getLocalConnectionPing = v102(v119, "GetLocalConnectionPing") if type(getLocalConnectionPing) ~= "function" then return v115.err("LocalPingHook", "function_lookup", "GetLocalConnectionPing not found") end local v120 = nil local v121 = nil for k, v122 in debug.getupvalues(getLocalConnectionPing) do if not (typeof(v122) ~= "Instance" or not v116(v122, game:GetService("Players"))) then v120 = k v121 = v122 end end if v120 == nil or v121 == nil then return v115.err("LocalPingHook", "upvalue_lookup", "Players not found in GetLocalConnectionPing") end debug.setupvalue(getLocalConnectionPing, v120, fn36(arg)) arg._restore = { Fn = getLocalConnectionPing, Index = v120, Original = v121 } return v115.VoidOk end index2.Revert = function(arg) local restore = arg._restore if restore == nil then return end arg._restore = nil debug.setupvalue(restore.Fn, restore.Index, restore.Original) end index2.EnsureLoaded = function(arg) if arg._restore ~= nil then return v115.VoidOk end local loadFailure = arg._loadFailure if loadFailure ~= nil then return loadFailure end local v118 = arg._errorReporter:ReportResult(arg:_Load()) if not v118.Ok then arg._loadFailure = v118 end return v118 end index2.Set = function(arg, pingType) arg._pingType = pingType end index2._RandomPing = function(arg) local pingType = arg._pingType if pingType == nil then return localPlayer:GetNetworkPing() end local v118 = tbl18[pingType] return math.random(v118[v86[63]], v118[2]) / 1000 end return index2 end tbl17.jq = function() local jq = tbl17.cache.jq if not jq then local jq2 = { c = fn35() } tbl17.cache.jq = jq2 jq = jq2 end return jq.c end end do -- jr local function fn35() local v115 = tbl17.bG() local v116 = tbl17.jq() tbl17.a() local v117 = tbl17.k() local v118 = tbl17.bY() local index2 = {} index2.__index = index2 index2.new = function() local v119 = v117.new() local tbl18 = { _trove = v119, _pingHook = v119:Add(v116.new()) } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) local function fn36() local ping = v115.Data.PlayerSpoofer.LocalPlayer.Ping arg._pingHook:Set(ping.Value) if not ping.Enabled then arg:_Revert() return end if not arg:_Load().Ok then return end end v118(arg._trove, "Ping", fn36, { "LocalPlayer" }) fn36() end index2._Load = function(arg) return arg._pingHook:EnsureLoaded() end index2._Revert = function(arg) arg._pingHook:Revert() end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.jr = function() local jr = tbl17.cache.jr if not jr then jr = { c = fn35() } tbl17.cache.jr = jr end return jr.c end end do -- js local function fn35() local v115 = tbl17.bG() tbl17.dR() local v116 = tbl17.k() local data = v115.Data local index2 = {} index2.__index = index2 index2.new = function(arg) local v117 = v116.new() if not (n25 > 3887) then local keys = data.PlayerSpoofer.LocalPlayer.Keys local tbl18 = { _trove = v117, _dataHook = arg, _enabled = false, _keys = keys.Value } setmetatable(tbl18, index2) v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "Keys", v86[44] }), function(arg2) tbl18:_SetEnabled(arg2) end) v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "Keys", "Value" }), function(arg2) tbl18:_SetKeys(arg2) end) tbl18:_SetEnabled(keys.Enabled) return tbl18 end return nil -- (anti-tamper freeze trap removed) end index2._SetEnabled = function(arg, enabled) if enabled == arg._enabled then return end arg._enabled = enabled if enabled then arg._dataHook:Set("WeaponKeys", function() return arg._keys end) else arg._dataHook:Unset("WeaponKeys") end arg._dataHook:TriggerDataChangedSignal("WeaponKeys") end index2._SetKeys = function(arg, keys) arg._keys = keys end index2.Destroy = function(arg) arg:_SetEnabled(false) arg._trove:Destroy() end return index2 end tbl17.js = function() local js = tbl17.cache.js if not js then local js2 = { c = fn35() } tbl17.cache.js = js2 js = js2 end return js.c end end do -- jt local function fn35() local v115 = tbl17.bG() tbl17.dR() local v116 = tbl17.k() local data = v115.Data local index2 = {} index2.__index = index2 index2.new = function(arg) local v117 = v116.new() local eventCurrency = data.PlayerSpoofer.LocalPlayer.EventCurrency local tbl18 = { _trove = v117, _dataHook = arg, _enabled = false, _eventCurrency = eventCurrency.Value } setmetatable(tbl18, index2) v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "EventCurrency", v86[44] }), function(arg2) tbl18:_SetEnabled(arg2) end) v117:Connect(v115:GetPropertyChangedSignal({ "PlayerSpoofer", "LocalPlayer", "EventCurrency", "Value" }), function(arg2) tbl18:_SetEventCurrency(arg2) end) tbl18:_SetEnabled(eventCurrency.Enabled) return tbl18 end index2._SetEnabled = function(arg, enabled) if enabled == arg._enabled then return end arg._enabled = enabled if enabled then arg._dataHook:Set("EventCurrency", function() return arg._eventCurrency end) else arg._dataHook:Unset("EventCurrency") end arg._dataHook:TriggerDataChangedSignal("EventCurrency") end index2._SetEventCurrency = function(arg, eventCurrency) arg._eventCurrency = eventCurrency end index2.Destroy = function(arg) arg:_SetEnabled(false) arg._trove:Destroy() end return index2 end tbl17.jt = function() local jt = tbl17.cache.jt if not jt then jt = { c = fn35() } tbl17.cache.jt = jt end return jt.c end end do -- ju local function fn35() local v115 = tbl17.bG() tbl17.cX() local v116 = tbl17.k() local v117 = tbl17.b3() local v118 = cloneref(game:GetService("Workspace")) local tbl18 = { "Movement", "LongJump", "Keybind", "State" } local index2 = {} index2.__index = index2 index2.new = function(arg) local v119 = v116.new() local tbl19 = { _trove = v119, _playerContext = arg } setmetatable(tbl19, index2) v119:Connect(v115:GetPropertyChangedSignal(tbl18), function(arg2) tbl19:_OnStateChanged(arg2) end) return tbl19 end index2._OnStateChanged = function(arg, arg2) if not arg2 then return end task.defer(function() v115:Set(tbl18, false) end) if not v115.Data.Movement.LongJump.Enabled then return end arg:_Launch() end index2._Launch = function(arg) local inner = arg._playerContext.Inner if inner == nil then return end local fighterState = inner.FighterState local state = fighterState.Character.State if not state.Alive then return end local entity = fighterState:GetEntity() if entity == nil then return end local longJump = v115.Data.Movement.LongJump local lookVector = v118.CurrentCamera.CFrame.LookVector local vector = Vector3.new(lookVector.X, v86[186], lookVector.Z) if vector.Magnitude < 0.001 then local lookVector2 = state.RootPart.CFrame.LookVector vector = Vector3.new(lookVector2.X, 0, lookVector2.Z) end local unit = vector.Unit if longJump.Mode == "Under Feet" then unit = (unit * longJump.Behind + Vector3.new(0, 4, 0)).Unit end local n = unit * longJump.Force + Vector3.new(v86[186], longJump.UpwardVelocity, 0) v117(entity.AirborneCancel, entity) v117(entity.AirborneTrigger, entity, n, 4) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.ju = function() local ju = tbl17.cache.ju if not ju then local ju2 = { c = fn35() } tbl17.cache.ju = ju2 ju = ju2 end return ju.c end end do -- jv local function fn35() local tbl18 tbl18 = { DirectionToOrientation = function(l)local I,W=CFrame.lookAt(Vector3.zero,l):ToOrientation();return I,W;end, OrientationLookingAt = function(I,W)return tbl18 .DirectionToOrientation(W-I);end, } return tbl18 end tbl17.jv = function() local jv = tbl17.cache.jv if not jv then local jv2 = { c = fn35() } tbl17.cache.jv = jv2 jv = jv2 end return jv.c end end do -- jw local function fn35() local v115 = tbl17.cn() local v116 = tbl17.co() local v117 = tbl17.jv() local set = tbl17.cp().set local v118 = tbl17.bG() tbl17.c_() tbl17.cF() local v119 = tbl17.c4() tbl17.cX() tbl17.cE() local v120 = tbl17.cd() local v121 = tbl17.dc() local v122 = tbl17.ci() local v123 = tbl17.k() local v124 = tbl17.aH() local v125 = tbl17.de() local v126 = tbl17.df() local v127 = tbl17.dg() local v128 = cloneref(game:GetService("Workspace")) local data = v118.Data local index2 = {} index2.__index = index2 local function fn36(arg) local v129 = v128.CurrentCamera:WorldToViewportPoint(arg.Position) return v129.Z > 0 and Vector2.new(v129.X, v129.Y) or nil end index2.new = function(arg, arg2, arg3) local flickbot = v123.new("flickbot") local aimbot = data.Aimbot local v129 = v121.new(arg2, arg, aimbot.TargetConditions, aimbot.TargetHitboxes[v124.DefaultProfile.Class], function(I,W)return( arg3 :Check(I,W,W.Parent));end) local tbl18 = { _trove = flickbot, _playerContext = arg2, _targetSelection = v122.new(v129, v115.buildMeasure(aimbot.Fov.Radius, aimbot.TargetConditions.WithinFov), v126), _state = "Idle", _selected = nil, _trajectory = nil, _trajectoryIndex = v86[63], _elapsedMs = 0, _totalMs = 0, _bakedEndDirection = Vector3.zAxis, _timer = 0, _isEnabledHeld = v86[153], } setmetatable(tbl18, index2) flickbot:Add(v119:ObserveEnabledKeybind({ "Flickbot" }, function(arg4) tbl18:_OnKeybindChanged(arg4) end)) local v130 = v125(arg2, flickbot, "features.Aimbot", v129, function() return data.Aimbot.TargetHitboxes end) local function fn37(selection) tbl18._targetSelection:SetHitboxSelectionMode(v115.buildHitboxSelectionMode(selection)) end flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "Fov" }), function(f) tbl18._targetSelection:SetMeasure(v115.buildMeasure(f.Radius, data.Aimbot.TargetConditions.WithinFov)) end) flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "TargetConditions" }), function(c) v129:SetConditions(c) tbl18._targetSelection:SetMeasure(v115.buildMeasure(data.Aimbot.Fov.Radius, c.WithinFov)) end) flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "TargetHitboxes" }), v130) flickbot:Connect(v118:GetPropertyChangedSignal({ "Aimbot", "HitboxSelection" }), fn37) fn37(aimbot.HitboxSelection) v130() return tbl18 end index2._OnKeybindChanged = function(arg, arg2) if not arg2 then arg._isEnabledHeld = false return end if arg._isEnabledHeld then return end arg._isEnabledHeld = true if arg._state ~= "Idle" then return end arg:_StartFlick() end index2._StartFlick = function(arg) local currentCamera = v128.CurrentCamera local v129, v130 = arg._targetSelection:SelectBest(nil) if v129 == nil or v130 == nil then return end local selected = { Target = v129, Part = v130 } local v131 = fn36(v130) if v131 == nil then return end local v132 = v127() local v133 = v120.new() local flickbot = v118.Data.Flickbot v133:ApplyFlickProfile({ DurationMs = flickbot.FlickDuration, Curvature = flickbot.Curvature, Humanness = flickbot.Humanness }) local trajectory = {} for k, v134 in v133:Generate(v132.X, v132.Y, v131.X, v131.Y), nil, nil do trajectory[k] = { Direction = currentCamera:ViewportPointToRay(v134.X, v134.Y).Direction, T = v134.T } end arg._trajectory = trajectory arg._trajectoryIndex = 1 arg._elapsedMs = v86[186] arg._totalMs = trajectory[#trajectory].T arg._bakedEndDirection = trajectory[#trajectory].Direction arg._selected = selected arg._state = "Flicking" v116.claim("Flickbot", 10) end index2._FinishToCooldown = function(arg) arg._selected = nil arg._trajectory = nil v116.release("Flickbot") local cooldown = v118.Data.Flickbot.Cooldown if cooldown > 0 then arg._state = "Cooldown" arg._timer = cooldown / 1000 else arg._state = "Idle" end end index2._SampleTrajectory = function(arg, arg2, arg3) arg._elapsedMs = arg._elapsedMs + arg3 * 1000 local trajectoryIndex = arg._trajectoryIndex while trajectoryIndex < #arg2 and arg2[trajectoryIndex + 1].T <= arg._elapsedMs do trajectoryIndex += 1 end arg._trajectoryIndex = trajectoryIndex local v129 = arg2[trajectoryIndex] local v130 = arg2[trajectoryIndex + 1] if v130 == nil then return arg2[#arg2].Direction, true end local n = v130.T - v129.T local n33 = 1 if n > 0 then n33 = math.clamp((arg._elapsedMs - v129.T) / n, 0, 1) end return v129.Direction:Lerp(v130.Direction, n33), false end index2.Update = function(arg, arg2) local state = arg._state if state == "Flicking" then local selected = arg._selected local trajectory = arg._trajectory if selected == nil or trajectory == nil then arg:_FinishToCooldown() if not flag2 then return end return end if selected.Part.Parent == nil then arg:_FinishToCooldown() return end local unit, v129 = arg:_SampleTrajectory(trajectory, arg2) if v86[186] < arg._totalMs then unit = (unit + ((selected.Part.Position - v128.CurrentCamera.CFrame.Position).Unit - arg._bakedEndDirection) * math.clamp(arg._elapsedMs / arg._totalMs, 0, 1)).Unit end local v130, v131 = v117.DirectionToOrientation(unit) set(Vector2.new(v130, v131)) if v129 then local flickbot = v118.Data.Flickbot if flickbot.Shoot then arg._state = "PostShot" arg._timer = flickbot.ShotDelay / 1000 else arg:_FinishToCooldown() end end elseif state == "PostShot" then arg._timer = arg._timer - arg2 if arg._timer <= 0 then arg:_FireShot() arg:_FinishToCooldown() end elseif state == "Cooldown" then arg._timer = arg._timer - arg2 if arg._timer <= 0 then arg._state = "Idle" end end end index2._FireShot = function(arg) local inner = arg._playerContext.Inner if inner == nil then return end inner.FighterState:Input("StartShooting") end index2.Destroy = function(arg) v116.release("Flickbot") arg._trove:Destroy() end return index2 end tbl17.jw = function() local jw = tbl17.cache.jw if not jw then jw = { c = fn35() } tbl17.cache.jw = jw end return jw.c end end do -- jy local function fn35() tbl17.cF() tbl17.jx() local function fn36(arg) local itemObserver = arg.ItemObserver local equippedItem = itemObserver:GetEquippedItem() if equippedItem ~= nil and equippedItem.Name == "Riot Shield" then local v115 = math.deg(arg:GetCameraRotation().X) if v115 > 22 and v115 < 91 then return "Below" end return "Above" end for _, v115 in itemObserver:GetItems() do if v115.Name == "Riot Shield" then local v116 = math.deg(arg:GetCameraRotation().X) if v116 > 315 and v116 < 360 or v116 > 0 and v116 < 91 then return "Above" end return "Below" end end return v86[75] end if not flag2 then return end return fn36 end tbl17.jy = function() local jy = tbl17.cache.jy if not jy then local jy2 = { c = fn35() } tbl17.cache.jy = jy2 jy = jy2 end return jy.c end end do -- jz local function fn35() tbl17.cE() tbl17.jx() tbl17.cI() local v115 = tbl17.jy() local v116 = Random.new() return { getDefensiveCFrame = function(arg, arg2, arg3, arg4) if arg2 == "Equipped" then return CFrame.new(arg.Position, arg4.Position) end if arg2 == "Unequipped" then return CFrame.new(arg.Position, arg.Position + arg.Position - arg4.Position) end local v117 = arg3.ItemObserver:EquippedItemAsMelee() if v117 ~= nil and v117.Name == "Knife" then local cframe = CFrame.fromOrientation local nextNumber = v116.NextNumber local tau = math.tau return CFrame.new(arg.Position) * cframe(v116:NextNumber(0, math.tau), v116:NextNumber(0, math.tau), nextNumber(v116, 0, tau)) end return arg end, getDefensiveViewAngles = function(arg, arg2) if arg == "None" then return nil end return { Kind = "Normalized", Pitch = (arg == "Equipped") ~= (v115(arg2) ~= "Below") and v86[45] or -90, Yaw = v116:NextNumber(0, 360), } end, } end tbl17.jz = function() local jz = tbl17.cache.jz if not jz then jz = { c = fn35() } tbl17.cache.jz = jz end return jz.c end end do -- jA local function fn35() local index2 = {} index2.__index = index2 index2.new = function() return setmetatable({}, index2) end index2.ShouldFire = function(arg, arg2, arg3) local now2 = os.clock() local lockedUntil = arg._lockedUntil local flag19 = lockedUntil ~= nil and now2 < lockedUntil if arg2 then arg._lockedUntil = now2 + arg3 end return flag19 or arg2 end index2.Reset = function(arg) arg._lockedUntil = nil end return index2 end tbl17.jA = function() local ja = tbl17.cache.jA if not ja then local ja2 = { c = fn35() } tbl17.cache.jA = ja2 ja = ja2 end return ja.c end end do -- jB local function fn35() tbl17.cr() local v115 = tbl17.bG() tbl17.cF() tbl17.bM() local function fn36(arg) if not arg.IsEnemy or arg:IsInvincible() then return false end if not arg.Character.State.Alive then return false end local v116 = arg.ItemObserver:EquippedItemAsMelee() if v116 ~= nil and v116:IsDeflecting() then return false end return true end local function fn37(arg) return { FighterState = arg, AliveState = arg.Character.State } end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) return setmetatable({ _fighters = arg, _playerTags = arg2 }, index2) end index2.GetTarget = function(arg) local prioritizeHackers = v115.Data.Ragebot.PrioritizeHackers if prioritizeHackers then for _, v116 in arg._playerTags:GetPlayersWith("Hacker") do local v117 = arg._fighters.StateByPlayer[v116] if v117 ~= nil and fn36(v117) then return fn37(v117) end end end for k, v116 in arg._fighters.EnemyByPlayer, nil, nil do if prioritizeHackers and arg._playerTags:Has(k, "Hacker") then continue end if fn36(v116) then return fn37(v116) end end return nil end index2.HasTargets = function(arg) for _, v116 in arg._fighters.EnemyByPlayer, nil, nil do if fn36(v116) then return true end end return v86[153] end index2.IsSameTarget = function(arg, arg2) return arg.FighterState == arg2.FighterState and arg.AliveState == arg2.AliveState end return index2 end tbl17.jB = function() local jb = tbl17.cache.jB if not jb then jb = { c = fn35() } tbl17.cache.jB = jb end return jb.c end end do -- jC local function fn35() local vector = Vector3.new(0, -v86[63], 0) local vector2 = Vector3.new(0, 0, -v86[63]) return function(arg, arg2) local n = arg2 - arg local vector3 = Vector3.new(n.X, v86[186], n.Z) if vector3.Magnitude < 0.001 then vector3 = vector2 end return CFrame.lookAt(arg, arg + vector3, vector) end end tbl17.jC = function() local jc = tbl17.cache.jC if not jc then jc = { c = fn35() } tbl17.cache.jC = jc end return jc.c end end do -- jD local function fn35() local v115 = tbl17.bG() tbl17.cR() tbl17.gA() local v116 = tbl17.jA() tbl17.jB() local v117 = tbl17.jy() local v118 = tbl17.jC() local vector = Vector3.new(0, -0.7, 0.05) local vector2 = Vector3.new(0, -3.85, 0.05) local tbl18 = { ["\0"] = -9e37, ["\1"] = 0, ["\2"] = v86[186], ["\3"] = -1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl19 = { ["\0"] = v86[186], ["\1"] = -90000000, ["\2"] = 0, ["\3"] = -1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl20 = { ["\0"] = -9e37, ["\1"] = v86[186], ["\2"] = 0, ["\3"] = 1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl21 = { ["\0"] = 0, ["\1"] = 90000000, ["\2"] = 0, ["\3"] = 1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl22 = { ["\0"] = 0, ["\1"] = 1, ["\2"] = v86[186], ["\3"] = v86[186], ["\4"] = 0, ["\5"] = 0 } local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _partGlue = arg, _shootLock = v116.new() }, index2) end index2.Plan = function(arg, arg2, arg3, arg4, arg5, arg6) local hitboxHead = arg3.AliveState.HitboxHead local flag19 = v117(arg3.FighterState) ~= "Below" local ragebot = v115.Data.Ragebot local v119 = flag19 and vector or vector2 local v120 = arg._partGlue:Acquire(arg5, hitboxHead) local n if flag19 then n = v120 + v119 else n = v118(v120.Position + v119, hitboxHead.Position) end if not arg._shootLock:ShouldFire(arg6, arg2 * ragebot.ShootFrames) then local random2 = math.random return CFrame.new(math.random(-1000000, 1000000), math.random(5000, 10000), random2(-1000000, 1000000)), nil end local v121 = (flag19 and { tbl18 } or { tbl20 })[1] local v122 = (flag19 and { tbl19 } or { tbl21 })[v86[63]] return n, function() arg4:ShootEncoded(v121, v122, hitboxHead, tbl22) end end return index2 end tbl17.jD = function() local jd = tbl17.cache.jD if not jd then local jd2 = { c = fn35() } tbl17.cache.jD = jd2 jd = jd2 end return jd.c end end do -- jE local function fn35() tbl17.cJ() local v115 = tbl17.bG() tbl17.cS() tbl17.gA() local v116 = tbl17.jA() tbl17.jB() local v117 = tbl17.jy() local v118 = tbl17.jC() local vector = Vector3.new(0, -v86[195], 0.05) local vector2 = Vector3.new(v86[186], -3.85, 0.05) local tbl18 = { ["\0"] = -9e37, ["\1"] = 0, ["\2"] = 0, ["\3"] = -1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl19 = { ["\0"] = 0, ["\1"] = -90000000, ["\2"] = v86[186], ["\3"] = -1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl20 = { ["\0"] = -9e37, ["\1"] = 0, ["\2"] = v86[186], ["\3"] = 1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl21 = { ["\0"] = 0, ["\1"] = 90000000, ["\2"] = v86[186], ["\3"] = 1.5707963267948966, ["\4"] = 3.1415926535897931, ["\5"] = 3.1415926535897931, } local tbl22 = { ["\0"] = 0, ["\1"] = 1, ["\2"] = v86[186], ["\3"] = 0, ["\4"] = 0, ["\5"] = 0 } local function fn36() local random2 = math.random return CFrame.new(math.random(-10000000, -100000), math.random(5000, 10000), random2(-10000000, -100000)) end local function fn37(arg, arg2) return { Kind = "Normalized", Pitch = math.deg(arg), Yaw = math.deg(arg2) } end local function fn38(arg, arg2, arg3, arg4) return { ["\0"] = arg["\0"], ["\1"] = arg["\1"], ["\2"] = arg["\2"], ["\3"] = arg2, ["\4"] = arg3, ["\5"] = arg4, } end local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _partGlue = arg, _shootLock = v116.new(), _hitboxWindowUntil = -1, _attackCooldown = -1 }, index2) end index2.Plan = function(arg, arg2, arg3, arg4, gluedOurPart, arg5) local aliveState = arg3.AliveState local hitboxHead = aliveState.HitboxHead local flag19 = v117(arg3.FighterState) ~= "Below" local ragebot = v115.Data.Ragebot local v119 = flag19 and vector or vector2 local v120 = arg._partGlue:Acquire(gluedOurPart, hitboxHead) arg._gluedOurPart = gluedOurPart local n if flag19 then n = v120 + v119 else n = v118(v120.Position + v119, hitboxHead.Position) end local v121, v122, v123 = aliveState.RootPart.CFrame:ToOrientation() local n33 = flag19 and -1.5707963267948966 or 1.5707963267948966 local v124 = (flag19 and { tbl18 } or { tbl20 })[1] local v125 = (flag19 and { tbl19 } or { tbl21 })[1] local v126 = fn38(v124, n33, v122, v123) local v127 = fn38(v125, n33, v122, v123) local now2 = os.clock() if now2 < arg._hitboxWindowUntil then return n, fn37(v121, v122), function() arg4:HeavyAttackEncoded(v126, v127, hitboxHead, tbl22) end end if not arg._shootLock:ShouldFire(arg5, arg2 * ragebot.ShootFrames) then return fn36(), nil, nil end if now2 < arg._attackCooldown then return fn36(), nil, nil end if arg4.Name == "Knife" then arg:_RecordBackstab() return n, fn37(v121, v122), function() arg4:HeavyAttackEncoded(v126, v127, hitboxHead, tbl22) end end return n, nil, function() arg4:AttackEncoded(v126, v127, hitboxHead, tbl22) end end index2._RecordBackstab = function(arg) local now2 = os.clock() arg._hitboxWindowUntil = now2 + 0.625 arg._attackCooldown = now2 + 1.25 end index2.ResetState = function(arg) arg._hitboxWindowUntil = -1 arg._attackCooldown = -1 arg._shootLock:Reset() local gluedOurPart = arg._gluedOurPart if gluedOurPart ~= nil then arg._partGlue:Free(gluedOurPart) arg._gluedOurPart = nil end end return index2 end tbl17.jE = function() local je = tbl17.cache.jE if not je then local je2 = { c = fn35() } tbl17.cache.jE = je2 je = je2 end return je.c end end do -- jF local function fn35() local v115 = Random.new() return function(arg, arg2, arg3) local v116 = v115:NextNumber(0, 6.2831853071795862) local v117 = v115:NextNumber(arg2, arg3) local cframe = CFrame.new(arg + Vector3.new(math.cos(v116) * v117, 0, math.sin(v116) * v117)) local nextNumber = v115.NextNumber return cframe * CFrame.fromOrientation(v115:NextNumber(0, 6.2831853071795862), v115:NextNumber(0, 6.2831853071795862), nextNumber(v115, 0, 6.2831853071795862)) end end tbl17.jF = function() local jf = tbl17.cache.jF if not jf then jf = { c = fn35() } tbl17.cache.jF = jf end return jf.c end end do -- jG local function fn35() return function(arg, arg2) local closestPointOnSurface = arg:GetClosestPointOnSurface(arg2) local n = arg2 - closestPointOnSurface if n.Magnitude < 1e-06 then return closestPointOnSurface, nil end local n33 = arg:GetClosestPointOnSurface(arg2 + Vector3.xAxis * 0.05) - closestPointOnSurface local n34 = arg:GetClosestPointOnSurface(arg2 + Vector3.yAxis * 0.05) - closestPointOnSurface local n35 = arg:GetClosestPointOnSurface(arg2 + Vector3.zAxis * 0.05) - closestPointOnSurface local n36 = n34:Cross(n33) if n36.Magnitude < 1e-06 then n36 = n34:Cross(n35) end if n36.Magnitude < 1e-06 then n36 = n33:Cross(n35) end if n36.Magnitude < 1e-06 then return closestPointOnSurface, nil end if n36:Dot(n) < 0 then n36 = -n36 end return closestPointOnSurface, n36.Unit end end tbl17.jG = function() local jg = tbl17.cache.jG if not jg then local jg2 = { c = fn35() } tbl17.cache.jG = jg2 jg = jg2 end return jg.c end end do -- jH local function fn35() local v115 = tbl17.bG() tbl17.cF() tbl17.cX() local v116 = tbl17.k() local v117 = tbl17.jF() local v118 = tbl17.jG() local v119 = cloneref(game:GetService("CollectionService")) local v120 = Random.new() local vector = Vector3.new(5, 5, 5) local overlapParams = OverlapParams.new() overlapParams.FilterType = Enum.RaycastFilterType.Exclude overlapParams.FilterDescendantsInstances = {} overlapParams.BruteForceAllSlow = v86[34] local function fn36(arg, arg2, arg3) local unit = arg2.Unit local n = arg3.Position - arg local n33 = n - unit * n:Dot(unit) if n33.Magnitude < 0.0001 then local lookVector = arg3.CFrame.LookVector n33 = lookVector - unit * lookVector:Dot(unit) if n33.Magnitude < 0.0001 then n33 = Vector3.xAxis - unit * unit:Dot(Vector3.xAxis) end end local unit2 = n33.Unit:Cross(unit).Unit return { SurfacePosition = arg, Right = unit2, Up = unit, Forward = unit:Cross(unit2).Unit } end local function fn37(arg, arg2) local n = 6.2831853071795862 * arg2 return arg.Min + (arg.Max - arg.Min) * (math.sin(os.clock() * n) + 1) * v86[101] end local function fn38() local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker return fn37(projectileBreaker.DepthUp, projectileBreaker.DepthUpFrequency) end local function fn39() local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker return fn37(projectileBreaker.DepthForward, projectileBreaker.DepthForwardFrequency) end local function fn40(arg, arg2, arg3) return CFrame.fromMatrix(arg.SurfacePosition - arg.Up * 0.01 - arg.Up * arg2 + arg.Forward * arg3, arg.Right, arg.Up, -arg.Forward) end local function fn41(arg) return arg.Name == "Barriers" or arg:HasTag("OutOfBoundsPart") or arg:HasTag("KillBrick") end local function fn42(arg) for _, v121 in workspace:GetPartBoundsInBox(CFrame.new(arg), vector, overlapParams), nil, nil do if fn41(v121) then return true end end return false end local function fn43(arg) if arg.Transparency == 1 then return nil end local size = arg.Size if size.X * size.Y * size.Z < 64 then return nil end local n = size.Magnitude + 1000 for i = 1, v86[175] do local v121, v122 = v118(arg, arg.Position + v120:NextUnitVector() * n) if v122 == nil or v122.Y < 0.98 then continue end return fn36(v121, v122, arg) end local v121, v122 = v118(arg, arg.Position + Vector3.yAxis * n) if v122 ~= nil and v122.Y >= 0.98 then return fn36(v121, v122, arg) end return nil end local function fn44(arg) local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker local fallbackBaseRadius = projectileBreaker.FallbackBaseRadius local n = fallbackBaseRadius + fallbackBaseRadius * projectileBreaker.FallbackRadiusRandomFactor local position = arg.Position local v121 = v117(projectileBreaker.FallbackAnchorFromCharacter and position or Vector3.new(v86[186], position.Y, v86[186]), fallbackBaseRadius, n) local v122 = v120:NextInteger(v86[63], 3) local position2 = v121.Position local x = position2.X local y = position2.Y local z = position2.Z if v122 == 1 then x = 1073741824 elseif v122 == v86[56] then y = 1073741824 else z = 1073741824 end return v121 - position2 + Vector3.new(x, y, z) end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2) local ProjectileBreakerTeleport = v116.new("ragebot.ProjectileBreakerTeleport") local tbl18 = { _trove = ProjectileBreakerTeleport, _fighters = arg, _nextPositionCooldown = -v86[63], _poolEnvironmentId = nil, _pool = {}, _processedPartSet = {}, } setmetatable(tbl18, index2) ProjectileBreakerTeleport:Add(arg2:ObserveContext("ragebot.ProjectileBreakerTeleport", function(arg3, arg4) tbl18:_BindEnvironment(arg3.FighterState.EnvironmentId) arg4:Connect(arg3.FighterState.EnvironmentIdChanged, function(arg5) tbl18:_BindEnvironment(arg5) end) end)) ProjectileBreakerTeleport:Connect(arg2.ContextRemoved, function() tbl18:_BindEnvironment(nil) end) return tbl18 end index2.Destroy = function(arg) arg._trove:Destroy() end index2._BindEnvironment = function(arg, poolEnvironmentId) arg._poolEnvironmentId = poolEnvironmentId arg._pool = {} arg._processedPartSet = {} end index2.Compute = function(arg, arg2) local nextPositionCooldown = arg._nextPositionCooldown if os.clock() < nextPositionCooldown then local lastBreakSurface = arg._lastBreakSurface if lastBreakSurface ~= nil then return fn40(lastBreakSurface, fn38(), fn39()) end end if not arg:_HasProjectileThreat() then arg._lastBreakSurface = nil return fn44(arg2) end local v121 = arg:_BreakLine() if v121 ~= nil then arg._lastBreakSurface = v121 return fn40(v121, fn38(), fn39()) end return fn44(arg2) end index2._HasProjectileThreat = function(arg) for _, v121 in arg._fighters.EnemyByPlayer, nil, nil do local v122 = v121.ItemObserver:EquippedItemAsGun() if v122 ~= nil and not v122.IsRaycast and v122.Name == "Slingshot" then return true end end return false end index2._ScanBatch = function(arg, arg2) local projectileBreaker = v115.Data.Ragebot.Evasion.ProjectileBreaker local n = (projectileBreaker.DepthUp.Min + projectileBreaker.DepthUp.Max) * v86[101] local n33 = (projectileBreaker.DepthForward.Min + projectileBreaker.DepthForward.Max) * 0.5 local v121 = v86[186] local function fn45(arg3) if not arg3:IsA("BasePart") or arg._processedPartSet[arg3] then return end arg._processedPartSet[arg3] = true v121 += 1 local v122 = fn43(arg3) if v122 == nil then return end if fn42(fn40(v122, n, n33).Position) then return end table.insert(arg._pool, v122) end for _, v122 in v119:GetTagged("RaycastWhitelist" .. arg2) do if fn41(v122) then continue end fn45(v122) if v121 >= v86[83] or #arg._pool >= 30 then return end for _, v123 in v122:GetDescendants() do if fn41(v123) then continue end fn45(v123) if v121 >= 64 or #arg._pool >= v86[192] then return end end end end index2._BreakLine = function(arg) local poolEnvironmentId = arg._poolEnvironmentId if poolEnvironmentId == nil then return nil end if #arg._pool < 30 then arg:_ScanBatch(poolEnvironmentId) end if #arg._pool < 30 then return nil end local repositionInterval = v115.Data.Ragebot.Evasion.ProjectileBreaker.RepositionInterval arg._nextPositionCooldown = os.clock() + repositionInterval return arg._pool[v120:NextInteger(1, #arg._pool)] end index2.ResetState = function(arg) arg._nextPositionCooldown = -1 arg._lastBreakSurface = nil end return index2 end tbl17.jH = function() local jh = tbl17.cache.jH if not jh then jh = { c = fn35() } tbl17.cache.jH = jh end return jh.c end end do -- jI local function fn35() local v115 = tbl17.bG() local v116 = tbl17.jF() local v117 = Random.new() return { compute = function(arg) local random2 = v115.Data.Ragebot.Evasion.Random local baseRadius = random2.BaseRadius local n = baseRadius + baseRadius * random2.RadiusRandomFactor local position = arg.Position local v118 = v116(random2.AnchorFromCharacter and position or Vector3.new(0, position.Y, 0), baseRadius, n) local v119 = v117:NextInteger(v86[63], 3) local position2 = v118.Position local x = position2.X local y = position2.Y local z = position2.Z if v119 == 1 then x = 1073741824 elseif v119 == 2 then y = 1073741824 else z = 1073741824 end return v118 - position2 + Vector3.new(x, y, z) end } end tbl17.jI = function() local ji = tbl17.cache.jI if not ji then ji = { c = fn35() } tbl17.cache.jI = ji end return ji.c end end do -- jJ local function fn35() local v115 = tbl17.bG() tbl17.cF() tbl17.jB() local v116 = tbl17.k() local function fn36(arg) return math.abs(arg.X) >= 4194304 or math.abs(arg.Y) >= 4194304 or math.abs(arg.Z) >= 4194304 end local index2 = {} index2.__index = index2 index2.new = function(arg) local tbl18 = { _trove = v116.new("ragebot.SpatialLimitGate"), _measurementByFighterState = {} } setmetatable(tbl18, index2) tbl18:_Initialize(arg) return tbl18 end index2._Initialize = function(arg, arg2) arg._trove:Add(arg2:ObserveRemoteStates(function(arg3) arg._measurementByFighterState[arg3] = { ExpectedDuration = 1 } end, function(arg3) arg._measurementByFighterState[arg3] = nil end)) end index2.Tick = function(arg, arg2) local now2 = os.clock() local fighterState = arg2.FighterState local v117 = arg._measurementByFighterState[fighterState] local limitEntryTime = v117.LimitEntryTime local flag19 = fighterState.ItemObserver:GetEquippedAmmoState() ~= false if not fn36(arg2.AliveState.RootPart.Position) then if limitEntryTime ~= nil then if flag19 then v117.ExpectedDuration = now2 - limitEntryTime end v117.LimitEntryTime = nil end return false end if limitEntryTime == nil then v117.LimitEntryTime = now2 limitEntryTime = now2 end if flag19 then if v117.ExpectedDuration - v115.Data.Ragebot.Stability <= now2 - limitEntryTime then return false end end return v86[34] end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.jJ = function() local jj = tbl17.cache.jJ if not jj then jj = { c = fn35() } tbl17.cache.jJ = jj end return jj.c end end do -- jK local function fn35() local v115 = tbl17.bG() local v116 = tbl17.jF() local v117 = cloneref(game:GetService("CollectionService")) return { compute = function(arg, arg2) if not arg2 then return v116(arg.Position, 10000, 1e9) end local v118 = nil for _, v119 in v117:GetTagged("OutOfBoundsPart") do if v119:GetAttribute("KillDelay") == 0 then v118 = v119 break else v118 = nil end end if v118 == nil then return v116(arg.Position, 10000, 1e9) end return v118.CFrame * CFrame.new(0, -v118.Size.Y / 2 + v115.Data.Ragebot.Evasion.Translocate.Offset, 0) end } end tbl17.jK = function() local jk = tbl17.cache.jK if not jk then jk = { c = fn35() } tbl17.cache.jK = jk end return jk.c end end do -- jL local function fn35() local n = 1121 local v115 = Random.new() local function fn36() return v115:NextInteger(0, 65535) * 65536 + v115:NextInteger(v86[186], 65535) end local v116 = fn36() local v117 = fn36() local v118 = fn36() local v119 = fn36() local function fn37(arg, arg2) local n33 = (bit32.bxor(arg, arg2, v116) + v117) % 4294967296 local n34 = (bit32.bxor(n33, bit32.lrotate(n33, 7)) + v118) % 4294967296 local n35 = (bit32.bxor(n34, bit32.rrotate(n34, 11)) + v119) % 4294967296 return (bit32.bxor(n35, bit32.lrotate(n35, 17))) end local function fn38(arg, arg2) local n33 = arg + 400 + v86[83] return { Min = arg, Max = arg2, Cells = (arg2 - arg) / 2048, YMin = n33, YSpan = arg2 - 400 - 64 - n33 + 1, Salt = fn36(), } end local v120 = fn38(65536, 524288) local v121 = fn38(134217728, 1073741824) local function fn39(arg, arg2, arg3, arg4) local bxor = bit32.bxor local salt = arg.Salt return fn37(bit32.bxor(arg2, bit32.lshift(arg3, v86[118])), bxor(arg4, salt)) end local function fn40(arg, arg2, arg3, arg4) return fn39(arg, arg2, arg3, arg4) % n - 560 end local function fn41(arg, arg2, arg3) local n33 = arg.Min + 1024 local ySpan = arg.YSpan return Vector3.new(n33 + arg2 * 2048 + fn40(arg, arg2, arg3, 324508639), arg.YMin + fn39(arg, arg2, arg3, 826366246) % ySpan, n33 + arg3 * 2048 + fn40(arg, arg2, arg3, 610839776)) end local function fn42(arg) local n33 = arg.Cells - 1 local nextInteger = v115.NextInteger local v122 = v86[186] local v123 = fn41(arg, v115:NextInteger(0, n33), nextInteger(v115, v122, n33)) local n34 = 200 * v115:NextNumber() ^ 0.33333333333333331 local v124 = v115:NextNumber(-1, 1) local v125 = math.sqrt(1 - v124 * v124) local v126 = v115:NextNumber(0, 6.2831853071795862) return v123 + Vector3.new(n34 * v125 * math.cos(v126), n34 * v124, n34 * v125 * math.sin(v126)) end local function fn43(arg, arg2) local min = arg.Min local max = arg.Max local x = arg2.X local y = arg2.Y local z = arg2.Z if x <= min or x >= max or y <= min or y >= max or z <= min or z >= max then return false end local n33 = math.floor((x - min) / 2048) local n34 = math.floor((z - min) / 2048) return (arg2 - fn41(arg, n33, n34)).Magnitude < 400 end local function fn44(arg) local cframe = CFrame.fromOrientation local nextNumber = v115.NextNumber return CFrame.new(arg) * cframe(v115:NextNumber(-3.1415926535897931, 3.1415926535897931), v115:NextNumber(-3.1415926535897931, 3.1415926535897931), nextNumber(v115, -3.1415926535897931, 3.1415926535897931)) end return { SphereRadius = 400, isInAnyRing = function(arg) return fn43(v120, arg) or fn43(v121, arg) end, isInNormalRing = function(arg) return fn43(v120, arg) end, isInImmuneRing = function(arg) if not flag3 then return end return fn43(v121, arg) end, getNormal = function() return fn44(fn42(v120)) end, getImmune = function() return fn44(fn42(v121)) end, } end tbl17.jL = function() local jl = tbl17.cache.jL if not jl then jl = { c = fn35() } tbl17.cache.jL = jl end return jl.c end end do -- jM local function fn35() local v115 = tbl17.bG() tbl17.cU() tbl17.cX() local function fn36(arg) local index2 = arg.Index return index2 == v86[63] and "Primary" or index2 == 2 and "Secondary" or index2 == 3 and "Melee" or nil end local function fn37(arg) return v115.Data.Ragebot.Weapons.Enabled[arg] end return { getAction = function(arg) local weapons = v115.Data.Ragebot.Weapons local onEmpty = weapons.OnEmpty local huge = math.huge local huge2 = math.huge local flag19 = false local v116 = nil local v117 = nil for _, v118 in arg.ItemBehaviors:GetItems(), nil, nil do local v119 = fn36(v118) if not (v119 == nil or not fn37(v119)) then flag19 = v86[34] local huge3 = table.find(weapons.Priority, v119) or math.huge if v118.__type == "Gun" and v118:GetAmmo() == 0 then if not (v118:GetAmmoReserve() <= 0) then if huge3 < huge2 then if onEmpty == "Reload" then v116 = v118 huge = huge3 else huge2 = huge3 v117 = v118 end end end elseif v116 == nil or huge3 < huge then v116 = v118 huge = huge3 end end end if not flag19 then return nil end if v116 ~= nil then local flag20 = v116.__type == "Gun" if flag20 then local v118 = v86[186] flag20 = v116:GetAmmo() == v118 end if v116:IsEquipped() then if flag20 then return { Type = "Reload", Item = v116 } end return { Type = "Attack", Item = v116 } end return { Type = "Swap", Item = v116 } end if onEmpty == "Swap" then return nil end if v117 ~= nil then if v117:IsEquipped() then return { Type = "Reload", Item = v117 } end return { Type = "Swap", Item = v117 } end return nil end } end tbl17.jM = function() local jm = tbl17.cache.jM if not jm then jm = { c = fn35() } tbl17.cache.jM = jm end return jm.c end end do -- jN local function fn35() tbl17.cU() tbl17.jx() return function(arg) local v115 = arg:FindMeleeByName("Riot Shield") if v115 == nil then return "None" end return v115:IsEquipped() and "Equipped" or "Unequipped" end end tbl17.jN = function() local jn = tbl17.cache.jN if not jn then jn = { c = fn35() } tbl17.cache.jN = jn end return jn.c end end do -- jO local function fn35() tbl17.cJ() local v115 = tbl17.bG() local v116 = tbl17.jz() tbl17.cF() local v117 = tbl17.jD() tbl17.cU() local v118 = tbl17.c4() local v119 = tbl17.jE() tbl17.gA() tbl17.cX() tbl17.bM() local v120 = tbl17.jH() local v121 = tbl17.jI() local v122 = tbl17.cG() local v123 = tbl17.jJ() tbl17.g_() local v124 = tbl17.jB() local v125 = tbl17.jK() local v126 = tbl17.k() local v127 = tbl17.jL() local v128 = tbl17.jM() local v129 = tbl17.jN() local fallenPartsDestroyHeight = workspace.FallenPartsDestroyHeight local function fn36() return { CFrame = v127.getImmune(), ShouldSkipDefense = true } end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local ragebot = v126.new("ragebot") local v130 = ragebot:Add(v123.new(arg)) local tbl18 = { _trove = ragebot, _enabled = false, _lastTargetWorld = nil, _lastDefensiveViewAngles = nil, _playerContext = arg3, _targetSelection = v124.new(arg, arg2), _spatialLimitGate = v130, _hitscanStrategy = v117.new(arg5), _meleeStrategy = v119.new(arg5), _projectileBreakerTeleport = ragebot:Add(v120.new(arg, arg3)), _stateHook = arg4, _reloadGun = nil, _reloadReadyAt = nil, _reloadAcknowledgementDeadline = nil, _pendingDepletionAmmo = nil, } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) arg._trove:Add(arg._playerContext:ObserveContext("ragebot", function(innerContext) if not flag2 then return end arg._innerContext = innerContext arg:_ClearReloadTransport() end)) arg._trove:Connect(arg._playerContext.ContextRemoved, function() arg:_Reset() arg._innerContext = nil end) arg._trove:Add(v118:ObserveEnabledKeybind({ "Ragebot" }, function(arg2) arg:SetEnabled(arg2) arg:_Reset() end)) end index2.SetEnabled = function(arg, enabled) if arg._enabled == enabled then return end arg._enabled = enabled v112(workspace, "FallenPartsDestroyHeight", enabled and (0/0) or fallenPartsDestroyHeight) v107(v108, "DFIntS2PhysicsSenderRate", enabled and "120" or "15") v107(v108, "DFIntAssemblyHistoryBufferSize", enabled and "2147483648" or "15") v107(v108, "DFIntAssemblyHistorySkipSize", enabled and v86[18] or "8") if not enabled then arg:_ClearReloadTransport() end end index2.Update = function(arg, arg2) local innerContext = arg._innerContext if innerContext == nil then arg:_Reset() return end local fighterState = innerContext.FighterState if fighterState.EnvironmentId == nil or not arg._enabled then arg:_Reset() return end local state = fighterState.Character.State if not state.Alive then arg:_Reset() return end local characterController = innerContext.CharacterController local clientCFrame = characterController:GetClientCFrame() local mode = v115.Data.Ragebot.Evasion.Mode local v130 = v128.getAction(innerContext) if mode == "Translocate" and arg._reloadGun == nil and (v130 == nil or v130.Type ~= "Reload") then arg:_ApplyForcedCrouch(v86[153]) characterController:SetServerCFrame(v125.compute(clientCFrame, arg._targetSelection:HasTargets())) return end local target = arg._targetSelection:GetTarget() if target ~= nil then arg._lastTargetWorld = target.AliveState.RootPart.Position else arg._lastTargetWorld = nil end local v131 = arg:_Plan(arg2, v130, target, state.RootPart, clientCFrame, mode) arg:_ApplyPlan(v131, target, innerContext) local reloadGun = arg._reloadGun if reloadGun ~= nil and arg._reloadReadyAt == nil and arg._pendingDepletionAmmo == nil and not reloadGun:IsReloading() then arg._reloadReadyAt = os.clock() + v122.getEstimatedReplicationDelay() end arg:_ApplyForcedCrouch(v131.ShouldForceCrouch == true) local v132 = innerContext.ItemBehaviors:EquippedItemAsGun() local ammo = v132 ~= nil and v132:GetAmmo() or 0 local shotRequestCount = v132 ~= nil and v132.ShotRequestCount or 0 local weaponAction = v131.WeaponAction if weaponAction ~= nil then weaponAction() if v132 ~= nil and (v132 ~= nil and v132.ShotRequestCount - shotRequestCount or 0) > 0 and v132:GetExpectedAmmoAfterPendingShots() <= 0 then innerContext.CharacterController:SetServerCFrame(v127.getImmune()) local now2 = os.clock() arg._reloadGun = v132 arg._reloadReadyAt = now2 + v122.getEstimatedReplicationDelay() arg._pendingDepletionAmmo = ammo arg._reloadAcknowledgementDeadline = now2 + v122.getEstimatedRemoteDelay() + v122.getEstimatedReplicationDelay() end end end index2._Plan = function(arg, arg2, arg3, arg4, arg5, arg6, arg7) local flag19 = arg4 ~= nil and not arg._spatialLimitGate:Tick(arg4) local v130 = arg:_PlanReloadTransport(arg3) if v130 ~= nil then return v130 end if arg3 == nil then return arg:_EvadePlan(arg6, arg7) end if arg3.Type == "Swap" then local item = arg3.Item local v131 = arg:_EvadePlan(arg6, arg7) v131.WeaponAction = function() item:Equip() end return v131 end if arg3.Type == "Reload" then return fn36() end if arg4 == nil then return arg:_EvadePlan(arg6, arg7) end local item = arg3.Item if item.__type == "Gun" then if item:IsReloading() then return fn36() end local v131, v132 = arg._hitscanStrategy:Plan(arg2, arg4, item, arg5, flag19) return { CFrame = v131, WeaponAction = v132, ShouldForceCrouch = true, IsAimPose = v132 ~= nil } end if item.__type == "Melee" then local v131, v132, v133 = arg._meleeStrategy:Plan(arg2, arg4, item, arg5, flag19) return { CFrame = v131, ViewAngles = v132, WeaponAction = v133, ShouldSkipDefense = v86[34], ShouldForceCrouch = true, } end return {} end index2._ClearReloadTransport = function(arg) arg._reloadGun = nil arg._reloadReadyAt = nil arg._reloadAcknowledgementDeadline = nil arg._pendingDepletionAmmo = nil end index2._PlanReloadTransport = function(arg, arg2) local reloadGun = arg._reloadGun local now2 = os.clock() if reloadGun ~= nil then if (arg._innerContext ~= nil and arg._innerContext.ItemBehaviors:EquippedItemAsGun() or nil) ~= reloadGun or arg2 ~= nil and (arg2.Type == "Swap" or arg2.Type == "Attack") and arg2.Item ~= reloadGun then arg:_ClearReloadTransport() return nil end if reloadGun:IsReloading() then arg._reloadReadyAt = nil arg._pendingDepletionAmmo = nil arg._reloadAcknowledgementDeadline = nil return fn36() end local ammo = reloadGun:GetAmmo() if arg._pendingDepletionAmmo ~= nil then local reloadAcknowledgementDeadline = arg._reloadAcknowledgementDeadline if not (ammo <= 0 and reloadGun:GetAmmoReserve() > 0) then local flag19 = reloadAcknowledgementDeadline == nil or now2 >= reloadAcknowledgementDeadline if not flag19 then local v130 = v86[186] flag19 = reloadGun:GetExpectedAmmoAfterPendingShots() > v130 end if flag19 then arg:_ClearReloadTransport() return nil end return fn36() end arg._pendingDepletionAmmo = nil arg._reloadAcknowledgementDeadline = nil end if ammo > 0 or reloadGun:GetAmmoReserve() <= 0 then arg:_ClearReloadTransport() return nil end local reloadReadyAt = arg._reloadReadyAt if reloadReadyAt == nil then reloadReadyAt = now2 + v122.getEstimatedReplicationDelay() arg._reloadReadyAt = reloadReadyAt end local v130 = fn36() local reloadAcknowledgementDeadline = arg._reloadAcknowledgementDeadline if now2 >= reloadReadyAt and (reloadAcknowledgementDeadline == nil or now2 >= reloadAcknowledgementDeadline) then v130.WeaponAction = function() if reloadGun:Reload() then arg._reloadAcknowledgementDeadline = os.clock() + v122.getEstimatedRemoteDelay() + v122.getEstimatedReplicationDelay() end end end return v130 end if arg2 == nil or arg2.Type ~= "Reload" then return nil end arg._reloadGun = arg2.Item arg._reloadReadyAt = nil arg._reloadAcknowledgementDeadline = nil arg._pendingDepletionAmmo = nil return fn36() end index2._EvadePlan = function(arg, arg2, arg3) if arg3 == "Off" then return {} end if arg3 == "ProjectileBreaker" then return { CFrame = arg._projectileBreakerTeleport:Compute(arg2), ShouldSkipDefense = v86[34] } end return { CFrame = v121.compute(arg2) } end index2._ApplyPlan = function(arg, arg2, arg3, arg4) local characterController = arg4.CharacterController local cFrame = arg2.CFrame if cFrame == nil or arg3 == nil or arg2.ShouldSkipDefense then characterController:SetServerCFrame(cFrame) characterController:SendViewAngles(20, arg2.ViewAngles) return end local aliveState = arg3.AliveState local v130 = v129(arg4.ItemBehaviors) local v131 = v116.getDefensiveCFrame(cFrame, v130, arg3.FighterState, aliveState.RootPart) characterController:SetServerCFrame(v131) if arg2.IsAimPose or arg2.ShouldDefendInPlace then arg._lastDefensiveViewAngles = v116.getDefensiveViewAngles(v130, arg3.FighterState) end characterController:SendViewAngles(v86[9], arg2.ViewAngles or arg._lastDefensiveViewAngles) end index2.GetLastTargetWorld = function(arg) return arg._lastTargetWorld end index2._ApplyForcedCrouch = function(arg, arg2) if arg2 then arg._stateHook:SetForced("IsCrouching", true) else arg._stateHook:ClearForced("IsCrouching") end end index2._Reset = function(arg) arg:_ClearReloadTransport() arg._lastTargetWorld = nil arg._lastDefensiveViewAngles = nil arg:_ApplyForcedCrouch(false) arg._meleeStrategy:ResetState() arg._projectileBreakerTeleport:ResetState() local innerContext = arg._innerContext if innerContext == nil then return end innerContext.CharacterController:SetServerCFrame(nil) innerContext.CharacterController:SendViewAngles(20, nil) end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.jO = function() local jo = tbl17.cache.jO if not jo then jo = { c = fn35() } tbl17.cache.jO = jo end return jo.c end end do -- jP local function fn35() local v115 = tbl17.f() tbl17.a() local index2 = {} index2.__index = index2 index2.new = function(arg) return setmetatable({ _manager = v115.new({ DefaultConfig = nil, CurrentVersion = arg.CurrentVersion, LegacyVersion = arg.LegacyVersion, SavePath = arg.SavePath, Migrations = arg.Migrations, Serialize = arg.Serialize, Deserialize = arg.Deserialize, }), }, index2) end index2.Save = function(arg, arg2, arg3, arg4) arg._manager:SetData(arg3) return arg._manager:SaveToFile(arg2, arg4) end index2.Load = function(arg, arg2) return arg._manager:LoadFromFile(arg2) end index2.Delete = function(arg, arg2) return arg._manager:Delete(arg2) end index2.List = function(arg) return arg._manager:AllConfigs() end index2.Has = function(arg, arg2) return table.find(arg:List(), arg2) ~= nil end return index2 end tbl17.jP = function() local jp = tbl17.cache.jP if not jp then local jp2 = { c = fn35() } tbl17.cache.jP = jp2 jp = jp2 end return jp.c end end do -- jQ local function fn35() local tbl18 = {} local v115 = buffer.create(v86[83]) local v116 = buffer.create(256) for i = v86[186], 63 do local v117 = ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"):byte(i + 1) buffer.writeu8(v115, i, v117) buffer.writeu8(v116, v117, i) end local v117 = buffer.create(8192) local v118 = buffer.create(131072) for i = v86[186], 63 do local v119 = buffer.readu8(v115, i) for i2 = 0, 63 do local v120 = buffer.readu8(v115, i2) buffer.writeu16(v117, (i * 64 + i2) * 2, v119 + v120 * 256) buffer.writeu16(v118, (v119 + v120 * 256) * v86[56], i * v86[83] + i2) end end tbl18.encode = function(I)local W=#I;if W==0 then return"";end;local N,P=buffer.fromstring(I),math.floor((W+2)/3);I=P*4;local a=buffer.create(I);for e=0,P-2,1 do local c=bit32.rshift(bit32.byteswap(buffer.readu32(N,e*3)),8);buffer.writeu16(a,e*4,buffer.readu16( v117 ,bit32.rshift(c,12)*2));buffer.writeu16(a,e*4+2,buffer.readu16( v117 ,bit32.band(c,4095)*2));end;local e,c=W%3,I-4;if e==1 then P=buffer.readu8(N,W-1);buffer.writeu16(a,c,buffer.readu16( v117 ,bit32.lshift(P,4)*2));buffer.writeu16(a,c+2,15677);elseif e==2 then local P_181,e_182=buffer.readu8(N,W-2),buffer.readu8(N,W-1);I=bit32.bor(bit32.lshift(P_181,4),bit32.rshift(e_182,4));buffer.writeu16(a,c,buffer.readu16( v117 ,I*2));buffer.writeu8(a,c+2,buffer.readu8( v115 ,bit32.band(bit32.lshift(e_182,2),63)));buffer.writeu8(a,c+3,61);else local I_183=bit32.bor(bit32.lshift(buffer.readu8(N,W-3),16),bit32.lshift(buffer.readu8(N,W-2),8),buffer.readu8(N,W-1));buffer.writeu16(a,c,buffer.readu16( v117 ,bit32.rshift(I_183,12)*2));buffer.writeu16(a,c+2,buffer.readu16( v117 ,bit32.band(I_183,4095)*2));end;return buffer.tostring(a);end tbl18.decode = function(I)local W=#I;if W==0 then return"";end;local N,P=buffer.fromstring(I),math.floor(W/4);I=if buffer.readu8(N,W-1)==61 then 1 else 0;I=if buffer.readu8(N,W-2)==61 then I+1 else I;W=P*3-I;local a=buffer.create(W);for e=0,P-2,1 do local c=e*4;local E,p=buffer.readu16( v118 ,buffer.readu16(N,c)*2),buffer.readu16( v118 ,buffer.readu16(N,c+2)*2);W=bit32.lshift(E,12)+p;buffer.writeu8(a,e*3,bit32.rshift(W,16));buffer.writeu8(a,e*3+1,bit32.band(bit32.rshift(W,8),255));buffer.writeu8(a,e*3+2,bit32.band(W,255));end;local W_184=(P-1)*4;local e=(P-1)*3;P=bit32.bor(bit32.lshift(buffer.readu8( v116 ,buffer.readu8(N,W_184)),18),bit32.lshift(buffer.readu8( v116 ,buffer.readu8(N,W_184+1)),12),bit32.lshift(buffer.readu8( v116 ,buffer.readu8(N,W_184+2)),6),buffer.readu8( v116 ,buffer.readu8(N,W_184+3)));buffer.writeu8(a,e,bit32.rshift(P,16));if I<=1 then buffer.writeu8(a,e+1,bit32.band(bit32.rshift(P,8),255));if I==0 then buffer.writeu8(a,e+2,bit32.band(P,255));end;end;return buffer.tostring(a);end return tbl18 end tbl17.jQ = function() local jq = tbl17.cache.jQ if not jq then local jq2 = { c = fn35() } tbl17.cache.jQ = jq2 jq = jq2 end return jq.c end end do -- jR local function fn35() local v115 = tbl17.jQ() tbl17.hM() local tbl18 = {} local tbl19 = { Move = 1, Jump = 2, Crouch = 3, Slide = 4, Look = 5, ItemInput = 6, QuickAttack = v86[122], Equip = 8, } local tbl20 = {} for k, v116 in tbl19, nil, nil do tbl20[v116] = k end local function fn36(arg, arg2) local v116 = buffer.len(arg.Buf) local n = arg.Len + arg2 if n <= v116 then return end while v116 < n do v116 *= 2 end local v117 = buffer.create(v116) buffer.copy(v117, v86[186], arg.Buf, v86[186], arg.Len) arg.Buf = v117 end local function fn37(arg, arg2) fn36(arg, 1) buffer.writeu8(arg.Buf, arg.Len, arg2) arg.Len = arg.Len + 1 end local function fn38(arg, arg2) fn36(arg, v86[56]) buffer.writeu16(arg.Buf, arg.Len, arg2) arg.Len = arg.Len + 2 end local function fn39(arg, arg2) fn36(arg, 4) buffer.writeu32(arg.Buf, arg.Len, arg2) arg.Len = arg.Len + v86[26] end local function fn40(arg, arg2) fn36(arg, 4) buffer.writef32(arg.Buf, arg.Len, arg2) arg.Len = arg.Len + 4 end local function fn41(arg, arg2) local n = #arg2 fn38(arg, n) fn36(arg, n) buffer.writestring(arg.Buf, arg.Len, arg2) arg.Len = arg.Len + n end local function fn42(arg, arg2) fn40(arg, arg2.X) fn40(arg, arg2.Y) fn40(arg, arg2.Z) end local function fn43(arg, arg2) local tbl21 = { arg2:GetComponents() } for i = v86[63], v86[12] do fn40(arg, tbl21[i]) end end local function fn44(arg, arg2) fn37(arg, tbl19[arg2.Kind]) if arg2.Kind == "Move" then fn42(arg, arg2.Direction) elseif arg2.Kind == "Crouch" then fn37(arg, arg2.Crouching and v86[63] or 0) elseif arg2.Kind == "Look" then fn43(arg, arg2.CFrame) elseif arg2.Kind == "ItemInput" then fn41(arg, arg2.InputType) elseif arg2.Kind == "QuickAttack" then fn41(arg, arg2.AttackType) elseif arg2.Kind == "Equip" then fn39(arg, arg2.Index) end end local function fn45(arg) local v116 = buffer.readu8(arg.Buf, arg.Off) arg.Off = arg.Off + v86[63] return v116 end local function fn46(arg) local v116 = buffer.readu16(arg.Buf, arg.Off) arg.Off = arg.Off + 2 return v116 end local function fn47(arg) local v116 = buffer.readu32(arg.Buf, arg.Off) arg.Off = arg.Off + 4 return v116 end local function fn48(arg) local v116 = buffer.readf32(arg.Buf, arg.Off) arg.Off = arg.Off + 4 return v116 end local function fn49(arg) local v116 = fn46(arg) local v117 = buffer.readstring(arg.Buf, arg.Off, v116) arg.Off = arg.Off + v116 return v117 end local function fn50(arg) return Vector3.new(fn48(arg), fn48(arg), fn48(arg)) end local function fn51(arg) local v116 = table.create(12) for i = 1, 12 do v116[i] = fn48(arg) end return CFrame.new(table.unpack(v116)) end local function fn52(arg) local v116 = tbl20[fn45(arg)] if v116 == "Move" then return { Kind = "Move", Direction = fn50(arg) } end if v116 == "Crouch" then return { Kind = "Crouch", Crouching = fn45(arg) == 1 } end if v116 == "Look" then return { Kind = "Look", CFrame = fn51(arg) } end if v116 == "ItemInput" then return { Kind = "ItemInput", InputType = fn49(arg) } end if v116 == "QuickAttack" then return { Kind = "QuickAttack", AttackType = fn49(arg) } end if v116 == "Equip" then return { Kind = "Equip", Index = fn47(arg) } end if v116 == "Jump" then return { Kind = "Jump" } end return { Kind = "Slide" } end tbl18.encode = function(arg) local tbl21 = { Buf = buffer.create(1024), Len = 0 } fn37(tbl21, 1) fn41(tbl21, arg.MapName) fn43(tbl21, arg.StartCFrame) fn42(tbl21, arg.DisplayPosition) local startEquippedIndex = arg.StartEquippedIndex if startEquippedIndex ~= nil then fn37(tbl21, v86[63]) fn39(tbl21, startEquippedIndex) else fn37(tbl21, 0) end local startEquipCooldown = arg.StartEquipCooldown if startEquipCooldown ~= nil then fn37(tbl21, 1) fn40(tbl21, startEquipCooldown) else fn37(tbl21, 0) end local n = 0 for k in arg.LoadoutRequirementSet, nil, nil do n += 1 end fn39(tbl21, n) for k in arg.LoadoutRequirementSet, nil, nil do fn41(tbl21, k) end local keypoints = arg.Keypoints fn39(tbl21, #keypoints) for _, v116 in keypoints, nil, nil do fn40(tbl21, v116.Offset) fn44(tbl21, v116.Action) end local positions = arg.Positions fn39(tbl21, #positions) for _, v116 in positions, nil, nil do fn40(tbl21, v116.Offset) fn42(tbl21, v116.Position) end local v116 = buffer.create(tbl21.Len) buffer.copy(v116, v86[186], tbl21.Buf, v86[186], tbl21.Len) return v115.encode(buffer.tostring(v116)) end tbl18.decode = function(arg) local tbl21 = { Buf = buffer.fromstring(v115.decode(arg)), Off = 0 } local v116 = fn45(tbl21) assert(v116 == 1, string.format("unsupported recording format version %s", tostring(v116))) local v117 = fn49(tbl21) local v118 = fn51(tbl21) local v119 = fn50(tbl21) local v120 = nil if fn45(tbl21) == 1 then v120 = fn47(tbl21) end local v121 = nil if fn45(tbl21) == 1 then v121 = fn48(tbl21) end local tbl22 = {} for i = 1, fn47(tbl21) do local v122 = v86[34] tbl22[fn49(tbl21)] = v122 end local v122 = fn47(tbl21) local v123 = table.create(v122) for i = 1, v122 do v123[i] = { Offset = fn48(tbl21), Action = fn52(tbl21) } end local v124 = fn47(tbl21) local v125 = table.create(v124) for i = 1, v124 do v125[i] = { Offset = fn48(tbl21), Position = fn50(tbl21) } end return { MapName = v117, StartCFrame = v118, DisplayPosition = v119, StartEquippedIndex = v120, StartEquipCooldown = v121, LoadoutRequirementSet = tbl22, Keypoints = v123, Positions = v125, } end return tbl18 end tbl17.jR = function() local jr = tbl17.cache.jR if not jr then jr = { c = fn35() } tbl17.cache.jR = jr end return jr.c end end do -- jS local function fn35() local v115 = tbl17.jP() local v116 = tbl17.jR() local v117 = tbl17.a() local v118 = tbl17.g() tbl17.hM() local v119 = tbl17.k() local index2 = {} index2.__index = index2 index2.new = function() local v120 = v119.new() local tbl18 = { _trove = v120, _store = v115.new({ SavePath = "kiciarebuild/rivals/movement_recorder", CurrentVersion = 1, Serialize = v116.encode, Deserialize = v116.decode, }), _recordingNamesByMap = {}, _recordingByName = {}, Reloaded = v120:Add(v118.new()), } setmetatable(tbl18, index2) tbl18:Reload() return tbl18 end index2.Reload = function(arg) local recordingByName = arg._recordingByName table.clear(recordingByName) table.clear(arg._recordingNamesByMap) for _, v120 in arg._store:List(), nil, nil do local v121 = arg._store:Load(v120) if v121.Ok then local value = v121.Value value.Name = v120 recordingByName[v120] = value table.insert(arg:_GetOrCreateNamesForMap(value.MapName), v120) end end arg.Reloaded:Fire() end index2._GetOrCreateNamesForMap = function(arg, arg2) local tbl18 = arg._recordingNamesByMap[arg2] if tbl18 == nil then tbl18 = {} arg._recordingNamesByMap[arg2] = tbl18 end return tbl18 end index2.Save = function(arg, name, arg2) local v120 = arg._store:Save(name, arg2) if not v120.Ok then return v117.err("RecordedMovements", "Save", v120.Error.Detail) end local v121 = arg._recordingByName[name] if v121 == nil or v121.MapName ~= arg2.MapName then if v121 ~= nil then local v122 = arg._recordingNamesByMap[v121.MapName] table.remove(v122, table.find(v122, name)) if #v122 == 0 then arg._recordingNamesByMap[v121.MapName] = nil end end table.insert(arg:_GetOrCreateNamesForMap(arg2.MapName), name) end arg2.Name = name arg._recordingByName[name] = arg2 arg.Reloaded:Fire() return v117.VoidOk end index2.FindByName = function(arg, arg2) return arg._recordingByName[arg2] end index2.GetMaps = function(arg) local tbl18 = {} for k in arg._recordingNamesByMap, nil, nil do table.insert(tbl18, k) end table.sort(tbl18) return tbl18 end index2.GetNamesForMap = function(arg, arg2) local v120 = arg._recordingNamesByMap[arg2] if v120 == nil then return {} end local v121 = table.clone(v120) table.sort(v121) return v121 end index2.FindByMap = function(arg, arg2) local v120 = arg._recordingNamesByMap[arg2] if v120 == nil then return nil end local v121 = table.create(#v120) for _, v122 in v120, nil, nil do table.insert(v121, arg._recordingByName[v122]) end return v121 end index2.Delete = function(arg, arg2) local v120 = arg._store:Delete(arg2) if not v120.Ok then return v117.err("RecordedMovements", "Delete", v120.Error.Detail) end local v121 = arg._recordingByName[arg2] if v121 ~= nil then arg._recordingByName[arg2] = nil local v122 = arg:_GetOrCreateNamesForMap(v121.MapName) table.remove(v122, table.find(v122, arg2)) if #v122 == 0 then arg._recordingNamesByMap[v121.MapName] = nil end arg.Reloaded:Fire() end return v117.VoidOk end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.jS = function() local js = tbl17.cache.jS if not js then js = { c = fn35() } tbl17.cache.jS = js end return js.c end end do -- jT local function fn35() local v115 = tbl17.ad() tbl17.aM() tbl17.aO() local v116 = tbl17.a() local v117 = tbl17.b2() local quickAttackFunction = tbl17.aS().QuickAttackFunction local v118 = cloneref(game:GetService("ReplicatedStorage")) local index2 = {} index2.__index = index2 local function fn36(arg) return { Remotes = { Replication = { Fighter = { RegisterQuickAttack = { InvokeServer = function(arg2, arg3, ...) arg(arg3) local v119 = quickAttackFunction local invokeServer = v119.InvokeServer local v120 = table.pack(...) v120.n = 3 + v120.n - 1 table.move(v120, 1, v120.n, 3, v120) v120[1] = v119 v120[2] = arg3 return invokeServer(table.unpack(v120, 1, v120.n)) end }, }, }, }, } end index2.new = function(arg, arg2) local tbl18 = { _errorReporter = v115.new(), _restore = nil } setmetatable(tbl18, index2) tbl18._errorReporter:ReportResult(tbl18:_Install(arg, arg2)) return tbl18 end index2._Install = function(arg, arg2, arg3) for _, v119 in debug.getupvalues(arg2.QuickAttack) do if type(v119) ~= "table" then continue end for k, v120 in v119, nil, nil do if typeof(v120) ~= "Instance" or not v117(v120, v118) then continue end arg._restore = { Bundle = v119, Key = k, Original = v120 } v119[k] = fn36(arg3) return v116.VoidOk end end return v116.err("QuickAttackHook", "upvalue_scan", "Failed to find ReplicatedStorage upvalue") end index2.Destroy = function(arg) local restore = arg._restore if restore ~= nil then arg._restore = nil restore.Bundle[restore.Key] = restore.Original end arg._errorReporter:Destroy() end return index2 end tbl17.jT = function() local jt = tbl17.cache.jT if not jt then local jt2 = { c = fn35() } tbl17.cache.jT = jt2 jt = jt2 end return jt.c end end do -- jU local function fn35() local v115 = tbl17.cp() tbl17.cr() tbl17.aM() tbl17.dm() tbl17.cU() tbl17.aO() local v116 = tbl17.jT() tbl17.hM() local v117 = tbl17.b3() local inputLibrary = tbl17.aS().InputLibrary local mechanicsController = tbl17.aS().MechanicsController local playerModule = tbl17.aS().PlayerModule local v118 = cloneref(game:GetService("UserInputService")) local function fn36() local v119 = v117(playerModule.GetControls, playerModule) return v117(v119.GetMoveVector, v119) end local function fn37() local currentCamera = workspace.CurrentCamera local n = currentCamera.ViewportSize / v86[56] local v119 = currentCamera:ViewportPointToRay(n.X, n.Y) return v119.Origin + v119.Direction * 100 end local function fn38(arg, arg2) return arg * CFrame.fromOrientation(arg2.X, arg2.Y, 0) end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5, arg6) local v119 = arg2:Inverse() local v120 = v115.get() local equipped = arg5:GetEquipped() local index3 = equipped and equipped.Index local n = nil if equipped ~= nil then local v121 = v102(equipped.Inner, "_equip_cooldown") n = nil if type(v121) == "number" then n = math.max(v86[186], v121 - tick()) end end local tbl18 = { _anchorInverse = v119, _rootPart = arg3.RootPart, _itemBehaviors = arg5, _inputBinding = arg6, _quickAttackHook = nil, _jumpConnection = nil, _lastMoveVector = Vector3.zero, _lastCameraRotation = v120, _lastEquippedIndex = index3, _startItemIndex = index3, _startItemUsed = false, _lastCrouching = false, _lastSliding = false, _lastPositionSampleTime = 0, _recording = { MapName = arg, DisplayPosition = v119 * fn37(), StartCFrame = v119 * arg3.RootPart.CFrame, Keypoints = { { Offset = 0, Action = { Kind = "Look", CFrame = fn38(v119, v120) } } }, LoadoutRequirementSet = {}, StartEquippedIndex = index3, StartEquipCooldown = n, Positions = {}, }, } setmetatable(tbl18, index2) tbl18._quickAttackHook = v116.new(arg4, function(arg7) tbl18:_Record({ Kind = "QuickAttack", AttackType = arg7 }) end) tbl18._jumpConnection = v118.InputBegan:Connect(function(input, gameProcessed) if not gameProcessed and v117(inputLibrary.InputIs, inputLibrary, input, "Jump") then tbl18:_Record({ Kind = "Jump" }) end end) arg6:SetHandler(function(arg7) tbl18:_RecordItemInput(arg7) end) arg6:SetEnabled(true) return tbl18 end index2.Update = function(arg) arg:_SampleMoveVector() arg:_SampleCamera() arg:_SampleEquipped() arg:_SampleCrouch() arg:_SampleSlide() arg:_SamplePosition() end index2._SamplePosition = function(arg) if arg._startTime == nil then return end local now2 = os.clock() if now2 - arg._lastPositionSampleTime < 0.1 then return end arg._lastPositionSampleTime = now2 table.insert(arg._recording.Positions, { Offset = arg:_GetOffset(), Position = arg._anchorInverse * arg._rootPart.Position }) end index2._SampleMoveVector = function(arg) local v119 = fn36() if v119 == arg._lastMoveVector then return end arg._lastMoveVector = v119 arg:_Record({ Kind = "Move", Direction = v119 }) end index2._SampleCrouch = function(arg) local lastCrouching = v102(mechanicsController, "IsCrouching") == true if lastCrouching == arg._lastCrouching then return end arg._lastCrouching = lastCrouching arg:_Record({ Kind = "Crouch", Crouching = lastCrouching }) end index2._SampleSlide = function(arg) local lastSliding = v102(mechanicsController, "IsSliding") == true if lastSliding == arg._lastSliding then return end arg._lastSliding = lastSliding if lastSliding then arg:_Record({ Kind = "Slide" }) end end index2._DiscardUnusedStartItem = function(arg) if not (arg._startItemUsed or arg._recording.StartEquippedIndex == nil) then arg._recording.StartEquippedIndex = nil arg._recording.StartEquipCooldown = nil return end if true then return end -- (anti-tamper freeze trap removed) end index2._SampleEquipped = function(arg) local equipped = arg._itemBehaviors:GetEquipped() equipped = equipped and equipped.Index if equipped == arg._lastEquippedIndex then return end arg._lastEquippedIndex = equipped arg:_DiscardUnusedStartItem() if equipped ~= nil then arg:_Record({ Kind = "Equip", Index = equipped }) end end index2._RecordItemInput = function(arg, arg2) local v119 = arg._itemBehaviors:FindByObjectId(arg2.ObjectId) if v119 ~= nil then arg._recording.LoadoutRequirementSet[v119.Name] = true if v119.Index == arg._startItemIndex then arg._startItemUsed = v86[34] end end arg:_Record({ Kind = "ItemInput", InputType = arg2.Type }) end index2._SampleCamera = function(arg) local v119 = v115.get() if arg._lastCameraRotation:FuzzyEq(v119) then return end arg._lastCameraRotation = v119 arg:_Record({ Kind = "Look", CFrame = fn38(arg._anchorInverse, v119) }) end index2._GetOffset = function(arg) local now2 = os.clock() local startTime = arg._startTime or now2 arg._startTime = startTime return now2 - startTime end index2._Record = function(arg, arg2) table.insert(arg._recording.Keypoints, { Offset = arg:_GetOffset(), Action = arg2 }) end index2.GetRecording = function(arg) arg:_DiscardUnusedStartItem() return arg._recording end index2.Destroy = function(arg) arg._inputBinding:Destroy() arg._quickAttackHook:Destroy() arg._jumpConnection:Disconnect() end return index2 end tbl17.jU = function() local ju = tbl17.cache.jU if not ju then local ju2 = { c = fn35() } tbl17.cache.jU = ju2 ju = ju2 end return ju.c end end do -- jV local function fn35() local v115 = tbl17.b3() local playerModule = tbl17.aS().PlayerModule local index2 = {} index2.__index = index2 index2.new = function() local v116 = v102(v115(playerModule.GetControls, playerModule), "activeController") assert(v116 ~= nil, "no active controller to hook") local tbl18 = { _controller = v116, _moveVector = Vector3.zero } setmetatable(tbl18, index2) tbl18:_Initialize() return tbl18 end index2._Initialize = function(arg) v103(arg._controller, "GetMoveVector", function() return arg._moveVector end) end index2.SetMoveVector = function(arg, moveVector) arg._moveVector = moveVector end index2.Destroy = function(arg) v103(arg._controller, "GetMoveVector", nil) end return index2 end tbl17.jV = function() local jv = tbl17.cache.jV if not jv then local jv2 = { c = fn35() } tbl17.cache.jV = jv2 jv = jv2 end return jv.c end end do -- jW local function fn35() local v115 = tbl17.co() local v116 = tbl17.cp() tbl17.cr() local v117 = tbl17.bG() tbl17.aM() tbl17.cU() tbl17.aO() local v118 = tbl17.jV() tbl17.hM() local v119 = tbl17.b3() local mechanicsController = tbl17.aS().MechanicsController local index2 = {} index2.__index = index2 local function fn36(arg) local cFrame = workspace.CurrentCamera.CFrame local vector = Vector3.new(cFrame.LookVector.X, 0, cFrame.LookVector.Z) if vector.Magnitude < 0.0001 then return Vector3.zero end local unit = vector.Unit local v120 = v86[186] return Vector3.new(arg:Dot(Vector3.new(cFrame.RightVector.X, 0, cFrame.RightVector.Z).Unit), v120, -arg:Dot(unit)) end local function fn37(arg, arg2, arg3) return Vector2.new(arg.X + (arg2.X - arg.X) * arg3, arg.Y + ((arg2.Y - arg.Y + 3.1415926535897931) % math.tau - 3.1415926535897931) * arg3) end local function fn38(arg, arg2, arg3, arg4) local vector2 = Vector2.new(arg2.X - arg.X, (arg2.Y - arg.Y + 3.1415926535897931) % math.tau - 3.1415926535897931) local magnitude = vector2.Magnitude if magnitude <= 0.0017453292519943296 then return arg2, true end return arg + vector2.Unit * math.min(magnitude * arg3, arg4), false end local function fn39(arg, arg2) return 1 - math.exp(-arg / arg2) end local function fn40(arg) return fn39(arg, v117.Data.Movement.MovementRecorder.LookSmoothing / 100 * 0.3) end local function fn41(arg, arg2) for _, v120 in arg2, nil, nil do local action = v120.Action if action.Kind == "Look" then local v121, v122 = (arg * action.CFrame):ToOrientation() return Vector2.new(v121, v122) end end return nil end index2.new = function(arg, arg2, arg3, arg4, arg5, arg6, arg7) v115.claim("MovementRecorder.Replay", v86[91]) local startEquippedIndex = arg5.StartEquippedIndex if startEquippedIndex ~= nil then task.spawn(v119, arg2.EquipItem, arg2, startEquippedIndex) end return setmetatable({ _aliveState = arg, _clientFighter = arg2, _itemBehaviors = arg3, _startEquippedIndex = startEquippedIndex, _mapAnchor = arg4, _startCFrame = arg5.StartCFrame, _keypoints = arg5.Keypoints, _positions = arg5.Positions, _positionIndex = v86[63], _finishedCallback = arg7, _moveHook = v118.new(), _isRoundActive = arg6, _startLookRotation = fn41(arg4, arg5.Keypoints), _lookRotation = nil, _state = { Kind = "Aligning", Elapsed = 0, StuckTime = 0, BestDistance = math.huge }, _finished = false, }, index2) end index2._StepAlign = function(arg, arg2, arg3) local startLookRotation = arg._startLookRotation local flag19 = true if startLookRotation ~= nil then local v120 = v116.get() local n = math.rad(v117.Data.Movement.MovementRecorder.LookAlignSpeed) * arg3 local v121 v121, flag19 = fn38(v120, startLookRotation, fn40(arg3), n) v116.set(v121) end if not arg._isRoundActive() then arg._moveHook:SetMoveVector(Vector3.zero) return false end arg2.Elapsed = arg2.Elapsed + arg3 local n = (arg._mapAnchor * arg._startCFrame).Position - arg._aliveState.RootPart.Position local vector = Vector3.new(n.X, 0, n.Z) local magnitude = vector.Magnitude local flag20 = magnitude <= v117.Data.Movement.MovementRecorder.AlignSnapDistance if flag20 then arg._moveHook:SetMoveVector(Vector3.zero) else arg._moveHook:SetMoveVector(fn36(vector.Unit)) end if magnitude < arg2.BestDistance - v86[62] then arg2.BestDistance = magnitude arg2.StuckTime = v86[186] else arg2.StuckTime = arg2.StuckTime + arg3 end if not (flag20 and flag19 or arg2.StuckTime >= v86[63]) then return false end arg._moveHook:SetMoveVector(Vector3.zero) return arg:_IsStartItemReady() or arg2.Elapsed >= 3 end index2._IsStartItemReady = function(arg) if arg._startEquippedIndex == nil then return v86[34] end local equipped = arg._itemBehaviors:GetEquipped() if equipped == nil or equipped.Index ~= arg._startEquippedIndex then return v86[153] end local v120 = v102(equipped.Inner, "_equip_cooldown") return type(v120) ~= "number" or tick() >= v120 end index2.Update = function(arg, arg2) local state = arg._state if state.Kind == "Aligning" then if not arg:_StepAlign(state, arg2) then return end arg._state = { Kind = "Playing", Offset = v86[186], KeypointIndex = 1 } end local state2 = arg._state if state2.Kind ~= "Playing" then return end state2.Offset = state2.Offset + arg2 if arg:_HasDiverged(state2.Offset) then arg._finished = v86[34] arg._finishedCallback("Diverged") return end local keypoints = arg._keypoints while state2.KeypointIndex <= #keypoints do local v120 = keypoints[state2.KeypointIndex] if not (state2.Offset < v120.Offset) then local action = v120.Action if action.Kind == "Move" then arg._moveHook:SetMoveVector(action.Direction) elseif action.Kind == "Look" then local v121, v122 = (arg._mapAnchor * action.CFrame):ToOrientation() arg._lookRotation = Vector2.new(v121, v122) elseif action.Kind == "Equip" then task.spawn(v119, arg._clientFighter.EquipItem, arg._clientFighter, action.Index) elseif action.Kind == "ItemInput" then task.spawn(v119, arg._clientFighter.Input, arg._clientFighter, action.InputType) elseif action.Kind == "QuickAttack" then task.spawn(v119, arg._clientFighter.QuickAttack, arg._clientFighter, action.AttackType) elseif action.Kind == "Jump" then if v102(mechanicsController, "IsSliding") == true then v119(mechanicsController.HighJump, mechanicsController) else v119(mechanicsController.DoubleJumpRequest, mechanicsController) v119(mechanicsController.JumpRequest, mechanicsController) end elseif action.Kind == "Crouch" then v119(mechanicsController.SetCrouching, mechanicsController, action.Crouching) elseif action.Kind == "Slide" then task.spawn(v119, mechanicsController.Slide, mechanicsController) end state2.KeypointIndex = state2.KeypointIndex + 1 continue end break end if arg._lookRotation ~= nil then local lookRotation = arg._lookRotation v116.set(fn37(v116.get(), lookRotation, fn40(arg2))) end if not arg._finished and state2.KeypointIndex > #keypoints then arg._finished = true arg._finishedCallback("Completed") end end index2._HasDiverged = function(arg, arg2) local positions = arg._positions if #positions == 0 then return false end while arg._positionIndex < #positions and positions[arg._positionIndex + v86[63]].Offset <= arg2 do arg._positionIndex = arg._positionIndex + v86[63] end local v120 = positions[arg._positionIndex] local v121 = positions[arg._positionIndex + 1] local position if v121 == nil then position = v120.Position else local n = v121.Offset - v120.Offset position = v120.Position:Lerp(v121.Position, n > 0 and math.clamp((arg2 - v120.Offset) / n, v86[186], 1) or 0) end return (arg._mapAnchor:PointToWorldSpace(position) - arg._aliveState.RootPart.Position).Magnitude > 15 end index2.Destroy = function(arg) v115.release("MovementRecorder.Replay") arg._moveHook:Destroy() v119(mechanicsController.SetCrouching, mechanicsController, false) end return index2 end tbl17.jW = function() local jw = tbl17.cache.jW if not jw then local jw2 = { c = fn35() } tbl17.cache.jW = jw2 jw = jw2 end return jw.c end end do -- jX local function fn35() local v115 = tbl17.A() tbl17.hM() local v116 = tbl17.k() local v117 = cloneref(game:GetService("TextService")) local font = Font.new("rbxassetid://12187365364", Enum.FontWeight.SemiBold, Enum.FontStyle.Normal) local v118 = v86[63] local index2 = {} index2.__index = index2 local function fn36(arg) return v117:GetTextSize(arg, v86[149], Enum.Font.GothamMedium, Vector2.new(10000, 24)).X end local function createTextLabel(parent, arg, layoutOrder, arg2, text) local textLabel = Instance.new("TextLabel") textLabel.LayoutOrder = layoutOrder textLabel.BackgroundTransparency = 1 textLabel.FontFace = font textLabel.TextSize = 15 textLabel.Text = text textLabel.TextXAlignment = Enum.TextXAlignment.Center textLabel.TextYAlignment = Enum.TextYAlignment.Center textLabel.Size = UDim2.new(0, math.ceil(fn36(text)) + 2, 1, 0) arg:Bind(textLabel, v86[167], arg2) textLabel.Parent = parent local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, v86[56]) uiPadding.Parent = textLabel return textLabel end local function fn37(arg, arg2, arg3) local billboardGui = Instance.new("BillboardGui") billboardGui.Name = "Marker" billboardGui.AlwaysOnTop = v86[34] billboardGui.LightInfluence = 0 billboardGui.MaxDistance = math.huge local frame = Instance.new("Frame") frame.Size = UDim2.fromScale(1, 1) frame.BackgroundTransparency = 0.25 frame.BorderSizePixel = v86[186] arg:Bind(frame, "BackgroundColor3", "ElementBackground") frame.Parent = billboardGui local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, v86[54]) uiCorner.Parent = frame local instance = Instance.new(v86[113]) instance.PaddingLeft = UDim.new(0, 9) instance.PaddingRight = UDim.new(0, 9) instance.Parent = frame local instance2 = Instance.new(v86[4]) instance2.FillDirection = Enum.FillDirection.Horizontal instance2.HorizontalAlignment = Enum.HorizontalAlignment.Center instance2.VerticalAlignment = Enum.VerticalAlignment.Center instance2.SortOrder = Enum.SortOrder.LayoutOrder instance2.Padding = UDim.new(0, 6) instance2.Parent = frame local imageLabel = Instance.new("ImageLabel") imageLabel.LayoutOrder = 1 imageLabel.BackgroundTransparency = 1 imageLabel.Size = UDim2.fromOffset(14, 14) imageLabel.Image = "rbxassetid://137091405832737" imageLabel.ScaleType = Enum.ScaleType.Fit arg:Bind(imageLabel, "ImageColor3", "Accent") imageLabel.Parent = frame local textColor = createTextLabel(frame, arg, v86[56], "TextColor", tostring(arg2)) local instance3 = Instance.new(v86[128]) instance3.LayoutOrder = v86[155] instance3.Size = UDim2.fromOffset(v118, 12) instance3.BorderSizePixel = 0 arg:Bind(instance3, "BackgroundColor3", v86[96]) instance3.Parent = frame local v119 = createTextLabel(frame, arg, v86[26], v86[96], arg3) local n = 29 + textColor.Size.X.Offset + v86[54] + v118 + v86[54] + 9 local v120 = nil local function fn38(text) if text == v120 then return end v120 = text local n33 = math.ceil(fn36(text)) + 2 v119.Size = UDim2.new(0, n33, v86[63], v86[186]) v119.Text = text billboardGui.Size = UDim2.fromOffset(n + n33, v86[61]) end fn38(arg3) return billboardGui, fn38 end local function fn38(arg) local v119 = math.ceil(arg) if v119 > 999 then return "999m+" end return v119 .. "m" end index2.new = function(arg, arg2) return setmetatable({ Position = arg, Recordings = arg2, _trove = v116.new(), _billboard = nil, _setDistance = nil }, index2) end index2._Build = function(arg) local trove = arg._trove local v119 = v115.newBatch(trove) local v120 = trove:Add(Instance.new("Attachment")) v120.WorldPosition = arg.Position v120.Parent = workspace.Terrain local v121, v122 = fn37(v119, #arg.Recordings, "0m") v121.Adornee = v120 trove:Add(v121) v121.Parent = K.hudParent() arg._billboard = v121 arg._setDistance = v122 return v121 end index2.Show = function(arg) (arg._billboard or arg:_Build()).Enabled = v86[34] end index2.Hide = function(arg) local billboard = arg._billboard if billboard ~= nil then billboard.Enabled = false end end index2.SetDistance = function(arg, arg2) local setDistance = arg._setDistance if setDistance ~= nil then setDistance(fn38(arg2)) end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.jX = function() local jx = tbl17.cache.jX if not jx then jx = { c = fn35() } tbl17.cache.jX = jx end return jx.c end end do -- jY local function fn35() local v115 = tbl17.A() tbl17.hM() local v116 = tbl17.k() local v117 = cloneref(game:GetService("TextService")) local font = Font.new("rbxassetid://12187365364", Enum.FontWeight.SemiBold, Enum.FontStyle.Normal) local n = 1 local index2 = {} index2.__index = index2 local function fn36(arg) return v117:GetTextSize(arg, 15, Enum.Font.GothamMedium, Vector2.new(10000, 24)).X end local function createTextLabel(parent, layoutOrder, text) local textLabel = Instance.new("TextLabel") textLabel.LayoutOrder = layoutOrder textLabel.BackgroundTransparency = 1 textLabel.FontFace = font textLabel.TextSize = 15 textLabel.Text = text textLabel.TextColor3 = v115.get(v86[174]) textLabel.TextXAlignment = Enum.TextXAlignment.Center textLabel.TextYAlignment = Enum.TextYAlignment.Center local v118 = v86[56] local v119 = v86[63] textLabel.Size = UDim2.new(0, math.ceil(fn36(text)) + v118, v119, 0) textLabel.Parent = parent local uiPadding = Instance.new("UIPadding") uiPadding.PaddingBottom = UDim.new(0, 2) uiPadding.Parent = textLabel return textLabel end local function fn37(arg, arg2) local billboardGui = Instance.new("BillboardGui") billboardGui.Name = "Route" billboardGui.AlwaysOnTop = true billboardGui.LightInfluence = 0 billboardGui.MaxDistance = math.huge local frame = Instance.new("Frame") frame.Size = UDim2.fromScale(v86[63], 1) frame.BackgroundTransparency = 0.25 frame.BorderSizePixel = 0 arg:Bind(frame, "BackgroundColor3", "ElementBackground") frame.Parent = billboardGui local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(v86[186], 6) uiCorner.Parent = frame local uiPadding = Instance.new("UIPadding") uiPadding.PaddingLeft = UDim.new(0, 9) uiPadding.PaddingRight = UDim.new(0, v86[170]) uiPadding.Parent = frame local instance = Instance.new(v86[4]) instance.FillDirection = Enum.FillDirection.Horizontal instance.HorizontalAlignment = Enum.HorizontalAlignment.Center instance.VerticalAlignment = Enum.VerticalAlignment.Center instance.SortOrder = Enum.SortOrder.LayoutOrder instance.Padding = UDim.new(v86[186], v86[54]) instance.Parent = frame local instance2 = Instance.new(v86[146]) instance2.LayoutOrder = 1 instance2.BackgroundTransparency = 1 instance2.Size = UDim2.fromOffset(14, 14) instance2.Image = "rbxassetid://121091323240554" instance2.ScaleType = Enum.ScaleType.Fit arg:Bind(instance2, "ImageColor3", "Accent") instance2.Parent = frame local instance3 = Instance.new(v86[128]) instance3.LayoutOrder = 2 instance3.Size = UDim2.fromOffset(1, 12) instance3.BorderSizePixel = v86[186] arg:Bind(instance3, "BackgroundColor3", "Unselected") instance3.Parent = frame local v118 = createTextLabel(frame, 3, arg2) billboardGui.Size = UDim2.fromOffset(29 + n + 6 + v118.Size.X.Offset + 9, 24) return billboardGui, v118 end index2.new = function(arg, arg2) return setmetatable({ _trove = v116.new(), Recording = arg2, _build = { Ready = false }, Position = arg * arg2.DisplayPosition, _activated = false, _selected = false, Unfulfillable = v86[153], }, index2) end index2._Build = function(arg) local trove = arg._trove local v118 = v115.newBatch(trove) local v119 = trove:Add(Instance.new("Attachment")) v119.WorldPosition = arg.Position v119.Parent = workspace.Terrain local v120, v121 = fn37(v118, arg.Recording.Name) v120.Adornee = v119 trove:Add(v120) v120.Parent = K.hudParent() return { Ready = v86[34], Billboard = v120, Title = v121 } end index2.Show = function(arg) local build = arg._build if not build.Ready then build = arg:_Build() arg._build = build end build.Billboard.Enabled = true local color if arg._activated then color = Color3.new(0, 1, 0) elseif arg.Unfulfillable then color = Color3.new(1, 0, 0) elseif arg._selected then color = Color3.new(1, 1, 0) else color = v115.get("TextColor") end build.Title.TextColor3 = color end index2.SetActivated = function(arg, activated) arg._activated = activated end index2.SetUnfulfillable = function(arg, unfulfillable) arg.Unfulfillable = unfulfillable end index2.SetSelected = function(arg, selected) arg._selected = selected end index2.Hide = function(arg) local build = arg._build if build.Ready then build.Billboard.Enabled = false end end index2.Destroy = function(arg) arg._trove:Destroy() end return index2 end tbl17.jY = function() local jy = tbl17.cache.jY if not jy then local jy2 = { c = fn35() } tbl17.cache.jY = jy2 jy = jy2 end return jy.c end end do -- jZ local function fn35() local v115 = tbl17.bG() tbl17.dr() local v116 = tbl17.jX() tbl17.cX() tbl17.jS() local v117 = tbl17.jY() tbl17.hM() local v118 = tbl17.k() local index2 = {} index2.__index = index2 local function fn36(arg, arg2) for k in arg.LoadoutRequirementSet, nil, nil do if not arg2[k] then return false end end return true end index2.new = function(arg, arg2, arg3, arg4) local v119 = v118.new() local tbl18 = { _trove = v119, _playerContext = arg2, _mapAnchor = arg4, _markers = {}, _routesByRecording = {} } setmetatable(tbl18, index2) local function fn37() tbl18:_Rebuild(arg:FindByMap(arg3)) end v119:Connect(arg.Reloaded, fn37) fn37() v119:Add(arg2:ObserveContext("movement_recorder.Waypoints", function(arg5, arg6) local itemBehaviors = arg5.ItemBehaviors arg6:Connect(itemBehaviors.ItemAdded, function() tbl18:_RefreshFulfillability() end) arg6:Connect(itemBehaviors.ItemRemoved, function() tbl18:_RefreshFulfillability() end) tbl18:_RefreshFulfillability() end)) v119:Connect(arg2.ContextRemoved, function() tbl18:_RefreshFulfillability() end) return tbl18 end index2._RefreshFulfillability = function(arg) local tbl18 = {} local inner = arg._playerContext.Inner if inner ~= nil then for _, v119 in inner.ItemBehaviors:GetItems() do tbl18[v119.Name] = true end end for k, v119 in arg._routesByRecording, nil, nil do v119:SetUnfulfillable(not fn36(k, tbl18)) end end index2._Clear = function(arg) for _, v119 in arg._markers, nil, nil do v119:Destroy() end table.clear(arg._markers) for _, v119 in arg._routesByRecording, nil, nil do v119:Destroy() end table.clear(arg._routesByRecording) end index2._Rebuild = function(arg, arg2) arg:_Clear() if arg2 == nil then return end local tbl18 = {} for _, v119 in arg2, nil, nil do local position = v119.StartCFrame.Position local str7 = math.floor(position.X / 8) .. "," .. math.floor(position.Y / 8) .. "," .. math.floor(position.Z / v86[162]) local tbl19 = tbl18[str7] if tbl19 == nil then tbl19 = {} tbl18[str7] = tbl19 end table.insert(tbl19, v119) end local mapAnchor = arg._mapAnchor for _, v119 in tbl18, nil, nil do local vector = Vector3.zero for _, v120 in v119, nil, nil do vector += v120.StartCFrame.Position arg._routesByRecording[v120] = v117.new(mapAnchor, v120) end table.insert(arg._markers, v116.new(mapAnchor:PointToWorldSpace(vector / #v119), v119)) end arg:_RefreshFulfillability() end index2.GetSelectedRecording = function(arg) local selectedRoute = arg._selectedRoute return selectedRoute ~= nil and selectedRoute.Recording or nil end index2.SetActivatedRecording = function(arg, arg2) local activatedRoute = arg._activatedRoute if activatedRoute ~= nil then activatedRoute:SetActivated(v86[153]) end if arg2 ~= nil then local v119 = arg._routesByRecording[arg2] v119:SetActivated(true) arg._activatedRoute = v119 else arg._activatedRoute = nil end end index2.Update = function(arg) if true then for _, v119 in arg._markers, nil, nil do v119:Hide() end for _, v119 in arg._routesByRecording, nil, nil do v119:Hide() end local inner = arg._playerContext.Inner if inner == nil then return end local clientCFrame = inner.CharacterController:GetClientCFrame() if clientCFrame == nil then return end local position = clientCFrame.Position local hideUI = v115.Data.Movement.MovementRecorder.HideUI local activatedRoute = arg._activatedRoute if activatedRoute ~= nil then if not hideUI then activatedRoute:Show() end return end local v119 = arg:_GetMarkerInProximity(position) if v119 ~= nil then local recordings = v119.Recordings local v120 = arg:_ComputeSelectedRoute(recordings) if v120 ~= arg._selectedRoute then arg:_ClearSelectedRoute() if v120 ~= nil then arg._selectedRoute = v120 v120:SetSelected(true) end end arg:_ForEachRoute(recordings, function(arg2) if not hideUI then arg2:Show() end end) return end arg:_ClearSelectedRoute() if not hideUI then local renderDistance = v115.Data.Movement.MovementRecorder.RenderDistance for _, v120 in arg._markers, nil, nil do local magnitude = (v120.Position - position).Magnitude if magnitude < renderDistance then v120:Show() v120:SetDistance(magnitude) end end end return end -- (anti-tamper freeze trap removed) end index2._ForEachRoute = function(arg, arg2, arg3) for _, v119 in arg2, nil, nil do arg3(arg._routesByRecording[v119]) end end index2._GetMarkerInProximity = function(arg, arg2) local openDistance = v115.Data.Movement.MovementRecorder.OpenDistance local huge = math.huge local v119 = nil for _, v120 in arg._markers, nil, nil do local magnitude = (v120.Position - arg2).Magnitude if magnitude < openDistance and magnitude < huge then huge = magnitude v119 = v120 end end return v119 end index2._ComputeSelectedRoute = function(arg, arg2) local currentCamera = workspace.CurrentCamera local huge = math.huge local v119 = nil for _, v120 in arg2, nil, nil do local v121 = arg._routesByRecording[v120] if not v121.Unfulfillable then local v122 = currentCamera:WorldToViewportPoint(v121.Position) if not (v122.Z < 0) then local n = currentCamera.ViewportSize / 2 local magnitude = (Vector2.new(v122.X, v122.Y) - n).Magnitude if magnitude < huge then huge = magnitude v119 = v121 end end end end return v119 end index2._ClearSelectedRoute = function(arg) local selectedRoute = arg._selectedRoute if selectedRoute ~= nil then arg._selectedRoute = nil selectedRoute:SetSelected(false) end end index2.Destroy = function(arg) arg._trove:Destroy() arg:_Clear() end return index2 end tbl17.jZ = function() local jz = tbl17.cache.jZ if not jz then local jz2 = { c = fn35() } tbl17.cache.jZ = jz2 jz = jz2 end return jz.c end end do -- j_ local function fn35() tbl17.cr() local v115 = tbl17.bG() tbl17.e4() tbl17.dr() local v116 = tbl17.cK() tbl17.dm() local v117 = tbl17.aB() tbl17.cX() local v118 = tbl17.jS() local v119 = tbl17.jU() local v120 = tbl17.jW() tbl17.dv() tbl17.g() tbl17.hM() local v121 = tbl17.k() local v122 = tbl17.jZ() local tbl18 = { "Movement", "MovementRecorder", "Record", "Keybind", "State" } local tbl19 = { "Movement", "MovementRecorder", "Replay", "Keybind", "State" } local function fn36(arg, arg2) if not v115.Data.Movement.MovementRecorder.HideNotifications then v117.get():Notify(arg, arg2) end end local index2 = {} index2.__index = index2 index2.new = function(arg, arg2, arg3, arg4, arg5) local movementRecorder = v121.new("movement_recorder") local v123 = v118.new() local tbl20 = { _trove = movementRecorder, _playerContext = arg, _duelers = arg2, _currentMap = arg3, _persistence = v123, _inputHook = arg4, _state = { Kind = "Idle" }, _waypoints = nil, _lastRecording = nil, _aliveState = nil, _replicateBinding = arg5, _roundActive = v86[153], _pendingStart = nil, RecordingsChanged = v123.Reloaded, } setmetatable(tbl20, index2) tbl20:_Initialize(movementRecorder, arg) return tbl20 end index2._Initialize = function(arg, arg2, arg3) arg:_SetupWaypointsCreation(arg2, arg3) arg:_SetupRoundTracking(arg2) local function fn37(arg4, arg5, arg6, arg7, arg8) local tbl20 = { "Movement", "MovementRecorder", arg4, "Keybind", "State" } arg2:Connect(v115:GetPropertyChangedSignal(tbl20), function(arg9) if not arg9 then if arg._pendingStart ~= nil and arg._pendingStart.StatePath == tbl20 then arg._pendingStart = nil end arg8() return end if not v115.Data.Movement.MovementRecorder.Enabled then task.defer(function() v115:Set(tbl20, false) end) return end if not arg6 and not arg:_IsRoundActive() then if not arg:_IsInMatch() then fn36("You need to be in a match") task.defer(function() v115:Set(tbl20, v86[153]) end) return end arg._pendingStart = { Noun = arg5, StatePath = tbl20, TryStart = arg7 } fn36(string.format("%s will start when the round begins", tostring(arg5))) return end if not arg7() then task.defer(function() v115:Set(tbl20, false) end) end end) end fn37("Record", "Recording", false, function() return arg:_StartRecording() end, function() arg:_StopRecording() end) fn37("Replay", "Replay", true, function() local waypoints = arg._waypoints if waypoints == nil then return v86[153] end local selectedRecording = waypoints:GetSelectedRecording() if selectedRecording == nil then return false end return arg:_StartReplaying(selectedRecording) end, function() arg:_StopReplaying() end) arg2:Add(arg3:ObserveContext("movement_recorder.ObserveContext", function(arg4, arg5) local character = arg4.FighterState.Character arg5:Connect(character.Created, function(aliveState) arg._aliveState = aliveState end) arg5:Connect(character.Died, function() arg._aliveState = nil arg:_Reset(true) end) local state = character.State if state.Alive then arg._aliveState = state end end)) arg2:Connect(arg3.ContextRemoved, function() arg._aliveState = nil arg:_Reset() end) end index2._SetupRoundTracking = function(arg, arg2) local Status = v116.encode("Status") arg._replicateBinding:SetHandler(function(arg3) if arg3.Args[1] ~= Status then return end local roundActive = arg3.Args[v86[56]] == "RoundStarted" local roundActive2 = arg._roundActive arg._roundActive = roundActive if roundActive and not roundActive2 then arg:_OnRoundActivated() end end) arg._replicateBinding:SetEnabled(true) arg2:Add(arg._replicateBinding) end index2._IsInMatch = function(arg) local localState = arg._duelers.LocalState return localState ~= nil and localState:GetMapName() ~= nil and arg._currentMap:GetAnchor() ~= nil end index2._IsRoundActive = function(arg) if arg._roundActive then return true end local localState = arg._duelers.LocalState return localState ~= nil and localState:GetRoundStatus() == "RoundStarted" end index2._OnRoundActivated = function(arg) if arg._pendingStart == nil then return end task.defer(function() local pendingStart = arg._pendingStart if pendingStart == nil then return end arg._pendingStart = nil if not pendingStart.TryStart() then v115:Set(pendingStart.StatePath, false) end end) end index2._ClearPending = function(arg) local pendingStart = arg._pendingStart if pendingStart == nil then return end arg._pendingStart = nil v115:Set(pendingStart.StatePath, false) end index2._SetupWaypointsCreation = function(arg, arg2, arg3) local function fn37() local waypoints = arg._waypoints if waypoints ~= nil then arg._waypoints = nil waypoints:Destroy() end end local function fn38() if not v115.Data.Movement.MovementRecorder.Enabled then fn37() return end local anchor = arg._currentMap:GetAnchor() if anchor == nil then fn37() return end local localState = arg._duelers.LocalState if localState == nil then fn37() return end local mapName = localState:GetMapName() if mapName == nil then fn37() return end if arg._waypoints == nil then arg._waypoints = v122.new(arg._persistence, arg3, mapName, anchor) end end local v123 = arg2:Extend() local function fn39() fn37() fn38() end local function fn40(arg4) v123:Clean() v123:Connect(arg4.MapChanged, fn39) end arg2:Connect(arg._duelers.LocalStateSet, function(arg4) fn40(arg4) fn38() end) arg2:Connect(arg._duelers.LocalStateRemoved, function() v123:Clean() fn37() end) local localState = arg._duelers.LocalState if localState ~= nil then fn40(localState) end arg2:Connect(arg._currentMap.MapAdded, fn38) arg2:Connect(arg._currentMap.MapRemoved, fn37) arg2:Connect(v115:GetPropertyChangedSignal({ "Movement", "MovementRecorder", "Enabled" }), fn38) fn38() end index2._ResolveStartContext = function(arg) local aliveState = arg._aliveState local localState = arg._duelers.LocalState local inner = arg._playerContext.Inner local anchor = arg._currentMap:GetAnchor() if aliveState == nil or localState == nil or inner == nil or anchor == nil then fn36("You need to be alive and in a match") return nil end return { AliveState = aliveState, DuelState = localState, InnerContext = inner, MapAnchor = anchor } end index2._StartRecording = function(arg) local v123 = arg:_ResolveStartContext() if v123 == nil then return false end local mapName = v123.DuelState:GetMapName() if mapName == nil then fn36("You need to be alive and in a match") return v86[153] end local kind = arg._state.Kind if kind ~= "Idle" then if kind == "Recording" then fn36("Already recording") elseif kind == "Replaying" then fn36("Can't record while replaying") end return false end local v124 = arg._inputHook:Reserve() local v125 = v119.new(mapName, v123.MapAnchor, v123.AliveState, v123.InnerContext.FighterState.Inner, v123.InnerContext.ItemBehaviors, v124) v125:Update() arg._state = { Kind = "Recording", Recorder = v125 } fn36("Now recording") return v86[34] end index2._TeardownRecording = function(arg) local state = arg._state if state.Kind ~= "Recording" then return end state.Recorder:Destroy() arg._state = { Kind = "Idle" } end index2._StopRecording = function(arg) local state = arg._state if state.Kind ~= "Recording" then return end arg._lastRecording = state.Recorder:GetRecording() arg:_TeardownRecording() fn36("Recording stopped") end index2._StartReplaying = function(arg, arg2) local v123 = arg:_ResolveStartContext() if v123 == nil then return false end local kind = arg._state.Kind if kind ~= "Idle" then if kind == "Recording" then fn36("Can't replay while recording") elseif kind == "Replaying" then fn36("Already replaying") end return v86[153] end local waypoints = arg._waypoints if waypoints ~= nil then waypoints:SetActivatedRecording(arg2) end arg._state = { Kind = "Replaying", Replayer = v120.new(v123.AliveState, v123.InnerContext.FighterState.Inner, v123.InnerContext.ItemBehaviors, v123.MapAnchor, arg2, function() return arg:_IsRoundActive() end, function(arg3) arg:_FinishReplaying(arg3) end), } fn36("Now replaying") return v86[34] end index2._TeardownReplay = function(arg) local state = arg._state if state.Kind ~= "Replaying" then return end state.Replayer:Destroy() arg._state = { Kind = "Idle" } local waypoints = arg._waypoints if waypoints ~= nil then waypoints:SetActivatedRecording(nil) end end index2._StopReplaying = function(arg) if arg._state.Kind ~= "Replaying" then return end arg:_TeardownReplay() fn36("Stopped replaying") end index2._FinishReplaying = function(arg, arg2) if arg._state.Kind ~= "Replaying" then return end arg:_TeardownReplay() v115:Set(tbl19, false) if arg2 == "Diverged" then fn36("Replay stopped (off course)") else fn36("Finished replaying") end end index2._Reset = function(arg, arg2) arg:_ClearPending() local kind = arg._state.Kind if kind == "Idle" then return end if kind == "Recording" then arg:_TeardownRecording() v115:Set(tbl18, false) if arg2 then fn36("Recording stopped") end else arg:_TeardownReplay() v115:Set(tbl19, v86[153]) if arg2 then fn36("Stopped replaying") end end end index2.SaveRecording = function(arg, arg2) local lastRecording = arg._lastRecording if lastRecording == nil then fn36("No recording to save") return end if not arg._persistence:Save(arg2, lastRecording).Ok then fn36("Failed to save recording") return end arg._lastRecording = nil fn36("Recording saved") end index2.GetRecordingMaps = function(arg) return arg._persistence:GetMaps() end index2.GetRecordingNames = function(arg, arg2) return arg._persistence:GetNamesForMap(arg2) end index2.ReplayRecording = function(arg, arg2) if not v115.Data.Movement.MovementRecorder.Enabled then fn36("Enable Movement Recorder first") return false end if arg2 == "" then fn36("Select a recording to replay") return false end local v123 = arg._persistence:FindByName(arg2) if v123 == nil then fn36("Recording not found") return false end local localState = arg._duelers.LocalState local mapName = localState ~= nil and localState:GetMapName() or nil if mapName == nil or arg._currentMap:GetAnchor() == nil then fn36("You need to be in a match") return false end if v123.MapName ~= mapName then local v124 = tostring fn36(string.format("Recording is for %s, not %s", tostring(v123.MapName), v124(mapName))) return false end return arg:_StartReplaying(v123) end index2.DeleteRecording = function(arg, arg2) if not arg._persistence:Delete(arg2).Ok then fn36("Failed to delete recording") return end fn36("Recording deleted") end index2.Update = function(arg, arg2) local state = arg._state if state.Kind == "Recording" then state.Recorder:Update() elseif state.Kind == "Replaying" then state.Replayer:Update(arg2) end local waypoints = arg._waypoints if waypoints ~= nil then if not flag3 then return end waypoints:Update() end end index2.Destroy = function(arg) arg:_Reset() arg._trove:Destroy() local waypoints = arg._waypoints if waypoints ~= nil then waypoints:Destroy() end end return index2 end tbl17.j_ = function() local j = tbl17.cache.j_ if not j then local j2 = { c = fn35() } tbl17.cache.j_ = j2 j = j2 end return j.c end end do -- j0 local function fn35() local v115 = tbl17.dO() local v116 = tbl17.bG() tbl17.aE() local index2 = {} index2.__index = index2 local tbl18 = { "ColorAnimations", "Entries" } local function fn36(arg, arg2) local str7 = table.concat(arg, "/") if arg2 == nil then return { "ColorAnimations", "Entries", str7 } end return { "ColorAnimations", "Entries", str7, arg2 } end index2.new = function(arg) return setmetatable({ _animator = arg }, index2) end index2.Get = function(arg, arg2) local tbl19 = v116:Get(fn36(arg2)) local v117 = v86[68] tbl19 = type(tbl19) == v117 and tbl19 or {} local breathingMin = tbl19.BreathingMin local breathingMax = tbl19.BreathingMax local tbl20 = { Mode = v115.ParseMode(tbl19.Mode), Speed = type(tbl19.Speed) == "number" and tbl19.Speed or 1 } local v118 = v86[95] tbl20.BreathingMin = type(breathingMin) == v118 and breathingMin or nil tbl20.BreathingMax = type(breathingMax) == "number" and breathingMax or nil return tbl20 end index2.SetMode = function(arg, arg2, arg3) v116:Set(fn36(arg2, "Mode"), arg3) end index2.SetSpeed = function(arg, arg2, arg3) v116:Set(fn36(arg2, "Speed"), arg3) end index2.SetBreathing = function(arg, arg2, arg3, arg4) v116:Set(fn36(arg2, "BreathingMin"), arg3) v116:Set(fn36(arg2, "BreathingMax"), arg4) end index2.Changed = function() return v116:GetPropertyChangedSignal(tbl18) end index2.Apply = function(arg, arg2, arg3, arg4) local n = 0 if arg3 ~= nil then n = v116:GetBase(arg3) local n33 = 0 if type(n) ~= "number" then n = n33 end end arg._animator:SetEntry(arg2, arg3, { Mode = arg4.Mode, Speed = arg4.Speed, BreathingMin = arg4.BreathingMin or n, BreathingMax = arg4.BreathingMax or 1, }) end return index2 end tbl17.j0 = function() local j0 = tbl17.cache.j0 if not j0 then j0 = { c = fn35() } tbl17.cache.j0 = j0 end return j0.c end end do -- j1 local function fn35() local v115 = tbl17.dh() task.wait() local v116 = tbl17.di() local v117 = tbl17.dk() local v118 = tbl17.dn() local v119 = tbl17.ds() local v120 = tbl17.dt() local v121 = tbl17.dw() local v122 = tbl17.dx() local v123 = tbl17.dA() local v124 = tbl17.dB() local v125 = tbl17.dM() local v126 = tbl17.dO() local v127 = tbl17.bG() local v128 = tbl17.e0() task.wait() local v129 = tbl17.e3() local v130 = tbl17.e4() local v131 = tbl17.fm() local v132 = tbl17.dR() local v133 = tbl17.fn() local v134 = tbl17.bI() local v135 = tbl17.dr() local v136 = tbl17.fo() local v137 = tbl17.fx() local v138 = tbl17.cY() local v139 = tbl17.c_() local v140 = tbl17.ad() local v141 = tbl17.gc() task.wait() local v142 = tbl17.gd() local v143 = tbl17.ge() local v144 = tbl17.cF() local v145 = tbl17.az() tbl17.bO() local v146 = tbl17.gf() local v147 = tbl17.n() local v148 = tbl17.gg() local v149 = tbl17.e9() local v150 = tbl17.dm() local v151 = tbl17.gr() local v152 = tbl17.gs() local v153 = tbl17.gw() local v154 = tbl17.dL() local v155 = tbl17.dK() local _v156 = tbl17.gx() local v157 = tbl17.fj() local v158 = tbl17.aB() local v159 = tbl17.gy() local v160 = tbl17.gz() local v161 = tbl17.gA() local v162 = tbl17.gE() local v163 = tbl17.gJ() local v164 = tbl17.cX() local v165 = tbl17.gO() local v166 = tbl17.gQ() local v167 = tbl17.dv() local v168 = tbl17.d9() local _v169 = tbl17.gR() local v170 = tbl17.gv() local v171 = tbl17.gV() local v172 = tbl17.gY() local v173 = tbl17.gZ() local v174 = tbl17.g_() local v175 = tbl17.g0() local v176 = tbl17.gT() tbl17.g1() local v177 = tbl17.g2() local v178 = tbl17.eZ() local v179 = tbl17.hb() local v180 = tbl17.hc() local v181 = tbl17.hd() local v182 = tbl17.hf() local v183 = tbl17.cZ() local v184 = tbl17.hK() local v185 = tbl17.hL() local v186 = tbl17.jf() local v187 = tbl17.jg() return function(arg) v187() local storeProfiles = arg.StoreProfiles local playerRegistry = arg.PlayerRegistry local playerIdentities = arg.PlayerIdentities local playerTags = arg.PlayerTags local decoratorFactory = arg.DecoratorFactory local generalState = arg.GeneralState local generalStateData = arg.GeneralStateData local v188 = v147:Add(v140.new()) if not v188:ReportResult(v145:Initialize()).Ok then v158.get():Notify("Some fonts may be unavailable") end local v189 = v147:Add(v126.new({ WriteColor = function(arg2, arg3) v127:SetLiveOverride(arg2, arg3) end, WriteTransparency = function(arg2, arg3) v127:SetLiveOverride(arg2, arg3) end, RevertColor = function(arg2) v127:ClearLiveOverride(arg2) end, RevertTransparency = function(arg2) v127:ClearLiveOverride(arg2) end, })) local armAvatarSpoofer = arg.ArmAvatarSpoofer if armAvatarSpoofer ~= nil then armAvatarSpoofer() end local v190 = v147:Add(v144.new()) local v191 = v147:Add(v135.new()) local v192 = v147:Add(v168.new()) local v193 = v147:Add(v132.new()) local v194 = tbl17.jh() local v195 = tbl17.jp() local v196 = v147:Add(v194.new()) v147:Add(v195.new(playerRegistry, v192:Reserve(), v193, v196)) v147:Add(tbl17.jr().new()) v147:Add(tbl17.js().new(v193)) v147:Add(tbl17.jt().new(v193)) local v197 = v147:Add(v124.new(v190, decoratorFactory)) local v198 = v147:Add(v148.new(v190, playerTags)) local v199 = v147:Add(v164.new(v190)) v185(storeProfiles, v147, v199) local v200 = v147:Add(v138.new(v190, v199)) local v201 = v147:Add(v183.new(v199, v200)) local v202 = v147:Add(v130.new(v199)) local v203 = v147:Add(v176.new(v134.TextIndicatorList)) local v204 = v147:Add(v172.new()) v204:Initialize() local v205 = v147:Add(v184.new(v204)) v147:Add(v182.new()) v147:Add(v133.new(v199)) local v206 = v147:Add(v173.new(v190)) v147:Add(v119.new(v199, v191)):Initialize() local v207 = v147:Add(v143.new(v199)) local v208 = v147:Add(v150.new()) v147:Add(v118.new(v208:Reserve(), v199, v190)) local v209 = v147:Add(v167.new()) local v210 = v147:Add(v161.new()) local v211 = v147:Add(v170.new()) local v212 = v147:Add(v149.new()) v188:ReportResult(v153.MigrateSounds(v211)) v188:ReportResult(v153.MigrateImages(v212)) local v213 = v147:Add(v166.new(v209, v199, v211)) local v214 = v147:Add(v165.new(v209, v199, v200, v211)) v147:Add(v122.new(v209:Reserve({ "RespawnNowAnimation" }))) v147:Add(v142.new(v199, v190, v208:Reserve())) local v215 = v147:Add(v178.new()) local v216 = v147:Add(v155.new(v199, v197)) local v217 = v147:Add(v154.new(v199, v216)) v147:Add(v125.new(v217)) v147:Add(v179.new(v199)) v147:Add(v180.new(function() return v216:IsLocalViewModelThirdPerson() end)) v147:Add(v181.new()) v147:Add(v152.new()) v147:Add(tbl17.ju().new(v199)) local v218 = v139.new(v201, v199) v147:Add(v163.new(v199, v201, v216)) local v219 = v147:Add(v171.new(v190, v199, v218, v208:Reserve(), v203)) local v220 = v147:Add(v115.new(v190, v199, v218)) local v221 = v147:Add(v157.new(v199)) local v222 = v147:Add(v174.new()) local _v223 = v147:Add(v159.new()) local v224 = v147:Add(v131.new(v221, v212, { v220, v219 })) local v225 = v147:Add(tbl17.jw().new(v190, v199, v218)) local _v226 = v147:Add(v160.new()) local v227 = v147:Add(tbl17.jO().new(v190, playerTags, v199, v222, v210)) local v228 = v147:Add(v177.new(v199, v190, v201)) local v229 = v147:Add(v116.new(v199, v190)) local v230 = v147:Add(v141.new(v190, playerIdentities, v212)) local v231 = v147:Add(v162.new(v199)) local v232 = v147:Add(v175.new(v199, v191)) local v233 = v147:Add(v120.new(v199)) v147:Add(v117.new(v199)) v147:Add(v121.new()):Initialise(v209) v147:Add(v151.new(v199, v207, v208)) v147:Add(v137.new(v199, v209, v221)) local v234 = v147:Add(v123.new(v209, v199)) local v235 = v209 local reserve = v235.Reserve local v236 = v147:Add(tbl17.j_().new(v199, v191, v202, v208, reserve(v235, { "DataValueChanged" }))) local v237 = v147:Add(v128.new(v199, v190, v197, v193, v192:Reserve(), v215)) local v238 = v147:Add(v129.new(v237)) local coreLoad = v238:LoadCoreConfig() if not coreLoad.Ok and isfile and not isfile("kiciahook/rivals_v3/cosmetics/states/core_config.json") then v238:SaveCoreConfig() -- first run: write the default core config instead of warning else v188:ReportResult(coreLoad) end local v239 = v147:Add(v146.new()) v239:SetPreCameraRender(function(arg2) v218:Update() v220:Update(arg2) v231:PreCameraRenderUpdate() end) v239:SetPreRender(function(arg2) v205:PreRender(arg2) v206:PreRender(arg2) v237:PreRender() v213:PreRender(arg2) v214:PreRender(arg2) v230:Update(arg2) v216:Update() v224:Update() v234:Update(arg2) v189:Update() if v236 then v236:Update(arg2) end end) v239:SetPreSimulation(function(arg2) v231:PreSimulationUpdate(arg2) end) v239:SetHeartbeat(function(arg2) v199:HeartbeatUpdate() v190:Update(arg2) if v225 then v225:Update(arg2) end v229:Update() if v227 then v227:Update(arg2) end v228:Update(arg2) v219:Update(arg2) v232:Update() v233:Update() v198:Update(arg2) v199:FlushViewAngles() end) v239:Start() v186({ Cosmetics = v237, CosmeticsConfig = v238, SfxSoundStorage = v211, ImageStorage = v212, MovementRecorder = v236, Skyboxes = v204, ReactiveStoreAdapter = v147:Add(v136.new(storeProfiles, v127, "rbxassetid://84152083728286")), ColorAnimation = tbl17.j0().new(v189), StoreProfiles = storeProfiles, Aimbot = v220, SilentAim = v219, GeneralState = generalState, GeneralStateData = generalStateData, PlayerIdentities = playerIdentities, }) end end tbl17.j1 = function() local j1 = tbl17.cache.j1 if not j1 then j1 = { c = fn35() } tbl17.cache.j1 = j1 end return j1.c end end tbl17.p = function() return nil end tbl17.aF = function() return nil end tbl17.cg = function() return nil end tbl17.ch = function() return nil end tbl17.aP = function() return nil end tbl17.aL = function() return nil end tbl17.aN = function() return nil end tbl17.aM = function() return nil end tbl17.aQ = function() return nil end tbl17.aO = function() return nil end tbl17.bb = function() return nil end tbl17.o = function() return nil end tbl17.aZ = function() return nil end tbl17.aG = function() return nil end tbl17.aK = function() return nil end tbl17.a_ = function() return nil end tbl17.a0 = function() return nil end tbl17.a3 = function() return nil end tbl17.a5 = function() return nil end tbl17.a9 = function() return nil end tbl17.ba = function() return nil end tbl17.bJ = function() return nil end tbl17.dW = function() return nil end tbl17.e6 = function() return nil end tbl17.a4 = function() return nil end tbl17.fz = function() return nil end tbl17.fB = function() return nil end tbl17.bO = function() return nil end tbl17.gt = function() return nil end tbl17.gW = function() return nil end tbl17.g3 = function() return nil end tbl17.hl = function() return nil end tbl17.a1 = function() return nil end tbl17.hB = function() return nil end tbl17.hN = function() return nil end tbl17.hM = function() return nil end tbl17.jx = function() return nil end -- Lithium's crystal logo (256x256 PNG, base64), used as the menu logo. local LITHIUM_LOGO_B64 = "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAACZv0lEQVR42uz9ebxu2VUWCj9jzLneZvd7n66aVDowgSQkEEJjw0dyxQvcC/5sqO1FFBREUa6K8ikX8XrOwSsqfhgSAUlAQyQSsssLSUBCIyQhEGIaKk1Vpfq+6rS73/tt1lpzjO+P2ay53n2qUgmVpDa1Fr9DnZz+vGfNMcd4xtMA3dM93dM93dM93dM93dM93dM93dM93dM93dM93dM93fP5ec6ePctnVbn7JLqne55dD21sbJjuY+ie7nm23fqqTOHr//59H3zhz3z03n/wU/deOA0AqkrdJ9Q9T+dju4/gmfGEw01EJADo9X9w97fddHLlh8fWPe/+rcP3A7h8DiAA2n1a3dMVgD9Gz8bGhiEiB0D//fvveeXqMv/Q/PzSX1pbWsNdVx45GInrcIDu6QrAHz+QT/ncOSgRude++90ri6s3/cPF+aXvW1xdWJmOD2UiY2zvjutxXY4BAOe6z6x7nt6nu1k+T+3+xsaGOX+ehIj0jR++75vOXP/i377h+uvPLSwMViajkRgwORDvjqrSlm6CrgJ0T9cB/LE4/BzmfPe6D9z2kuWlhR9aGC78H4uLSzwZHYqSI0PKfVPoQVVjBFebAdfdJ9c9XQdwzG/9s+Hw/5O3/97iz338gR+84cyZ37nphhv/6lyfeTrZFWJltkQMYNBj3R1PURXGWbvoAODcuXMdANg9XQdwzE4+bdxyC0eQ7w233vG/DhdXzp9ZXflq4wTl/r4QlJjBwg4KgiECGYOr0xK26MuodtJ9kN3TFYBj2u6vA+7HP/zh564trP3gwnD5u5aXl4vJaF9q1ASrrFoAamFE4EjRY8akrrFXAQUZGdeVHGdeA86dw/nz57si1hWAZ99O/2vPvtv+jW957ncszc3/0MqptRfIqITs74oxxBUVICJAFASBgiCiKIoCV6eHmIBh1LrJZOSO62dx3uMdUE9pViLqxpiuAOCPM4U3tfs/86HbvnJ5cfH/Xlxd/aaeHcLtjZ3AMQyzKsEoQaEwzFBVODiQCgY9xub2FJYMhJyTsj62t+cv3Hnfy3eubB4Q0f2xEJzLCkP3dAUAf1wovOeIlNbX3RvefefJ5RO971ucH/yD+VMnFifjiVaTQyUiAxgIBCBAVUBEEBWoKogNjAGUFFfGDr1+DwfqpBjKsbo1VZWISL/hda/rn5pf+Inrlhe/YOOT9/zU9uH054no4a4QdAXgj2W7fx7Af7r1nvXF+bl/cfrE6kudOIzGYwdVY4gJqlBSqPrzTEQgIn/4AYgI+tZgVDrs1CXm5uZBAMa1O5Zt80u/6Ivs7mg099IXPf+GYjD//6yORn/nlnseedP24eHPEdEDCSPoCkFXAI75Tl9/6oP3vuzkcu/s/MLctwwXFzE5HItCiZgMgcBEcFAoAQTKfw2PAxABzmFoLR7fP0ANAkhhASxh8Vh+Pq84cwaPTCZy/UGpQ7DjhcWbVk6s/YulnZ3vvuX+x966dbD5M3+H6E5fCM4ycK4rBF0BOB46fZw7ByKSn3j3bQsL183/g5W5hX+8trZ8ohqN1R0cqiXDCvbSHREoCZQUIIAy+kXsBgBPyugbxqVphQIGpJGosX8sP6f7trdp7frn8iOjMX3J3JAPxyOtJqUuzS9ev7K69o+Xtvvf8c4HHnnr1b2DN34nffEngPM4e1YZ57qOoCsAz8w7nzY2wOvr5HD+PN74ifu//tR8/9zy6tJXkxLc4cSxg2EmclAQAaQKIYIGId8sBs5ESd5nmSFE2JxUsLYAHXfh33jIVgxLrbi0d4Ablhfokb0RYTRRGo9lcTh3Ym115f8c9ve+7R33PvbLV6c7b/yul9L/xPkj6sjuQccE/Pzvs0G6vk7udR/42HPedu8jr79hbeUdp06e+moqa3HTWpXUiAWqcJAVQA2FkELgW3/OBgCKOEDoBGyvwH41wagSCANGAGLV3vz88awEa2tgZSLTx6OTKaYAVvoFoI5AZMbTWkf7U7c0N7d603Nv+M7nnbjpf7zjvgtv/vk77v5qIlIiksig7N7ArgP4vIN8Z88qf+Ffvv9vLC4t/uDaiZUvlOkE49FYiC0zCwCBEAEawD0oQs8PDv8LqiAQhBSkBKhCmKC1w7wh3H/ooCowDDhPETi+z9YW3ML1qsyQosADOwd4+alljLZqCBiGhKBqRmWltprKsD9cWFpZ/Pa53cG3vOPBi/9tf3/njUT0+/6fQemWW27h9fV1172VXQHA50anr0mn/7Mfv/dVS3OPnD21dOqber0eJuOpUxU2hhiQcIszWP3dHpF9BwQLD/+//f+L4wEFANAP+31L2Dwowcb6k08GrIy9vb1j+xkaIjXqUBBhrxJsjSY4szDAw/tjDHsmrD8tCWpTu7HK3lTmi7m55ZWVbx8Oe+vveODx//fq4finiej3ALisEEhnjtIVgM9au//DzLK+Tu7/9+4Pn7zh+pPfu7Qw/30nVtdWpqMDnU7HSszGy3Y0Uv6PvI1EBBM4fvkjUF8o2HcFhRKEgUoJe6MJyBqoErw3mOpCf3gs5+BhYQmq5D8ngIsCD+6M8FVnVrDYY4yF0INCUEMNB5qgGldO1bla+v25wdLq6rcNtva+5R0PXH7n9s7ufySidwNwIEBFOTALu0LQYQBPn2LvvJ898XMfe/Bbnv+C5/72TTdcd25tfn5lMho7gSVlyyAHIgGU/Zdw4BF2+0TUzPl6tDAwCGCBgScEzVmLvWmJ/Upg2IABGBAMIMeVB4BVAExh7PEUqDFZPLg7xXOWhyAnABnfJzkCSQBLLZOyGtSV1jsjt9jr988858TNN1x/6rd++b5Lv/Sm2x/8s1AgrmC1wwi6AvBHfW72tlx6nkh+9oN3vOwX73x449TJxY3r15ZfXk+mMq5LVYiR0L5bMSCPC/p2nujIIW9/nRryTxwTwlhQQzFfWGxNKjjmMCUoSMPsgO1j+ZmO903zF1ffJVkDPDIeY1wpbpjvYyI1mA2sCoqaYJWgBCgJwEowYkRKLXcO3UK/Z2664fRfvP7kiV//pQcuv/PNH7/v6yI+E01W0u/XPd0I8GlSV91r333rysnTa9+7uDD3fSdOrJ6sJ4dajveFyTKr8cAdVzDKAAqABAQHIkBdOuJHqyxRsw6MxB9/xiFgwAkKw7h6OIUJ6z8ijbwB7VeLimP4Zq+sIPtEPPhJCohl3LM1wpdft4TNSYmJCAoOny8hQKcMJUXNCiiRVTa1E60PJ7LYs/bUyqlv3t4u/rdffujiu0aj0U8Q0W8AcESEt73tbaYDC7sC8Gnx1v/rR+/+5vmlxXMrJ0690mgNNxo5BRlwnzTc1waAcQxlhjPOv9AB3ycKpB4CoHSkC4Af+VMRMDAwRKhJMTAWtauxPSlhqQ+WGkoMLxQUPVyqj+UIMDkw1O9F7mOz/jRssFnXeHxvjBesDHHn1j6ksAiGyP5TVQIpQUkhJBBSMCtBa1OL6sFBrcPB0KysrXzT7u7hN77zgYvvOqimr/+rL3reb8XDnzE1u6cbAZ6Qyqu/dOejN58+tfrfTp8+8Uotx1JOp0pExu/oGUoECTcTiBOqH9F/Sgee025/lunnfy0CK2DJf/IEG+i/NfYr4KASsPGYllcHAgQWXL16fF+wsOUIzYwXPwlgjcX9ewcwBJyeG8AJUCh7PID8j1PyIimWAgwTvg1gYjJsWEW02p+4+V5hbrzpzDedXll91zsfuvgrb/nDO78xfOZCROhCVroC8KTP2srwf7/x9MnedDKqSJWNYfLtPUCkYBAYDBB7Lj8TDNjfUm1ib7r9r1lwAljNiRVowaqY61tsHkygZEDq/I+jGAKgOiiXj2UHsOz//IRw8FUVIgIJK9ApCHdt7uH6xSHmyEGIAWaPfRBBmcFMQCgESgYMA0vGA6R+zWLgapWdsVspBuZ5N5z5puc857pf++8PPPyrb/nY7d+oqlhfX3cZRtA93QiQn1hgWtW9ZQvdZWYYCycCiEI5EHFIE1tvBulr3fD+K9oi7zAzVDRsB/y3SehKCQomRWF62Bxtw8uGwgYhdhW16t6kPJYFYGwOaKhLlIMXvqD6DqfgAR4eO9w4qvDc+R7uO6xhuICBwEFByiCtocbBiAFUQEyIKEEEGNQYIoghV+l0t9L5uQGvnlz+3wdXt/+3W+6/+Ku72zuvI6LfjrSMuOnpjn/XAQAARqWjAqBFQ2AI+sbAGgPDDEMN+Jbku+0a4Fd2UdGnAHNcCQbwi5vDD/I4ABHAJBiw5wlsT0tYy0ktSBEsZNK5lekx3XMvNY2RBCk0AUYIYPIAnzG4c2sPi4M+TvS8doLJwJAgnlFSP3lx4BNQ9rmHLgnOALUFoSCWymm1M3Gn+4v0Jc85883Pv/H0b/7yvQ++7c1/+PGvBbzQqItZ6zqAVh2cKrDS72F8OIZhAzKejKOGUYuDiAQmX5vYE+d/KGAACPuXVAPJx3cImgl/FEwEo4xaa8wXFnulw0gYxnpzEIaGL8f/HWVuABEJF7eFCfSfCgVZ7IjioZ1DPHd5iMOdMYQZDK+gBFmwmvQZkobiqg2wWgQSlhpfDJiZWNnUzml9WMmJxTlzw6nV9QtXtv/ixr2P/PfLm3uvJaLf7d77rgPwL5VhmShQMGPBWqgKVAESfxALQygMw7Bn5zHU/5eariB9iYdeI8OX0heoP9RGfSusIhgWFpvTKWoysETplosJoUys8ydPHmumW06KYnjeA5RQqAHYwViLBw6mmDjBqWEPcFMQEax6DICU0s9t8SvCZiHuSI0wrDCsAiDxPGQypq5FRwdTd2J+qXjJTc/5C1/+BTf85m8+9th3d4GrXQEIIl8WZWBUl1jtDXyLzuHA+009LPsiYJlh2XgAkMhfQfmMizYTcFbzH4uEQMHEKCxjc/8QVPQ84h22CXFeJkAfffTR4/vhSgA0mWCIvRrSCEAEFgsogwkoYXDvzggn+gXmLEGUQVT4QsvSmKZkqkqO38aAMkPC9zARmAlqKhgWFNInUZjCjfUGRnVybaX/yIH7K+z/nRTP4iLQjQCeiisAMKkVCwPBojUYCUAk/jBqs+Mn8vO+MsOpQEQhAbVO8JT6tWGe5ZsXBAFBIRiyX/VtTYCCnEe6NQMdQCASnTs8pccXZdVwgyuUmjubggCKw+dL1uBSKbhxXOG6hSEe2ZsmZWVgWviPknN6tSYcgIQCbuoBA6/SsHAKLFCFG+d6EFPQ+y9umw9sjrScTNiJPOt5Al0B8K+MiANElQ5rhxO9AqPRBDC2dYDjKiueUSKv+xdRhK6/mfcjQu2JbL4whCLATJBasNAzOJxUOKgJtq8QiR1JwxsAqSydGR/bAuA7orgClbAEDdAda9PGqwOYcN/uGF8+XMSJvsXlUmAMg5wm6rQGAJBSC+srbc0CA+OlGeq3OIUYnOwxVgcG9+4f4jcf3MK9pUN/dY6GKObO3X67BVB2BeBZXwBUIqR/UBOWC4PFAjiofZuucY8dXmnO2noGwRjyB109QKiqEChENL2oSpEPH5YFCiz0+rhvew81HAoyAWTUBDEyEwB2Fw8OjmkB2APRouY7V8qKZDz8cSwypNhT4JG9MV6wPMReXaJS59v5wMRMJSMUFQ3F1hKBVcHO/3pzVnH9wGIE4J0PX8QHL+2h7g1QzBEsgOVisbj94oPcbQG6x7+QDCgZQCwOqxqr/T4mZZ12TRJvdW6MPGMbmhjA8Eq+wOWDGoa4MCLA231HOXBBhKFlXDmcgApKL7Kmlzz6B4isbr/wWBaAoVvQ5rAjjVM5RpL+zsRwcChY8eiownVzPVw3tLgwEoBdAEQNKLoAMMF5WxHPBeIa0ApzIJwZDGEZuGPnAL/16EU8UhkMhgsoqMK0EiwMDOa5woMPdm9+VwCy20lhYJmx7yaY7/WwWBjsiYAZ4NgkBH2/hmMKbVhu/mZ3CBE4AABjGwxB1f8sJzWMMagE2K4IPRPFMg34p+TXhQDJ9Y//yjEeAZpRIIkbQW035PC3UzZgrVAR4b79CV6+toAlq9hXwASVJDOF8qgw0Y9BahRaY7VvccL0cGVa4V2PXMEn9iu4YohioEAlEO1B6zEGBaF2TobHeLTqCsDT+Ji4RlIFkUOljIOqxsqgh4PDcVDmN4Nns9oOeEDw+qfMxjM28n6uD41r2O2JAks9i72ywl4t6BmLOsgJKfIJKMqCIXe89KV6nAtrjgO0fBIQR6Kgq3AGAgNjCFdKxZXRBCfnBigPXJr9I/nKgqDiAHWYNwar/SEUwO9f2MN7L2/jMhF6/R4KqeGcwsGgNgQ4YNHM4aCe1A8f29GqKwCflTeVPFMUxlgcVBWWC8VCrwgmHQ3KrKGNbTMCmxdb1XMF/BvbzPQaGG0gYK4weGxrDzUTespQdlBhPyAEjIDCXXlcP9LpgtM5IiFuKM4EgJj9XxDkiycEBgyjDsKeAlUw4aG9CVYGPZwsLLZqBzLcGIyIQ0HAcm+ABcO492CC3370Ku6dKNDvYygCcbWf7ohRw4FQgwkYFAW2ylL+zPYL9Y6uAHSPEyFS7zPFwcrbqWK3rLFcGIwq5715IKFfEM9LB/tmVAJ4F2i8HrwLI0AYEyRmfwAoCOgx49KkhmEPELIzXiNA+fwPQEluuf3241kEdgC6LvxFMqJUg+fnYKBCghKSvVoIBwQ8sjfCF64sYOIcSgWcCgoSrFiDxcLgqgh+69EtfOzyNkb9AYpBD6gqP6aFDAaBeH2BGhhW9EhwWB9ru9WuADzNsuDwLhqf0asCZsZhLVjqWyxag10n8biDFWkvTURpjGVQWuG1ZmAikIgHEgkomOBUsTWpURiGkMKAoZ4j5w8BEaACFQjOn1fgmHrdhM+HWp1SbuMXtyoAxBdPf2QBLgwuTUqcnNY4MSiwVVboGYs161/bj28f4N0Xd3B1qsBwDhYAOQkeDeLnqdCIRQByYC2YgBoq1//tL1f8HXRU4Gd9AZC4nfK3tQbBTq2KvbLGYp9hfH8AJvEvFNtMAZh/oMHLO24KssGVw+ZgzljslxUOXAkbZn1h/+tGLTyF1tUwu6OQ2jF6wYzxRN5ZcxT2tGdOZiHkNf8AHIcUJQVcYfHwaARlwql+D2uWcXla4a0PXcAvPbKNHemh6FvfUURSJiPzb/AeDhR2r31rUIOgSvrq7tXvCgCCm39M640dgaiX9R1UDsyMxcKC4LP64ljOwdyTMg4/kZcAE3HLDJSJg48AMLQGl8dTOGMSxy22x15ZyHnhOLb219PFJT8fReIUc4sJQJhRWsYNC3mzVBIGyGK7ZlwclXAEvG9zB29+4BLuGDPsoAc1NSrk5KzmF6acihn+3eYKi9opiLlTA3YFoPkY4m2hycHft/gOhP3pFAuFBcO/mL5NbTwASSkUA250/DOSYYLAqIBFYA3j8qQGw4IMN6EhEVUIK0WAoCTHmKq63TZDybwTONNMMHt+r3LYCHgZJULWChwBu3WNuw4nePeFbUxsHwMq4ETgYuqSNtLgNrKAZtcjgr4hVNoOaO0KQPcphHdTEl2Psvl9v/RbgHkTJK1sYAgwXq4P482CQOw57qTBAkvD7R446wwvKKqg2JkKemSDxoDS3J+LiZgUJMfX835YLylRUEtpu40hnRloyEukjAKs7NegxNEZGQpCJQ5KFhAEhJ9BrgArgSXkMEIgqqEgN5OHwvs09C0wdS6sY7qn+xQAgMPqDU1qT4T5BECtBfYnFZb6NryYBBMPNgWvO4324L4QMAXJcMZ+h3r572FZYeJ8q29AEPIWY1mSmH+BiWG0JVY5ZsVgC0qq0TadoxGKHlVJIjokSRgF2KAiQNjTqsOUhioAsSCBGAdihdEguA6/jyYPQmp5NhADhTFw4juy97znPd2r351+wFtHRjygPQIYCJR9rBWBsVAorAg0+tel1RYHn0DABKkwGT/zF0oAGahhzFng6rhG7WrASKIYE9Rz3klhwugqANwxTgfc2gKMCweRG/Tf+/4HXkWGoxIoMSgJEngZQUZE6hEYCYxKCvxsCMI/ReosOHQTAr+5sSGkrccMEkLtOjewrgC0bh6htAkM75UEcQ+UQKyoQdgtKyxZC6sOyg16TczBHMSDfdyw+FpKQqOKwjA2J65lE2ZA4BgwRJr25vAvvqTssWP2zC0th7TEwPRTT/rRQHXOA1PCX9afaQJYtcFYkMUriedKBGuV0A+EOSkVY+8/QJwDjYqBMZkcuYsT6wpALABsAnocDnya/71IhdTvlHfLCgTCsCCwOn9wqYn8jnMtkT/U1sMFQcOu6DNQKbAznvjvEK9wiy+6qjSMwlgHfOzw8XyubqZeigJVOsp3YzIytIHtYi1Io0HMWkhHuBFWtVejlIBFDmMVxdGLg3EIFIWxcEmz0b33XQHIWMDyBJ+MeHc6OBZUYOyXNeZ7BXoIIGAYGKILDYcZ3oStQCQKGVIMLONgWnn/f+tfUxvScuLsb/wuIawGAT7GhhXzyyuKsMUg5lQdOeMBJN8DncEDkyEKtTQFqbVKwiI9Wg4Cj4IC1dizhwnDwvgCEBVX3dMVgDj3x+y6aOTponpP/ZzuufmM7bJELYqh5eBIQ/6wB6cgJoJhSsnA8SYyUPQMY3NSo8yAvrSzJg8KBiohmEnZW5UIjikR4AqueMutcINz5Dro0cBUtBiU1IgnMnzgWjJDyjgTLaER+X8XgndnYhAG7DkAPmege++7ApA+BG7uk8zxR1N5IO9RD8WUCDtljYFlWEiQp3ryT+75F4NF4ixLSiiIcXlSQm0BVvG4GHlnHCjA4v8knFGMidUdb8NVgmFOlzXpUVZgi5JN1G4FsvVhw6yk5CtwpAPIWJRNBKsvrpYAEQX7wJGuBHQFoO1dmRaBmpt8OEAAowzHCrDFTi2onaDPJq0Ng8Wd393HF5EpsAIBaxiVCHZL8eOCaojBasCr6C/K7SSNY1sAFlZXVbNkc8UTnv1GGnxUStAe2DVJN6+pxPRGrQlpSOiBCR2BiABMYDL60le/WrsC0D2R/hPQZE9AAalP/iOv0nPkAlgggAA7pWBgCBYCMt7LnzSEWjLBKAHkUqrQwAgOasVBJTAUDUM45An4EQJWA49dGr28n0CO53Mp4Kihq0JKRT56a4MIZGaHHUliItPyWVBQXNhGbkFYBXoXYQ0dWDB1JcHACIQIThRGFQKnuKV797sCMHsFKWcbt7BuijvrMJcSCAelg1NF3/jb3LAH9ht/u5gh4AmpBTN2pg5V1BGm/XcAxWJ0GEVKsEbjzGM8AlwCM2u+2cjj0Y8GiTZYQEtRmcsJs1Yg3fik2XdrIv00oCOhYM8s4CTKUqCrAF0ByKmpPsTHA39QhYq2warwQikDNQS7ZYUeG0/04YYSbELOvSehcGg/GVvTMYS0RffN323VKAbK2IBhQXHu3LljxwM4OHEiGiK3zEBbnsHhA5jNXlTVa+gpcCSmLacINMQu59eOQXwFBfohd6H93NwVgO7oe26JtoQk+atKOSDtKS2qABP2XA0B0IurLTQ5gTFByASLr1oV21XtOQeaIds5ZTUFiFLYLjCYzPEdAR4HWD18mv6vdbOH8BOKluHIPAJmOgU9Av8/ATk6ZjSEVWCgahfEEOeany/Snf+uAGR8kwxM0uw28jFh3phLYsBl0AiUCuxNKljL6aAbDv9NBpbe/efQCQ4qDRr4BseKu3DOFl2U/alIg0/ZuXM49ubruScghfguaMr7S8rATB5NMx6LmpsJ5sDfE3UJAAryaUGRaMUgWNMlhXcFoM0EaC4TpWAKoq1iAFBiDPkX2GCvcqhU0Yuzf7jROdtrFwzslg6lmsBLb2cJ5np4QgSyOOyw9dh2AEsnSyVipQDaxVhwCiGppE1WQlNwNUv9zS9+aq0DrwXhkPgYN9ZQUBUhT8CTjlQ1SI4JrJ0euCsA4XExHijfOQfUT2ZxQmnIaKSECQP70xK9MG9yfhOlTDxgdzoFyAeDzq6w8hEgseNih6DHPbpKYp5PzuxvjQM+gk2fEJuljCqck37awJ+0HJq8JNv/gxrOU1kabsDt73kPdQWge1p7ZoGDkqCRorT32DDcRH2FNdVurZiKoiAFQ9IBtwIUcJgC2C1rWLUAe3GR4UAjJg3cAW2yAdQLZogNQHy8C0DoiDRFnoX1HDS7zanZvGTgaHtImy0IWUyYSjIYib+mMkGN/9+GTbj9vSAr5BJ0HUBXANojAKJ/vWqy/76WyWXua8vk3QJ3p1UCnPz878knlgkTcTh0AkMMjZ6CCIo1avvkpw1BCBcU1WNdADwzol1IZ9d8+eTO7RG/lakI8ZuZ3FG49VXVa2CGMdPRcwJMeOW5e/O7AhAfQyae+eT5n6CnzMaKiBCChEFEcCC/KgRw6BwmAhRkYJKLl8ISY1TWGGsIwyS6BtuNWoYZaT1IAOP4dgB706mquATqcQ7qHSEDhe+LQSoUlZbaeDU+AX34CGcg/y8yv8a0eegu/64AzNz/ucFvpALnF0yM9jrCWw8t5ZSA3bKMcfWe6hte3L3KoQxW1XE/nQC/+CUKiaKxaJQY03HvALS1AtTZA5rGqSjfvZZICOmziulJGSLYuADm3VTkWukskUMCyarTAnS5ABkRQLNOlLR9S2jmYsshBzDnqcdcwcPaYeQE86aJ9qkBbJdVSA4WSBCkRPBP1YtTYmehwTyHlHzyHR1vMZASafRMYNARwn/UUFA6wJIOrgbVbsxgBKc84Wv4Cbb/Nwe+BrG3XOUZubBh4MWdFqDrAGYd97ON37UDRLN5UzXEhKoCSqjJYLeqfEchHuQbq2KvBgpYUO6CTzMtK3OirRr1ra/vDI6vFmBrfKOyaY8wyUBFmy4nfioIDMxmLPL6irQx0BYS2OAD1A5Qi0EviSsk2rIPIFVQFwzUFYDGEYg1P/2J7fcEYZfIrMGVmpdLyGBUO0ydC4QfxmFVYeQEhXKy+6bshW3yAMItyf6L4cAE1OPLBFw7KJUCOYpnbu1rzuEzOoB436eOa3aV2JIOH6UdxbYtmo94a0KKGENXAboCkJKB0MreojbxZPbFcgq4oOQjJQj5+Z7VwYGxXSkce0XKQeVQgQHj/OwZOO4cREAUdQcaTPBD/mDMHWSLY40BMEH831lCsWvWnvHryVn5Wl19wEWYkMJZKeU4NM7/s9CqhIggAaOmGkYVnpKkM4vFrgB0HQDjKL9cc28AvWYroEfGA39WD2qHSZjp96ZVYBaqd68lzsRAmbKNsrY3GWECFHrVO2655dhB1xdeOFEikmQLrtq0/aHToXQjz3YGTbFEVhwoB2Tyiz9LBJot2EQ+0Sk6EnqWpQFu6dSAXQEAPAAX6ajalgFxMJLIxT7+5tbQOVAL75Yg/NmbligB7DoKSGv7ZY8daE4JjsAgo/HRP9bONR/x7lvcOuTqvRL1iTgBeX4gt/wC0oiATEyV6TcEBCX2js3kiUCqAksm8AGywBB0RCCg2wIcBQI/nR1xyJ+TsBJ0KgAxBEAlhP3aYbtUGCY4bYw+E9wQXsbWBZatxfw7z8e2AFz/on01hpQyxp93+dJWOlDi/cdCkbkio2X3PSsq9vxtYpNs3KJPYPx8CYo+Bf9G0qaAA50asOsAMkcgmvGeAwUr6ydluQZHek3uNTFYhK3BQe2wOZmmEUOJ08vHybQymoFQK0o7trrkjt+sGj+z96RNYPw7asI5mNT7JsSvMyX+PiE3VuG0NaDMQLUpKJQ8nRQSxrAgMQ4xbUXEHgKDk6IQqXu6ApCyAY8ITD51N5BCPAN92JuKCER8iOioqrE/nUKYU6kgbYrAESkrzTrgNDr543hZnb5yRcknn2WgX+bKE/8b9vyGvYEoZyNX/hk13gl0ZP4nVbBosGYLsW4qYAaKzI8gVpBjr7HqCsDTeGOR0agB0E/vJ/r2P4BbGuzCVPytM6kdJs6hzNaLdC1L7Gx33SysKQ7Cx/ZNfcntt6ePlICQoBSDOo54A6WjzTMqyU+VjpZLqjmzVBUVWDbosUnpQk1+I3eOYF0BaMLBKSL/Can+1AHS8fbSuJaKvwQUzMBIFSUYk1JgmcBwMXwoJxlnbX+YjSMfXhXWHV8H+/PZCECtW/jovv8ItqJZSGuoDEIhBIw0xC0JkjM4tbjcflWoQD+sEZUZFMcOMiiog7+6AhAfJ9kajj4NFXEWW6WScudMKA57lQDW4LByyaparrGumkW0KZO96jEOB8X5837Izzz8E/NPs25Im2h0vtYYFkaCqL9oimXD3uAMLIy+jRBFYUzwb6JOCNQVgCfiq7PmUt8n7vjp2jhAWFlpEL5wAL0OSgcqgJGr4DRYhFGccRsrsNbcEcjxMVcgsRSP6WOSxNq1nH+uJQ1On36mxeBsO3PEU/AajEBVbXEEesxBtu0j2KNjM1B3laArAE9G9n3iw996adOY6sk+IMCGl3XkBIYZtQDT2sGS9aBeALNMyg5svuSUWVWAj3kBIECZfOahRYhNm+HtMLVdg5lm8ACN/IHYNegR/m/apgTugIQfPzAEkCRtBeVFpXu6AuAdY5L531Nu/VX9PKqqYIkvKUPFBeEvMHECI/5DPiwr7xgsIT0o2GDl1FimaCvOYPavqHPHvJpGHkBS9iHkKAbvwyifJrQ3BCk70VuukyLt+pkYhjiGp/qZPyvQsasqmJMHY0xyRhgfuCsBXQHAjB/QE8kAKUiAj4RaUPSdy+zEVVEYxlgE49qhgDcC3a8FFST40yWTrKzjaH890maZ9ZiPAE1kGs/m/s249uQbgobx19h9tUYA1Rab8Mi/nhP02ML6aKIQu6ap2yCo3nzzzdoVgO55yiPALAYQW1PN1SXqR4BxVWEKAYPBDExVMXU12FI70z60rD4vsDG9iGwg+mMwAkSnf4TbO5cDtwDB/BanGLVOLdbgjIPYkWISzVWgPo2ZY6HmZmQz3pddz3Uve1cAknNtrh/PbuNrWlBHg4vwagsDUAkoP6Ngwqh2cB59ghrf4o/L0O9S7TPr8nWi72d93LVmwRZyvIXrQsF9k0ww8NQW5tHSQ6h3TGKajWbRZL7CQYWlIYtRUhvgx6rU0ZFiLrgBWxgQA0QGrJ6tKWQ7LiA6LcA1O/8cdW7bTYVhQblJ9pAIWwsIFkRAYQwOp2XLEZcNY1TVUC28OSia9RZpG1tI8ykpyPAxtwQTJeQ9QDP8xDZfZ1H93HcheCcQUYsklYhCmtmEUe4I5FeAUXzktwNxrGJfZI592ErXATxNakAFzTjQqra7gNyUIhedUPDxTzx+VTAT9sU7Bsdf1zBjIjWmTmHJ+vSgGVagHwkoBYRSTBE67lvW7GymBF+ov/EjNx/SWgNy7p+Ub0pmJEGKdgZALDGWGZYpcAxC8GgMB/XLWj137lyHAXTHH6AguT1iSpE50hBp5hNwrQRBBdQz/QwRdqcl1Ped6fYTJowr18RfRd569oWzbQAAuGOOATC8Pb8XPzVrOJ4B/mbZgJQJrJl0JjZNU5sQJNP+Vme/HUBIaiqi34Bmv2cj/+pGgK4AtN+4ZFqZuwPnkdPp2Eva00fhjm/pjW/5GTgsa4ANROvUojIRRnUNgfrDwN4F19cJRexyOZe2ijveICDFBWkbt4sOyLk6sumkmoi0aCfWAHyc0oSTs1AgY/kuTUL7z+DIPOTGZj2tIjtDoK4AzH4MqkdTgSnTnR8VnzSQYQyzUGbUQijrLL9GQ1IwEw6deG+AzASkRWRpNbcC1mP4plLOsWBtFbRs80GBpdcaEWK6Msf05IZqne/5aSZPsZXdoA6FIVhC+HXCSBHBW2IQm64CdAWgfUu1390MXb7mGy4Ncy02loHT7sShqmoIRbTa76wNCBUpJnUNwyZzwJ11umlmYXccLQH16P+k7HOaDfXIab+GuaXrIUXLIi2OA/Hox85BW0WE0LO2ha801uAaxq+OCNQVAKCJnNL2AjDe3qrBSoJMiAmnxhgsvZzNq9WHv+UPVTygpwRSQh1+bQNgzzkYNbDKYNW0EYhFgjL8gY+jI1BOzEm2yc6bdqkAIjOSaAGzhrguaTwA40iQ3fupq6Lw81RTD2YlOC8zYcg2Fd7EKQhdhJ2JKusKQPcphHf2qd8LXr3HebWAqKAgwriuUWkWRpG5fRg2mNQ1qpQA1P5HkMSHRzLGOB75qk/ssUfU2KfNUnYThqJo4S/J+oOaA5w5+rYtQTTLWSRfZG2wAZsdr5JB6ROFP3QFAM9C7h+1RWqqRzrZPCOw9e6Fm1uJU17AuFaIzLDXsjVj7QRjV3uDjKiYQ6gG0RMvzM2GrRyHw09Ees0iwFBqi3bbrn4iba8A0ZnYNMJR/2WkjYwmkZBC1XkLMPbzPxTJdo0yo9WktOzOf1cA4ghAuacEP/H90LIJV0obgXiNFcw4qAUCQmPo24SCkioEhIO6BoxJ9F+OAWNhBk4kmWc4XH1WlYlIf+aj93zDz91+9yvCt7VZu5T9N2r/m7Svljloyw4saoG46ZYIuV1a46NAwd9d4f8NCuJs7agt4RE1sQ8dD6A7/bORYBnC/CRXhLYMQxvAkBk4qBxgOQmFZrsKJoODqoxOGWmG4Bz0Sqy3Z+5LurGxYc4Tya8/evU755cW/+NjOyMA7QwDBVGiWasEFh6FFZ+2D35LDJQJpLTdTcWvm7D/j1mCFMRZPWKwSmD+5T+PGmMQdLagHRU4vhisShTCJDXu9FPw7xP7A0RSEMGDg+r3+2MnQe1/1FeUFQAZTF2JqXNBHSjBK/9al5J7Rrb8twC8TuTeee/Df/P02tIb7rn7oQceHl99AABecnujsouyX3oC1d6TFdlr6jDCF81KDEdvxgAQDowNsW2YIRCFT7fzA+06gGt1AJrFTeunwIhaUeHZDQ4iTJznvDL0mvETpN4abDwtPQkI7TmVciaiPvO2AOcAWidyb7vtoe940Q3X/YdLZW0v7o0/9MY/9+d2AdC5c00Vc1m6z5M1M+3Dfq2koIbKC2rcgSP5h7KNQRGwlZgJ2EiJczfm7p3vOoBr+vyLX+tp22sSTEfsrEQFChNs7xwMGUxFMaoqsDG+k9DI8qNEjCc4kDL2a4cz6EEgMDBwxnvbx5bWqPcXxDPIGFz9zC9vu+2e737JjadeX5MObn1sC8Vw+AEAuHljgym7Yzl8lWFB1GY1PZHS0gd75N4LfuNCwXWZiEDiy3SkTLNyYlH2TAh8BIFFIYFpGdWEYVToSkDXAYSX2mmKrNCkCPAqtGulBGtmSaXUUHeMYdTiMAnuP6I643sRjUU8pXXqBHVAqls8AAr5dcSwzxTGmiptqBoikl/4+N3f89wzp37y9PJwcOtjV6R0Uk9VPw4AL7n55hZziog1rliBtgT4aBQYpc8ojwgkbaLUruEX2rAmVNFjgmXPBmy3d9oKfuk2gF0BaO+qNI/t1iPzwRE3IC8iShQgVYUFYari48H12u8Ysyf/MxhOFSNRMBsoXEgWDBJi1WdOl6re7XCdyL319vu+6/rTZ153/epycfeVXXdJwEzu4u7+/oN+Pjg369Wnsx4e1/ZXbCckU1ALQqUlmeTGNzVTDEYGhaDPBkUyXg3pQHTUVEQ6CLArANcirxEBKq0pPK0Fky1Y/LpkgqGgPhvVhFKpMajU2Y1CQ/QhIhyUVWAZqt9Za3NiQtBFeFU/fykWGwATkfy/n7jn22+8/uRPXr8w15tMpvrR7UPi4TxQ15+8/Xf3HgOA8+fPh5wupdmlP4W/XwvgFw3fxknfn/4bP7e2SCMrHNn6hrwp68BamBDRhrj3V8woD7unKwBPBARqE/WVcAH1234Jh11SpaDoYQ0RwDLhsKohpoCJreyRmTeJjKHEOKgcKnhJq7aUcuFek1iNPj8YwIaqWSdyb73znr9+3fXXv2G5N+gvGJX7NvdpH04dEWpnb33v+dfUZ1V5Vg4g2dFt+BPt1V/CW1XbIanhx0fxUP5zfdx4EPckxyDBgMh7C3CmNOS2KWmQbHc9QAcC+scY0ygBZqzBNNsYx+JAAR+IfHQEmylLhLGroWSSl1ATiJFTYMUDf8QoRTBxDktEqKA+X0A0vehg/rz5eGxs3MLrRG7jjnu+/cbrzrxhyfYGFiSb05Lv3R+hPyh4NJrqWN1Hgfb+H3noiqJ97c8s9ahFG2qzLqnlHuRBP8PsxwPSdKNL+Ok9Y0Ei0Ux4xtkBaHhE3fnvOoAnWfGJIvjNaZsGrDOGV/FaCgj1qHIg03awTa2qaNvPMvgIHJRlc8u1FIL50vqWzzHJB7y+vu7e/skH/uYXXHfDT5828wOtJjLXN3zr1R3sG1KHPlXj0daem3wsAYBHRitGDgLmLsCpkbpGWEgeIIqMAdjoCpoodf85+vi1XiighJl/A7QVl9x1AF0BwIwpKNRz+xXk48JV022sEgtBHAKcjwPTEH8bxoSDqgKx/xHxBfU+Ae0C4nf8BCXGqK4ghOBhr6nwiOSMlZs/h4dfzfo6uV+64/7vvuHMqZ9eHhTD8XisK/Nz/PDeHi6NFT3uqxQGzrkHD+9+7KGQBahHWdaqktSAlLkkBQK0NlEdceY3GeYSW/vk1qSB/R+FP2T8r8nAMKQyuXC2JewIE7Vag3KTAou7e7oRoM0D0MxtStGaB9Ao0LxRr7SAPUMER4ppVYPRS861TNSSnsbZNmEExJjUNUon6EUnHPXrMwaRiKPPWQegShuB4ff2Tz7wN68/vfYTK8NebzR1MpxnrhW47coBqGCoiioDlaHb3/LtX38YBUGfQh3cOCldkw+g1+QItDAAmtkoaNQYAH0u/OctIZG01blpKsBRX9A9XQGIhB7VxuEfmkS5T0bF58TUV/UAoINiXEvw/teWApBy6WrObyFAKuCwqtEb9AFXBxcAhRgCF587HoAHy8m9/a77v/2GU6d/annQ65VVKZaZV/s9fODyPraFURSAc0Ja14DKnQCwfsst/GS8ZSLSuItvdv3UNlyltlHItf6AUSwUsRUQwRJBVDAsbNIOtEavfKRKQGNXAboR4BomNnkhoAQEapvM6gPmQ3uvcOFGr0GYque/yxOATPFX09COmuAleFA5gE1QBCvkc8xU29jYMEQk77zzkb9+44kzb1geFgNXTlTJ8ErB2J44fPLgELZn4RxBjWU3OnRuMv44PpXQIgGo1JrDc2XljMr6if+F8hEqhqeEvMC+IRhST/8FfLpScAamzG48hK51I0DXATTRYGlWj9NmyqLjVATa3vRNi+8dBRymlcFUGUblSHho075S2C1odBUFGYtR7VBDUQQqLInzh+OzrwWiDVVeJ3L//a5Hvv3MibU3rgz7/bIcqzGWClEUpoePXLgKxwZGAFFSNpbKSq6Odw7u8gKg2/WJcgEatXT83J4gZZmAa+uvmm+lKC4SbfIAwDDBaFWdpmutaRKycUCTGrB78bsO4IgxSGjpNXAC/Lov+lHGQqCBAhBpwKKeBjyuatQwHsSia4td0m4b3KwRyWAqwLQsPR32c3c3karSOpF7x133f8d1p9besDY/6FduKgVbggpW5vq4d3+MR8oK/aBMIIYaYyAw99fl1ccB4PwTeOxLNk3RNQYqnUn6zXkAzfc3AS0pDLSZrwDymgnDkbVJR0RVsX1LDsOdGqgrALNUYFVpHL4IrRWgXztnsRRZ+6rqjTxGTgLWnXWs4cdpJmRpzG4pjayOgIPpFMwmAIwBYxD32ST5MBHJr939yF97zqlT/3F5fjCoqpFYNqxKWDAGE1V8YmsXbAuo80AnMZSYUQk+8cY//+dH6k+cPpnVQvvwz/YAmnEvGvJVKgIZOBscGhsgMDAye8YHgRDan2vz63NSJXYUgK4AAPCy1mgJJmEn7xA4AJkTeHopwyowrucUDUPQADh0DsKUoqw1R/1mnIQE6jsI8mpCQ4TtGqiUYan2mwBlkP3sRINFht87brv3W8+cWHnD6vzC0E1K7Zk+KwmsAvP9Pu7c3sMeAKsMVQcHBQmTTktU1fS2DAB80hcsofXJxTduUpqVZyqWRz4vbcl5MZPVUJOgxwaFEioGiAQsDI2HPhV3ReRVSlcEugKAc7nY5xpMNdIgMfFtv5AfyZU4yXaieQixweFkmubYnNxCNBtnG+b/tOf3TrbjssLUVaFLCDiCfPYO/6/c9cBfvPG6U284MT+cq8upWGupBsDCWBgaXKpK3Le3jx5bL3i2QCFQZeb90eF0Oj647YkIQOlv2rI0y5g8MxG/zHTEnmnWmUmvETus4ccXxkKzjIYjW5iMk/Hk252uADwLZ38JI0Cc8TUjB+k1PQHjjeVU0o1/EGXAEsC9CBxC2xTX7NVPeEMYOw6nJYhNapobQ5Cbn9bD/8ufvO+bz6ye/M9rS0uLZTURy8Qe7FAUbMGFxSc29zBmG4qcpB6cbYEK8thY+Z5GAfhULNc0uSjNFsXZgknMUKIj+IBmX+KWhlVQGIaoNEDiDAib9APcAInd82wfAc4lTJ+alj3mAVJS+ikUohLEQOGeCSwzJZ9f50hx6JDsQSLVLLcFTDvvvL3N1o7MjJHzLXA0CVV28nQRgeLh/6Xb7/3GG1ZX33xqeX5FJmMh02cBgVVA6jDfN3h4b4THRxUsev5gBV1+yQq2Bqq470ZsXfQKwCcL2QxGZ1l8byy21+oE8s+o+Zy0VUQlSAo1KHsMAYUpfEMVNjkSi41mzKN8g6PdGqDrANDoVSJoJOotvaMC8EhQSIsr4LUABEXlgLEyUpZnjBf3muHWOlCvkTFAChi2GDtBHayvQgHSp/Pmf/tdj37dDadO/ZfTqyur9fRQLAtb8fwDB8GwKFCr4I6tfajt+SVF6o48d0HFgZz7xPnXRAXgU99baDiMDSBHLbOQdidwjbwmajkKhhwAheVI3wphLiRt/kaCEyjYhXevflcAZl39GqZP+qJKmDX2a5B9byFmmFDVgnHt/eaVZm/49iRxzbjrQFqZiqcTUzC6fDrkwBsbG77tv+u+r7ludennz6wunZxUE2FTsJKFkoMRgQUw37P4xOYOtmt/rGs4gAg1efzdCFM1HUNGk08AT6AAxAzJInX/DbLfEKX0mmPAURMWavkAxB8rAApjwOQhFcrGjKZ6HiFjdA86IlBWBU2m7guzOzKlWXIKkozI4zdfooAxjKmrUaugDw7+dZT0ArO0Vk0WV9nhD8i3I8LhtMLK0Prf+48YDx5v/l/95IN/6uTK0ltPn1i8bjoeiyXDEmPNuIaKw4mij4vjEnftT0B2AHEOYMDnGbO3AzZM1Wh6qFzc8akAwCiWTiNAzAKYyQbUmQ4pBa4cYWnkdOqGidkrCj9yRXfmAPhxZh+smb7DF+7u6TqADKlW8rt4ZOh+GgESWp8CpyHqDwY5hoXFRAWOXXiRPcnHJXJRk3wReQD+P9JahcW3e78UCNjfks780dH+2+77ylNrK79wam31xnI8EcuGYyCJIQOrwJAJ0jP4+NU9VDRIiT0+2kfBQiASpcJAlB419eEDYZGiT+605AuYo8R/TIBnu7GaAQS1DRRqPNTauA2DABZgYBjQKUQJoMIDuEIQ0vQljQOB1aWuKwFdAcipwKFFlUj+mSGmHP3kKDHUiIFJ6ZoXVmfm/bjXztrcyDJsjQnws+lYHKbqYIlRVxX9kWb+j3/yVWdOrr7t9Nry86bTqTCxDywigrK//VmAhf4Ad++PcLms0Ddhng43KGmj6ScyEMU99178sq2nkq4nMy19EgSFdl5iTE9axeYrO03eDErtgSHZhilgTMgFoOjUrImErC0z0Nz3sXu6ApA+hLbllCf9yIzrfyMLil4BokAtDsyEg0nZUE6Rza/h5Y7+ADOOuSmnNr6TBkBJisOqhmULMZ/+xNqs+h768tNnTm+cOrX6/HI6dQX5HB1SL2ZiBqAVFozFvgpu3zlEbfsQrcNnEgchatQP4oC6uvWWdXJnVRmfwlhDNVuxKgWCVUOg8j4K0szqSvDOYuEAx89ecI2C6cFTywaVmxFb8VGjkWQt2I0AXQFobwFqUtdGijWETsTVn4SvC6TlFxhTLA9rb/GV3IApAoXSWFtpO378yP0Z31CyGDmnSoQ6gYCf3uH/tdsf+LIb1pbeet2JtRdMx1PHzIZDNh9SWo/CCKHXN7ht8xAHzoCJ4Igy9n3ULXhPHp2WUFfd/ZQAwNlMn4T4cyIDJ6ZeKq7Bybf14yl9NcdTRAWGFJYAp5x+xbQGTHhNtHFpujvuDAG6ApDR0NTF8xdiqFPrifahbW6z0MiKACQ4cP5Fc2jWhzn6jVkwMNJh8zk3tMwGjP2qQsUK82lg1gnt/+TDX7J28sQvXr+28ifKw6mAYSI6HosWE0CVw9D28Oh4igcOprBcQF0NUhMYj9m4AlFjDLmy3DNq73wqAODsqyakWWvvP0s3s4tpCq0HKTTrqFS9iFczeVERqNe1cDrwDc8go3Cn1OVuBdAVgNk2Ndyyeg0ar5/VKXUFHgD0txNJWEkJMKnCCjDOvQ3tP908sy0paIYqHFyFGD5haOwceqagp7IF3NjYMOvr6+63P/noi69fW3jrqZOLLxpNKmeYmBPTiVIh4uhAVBBu39pHxQaCOqTs+DQd4TBk+7lcjTUQoof23OT+pwIABhEVtVy9c/AvjEcuW/fltF8/z7uMgIUmGQjeidmw/weoI3ErZ1YGi3ElHCFddXUA3RrwyGEMt35OEmnp02NHoICGqDDLnkE7rhVccKCY+YOTHIWjZ6AG1990E3PmLhy8bRkg5+DYm4SQMfRU2/7fePDBFyz359564uTqSw8nU8eshsPBF/IqOl8A/Cy/MNfH/XtjXJko0CPU6gLu59d+olHY5I8fs4Gou/u1f/Kl2/6sPjUCkKb0XsrIOZq1+Efn9VnCb1NQm7YeAHqFCTgDJwUhNU6PXjmY5y1oAhE7KLDrAKJpTe4gwRB4dFrDjjCRUMKFGLXkjkOxEGBE4q2AYHwrK0jZGPm7LSI+R0CRbrZ8z22cwBkHoEBZC8Yyok+V1bdO5H7jzgdfsFosbJw8tfplk/HUWZAh9bwGH5ohnp/ABuocBoXBRIHbdiZQYwGJBqecbM19Og9DUYNBkBrQ6eSjINKzT9GxqA4jUUOI0lQAJUpzlSBCiYnptRba6ro4AyKDAgCswMAYH6/GlZcqx6YlbQWi8lIbwMbvAbsXvysAqU0F1O+WUwBIkANrpl7XtOUL7bx49t7ECSrnwOTdg/IIqidSwHPmUtNiCcIAYsCoUYrTSoMc+JYnDur81fsff97i4sLbTpw+8arD8diFZQKMhnIUnYioBqnAEDDoF7h76wD7lUsx2jzT7bA0/khEytPRqJ4qbv2MrNZiGx+3ADkgGsakI9+e1oA+OC3u/SLISlAvApKmi9IZ+nakYeRjSOcI1BWAGdaZklL2YlI4/ETZi0npBaMMhSYCRlUFCXO2BGBPiY4YXIDahwGZr70vRD4b2AhDVWiiU9qZuC1cowLcfLP38HvHx+87szTs/fzp6058xWRaOiUyGs0vA+pPkcdPAnIV5osCm2WFe3YPodYkNWTM2muaZIIjgQrAxkDEXRmXfBdyKfWn2rCExYMS4CQCpAonjbgKM2rplg4jKwLemr1hFxSsMCwona95iT+QOP90xIsxM4LvXvwOA5gJ+CD2h180eAGKF+UEea8HqzRhASICYyz2DqswPgRTi8Ce84BaMMsJ3AEO+IKo+uqbhxKGWVtqlWJpka9ceeyjVy9c/H1/4G+WmZvfvfPOx06uLhY/d93JE18zPZw6YjYEH6OtpHAxfgsCUgOA0aMahR3g9sd3MQpJBBLGGvFfaQlvxP9XjbUkUt+3NbWPAsD5c1Ccf4q2Y7G4BsSUiMPfNcSAioSxqh0TFtOW0gGOAqvQwhfkbVUdnE9YjsUb8bONWINm1GI9YkvedQB41seCZDNpEABRI19XyrzpslseGlZ2ZeVfaiEISUikbfwv0khKjTsGMydBTCIIKaBSq+kz7e3uTA4OJz/0Y1//py+fPascAbezoe1/0623riwvDv7TqTOnvqGeVI5BhuNtH/7QEqzGOIwDEMJ8v49H9id47MB5WW+4gSXrSDRqE4iTKkI8N+CON7/mBZNPYQE2S22gNE6l9j7QrINoRzJcQAPQFwujJKampsKpRHAaNgAiqGNnoG2OBQmnMQ5och3979E5AnQdQKqClHNMZ4JCG+iJsyFSAhZtDGEUAj60TW8J2nXvQB/30cyNryCx/3VI06wNYlY14L3dvZ84/xUv/bWzZ5XPn/d/urNnz/J5Inn7J68sLi+6/3T6zNqfd+Pakarxhh3RK4/SFU7xQAW+/5QNbtvaghY9AOLBvYzhCPKQm0fWCRYMhSMpa0xL/cPMSk0/Lao1UdutJyus8SS6UHgodFh5ukKuHZTAH7DWQKVCDaBAo/TTYOvGiW0pflzL8xy6pysADTKvFAkmPseK0kqpubPCYUVjOgF1ICjGjmFNeEmVGgvx7DZKbsKJBOR/NavsW1bPzJNiOOSLFy5+4GA0+RGo0nlAcZ70rCqfJ5KN2y4trM27nzl93Zm/VE6mjlUNk/HtdeNlnqjIJqzxBA7LwwE+vn2IrQqgnp/BKcT3Kje3P2W++yRQY5imk3IydbjzM8pb0LYtsObrUPVailYuQz4maLZFyHUBIrDGoBIN9CsfDsLeZBkpE0QkKS/jvBO1Rt2b340AbRZauIcdFI78jZS3jS1xkCbkDgclga23B4trQM1+iDQGX8lG3KHpWb323yn3+rx15eqVnd3tf/Rvvubl22c9A6c5/A8/PDw9X/30qTOn/ko5njquxbASXPgdSL1froN6c9JY4JzDYlFgs6px7/YYbHsQDZzFGJ0t2YqTKHCGApzWGwBaP1Kb6T1PlQCU3/4S47wUrTQgChldTimg/JTm9XiLK3F6TT1pyI8BVhz67DBx7Of/mKkYgIu499fkMMQBD5CYJNw1Al0H0N5Pi4hn86l/aU1Gz9cWMcV/v0+dAUbVFKbXR5Kfa+wEJM2yKRIrlBjSAgyHmmuwkFpLOplMdHNr++yPfs2rPnDzxoY5T+RC5p5svP/9w1OOf/rMdae/raxLB4Uh5uaK1dih+JGD1duTjVmwIIRhz+B/XtjCoXHB/8CAxeVcnACUacupCAyQsXCqd8698xcvPhUF4LX8AJMpSig4KorZDEDNSFN0xLyD0vpVA9hXMGPsagSiM1gpWLRpYmPSzD+0JhC2kwN1HUDrnspuoCDiSWQdhb+ltLnR4jhQC2EaWXZhdRjxJcrmTQ+AS7K1INXEgxdSpWLA21c337o5qH/2rCrfsr4eDj/r2dtu6y1d99z/cPr66759Wtd++UDx9wsTPEXnYgUrwSjBsaf1rg0HePhgikdHAjImGXxwWPpF41LO7MlAvqNAMD0pK3f7+fPn5akoAGfUgJRbfMXDm28b0rgU168anRIyboBS8EoMhEnDYFjUIVNAQ5y7EqBCjYpQZ2XdSd3ZjQBdBxD3VEwNV59b1t6UHXYNe/J4g7FhTMoqtPMN3K85Y0AlcN4pvfMCBZHzrENHMhgOeefS1ien7H7ojV/+qkpV6ZwqEbNubLzNLC6svva6M9d9V13XDgI2WZpuarHjKMECdhRYcIo1WCgxPrF1ADUWJJJWYy7YayXzjcy7hBWhCQfVkzHGzn3i01cAoiVyShYDEvAVmon9Qpu4gxS95jcSTuvgsQgUhuFc7XMZ1X+qggi4UhjoglYDDa6DbGPQPV0BSIKVli5f/Aydm4I0XHYklqAhg4Nq6ksCcWKqRZCQUpOlmQKwWc1Bai2KPh3uHY42t7a+/0df/YqHvMlmQP3/hfDqV178sVOnTv09U1ai6oxl0yDnHGb1dHs3IJmQ3y4sDQrcvrOPnQqwBaFWBmsNQFCzTyEG2kUgrexUYIqC6tFkr2fkM1AAHrUFFyg4d0nOMvw0c+6lmRwFkUasJSLoc4EKIbotFEIGJacgavJY0qoxgqOqgOswgG4EyCtAMvoQafHGNCMKxZfPW4Q7WCKMxQXBiT+CfA27Gc3Q7djrqhLARqFCu9tXfuxHX/2Kd4XD73/Hc+foT3/HxX934sTpf0i1E9GaYEIgCWW+d0owymFkERgFHBFEBIu2wI7UuHNnDCqMJ/poA/AZbYdvqEgyQvEe+qTsu4bHUO0+/OkCgP7gs8btSvxoJLkvZ2lAyCzAY3fA3FJTcoxTV0WfCdPsA45MwaDuTLkrmm0iNP+XlW4C6DqARg2UXkhiDiu1nO7btNQcTEJFAcOCEZrE39zVJpe9cgSxQvtgyEBRix0u8JULF37nsYvb/06DuIaY5bwIves7//aPrpw68Y9ROVFVgvVjSjv00rfqlBUEEkCMwACY7xl85NIWRtQDWMBiwFBUhkAOMKJwJtMkZGEbUZ1ojEUtuAe/8itb+Ez09Dyza1FteX6TNjLfxh9hxgydCDrDBRhawqh2/vBLCAQhTQCu5xNQFi7qR4QE7HbZYF0HkFFrSdAEgwp8WIBzkqLB4uCoWThIQQ4HtVfYkQpADj4lkGAgnkcfbyhqorFrdWr7BR9uXr0yPpz+wH/+C39m/5YwK5z9F8K/9eBj/+b0ybXvZ4GQODKkpOJbXBP+0aJwJ92Q8RiRAVU1lgYWVycTPDxSGGvAzisCXczNg/cEbPtyNgw8osaUc+LqOxMA+BlMz6q510JTDFMCs9OjWQnUBLerpID25GdgmFHXDStQEHUbmeNwojiZbLyIv4HtKkBXAJpPQdHWqguaG8VvASTZSTf0UsakcinDLxEHybeY1hGMKhwLanYQIxDUagrWaiqyubv7f/+7P/PFHz777nfbm0Pd+VPf+diPrJ1Y/aekJFwLWTKU8u2edAHnNw6l1uhzgT5b3LZ5CGd8cZLciz/e+DNgPmVW3f7oM1XjMaD0sc8UABQVSq03zUSiRaQ/mnlmlGBQU+Y8b0ASQGiN37TUTmbUhi0n1gznz52NItbQbQG6AoDoCeitfaJ2PHegSRp1MByCJVVaHhLGdQU2JhBRfEsrqqjYH0iJvUVoLciw2MGAt7Y2f+GhR+/42Y2NDYNXv1qISH/9oYv/cnXtxA+oMaK1kiEmRxppPte8euP87pd6AhLBynwPj+5PcakExBBqcc2Wc2b11goqCRoF/+uRFtaSqyf7hbpPfqYAYFqFZvO/zhCwYqaPZM7JEnGZzAIsjgk99jmAtcYODTNKP0qrW4326mjGJGTswq4AdE/y4NdwwCXIZyW42EZUPd5i6ecZxlSl8QHI/P0ltNsucOutFFC1UgzmzPaFSx+7erj7TzduvlmAm3GeSH7lvkvn1lbWfsgQi5ZKRpniik+DTRddw6Y8ztRsFFaAZWNQQnHH1gHYeKVcTkbSJ5nhKezZKcwAbCyccw/pdPwZAYAtLk7YrUaOhGYCJIBS9JgLdN8EtqLpCCiAsX1DqNV6A7OMKCTajEN5BqOGFaBkdmFEnTl4VwDyLkBzI5C2JXW6mahxrWFi1AqU4h2FFD6kIh5QK+HDVQXEQITUFIb2N6/u725u/8M3fu2rLtwC8Po6uV+9//F/fmpl5awhVi0r6sUJOJB8iNptbqvdDWeLVWGUsDQ3wO2bu9hWDYCXtvIJmmg9CU4o1+gmwo8zRQ+uqm//Z1/1kk14RuKnf2hEW4rLeLvna0Dvu5DlKYZbvGUkkn3+BQsqJymiPQWxziL+mQJRtE046p6uAGQdgFAC06hxBk7yYPFfUvqseJWZqypvXcXeQow1SlkzVx2wpwYYqJMJTfZ2f+S1/8sr35vsu++/8AMnllZ+uM+irp6C2VBNAmHvpulXdQwBe21CKgLtcFGpBAs9iytVibv3x6BeEXz3G018Ms2m6JDbsB+INBPfejK9OAcB3wEAG7fcwn9EoNWr+DR0XEJhNaiZ6YekEczXDmrcmNK3CfqGUVYOMJT+xMiyHePYIEEf0ISxaDNqdEWgKwDXius9YgGeudR4JxsNrD7CxLkgM9WUKhTnfSG/Tgy3kPSHBe9ub71roiuvOxt8/H7t/ks/sLS49CO2x5joFGz9HsGl1OEgQQ6/NkdTEWUQSfLGq1TAUAx6Fh+/uo/K9KEKVNywZ/L2Pqn9AtefufFDhO8mlIl5enCoQvox4DMPJ1emVsoyEmU6zuqU/ix5DkOra0C7qFpToBQB6TWiFVrdRgT+NPEkci5C93Q8gJgNGFyzuZVCm1yAyav8BA5MhFIJQ1Ycht0SqwMJ4CzBqIQloF/ZwYnycMiHW1sPTw4m/+THv+aLxwDwa3c//o9WFhb+NfcLlPUYlg1BTeLnR9MqR41jsZKA0IMRhqMSStbPzXWNpbk+HhyN8ei4Qr83h9pVcCwoglVWarlVQ3BpgOgUULhgBGrAECg5FGaIWkdXuXZ/JAZgJUpN5oI29FzVxvRDG+4+NfqIJMFG8ARUBXohX2BaVzBkk/6/FsCaptWPOx0O7kgxOFSiOUmXDdh1ALPzb3t01cysskGooeotrCA4rL1frj9IBBLNEqgFU4jqgLUaH1Z7B5N/9uNf82W3A8Db73nwe1dWhj9qehZuWqJHhgKGD71mcLn/lxJiAAYVlxAycMQgrbDABGMMPrK9BfQs2HkikFG/uWhlElCjTCQF2AX8Ag7WOZAQlKyiZzF29SOjrdFjnykAGMVAsR2Pij7JfAA98Npe50mKAtOE2Kt4zKJgDwjWzkEjgQva+jeLnQRlBiKi0lI+dse/KwAZE1jJG3J6WCxRVSOCHKijihhB7WBUMS5rCJmkoCE01FVWB8MqRAUf7O7/9Fc/9NFfBIC33fng9y4vL7+Wh3N26ipYSx6QDuF3LeOQmXUaqYWihmMNwiSBE8HysI97dw6xXREKMijJhds2MOJyDX4OrpHCGU9bImWoUTj224TCQcW5B86/5mUH+pkCgEFi4A+gR/AkhbC2MZcGneQkbXZpXdcc8D5FWzZOmYJp3tdGbZgShlK0W7uYd3LgbgS4piiYM8CIZs1sgt5cABRMmLgaxNZbiodIL1UFWFHByHyvMJuXtt63c1j/8Pr6uvuFO+/73tXVlR8f9OdsNZlqYS1JYBBRsr1u2t44t0cwnZTAqCDwTr5wijm2mAL42NY+BsUQKpoSxVkDHRaSClSu/lN4kpIR/xOEHYx4exG2TCr1xwBg3QOA7o+SuZJuclDbGYiajovSVEDBQ1GTUUv8OX0DlHUNSVLrzPY8Gpy2cg2bwt0UIOpagK4DmMmtC+skTymNAZOUdOtRdVaHGwTs47uStRXFDDqvPTODHu/tHVye7G9//xtf80VX/8vtD/3dk2snfmy+P7QoaymMoShCEjbpRkcQtVAWm+XSKsyBxAdigIDaKdYGfdx+dRv7ZCAElCpBbceBKhy7E0oy5zh7EwhGJIGNximIjAwXFvjC1oXtvYP9d/5R5v/ZF0wDKi+ZF7pkBRez40roBhSNXVnPMCoBXNi8uIghUCPDcJqnHHgOgAtOQxJXj501YNcBxKdWodA+EpSSo29cTXFON42XBxEqCQkckGC+YQFitYZVpxM63Nz6kde/+pUf+rk7Hvxb16+tvnZuMOjLeKxkDUfacEze9UBVJLDMRGFrI4OpQkGSWnCy38NWNcWd21MU8wtwUoE43PyZvNkQp4KC7IBxsNWuScBaw3Jfp7aHex5+tL546ZHvf+M3vOZjUKXzfuXwGQut4oKRM6l083eS4MIcVYqUdv8ctiiRLsxEKIzBqHJhw6LR4TdwOLz3AofiTdm6jykGr2rCI2YzGrsO4NnuChjnRREvnU3hoF7KKyDvtQ+GiENZV2FbEFBqAqC1mqLPh5u7b/nxr/mS173po/f89etXl//DYK7Xr6uJsDXkGHDRsCLxcynkCWTCmSN/QoawN/O0ylgeWHzkyi7KXh+QGqzqgz0z4YyhdigGQWEoJhl75p1hwNgCm2Upd124yA9d3PzhN37Da9509uyn5/7zpGKggKdE/X/kWEQNQwODaEuJKSkmzB9iZgQSkMAF1yZNev9QbCKVWPMOg8K/q4TxousAugIw6wlAcQbP/egJUEbk5IsqegAqEKows3o0nuCcaDEY8MGVy3d8QvV7f+5jd3zrjadOvGF+bm7gyqkwiOsg4TNkIAyvGORriFWYG118fKkJMI4hdY21uR4e2h/jwYMSvSJYbXB2oDKL8uS0qxJmYoYDgVRQ9ArUNfDgpW13ZVKayWj/zc//hq/8V2fPnuXz5z7zQ0LX9EPQVvJPE+fF2Z+7UWS2UoXVj0g1EUpHIA7YQJIRc8YZ4OTM1DRP0cvJf3GdHLgrAOlDMBnNV4LqjDJvQKjPCA26VjaEigjq/GtbG4XCKfUKjHYPy/3R9Af+6gK++foTp980nF8YjqelMoVEADENQSUBjc0qizIOwrWKVK2EwhDYEj50YQt22AOcS91EWmdSQ4hhBHovMWpl1EroWQNmxeNbu7j7yhWRxXlTjw9/r6gWvi+1/E/H7R+Nv6gJ+NCQFhK3ACnBJxKnjnTlhNo5eMaCDUEgDU8DCXnJMhmouf0lCx3Nwhm7F78rAFkFQPPyJaS4FUbhb2AfCa6YiqJOKz+vw7fOEY8P3/SK1eGLVldW3zRYXOqPqlKN5US0RcrMy1aMioyjngdXU0vWSlCIq3FqOMAdV/dwCQxjOWaBtoNHo6tvEtv4dt9SjfkeY38yxf1X9rFd1rK6eoqne5P79/bH3/2617xg5+zZs3z+/Hl5+vwWGisuHypEmaIyrvu0+TH5KBBwi1oVli0q8dbg6e8V9/yY4Rmkr8eOw5uKxjWtky4duAMBk28+jqyoklcwhZSc4FPnVGCZcVDWEBg4VpBALQrC4dbdf+LEcHi6t/ivFhbmiul0qtY0gWAKBdg1EdbMTXYwtQsOoV0EwIBzglULVKq49eo+irkh4AQgG4D9xm2HqTEmFSUw1ZjvW0wrwQOXtzCqATMYyEK/4MneePtwb/pdb3zNy++8eWPDnF9fd0+fyEpIGwles9IMWYqxuimaQ8xovPxyclBhDUQAYS+88kagnKLbkYC+6AdAwf+4+fyb1OduBOgKQPIDcAFw8iGaMbkGmvnYaXgxhWCZMSorKFuwqL9z3aF7wanl4Qnib5ufWzDTyUiNBZnkaBNG09yuStTHg2mYhKmxxZKZohASjLC8PMT7HrmEse1jTRgVV4HGy95DI+H/0V63Rr8owNzDhd19bB2MYWwf/YFVGIKbHLiD/YPv/8nXvOw9N2+ouWWdno7Dn8j7nuGoTWBnsvvyiF7MMmy6gsYunbWNYxgCnKsgbAMvI+A2SUGoMBnCRxnhKQqjSH1B6OLBuwLQ0qyHQMoGcwr78dwtTyCJEjyuvFyX0Me0LnGqR3RyMLypYMK43vdtf/CzBxmfF6AKDt2E8swePPjjxa1CdO6P31c7h1ODAo+Nxrj9YIzFhTWIq8Gw4W8QfXGjbbmgMBbDwmJ3MsHjOweo1KA3WPBHjEUKLsz23v6/fP3/50vedPPGhrnlr7D77ImtvIlHHE802Cspz5QNnWE/olkJkgjq2kFtkVKM2pHgmqTF8ZCnbPIMf1AhdG4AXQFoh1dKM38iJfhoEq00sdQKwwalm4ANoXQ1Vi3j+SsrXDiHUh16Bp7kQz72qp0TiBZQlzlxen87CIyEiK/A+CEVWKmx0Bvidx64CMzNwwg8jZd8QDaRSUGYRhVz/SGmInh4cxf7U4HtFxiQolaHWlUWen2zeeHxX/y928t/qap+M7e+jqcxcV2TrIeaMSdFgvnYvhSRngN0UcoT08o93ieooag0fC/5Xb/NREWzGwcN0WMUmJC5p2C3BOhAwCN69VgMIgfdBbDOBbeZaPqnClRSQslgQIpXnl7EkKcoQTAo/JCq0Xgzxnf4LD7NIrhV1YOBmpljgKDEWftKECc4MT/AfTuH2KyAeWMhWkOMNwux3APDgNRhwTKG/R4u7u3h3ktXsCeK3qAHJYGQAyvc3NwC72xe/YPLW5t//yN/51XV04X4P2F3lXL99IiRiSY/dh9IIHnsIjVegiDBWIFSCRbqV6hoMgfRYhI28eNRNN0wAX1keEcF7jqAGV86jy4no0xt4rbytF8OJJ6J85ZfJ+YtLBlMS4ExGaGITEqoJWossRLvPUfs4++hgBWD2ggUFQALp4KeYSgbfGRzF8PBAqwonHXog2GVIMroWcFCf4Cdwwke3dnFhAi94RAWikpLMDHgRAa9wuxvbT9y+XDvb7/1z7/m6llVpj8K0++phoJQ2wosWZyGE5y2+hKoy2mTARgBCltgp/JGJawE75LsA0OYaUbG7ROHJTgSajQWDSSvUJA6EKArAA3AF22ls4DZ0H5rK+3XEqEkg1IUxihOD3uopzUYRfAN8HzzCMo3gaCUG/KmoqKNB18aMQCCsDf90CnhusUBbru6i10YLFqGE4UhgvFwOpb6BQQ17rl8FTulot8fYAiAxP95DBmoOO3bIU1G44P9/a3vectrvvK2GED62S+w1Fpt5Bl9jEb2m+jAKbLNf+YFCMIWjx+MUfQYtYTmlWtvtURNN9HwCeKoEARCGpybwu/ruuPfFYAcfEoedK3uMLSmHF8ugiFBpUBZAytDg5WehRtXYGMbz9sEREUlXNhZc4aAZzdgzpIDBw9BYwCpsFoUKKXGbVuHmFtcgGoFsBcv9W0f89bisckuLm6PwMaiPywAUpBjGPVZAALWgofiXMU7h3s/+FOvfuWv3byxYW55Gtd9nyJ8EZqDHWg7K8fPjJXTKi+agqsoin6B3WmFfUewPQs3QYIHr8Xpj7RjBLNWTnQh33nlzkBdAegegLzwVJRau/mYVR9fHRGFMUApFSpRXD/owYBQQmEDvx6aOwllVFxSzE7ZjYGlpoTeOoFlBFMSTqz08N7Hr2DS62MJDAhgrWKpP8BkWuGOS1dxqIpefwEWALsaSg5qFJX61GI1Kn3umSuXtn7yJ/7kS3/yrCqf/2xPwSnm2yhlar6IDba2AXFzoZqxGUPeHwHOMLZHJUproSLoM6HUMApkwa1J0p1lAKfuSttKyC4dtCsAM2uANhgYc+ahMWmWIUoomDEJEWLXz/VR136VJVSD1bQOtKrHCzjGgs3GYWfrPxHxnvxKEK4hjnFy2MflyQT3HpToLy2irkusFH0UlvH45jaujEtwf4A+G5BWwR6Yg7w3+PwQy1y/b/auXPjVh6fV/5VyjD9LoF9GWiDvPmpUgiFo/EwQFHzUCu1ujEE4BYgqrLU4KCc4EL++m4wnWFlcRjmWwOGemS1mxgzEwp1YntLkK3ZPtwVouOIZ+pz5zAdfHa87h4OhAmVFWOpZLPQtqtqlGyb+HCdZyAUUqi7dQPkGIJpVakP19043DPScYmlg8aGLu0DRx1AdlubnMS1r3Hn5CjZrYL6/BEsGNZxv+zn6BhoQLJQg8/05Hl/d+sOLm1f+zi2vednBZxPxv/ZTZ+EektUHSZ9ZPLSxcGnTSMFYg6sHU29yQoQruwewBYPgWtuStq0bzWx3OGEBAHX3f1cA2o8DUIfbOrLWcl95KPugD/ibf1I63DBfwKig1tp3B8JwENTcMNHijKrEgd9OSfHnwpfG/it8OztUpeDMXB/3b+/hQlXjzPw8DPXw6JUdPLi7D7YD9IsCNVdgUlgwTJiaGRYMwFEtg57hcnfnyu7mzvf85//1zzweEH/9XBotZ56myZ/wqIOvJm0Ea+Rf+JSiSVVhcypgJbBVXJqUnlBkfLPPRKAwtmnYtkjMEIipxIE3gMAdUI2E4+7pRgB440qEl67JkNfkTmviMhsGygStK5xamUc5LZOdNXHIr+Nstp0RvcQk32hkydqQU5IPgABLwuACuGNniuvXTmL34AAX9sYgyyj6vZhtlyjFFFiDjr07MUi1ZwrotK5G+9v/+PV/7pUf2tjYMOufA8T/Wv1VDDeJ2v4YPxY1AsQc+PoUkpT85zDsMR7en4T1HcGSxW5ZY39SYmh7GFcuMSrzlWNyHQaBmYJ1e7RV03ZUe9cBdI+IUlCjUd46RkcgBwdVBoFRkmDIgtV+gXFZAYbTjp+psQcDcRtlCwfABVVhvLKi9ZiLdlVTxZmVIe47GGFbDR6+soVH9kcw/QJsGS6lAIcsP1IYAsgQrBYgFrC10mPL+3t7//bf/pmXv+XmjQ2z/rlC/OOLxWGKJyVVv6/PrclboSYhA40UcKxBtQiUTrA5rQDLcCpgZdTW4ML+IRaKfvBwaLf7ikZ4pEnQRUkTEDuu7vh3HUAbAwzuNBKipjVHqslBlGAUmIhiZdCDqR0qZZgoQgG1l1IRE4BPs23m1IhUN1i15x8o1AlODC326xq/9cBl1NSDWIuiGEBRgciAg70XR4eccIhYfdw32Lq5Xt9sX758y31z9b88e1b5/M2f+/c94RqusVBLtPxQWCnM/5E4FbFYp4Re3+DKqESpLiYsAEoobIGL4xJf6mOXQC24Lxx2aURELYpwxF58F9ahgF0HkJlD0NHlUFSQSbDPAhRSO6wO+ihLgWMKfvVN9JVfF0oKvlSizCw0WlU3FtUuAIEMReEc1paG+M2HLmNTBqB+H2QUhAoKg8ZH0DceJrj8MnmlHGspc8M5s7e9+aGt/a1/cMvLXlbi3Oca9GuXgLBhTcCeaJ64nHn6I6gxfVAzSigujypwcF2OBi09Y7FfKQ7rGkVhGgV0TjtKVujIUp7DqrVhaHXv/bO9AFCTC+B14qTZvjrJ8EFi4KhEDaAvgn7PYCyBYUctvktzG2UzbnT/SVsBiYo0hlOGEFCXFU4vLeDuzV3cfeCwNN9DrVP/M5QS552CqpDCuaYgL1Z12hsOebx19eHtg8l3/tRrvuriWVU+/1mm+T4pvTIkL7dbdCRALs7iEjYsjhykJvQMYWtcYuRcOMjiux0DFGTh1OLK6ABDa48SevJ1ruZMq/zbkIDDrgB0D1SEQgiISkCRovjHE3g8ll1KjcWeAWrCWBQS5CjJeQbBwDJYUftv9yq2GH8lgf1G6l96QgURwUJRQC3j3Q9dwaDXB1zZ6PuJs3bf+W9Xby7gpb+qptfDdDoebR+M/u7r//RLbvu8Hv6WqbFoCuxIgp3c948yjwAAcLBK2ByV0J5X/JB4Tr//MQpjGBdGE/SIATWNtj+6fbT7/pkWgQO5s0MBnvUFQDN7rsaSKghGOCgBReEIcFrAQLA0KDCaSNi5e/MKIe9RHzsIqDfvkOTQq/7HKPlUXAhECY78cMGVw+nlBfze/RexQz1wz0CIwVp4d//QWlhicKDVUuOrr2QLdRA62N//wdf+yZf+2oaq+Twe/tkuS6OykloR59FiMWxAAhhojeKwEhxULhCbBEw2BYo6OJAhbI1KlHUFw0HuE4JFPFlS0kGPVkES05CTTXlnCdaNAK0rK0ZRUzisCOh8+C8c5ozBUAvsoYYhAMLphU7uQUmYlnv8K0RdDLICC0FI4ciidIQbF+bxwPYBPrY1Qm9QoK6rYHYRLD7CTOsxswKFMFgrKFcgZjF9w7v726//0Ve++PVnVXn9GQByU8ayjq1+lFXFGPD0dfGbERFBYfp4fHQIZYNCKEUkx3+DuEmYOMXudIq+qTPPPyQTVKS+bCZnMaUwdU+3BUhdKjW3EjWvLwFwRN5mqnRYWi5Q1f7WLyLzhMTP9CHGS4N1F83Y21BWHEjZz7tKWOYerGX89iOX4RbmYYNrTkZa86g/RVNrb7IFVghbt9Trm/2tK//9wsXRPwvGHvr5Af2OdlcUTD/iAW20FZ6/gGDCxMEerUcGI6fYKisMegspwiwH7Zj8OlaMxaXDGidP9nBYCmBMawuT/zd+9jF6jIBg5dY9HQYAQEzjwa+ZTVcMl6xJYRU4Pexjz1UwFG6c0JceCRSN+n9wcsFNLjjBYpxBsK7CDYtDvO/RS7iqBXrGv5yG/H6fFTBh5ZfQfziIEQixzPUXzcHe7ifG49H3vOXrv/Tw3DnQM+Hw5wfQJVykmfkTLVoBDSCoqKIoCn/7m8LHrXOINFOfdsQKGPVLQWMttsYVmA1M5rBEgeNHEfVXZClIjRU7zTgpdx3AsxkLcNK08mjYegC82k8V81axQIxH6hLGMjQYV8jMbEvRkYYVnFRuDR+WiCDkQLXiuuECHhzv4UPbE8zNzUOlgglWGSbQYg0xmP3LyxxML51Tnh9wdbB9uRxP/9aPfvUrHv08g35PigaKepclVkr2Kxx4/AiHsmDGiICtskJh+xB1gHhdRKFROt3kGJIBDic1DmtB3xhMxHmwNN747Mcsjls/NGrr7urrOoBrE1a1WQPGcuAJOoqTwz6mdYUKLph3Nj9GcwksccMpyPI98l9bAPSJ0e8Z/NaDl4HeAKQ1DAzYm3uBFDBsUgsbvfMIqn3bUzuZ1oeHO//4R77ixR98ph7+SLPWFO+dCa7i5yHi3X0Ki+3xGIoCRAxhB6bg0hytQbMAEWaHmhWbE4e5gkHBxNUnKFNrCKA4doT1IyWcoFMGd1uA4E6f76pbZB0GWARn+gb7tUeko6AnvlScAjhy7LvBFPx44J2BlRlSOVy/NMD/fPwKLpc9DGxgA5I//EwAsWf4ECLbWPwMa3rCxvBob//f/ptXvey/BlcfeWYnL2ceqEEFqMqBCOXhwFIJ2+MK1piWBZuoNIm+Gsc0n4QEw7h6OIaxFoYM2vIjadiSTGn2b6aF7u571o8A2ZxKkhtWerkYVAm1A+bYYbHH2NqtYWzfa//Dgc19bGNB0NTzN1l8HH5M5Wrc2O/h0mSCP7i0g/7CMkRq9GDA6sUtRMa3/EqBCyBhrq2l358zh5uX3/ng/oX/J2gXhJ7RnVXkRBAaRqCCyHOECQD1DHbGI0xBKFIqiPF5hoSQy0gw8PO+kABiYJmwMxqhkmUUZFHCeYCQHJQFhdrgCBTjQnxAClMHAHYdwLUW1mjy6jTy0usa1w0LTJz6OPCka6fAINQMrW/kro4bAwxPZClBAswrYWnYx/94aBPVsABRBZABk/G/dlxlqf+9bMj1A7P0+z0+3Ln0yb3R5B+8+TWvmSSq7TO6y3IkWYKfX7MCTpPiAjVZbI+mma8CsqTEJiqMwmdhiGEIKJgwEWB3WmJQ+GgEywCxeju0FAeqSScQC3UXDdgVgHwU0Mj5l+TU49F6EsH1wz52SgEZA05SoRmPf2QmIBryd51nqglXUCNwDrhxaQkfvHgVD40dhkUPhRoUyhAuATboi4VVeJlrcCUigjoGTUe1SOX++Y/96Zc+9Lc//OHimX34I8QXQ8qC8jGL5nIiIDbYn1SYKgVKs2R2jNoODSENjEjfwDMBYgpcPhhj0DO+nVXnxyXiJjA1FOd48xOh0wN2BeAIFSDL6ggIvxPMMzBXGByUNYh9uk2+UI6OPrMnkYQ8U5AFTIrSEU4MC2xWU7z34i568wW4BgoxMKSgkFDswq/LUMB4gxCpa1oUwpn5IS3x4G/9wG99+LlvfNWrqps31DxjTz+1ozpcq7hGkhWjBLA7mUJNkVGFNYGls+RiIo5BAIAqrLHYHE2h7LslCnwMkN/gcKJ3Rfk0wTBl41tXALqHrpFmAYITwYk+wQmhjqm2HACkuPYjajHLJJFWLBw5MDmQGgzVYmWuh19/4FFMigGYgdoYgGsoCVgK73PPArF+Vah1iTkFblhYwun5BbIWOHXDqW88fXrt7f/0t2996S3r5DaeqUVAc7+1QI9Wb8etql4mTAYHVYmpq0BMITQ128CAGzwl67Q4A/MKQxjVir1piV7h+RwGNiglNakDDeUurBqXAV0B6D4CwDApaYu+6iE7EZyZH+CgDMmecHB5oF30oldpqL+JhOpXWCyEUkrcsDTAH17Ywn2HFeYKA+O8sMcvtb3pqGGCgYKqGkMlXD+/iOsWltEjoKwr1A40nu67tTOnvuyGG697x/kPfvxr19fJPSM7AZrxXAz4iv9cfMtVg3BQeZtzFpey/pKTcgBao6zX6yEiBuCHCxu8ATdHE9iCQKIgMp7mQ3UIeQ1S4zCMMAjmGb056QoAPteegJFgomEFx8pYYsbCsI/96RTWRJEJZdZhSWHSyN8CxY3VwQihdj64Y9eVeM8jWxgOF/zLrgSrAlVCEei9tXMYqMONc/O4aXkZc8woqylKOCgrrBJYrSknU7d4Yu0LTp46s/Fv/vCT33LLOrmzZ88ynoEmFxIMvmNLL+r3/kKEcVWjCm7Inv5MfsVHpSfsqA1+zARWA6NhA0DNi0sKsGVsHdawhgGqwxyXJYwwJ0ah6DVUg10BeHY/tShZAUiVKM6ICpzqG4AZpSsDgBRWcxmRJfIFGoKLhNh7gjMORgRrw3m89/6LGPU4ZY0QM5gKgAgTV8O4Cjf2C7xgdQXzPcK0HGEqVWo2NODpjhnM1riDkfTm5k+vra29+cdvvev/PH/+vIBInyGRV9ro8iVxKzQIpqoQfDatnaf0hQPr9QH+1ldKyaHeLIQBJ4pCJLD54iafYYzBzsTBVQ620CZfIFcEhK4ugYP6JCNgVwCeXY9V8dgzKXrCKFThUOLEwhymoxI1GaiyP/wR/EtkMwGcNGYgRHBMcACqusLJFYv7L+/jjp0avUGBKOgxDKjUIOdwen6ILzi5gtV+gclkgmlVgYJxZuSz+5gsByWPGVjDTONauDeYmz+1+vrX3XHfv8TNNxsi0rOqz7h/Vw2U32gOWImglBrETZiwhfNx5zoAk4FSBWJPxqrdFEXPU6SNNnEj0RNxAmB3MsbQzvlI8BiXTp6PQWG7QGHW6wCArgBkF4BX1zGz2iAK6rFiuWexPy5BtggUU27CrYjTVBtZZsnskggijCVrwWTwG49cBOb7AAwM+18LVY0TPYMXn1zAjYMeZFpi4hzEkGcBtlhrDTBZBHBLyKHHxLaEMvVx8uTpf/4z//p1b/h7775t4TyR3Lyx8YzABZSo3ZQoQ4gwqb2hqgYmJbGiZgcW483P1AQpdA0uHb5weR51eYgRq/c+pKD9N0EpWTAuj8eYsz1YyT68TFbJT3TZa1cA8GymAhOzEok/4KRwRFg23spiX7xwJb5zeZoPzURcURY7xa7GDUtD/O79l7Ft+hj0emCtYN0UJwqLF59cwXOWFuGqCgflBA4KhgWFy9vf/BQKD8CGQLBgZ8DCEPZFoGClQgiuVFlaPfFdX/6Fp3/h33zs7ufcsr7uNj6vRSDz/6eIn4QOCUDpY32z/EQGyMCZKvr2gIlR14IvWpuHOsHjW/vosUkmIhyUl6SKviVcKRUiFQqmRKbybs3k05FD+Cs92/v+rgAc7QDY+/8Tk4Cc4GS/j0npUIH9FCoBwIpbgiBRpeAmrGFlZQBQXeOGxR4e3p/gIzsTzPUX4CZTLBnBi1cW8IXLQ3BdYjwe+5uOej48hJ3vRjIXK0NIFuAIjjYGDEMMZxW1dXDGhxqW47EsLyx983PWVt/x+rvuf8X6+vrnfU1IzBpnf6cB/KsrKHnhLmlj4GnhQz7E1iAjcHWJP7GyiFFV45Ob+yiGQ/SVUThP8jcA+s5vA3oMHDrG9mSSzEKZAMPUSg6Kv1fHBOwKQHp6KLSgAsYICmYMlbA06OFgUsMwA6J+hiQNtl9+S8DZCxznShLBkBmm38Ov3vcYyBgsuTFetLaAL145jTkC9suxT71lm+zBTTrwlNSAnO2+CQRDDsQKsC8ANiDkFgC4ArHw9GDkBnMLrzwxv/z2n73zwT+7vk5OPSZAnxdbcHGJ3aekqAGUtUsZhhSKaLA49MQoZVT1BF+0uoCiKnHP5gG4Pw8hA2IPEHqPf2rMPsSPaJdGYxhLMM4FGDASgTKSl1/9di9+VwACCEiqNhwkYmDJ+AO3V9UerEv/lxxDwt6/9je3ehUf2FuCn1lZxO/d/zjGteIlp5fwsjOLOGEVk7JEJUDBNrzIgRMXmIWJsUYEE3jrFG4xJsBq/DYBi6JQHwRmFTCkXkxsyEwnY+n3hs9fWVp+23+667FvJSIJ7Dr6PIB/KsEjUUGoaj/sEBOM+C5KWPxIEzJW6tLhJatLMK7G7ZsH6PcHMM4rNK0xSb/JIAg3/B5LhCuT2hunECUbdjReTYHE1RGBuwKQPcIOBsCALFQcFvsW00owVefTZ9TnAqh6lx6OsiFqMu8JAhXCymCAyXSCunL4yuc9F9f3CkhVohJCYRiWmtvdEGCIUcCLWxL/PdKBqYksiBJhZsCwBolwYMgxvJdAaHENM9fVRNgUJ9ZWl990y4OP/3+JSIlIz549+zn9N3ckUougEoE4YFILtAhBJuQVT6QEqwzD/uZ/+eocrCPcfmkf1O9DoKipBgEoyOv6CjWBzhtXfgJjDA4rh0npZcUuGX/mnVQcBXJBRycHfnZXQfHttGNgKJ64c+Xg0GfYBU6/Z5T52yviAFYMpqaG4RoiBlaAUwt9vPfBx3HDdafRU+Dyfo2e6aFPAJxAjAbnmrCTDufdZOuyaFiRDC6SoYULS8SMFhs882JmQCNQYpa6Fmu5v7y0/O/e8diVG97y+5f+r/PrLyvVh4TK5yZ2jVXggdVKBTWRtzwhX0RLBvpqYYShZYVXnFhAoYIPX9xDr7cAkRKOnaf2aswVlBiv5LMR1GMHzApXAVdGEzxncR7jMvgqRLZm+hy7fOCuA0A70MMCKFixbC0MEQ5r5x15yK/lKHD8KXP81QjSCUHqGl+wOo97tvfwwKjGJy5cxV5V4oUnFjC0ikpqaBGDMDNlGzfSVM5orrEIcBC/eEMQSoUhAlxEjWloRLsZ8PZh1rCK6mHpdHFl5R99+6tvfNPr/vDuU0Qkn6sNgQ9F9uu+sq5BRCjUG62SGlixIK5RuzFeemIRPTBuvbgDM+ih4spzJqQA1Ccsm4B/RFTUg7FBNwCFtRaXxzXYBFu16AfIzb8dgRIfoSsA3YM+sytI0SdgzjJG0xo1OJlNUqSjEjeUX/JBlqQEKgkvWl7EI3uH+PX7LqHfH8BSD7dt7uKTO1dx3eocrlsaQmqBJYU1CsPsSTBR2UJIKkBOnHfAkMAEkLD5NqQDb4J/oOFgJBpyCn0REbBhYiLs7Y9lfn7xr774ptO//HO33vPS9fV1t6GfgyJAJErAVBROCYUhCJWAEnqwsGQgVY0vOzmHgmp8+MIetD/MAsMQOgZKhc5QUwiJKUtJ9hjBXiWYOIeCOfkBsjaYSvd0BaD1FPDEnx4Ig14P+1UNZpNkv4aa9BpiSmIh4h6krvG81Xk8vDPGO+95DBj0Ia4GjGK+6OHioeD9D1+CNYQXnVhCEXCEgjL3X1bPMyBt5n1I4hmkLwiuuME6zKh3u4mS11wnb1IkoMCQIybi3d2RDIdLf/o5N133yz9/131fs06BK/BZBAdVfHxiVTtwYQJ2YfznyAqpJvjStWUUSrj1wmXYogB772MYMYAQHFW5sth/bsFtKWIJ/rNhsDGoCdiclBgYk7YAuUaZwnqye/O7AuALAEGsBYa2BwPGqA63R7aHT57+ccZmAlUTvGh1EQ/v7OPtD18EFgZgFVRQuMKTg+ZMgZL7eN9jV/HQzg5eeHIFq/0B4BwK+N23CYZV3g9Q0w1vONz4HKLBmH2LTx71j1sDjnRhUCoqFMYJZoaydxTuW8N7+wdie70/cdOpU7e8/YHH/uL6+ro7ew70WSsCRC5mJRhjwKroaR8whMrt4VXXzWMOig8+vgPtzaM0AlHASA/K4uPOG4JlAEE5FEUFMUGN//w4mLIYw9gc1+iZBuWLuQrM3HGAugLQfoxh9IkxbxijuoKCPFofLHlVJQCFCGi9wFYlXrSygAevbOFdD1/GYG4ehhjCFlBGAQMyDGGCZUJ/MMTduyU++NAFzA0YN60swjjPLzDkD7Yh38ojzvVJ0uJvOA7cd0IjdokvtuVgfsGUYrejkQZpBB0FxhIfjkcCtmdOrq3+l3c9fuV7zp8nwdO8ITh37hyF4GXnaoUprFomWDUgElSlw6tOn8DACX7/whXoYJDsOxxLw7oMUul4/bNqKAJIBiGcYsD8F2OAw8kUY/KfPQXSNgUg0aiAOmPArgBktl5khVEwMBKHgg2Y/Q3qJbgENaGVFAXXwPNOLuG2i1fxG49fBRaHYCGwM0Hk46W7Bk37XihhOJzDJvXwuw9cxOOjQ7zwxAJWrYVT50E7sN/th9ubIq04sxVt1l5N6g1HujAp2i5afnyxmq0MCbDW8mRaSuVk4dT83H9496Xtc7h5w5w/f17Onn2ahETnzgEASojUTJgzPVgVOGtRlWP8qZNzKJTw+w9vwhRzMOKzFikccp8JaABYqEGwR4sdDxrwEwSjABlOWQOGCbVT7Exr9KyBhBRlUuOl2uI6V+CuAORrQCJmgmPWcV354A+ov/Hh10vENUpbAyJ44doS/vCRS/jtK9vghUX0Koaq8+0qBBVqEFNo7wNoRQqIQ98aYH4eH70ywvsf3cKp+R6+cKEPWwX3GrboOQsjCjICSwSG9ezA3Nc6zPpssrQLanQEJNokCmfjQOoYrOWycno4Fbu8OH/2PT/xdT/x/b/xG/Pnzz+9G4LS1Q6W0GNvfFpPx/jqU0uYY+B9D18CDRZRKIW042ZOV822Linzq7FhN2ySNItC9xNHKYAg1mB37xCGGQJBoYCyQIIUu+he/a4ApJvSOTLG4LCuqQ63ZZwpva0XQDWhNxV8wdo8PvLw4/jI1RHm5pZgp0AvBNlWcCA2UFiwKmxY9RkNyHxoRwsBVgYDbDrFr99/BXtjhxetzWMxMAm1VwMssH5vCJCDBNKRTXN+uP41M8cIsYCkAhvwA78SpGR4YjIwzFpLJZPuHIz15NLy9/zlL33VW372I5+8wW8Inh4NgVPnBsQwRiHVFF99ehHzhcV7H9oB9xYhVKMmgXDQWWTOTCpRZi2hOEgCOw3FFWj8OZQYgABARYHdaQVRRS86imVdBGk3AXQFIGIA8IGco6ry8VUh+Sc6yZYC9AX4otVlfOihS/jIziEG80OgdlB2qIxnBVoQjBoYxyBlWGYURLDs9f9+nacofEIA+gVBBwO85+Iu/vDSNk4vD/CcOQN1FZiDPl6M18ibOhCBJJL/wjrM/1ltQP4tcaAOZ2MBFEwSkPMImAVswQiRMbS1dyirKyt/4Utf+JxfvuW+R16+TvS0bAi4suiBUVWH+KqTc5hnwm8/uAnX64Op8uGqBDAaSzBmDoSfYJdGzeaFQ1BKXIeamJ9ImUOQEgwzDklxUFaYJ4OaGksxH+TSxYN3BSA81hpSBiYi6ltLTfx8EYtFEjx3bR7vfegSPn4wxfxwDuoclHw8lWMvSWX1nvcVedDJI84RvAokFhDACiILB8Cww+LCEA+OHH77gcdQieBPLC2jD4KooB/NMjTe/hQSbwI3gJs0oagfYGq+PznjqjaHJmwRDAEFCAUruDB8eX8kCwsLX/nS02u//K67Hvq69fV1dxagP4qGQABUdYkvP7EIS4Tfeegy1BZgqqCoYZR9QXKmEexoGIeytKaowSBtugBOhS4psTz3Ab7rEjbYmkxg2cum/GcXcBFjOiZQVwDi6ExUOQenCsPee46I4JxghRyet7aE9z54EZ8cTzHfH4LqLLhDgEJ8bLVAQepAqCEuuPogrq28oxCTJwBZAHNiYZUArTEcWpTFIn7nwi7u2tzB8xbnsNbvo9QJDIlXyaHpIhiUZMLxBozbAlIkANJwMBtl/+Kb3FQT5Hfn6o03C1PwlZ09MbZ44Quec/pt737owt+IsWOfaRGoplv1F6/2MccWv/vwFlx/CMsORg0sBlASCAjENlGcaTZpDc1mJNp5EWn6O8a4j2gebIIDUEEW25MaU1IUEsDC8OvbXAvwLN4LdgUAAMhQ6RBeJvGccqdYZcKZtXn8j7sfw/3jEnODHpyT7GXkhPZHdZoRTywqxQXdPqWoagoH1d96cRwwsOQBsAEUc3MD3DFyeO+jVzAwDs9fGoLEryIN2GMC7G/wIrby7KWwJnAHLFNLAhvHBZOrDANaToxGiUg1isLw1dFEpoK1G06uvOH3Ll7+Z3TuHH26VmPnwn+/5PRJHbDR9z1+FTxYQAHAsc9IJEWgMWkwA83YPpmGn5nT3zMagiYzFlIQawI7m3HBW4Yf1g4HzoW1ri8aXnqsrvME6gpAEKzAlCJgJlgWOHE4wRYnl4b4rbsexcVphflBD04CNgD12FxC5SXMpQwlhhCjhPp1njYvZ7xoIrlI2AeCFEToQWFIYZ1gMGDsssHvPLqFRw6n+MKVOSwUBKcOlgMlWD0zgElh4dWBPkY8owkH1N9Qs0TkMBY0BULBLIjaICJCYS0fVrXu1a53/fLKv/rQd/+9f/+1Z980OP9paAhiAbhyMPnERx/fIjtYIONq9Xt7hQn5fZ4DQd4ENFB16RoZ440Vm68ApG0bdq+e5GAoGkxAVaFM2BlPYC0DzmM93lg4mhQodSPAs/yZoqSKBWoIrhacKQqsLg7wrrsfwtXKodcr4MQbUTbbeR8FHvfRCVAkhWGCOJ+IZ4ILbVxTMbKMO2awSji0fkyAJbAKBkTozS/i41tTfODxTazOFTgzX4CcD71ka7yBCYVxQIE8DGt2PIg6AQR8I317JBQFl6FmQ2CoFtWdSS0nT5/8h6/93j//sz/z/vevrT9FqzE/Oij9vY03v3V3d/dfEwlTYUCuUkMcOP6KnvowVAmpwDP8DOSpzf5LmyJtUvx35smIhidgmLFbTgFiMFsIe8DUoiMCdQWg+RTUECCVYK1fYG6uwO/c9Sj2UMD0e6hVM9VZTAFtXtLmADatqYqiCrTUSNu1sQ1P5J6c1hpssZTQEwMiA4jD4pCxpYL3PHQV40rw3MV5GK0hWgXXbPb2WHGmj5qBRAmOLMLw/VHYhPD3iQrCiFGE7ydvXEIlC10+LGVtZe3b/uSLX/q2jdvu+cKnWgSgAM6fr89/xRf9s52tK2eFBdzvE4RErPU3NdS7HGdUp9lWPuIdjaIvEKQSVqBJKITw4yMRyhqLQ1GUznd4StF9ibUTBXcFIBCBROqJw/W9HoY9g9+4+xHskUHPFj7dN6ydsrs/zNPhgDESwQbStNiVc7BkgnS3UfrF299y4/6TvgCwYmCVwUbgMEWv6IEHK/jDi7u4e2sTNywOsGoMavEvfk8j49D/2jbu/yNgFvfrdPSAmUxAFMH0pDiEooAlkPKFg7HMryx93Stuuv7tv3HXI1+V/AafrIUmUqiSqtK/etVLfnhn8+o/IVfVvcKyt1AwqC1QOO/3HwuqhpafVDNgUFPGgBc4RVk0e0wlrv/QrAxDYDsqAXanUy/vljBmdESArgDEZzSu3en5An3L+J17HsXYFkCPg1e9Xx1x4AZotnfn4N0fd9NMgDVR788o6yrT9oc9PYfWP/MAzEE6MCCF5/z3HMNiABZGT0v0F/q4a+rwe49dxdAY3DQ3gHECBCowQYNWgRoJc0TK2d+gSWAUyESGYjeiYTWomY+e+hGFCNYyX9kdOTucf+nzrl+75b33P/z16+vkzuJTCIlCgvHZs2f5337Vy35sd/Pq3y+rw2nfEBeVCmtsqMJ6MxqrBiww3wgkIDULAWXKFZMNyp/jCQaEnenUN0sa/Rs7NWBXAMJz3eqiswXL79z/GEpbhJvCR1p5Si83IF5oBUjUfwE1hSCGUBBgjEHlXJN0Hw5efJEbgI4SRTfO5IbEI9tk0IN3wBF2UEdYKgY4tAV+7+IWro4muGFpgKERiEjgwmcioXDoKS4PIic+OonFYkHNPj3/+f6EeZzeiMCymiv7I0ExvOnGUyf/6+8/+PhfP08U0raeuAgQkZ4/d07PqvKP/KmX//TmxUvfXU9Gh7ZXMERF2CcwMeeHV1O4Zx4ZTik4tLH8NiYGJ4SfIy6NPyBFjxmHdYVKalg1EUzsCsCzvQBExdrjO4db73/gEpfWAmygsZ3UkAJMUVUX9PjhDUy6+8xvnjMyjgt+ggUxrHqfaoum7bbZj4203YK8311kqzFJGCkIhhVwgh4buLkhProzwu2Pb2N5UOB0n0CuBkHRI0qOwX7PZ8OMLaDAuGMwjHAToKVH9+GhN0l+AwKGNcTbo5GMwCfOnFr72Q888tgPhpv5ydeEROoDS9T82Gu+8ucvXrn6XaPJwW4xGLCKE2+HbuAoUJXTL9U2TI36AAphIoDCqD/kabvB0WmFw5bDYOQcDksHYwm15xR1BaArAOcUAD780PYbL1/ZvLU/nDcMOBt3dczZDBqAsog6B+DN5oAVUY7DwzlBDYE1xrvUsp9ZbeSkU7Onj4ShKOX1IqIYd02wZMPv51mF1hF6wx4uisP7H76ESQ3cuDBAjxS1+tRhE0DFQoNpCBmw6YPgcQkYCW1z1kKHv4cmwZEP7EDocpQAY5kPKyfbleudWjvxI7dd2vz3f//Xfq1/nkg+FVfglnXIzRsb5nX/y5e/7dKFC3/z4OBgpz8YMqpaPGMypq760UY1WKK1wleRAZtI3gCW20AiQkagEkHZYnsyAYqAMUiHATzrCwAFkOrtf+mr7t6v6Oa9ra0PzvUHplA4JgcXBtTUqqcWmlrhk9QoUjCbkF07l5l4cPDxC215oPIyNQw4DnN8Pr9y9NAPRaEPRS/Qe2nQw3RuiA9c2sb9Wwe4YTjASsEQeBFTjxRMzoOV6m99n4CEQEluChBlcZoc3Isj9RYzrjpsmWvn9MpkqvMry9/3t175VT/z2nffunLeW5Dzkzkw3hIAxJ/8uq/65csXL3zHeG93azA3x6q1GCE44zcD/uNnsFDL8JSSp6Lf9cdunkiDLwIAdSHBubEK261K1A7ogaDoCkCHAYS35qwq/5c/+yX3Xb18+a/s7+y+38zNGePYFULpUDY6/MxzL66dtOGmN/O2//5aXBLnGHjcIAl50twfDr1mO/1g+untvzw4p37dEPAEb2FmhVCQxWBxEfeOa3z48U0skMFz+n2QODg4EPsRwJKAuA5ae4ZVkwxKiZAVoqajSV7FIZWoEdwoyBRUkcHj+2NZWFv963/uFc//xY0P3/ZcIpJPpSZcX/dio5/8s1/5zs3NS39t72Dvih3OsdNKCBZQC7CAUAPU5ghoxhHQuE6NWwPSZL/OIa5NARi2OFTFqKpRECCinRagKwBIpJWbNzbM2/7iax7c3N/5a6Otrf856M8bJjjvwpMh6imUGkcAQI6y34TqM0pX+8Ih6olEkQ6MZu6P3HzfIfj1oE2BY5I6gV5QvmkoMgZAH8bHYymwMOxht7B435VtbE2nuGluiDkwxIlPNDIeYR+I1zBw7pMPr7zj0DpH4k2yHldtuhfv1+G/jy05Y/jRvX3pLSx9/Yu/4Kb/9it33PuypCZ80iKw7m7e2DA/9uqvfNfFzSvferizdWE4N89UQRKxH/CMycSVaFyQTBpffBflhVGBYGQYhYluShpCRCx2xhMQA046W+AuIXHmOavK54nkO9516/PXlopfXDh54qum09JFJzANIiHVJgw0v4mQ+82H2bWgGl+wegLG1TO3qu/5I8CW33BEFNKHkG7mCECCFC4EiKQ9f+4qzL4bmU5KPKdv8MWrSwAIu2WJkSqIjefDQyAQkHL6u/i/A6OW5vBrdosqABfQM1KFKKEihVM/jlSudmvz88ZW0zsf3zr4zj/3guv+4KlkENy8oeaWdXLf9z8+8DWnTl/3lvm1tefW45EzZA0xAHEe2MvMWRHwiKqu0TO2xSEQCXnqYJQicFKDYFESsKylfMXzbuSHH7/6s9/6glPfrapEz+KNQNcBXKMTePM3ftmDW+X+/3F45eoH5wZDY0COghttZJ0ZY1osvujqG78N4eA6EYhzqVMwmX+/yQDASGLJD3XU9EfA0MdnBQJPiAVjBtgEqS+C7RUYw2EPV0rF7XsjbJYTrA37eP7cAEsGKOFQATBiw8hCSXI7W9jiofLBXgoOu0xHCjH+do3pMoatubK7LxM2X3TdieWN9z1y+RspYgJPsia8JYwDP/51X/2+C5ev3Hx45cp9w7k5AxLnnY0sGhqWpjGEroFOUBzFPACAwgRxlCoKMEZ1jbEDin7RYQBdAbjWy+jb0je/5k8+uLl/8FcOrm7+z+Ggb8DqEMYBE9Z6rJq1mIGCKpqQfe8nQKicJjUapVAPbUDFzLWnUfAF7UC2n2cygSfgrcRB0efe9/NGCYX4QE5rCf2FAT506QBvufsxvPXuR/ChS1uAKm4a9nFd36IghToNhz5wApRTVEEkFGUZyh6Vj31LEu4F9R4Bptfjq4cT2XfynPnlhV/43Ucv/U16ClyBSC/+ia/7ig9uXti8ee/q1icHw3kDqID834/EgJVT5l9MZhNkgKBq04WFXMeCGTaIrhSse1UFU5goWnpWd8FdNNgTFIEwDjz4t9770W/lzc2NhZMnXjWZlI5JjVCdDCYb1wqkmz/eVLEsVK6GNQVExRtehrPDoaNNN3DW7qu2xTC+DaeUAxDLhGfESUjYFTipsDwYYHfqcOtjV1CygvvzeGBa4b7Ht7FwaRfPnx/i5ScX8MKleRATdqcOh7XzfwauwTCAGpDG/EOf3Jvi0dEkImr4uzg0f29b9HivLGXCvLKyOP/GP7h4+QYi+hFfA5645V5fX3dhZLj17/7mH/xlR/rWk6fPvKIc7TsI+YleGYYEAud9BJThRNCzBioZSYg0dFU+ktyygUMN7hlsjUosqHBLtth1AN1zdBxQ87Nf+6X///auNkiysjo/57z3dt/+mu6e6Zlll2WB3WWXRUVCSEVJNCFWDFoVopbZRBO0yjJqEmPMBwlo6WarSFIpU2UZf6RCQsVKoMCRHymq0GhISZCAWPIhRFEIAvsxszM7X8xMf973PSc/3ntv39ll2WgZA8U9f2Znpvt2b899n/e85zzneZ5ZW+39+mB17aFapWq89q+OnTtzM+up8q4mfWxOVIFG1oJNQufJDd1kU3vZIA/n2nA8/l16rGAHMb6YGMCbY3ptAU9YYgCtagVHljZxz9MnsGEIyoQ49mKjQbmKzSDCI5sj3P7UPG5+/Bk8cGwBTi12VEuYjkKUKYR1glhiOPLOPAovceYPFw7KNgcDKQ4m3AFVwDkwGx6I05OjUVCq12+8/+TaX1/9mS+Wz0YYouQY9rdvfv0Tc8vz71w6ufBgudQwLBClEQAHqwxlwKggUIaIZMVMZh5PN8J/ToEyjDqwYZQ5RCykKyMyiXixFkXAIl6kQDVrvnDwoPudrz60d3Ki+flqq335aDByvqaup+3UklFVBQQDC0GDFBd1OhAZeYsq3frJUyZ9O975KVXBzQlkpCfhmH1LrpyIkQ5YUOYQpYDx6Nwynl7fRLVaAYRgSbP34l2OHAwEihDWGph4gKoR7G5EeE2ngV0TdRADmyOH9aHFAAI1jEADsPgCmyX1wECAE4FLfBJVfUFQxP/bEmBJFM5ie61Jdjj43H8tHvvI+w8c2DhbcTD93D9w59d27bpg1z92Op1fiHvrzgGGqATHipJ4lmbPWjTKZTC8CahDOurPCRfQ+c6/K4EMWxNRcOz4/MduvGL/X6aF3wIAijgrCPzuvQ/ua0XtL9QmO5cORgNHWXdgPFbqO2apOi/DAgglxsUzUwjTQltSSMQWNV9/IU2ZholEbjr0gkTmS+ELgawODCCGYCIso6vAN48sYGmkqNTKcLH1C4I8VVahEEPghGas8PPNhAAKII5jlJzDzlKAA+0q9kxNYCoqoWsd1noD9AWwgTc7gUsl+nyGYFWRdtX890hUjADLBFFRtU47jRrHg96dR59f/sC79+xZmJ2dNQcPHnRn+9x/88v/ObO3M/O57efseMtoMHAkMSsTWSYY+AyrUiohoHGRUMVLjXmG8xBkSwDKLqiFZunE0TsXV7vv/czPX/Y8XuFzAQUA/IAg8MGvPHxRp1m7ozbdvnTYHzpSMsQ59zny9lQAQMJwTEDcx75OG/UgSHZ4jEdeKVfVJiDdiiipKaSklzRrsCZRGVILFUGjOoGj6+t4eO4k1AQoBSVYqxAD7wQkgFDitUeAcQRDBkICZZeAFcMkGYK1DrCCGgQXNUO8ujOBnY0aLARLoyE2R4BqkLUerQpEk4xAPSjYRHbb4x1BoHAQtc5Ku1E30hvev7ax/r637d75vVlVc5DOLNGb7tDvuvXOzsUXX/L3MzMzb1Pbd7GMDFMZhgIMxKLMBlFovKw6eQBQVQgRWByg5LhWNwvzx+9aOXHyPZ+++sqVV3oLsKgB/BDdgb978+VPLa88f7C3vPpYNaoYIjhWHYtwpGy+VKU3Ye/FNkbAJpv4S+nFmZIP+x6/yY3wZosfY5uyUAEjghIZNKp1fHt+EQ8cOwlXrgKBQayxJ86oAkoQ8lVzowwWhpIi5sRnQPygkCaFNBEHYwBTNuhXyni4K7jl6QXc+t0jeOLkJhpcxt6JOnaUGaQOsbNIXibpZqiX6VZfeBODhNKrYAIZE5q19ZGLS+GVjWbtX+56bu6Kg0Qv6kFwmEgOHVK+7TeuWXryO0++d3Hh+C3GVEyJasIiKqx+XkEkZ50+VkYOlEBacqZaMUuLx+6a2zhx7aevvnLl0KFDTMVEYJEB/LCZwG9/5aEDk+2J25pTrdeO+gNHRCadoifKnOjgyEDcENOVCBdMTMC62LcLk4WT8go0SVhJA99BYOvP7BJ6Tjw7bwMkDlXDGDLhgefmcWIoqEVVOLFJdqGQhPfPxN4sM/PZS70O/YxfSm3WTFE4KeoRQZCQiiiAtQKNB5gkwZ5WDfs6TWyvlTFyiuX+CM87C0mnD5Vhk1O3wMuiQTNvD8QgxC52UaVkynF8NO7Z973l/M7ds6rmoJ+lfsFFeejQIT58+LD86uz9lVftnvmbc6Zn3i9u5A83ROREMBFFgNgEBgTiFI7YmVLFHF+Y/9KT33/62n9+xy8uv9LP/QUA/IhA4EP//o39M43W5xtTk6+N+0MHVhMHBOMo0br1VthWYzTCAPuabYgMQZqM6WYnBxnPt6uBkoWygiX0RUNycAZgIUyUIswNNvHgsycQB2UE5RDqXEaQy2vjndpGRG7gJ31MmLiRisgpzMbEBDXT7AMEAgyGiKzDtmqEiyar2N+qoxoGODmIsTCMMYRCiDPBLRFkXEenAihDyGIg4sKgZCInK6N+94O/fMGOO1SVKRUDeEEQUD58mOTqz3yx/Po37P3U9FTn9wIHHZLDUIY0FU2g5AJYGkAhYDVOorKZP378S88cPfaem665aqlY/AUA/IgzgQcOTLc7tzenpi7tD7tOGSbQ0N/8CUFFVRCR4qLJKbDEqSwoUg0xTR6XuGkDYBjx/oAwihjief+VMp5cWMNjJ9ZRqtdBxsFKjED8InbpUtPElOQF/+DJ8ULHE3QpDTitNVCuoMmpRwJ5hV2jvqg4dACNLBpGsLcV4dVTLbQrZWzGDkuDITasgzOJ0Kj4wqAkRB3HCicKKxAOmMux6w8H7qNv3z19k6omDZAXB4GfO/TV4E2/cu5fdaam/1AI2hv2MVWpUh2MARygKmE54uPzc//61HNHr73pmquW0ucWd28BAD/awuDdX79kpjV5R6PTOaC9ofPS/wJJetKkgJEYF7ZbqDFlnjfpLrvlD2EcSEJfracRRBxKpgINQ3zz2FE8uz5Etd6E6hCkMQIbIKbAXyfH388DgOYltXIDQBnFl7aOAOfvDtZxPUIodStOFZAZ4ixGzsLA4bwS49WTLexs1aFgrA4slocjDJkS1dWEsARAxUOfVRGG4VDUxXZ0wzt2TX8K6ulHZzqjqyoxkersrPnE7p/4805n6k8hTmtQNKISOYHjSmSOzc3f9cTx+ffcfPWVK8XOXwDA/22L8N/uf83U5PQdE1OdfbbfFyawGJ/SGyhEYuxqTqAdhhDnxozBzKgjTdGTxcwKdQ7VMMS6dXjwyALWNEA1MrBuBIARioMoQyiEQhJPQ84NJCUyWia/q9MW1V5VGXcZciChCUMxdRnKiwb5oSEL9g4bGSEqtg4utmgbxd5WDfunGmiUSliPHRb7QwwcAyaEcgx2DqohLAhWrUKFQjLo9bo3vmvP9k/mjjFnBIE0U/j4g9/+s2a7/cmpUkStcsm6qBwcPTF/16NPfO+9xZm/AIAfGwi8/8v3XXbetu2zzXb7ItvvO2fIGA3ApHAywrZqFTuqNVgbY9w63JqeGzBcMm1XjkI8t76Oh+cXgbCCignhnFf7ISU4MBwpDGKQGoiOd/eszcPj9B7JoE/aZsQW7sJYzjx7Po2ddNMKu8K31kh17LarQM53FyKKnu0hQIwLa2UcmJrCTK0K6wjLwxhrduhdlYjhoLCiEBG1ZBAERKPuxqeeuGD79Ym4yJlbdblM4Y/v+9af7OxM/cXuXeeaZ47M3f3f319492ffevnJYvEXAPBjidlZNQcPkvvo3d+8fNv01Gyr3d6zORy4QMiAAYcYrVKI8+tNqLWe/5/UB1IXGyb2FmBswGEJT8wv4jtr6yhX6zAifpdPZcnUzxoQKSxstmvnBT1SMVKIbin+5Sf98tkAE512c6gmykEqfnGres/DRCmZE0KQMiWtxfH0olXCSBUUjzBTYuxu13F+q4bIhFjrWyyPRrDqW6COHawThQs0YMOD3vpn/2N17o9uuuKK+EUXcQ4EPvn1x69rN9qvX1vd+PDhnz0wVyz+AgB+zCDgmW3Xf+2xn5xuNWerrebufn8gzMQsDqEBdrcmYcRBEwdhSsQ3OfUoCyP04fDYc8exYBXlcg0qNhEnpWxXZiUAzrcMiV8wm0B2ts91BzIZLc4E9rayEnNuGZQzzsjZc1Fi5RUktGZFKpzqswHhVCl8LKMWC+CcYEKAnfUQuyeraFYidK1gsR+jl3Qh2JGqQrlsuL+6+g/L6H349/ftG55lMVMCbJpwW6Qg+RQA8P90HPDiFtff++hPd9qTs7VWa9do0BWjxGCHPa0mysoQ8macnlJrQApE5RDHewM8fvQYhkGIsFwFrD/bK/vePp1+6yeJucnJlm3Zw5FX1GT2wzOZLuCpD02Kg5zQejWtT1BWr/RgYBikWwuYngGZOyycQncGe46AjIZQEUxGJexv17GzVkWswOKgj83YYUhGDQKtlgxvrJ68ZaG7+qHrLruse9Yd3Su2aLH4CwB4SRwHbrjv22+YaTZur7XqOwbD2BHUXDgRoWYYIgagAKojL/cdRnhyZRXfW1xFqVYDMaDWIVB/VHA5liBwuqZ15qiTX3R6+l96XGxEzkALpxcETkEG3fKc9MeSvS5y5FJOhpcU6XRkCj/inXnhVYmcizGKR5hg4IJmFee3mqASY6U3wvMDBwFLNQp5feX5OxeXer913c/sXfzfgkBxFxYA8JI4DtxwzyNXzUy3bq0329v7/b7sbFR4qmRgBRAlVLmEmBUPLc5joTtCpdyAistUfSGeVqvGgFVOKd7lFhefujiTHf0MIMGgLRbcp6UC+TZCNvWoGYcg4RB68RBNW4RpgVG3SIn5zMD3OoSAQCVT+hUGYhUMY4eSI1xQZ+ydqgPVCKt9h27XOo1C091cuW9ztHntHxw48OzZhoiKKADgJXUcuOHeh960rbPtn6JGbUdLVbbXamxdD5VKhOWhw2PHlzFSAkcMjT2rTzjd5f0sPhP7IuC4PH/KWV3HC5xpPKKoeRvzcZpPyQJNx5dNbmFnZQB1Yx0+bO0wpJZeyAlsEzGcasaClFxhMoUS4/w0o2UBqYFRP7YrgQBqIUP/vidLjF3tBuqVMrrDoYvDwCwtrD68tLH6zk+87rJnChAoAODldRy491tv6nQmbzmv2TpnphI4MoaPbq7rd5eWEJqIAgrh1KmSS7j4ClUvEsLiacDCetpunolyUD6lT2wx1Y8Dp7s1cr/PugIZbSDd3bdqbyJniJqNLudBIiMb5JKGHDZJciEZowpGUBB7ZWKf0fjpRJADyDsjx7EX82waxa5GDRP1mgtK1XDuxMmHnz2x8q7Db7zkyeKsXwDAywoErr/nsbfunGnd9qr95008feQk5npDRNUKyDmI2uT0nLoMZ15jCVlnfMTlnGPmuP2nOQ2/3AI/xQI71R3YcvKnnBCJ5r9HpvnH41ZCdk0PUqmDp+cm0NbWASTtEmTvRRNeASeSYpJ1QtL/hqiCjJdPtwJYK2gyUI0Y22Y6WJ9feHZ5eePXPvJT+7+RDgkVd1kBAC8LstDh+x95e1CufXy1N5gsRxXf/g8YoSoL+RJa6kOoSGZbfSuNskw/X8Lz3B0/h0dbynQ+SxBJVbRTAUJBZkmWgwnNNEiykp9gaxtRoFDn3VK8GpL6qWOkEmicNQkSQNHkceo1A7zNZ6bZS6pEnNQJFVAHdaSqpL6R6EcI2RACVvRHjmAHmKxEUdwf3PyxN15x+JSiRREFALx0I01ZXzc7W/mlfW9oLHS74NGAUa1hEA+4AqDf6wFVAD1gWK5oLXt28kMAQVRRoAv0aggir4TZBVDr5l+ti1Glmi2M9DojJ2deLJv+SzhTU2wAq6ZLAFA/w8Pjfo7OWN/6Ot3cNcOKf82hE0UD2NgAgqoo1jcwqNU0dI3kPXmBntA6XQNQajjFKlBqTOgkVnDu9D5a6G+axSNzdm+l3zt81VW2uKuKeFnFoUOHChGWIooM4BWeChSVqx/wptQXMnYtoogiiiiiiCKKKKKIIooooogiiiiiiCKKKOLF438AOiFXQHRS5R4AAAAASUVORK5CYII=" --========================================================================== -- Kicia's bootstrap (b8) and main (j1), as in the dump. Left out of b8: -- the analytics client (kicia.cc), the Luarmor auto-execute writer and the -- anti-cheat bypass (b7). Kicia's online user service (eZ) is offline. --========================================================================== local GlobalTrove = tbl17.n() tbl17.w().ensureStorageDirectories("kiciarebuild/rivals") -- folders the config managers actually save into (they use writefile, which does not create folders) tbl17.w().ensureStorageDirectories("kiciahook/rivals_v3") tbl17.w().ensureStorageDirectories("kiciahook/rivals_v3/cosmetics/states") tbl17.w().ensureStorageDirectories("kiciarebuild/fonts") tbl17.w().ensureStorageDirectories("kiciarebuild/cache") for _, sub in ipairs({ "cosmetics/states", "crosshair_textures", "esp_images", "movement_recorder" }) do tbl17.w().ensureStorageDirectories("kiciarebuild/rivals/" .. sub) end -- Lithium logo: written to disk once per load and turned into an asset id -- for the menu rail and the watermark. do local alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" local map = {} for i = 1, 64 do map[alphabet:byte(i)] = i - 1 end local function decode(s) local out = buffer.create(#s * 3 // 4 + 3) local n = 0 for i = 1, #s, 4 do local a, b, c, d = s:byte(i, i + 3) local vc, vd = map[c], map[d] local v = map[a] * 262144 + map[b] * 4096 + (vc or 0) * 64 + (vd or 0) buffer.writeu8(out, n, bit32.rshift(v, 16)) n += 1 if vc then buffer.writeu8(out, n, bit32.band(bit32.rshift(v, 8), 255)); n += 1 end if vd then buffer.writeu8(out, n, bit32.band(v, 255)); n += 1 end end return buffer.readstring(out, 0, n) end local wrf, gca = K.fn("writefile"), K.fn("getcustomasset") or K.fn("getsynasset") if wrf and gca then local path = "kiciarebuild/lithium_logo.png" local _ok = pcall(wrf, path, decode(LITHIUM_LOGO_B64)) local _ok2, _id = pcall(gca, path) -- Kicia's original logo is used; the Lithium one is no longer applied. end end -- Kicia's error reporter needs a sink; ours prints to the F9 console. tbl17.b().use({ Report = function(_, e) local detail = type(e) == "table" and (e.Detail or e.Operation) or e warn("[Kicia Rebuild] " .. tostring(detail)) end }) local bootFn = function() local store = tbl17.bG() local profiles = GlobalTrove:Add(tbl17.bN().new(store)) store:UseMiddleware(profiles) local fonts = tbl17.az() GlobalTrove:Add(tbl17.aB().use(store, { "Notifications" }, { "Theme" }, function(f) return fonts:Get(f) end, tbl17.bI().Notifications)) local reporter = GlobalTrove:Add(tbl17.ad().new()) local state = GlobalTrove:Add(tbl17.ae().new("kiciarebuild/rivals")) local stateData = state:Load() if stateData.AutoLoad and stateData.AutoLoadConfigName ~= nil then local r = reporter:ReportResult(store:LoadFromFile(stateData.AutoLoadConfigName)) if not r.Ok then local text = "Failed to auto-load the selected config" if string.find(r.Error.Detail, "newer than current version", 1, true) ~= nil then text = "Your selected config was saved by a newer version - update or pick another config" end tbl17.aB().get():Notify(text) elseif #tbl17.bc().takeDroppedPaths() > 0 then tbl17.aB().get():Notify("Some saved settings could not be restored and were reset to defaults") end end local Theme = tbl17.A() local theme = store.Data.Theme if theme ~= nil then for k, v in next, theme do if Theme.Tokens[k] ~= nil and typeof(v) == "Color3" then Theme.refresh(k, v) end end end local registry = GlobalTrove:Add(tbl17.bK().new()) local identities = GlobalTrove:Add(tbl17.bL().new(registry)) local tags = GlobalTrove:Add(tbl17.bM().new(registry)) GlobalTrove:Add(tbl17.bR().new(tags, registry)) GlobalTrove:Add(tbl17.bZ().new(identities)) local avatar = GlobalTrove:Add(tbl17.b6().new(registry)) return { StoreProfiles = profiles, PlayerRegistry = registry, PlayerIdentities = identities, PlayerTags = tags, DecoratorFactory = avatar ~= nil and avatar:GetDecoratorFactory() or nil, ArmAvatarSpoofer = function() avatar:Arm() end, GeneralState = state, GeneralStateData = stateData, } end function K.Unload() if K.destroyed then return end K.destroyed = true for _, f in ipairs(K.cleanups) do pcall(f) end pcall(function() GlobalTrove:Destroy() end) if getgenv().KiciaRebuild == K then getgenv().KiciaRebuild = nil end end -- (autoexec fix: game controller modules error when required before the -- game finishes replicating them, so wait for Controllers before booting) task.spawn(function() local _players = game:GetService("Players") local _wt0 = os.clock() while not _players.LocalPlayer and os.clock() - _wt0 < 60 do task.wait() end local _lp = _players.LocalPlayer if not _lp then warn("[Kicia] ABORTED: no LocalPlayer after 60s"); return end local _ps = _lp:FindFirstChild("PlayerScripts") if not _ps then pcall(function() _lp:WaitForChild("PlayerScripts", 60) end) _ps = _lp:FindFirstChild("PlayerScripts") end if not _ps then warn("[Kicia] ABORTED: no PlayerScripts"); return end local _ctrl = _ps:FindFirstChild("Controllers") if _ps and not _ctrl then print("[Kicia] waiting for PlayerScripts.Controllers ...") pcall(function() _ps:WaitForChild("Controllers", 30) end) _ctrl = _ps:FindFirstChild("Controllers") end if not _ctrl then warn("[Kicia] ABORTED: PlayerScripts.Controllers not found. This script is built for Rivals - remove it from autoexec if you are in a different game.") return end -- (no spawn gate: boot ASAP once data is ready) -- Adaptive fast boot: NO require() calls before boot (hands off the game's -- enum build). Boot as soon as the client looks alive: spawned + game HUD -- present. Usually seconds after join; 45s cap, then boot anyway. print("[Kicia] waiting for client to come alive ...") local _wt1 = os.clock() while os.clock() - _wt1 < 45 do local _ch = _lp.Character local _pg0 = _lp:FindFirstChild("PlayerGui") local _spawnedOk = _ch ~= nil and _ch:FindFirstChildOfClass("Humanoid") ~= nil local _uiOk = false if _pg0 then local _n = 0 for _, _c in ipairs(_pg0:GetChildren()) do if _c:IsA("ScreenGui") then _n = _n + 1 end end _uiOk = _n >= 2 end if _spawnedOk and _uiOk then break end task.wait(1) end print("[Kicia] client alive, booting ...") print("[Kicia] controllers ready, booting ...") print("[FIX] auto-exec/color picker by skidcoded") tbl17.j1()(bootFn()) task.spawn(function() task.wait(60) local _pg3 = _lp:FindFirstChild("PlayerGui") local _ls = _pg3 and _pg3:FindFirstChild("LoadingScreen") if _ls and _ls:IsA("LayerCollector") and _ls.Enabled then print("[Kicia] please rejoin it broke lolz.") _ls.Enabled = false end end) end)