From 577777861305ec62eff373ab26343fe80dabcb9a Mon Sep 17 00:00:00 2001 From: redstonestudios Date: Fri, 6 Feb 2026 15:45:52 +0000 Subject: [PATCH] Auto-deploy: Update bundled Lua script --- main.luau | 3801 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 3800 insertions(+), 1 deletion(-) diff --git a/main.luau b/main.luau index 54299a4..03e238b 100644 --- a/main.luau +++ b/main.luau @@ -1 +1,3800 @@ -no \ No newline at end of file +local a local aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at={[2]=function()local b,c,d=a(2)local e return( +function(...)local f=c.Parent local g,h=d(f:WaitForChild'Loader'),f:WaitForChild'ObsidianUI'local i,j=d(h:WaitForChild +'Bootstrap'),g.show()j.setProgress(0.15,'Loading modules...')local k,l=pcall(function()j.setProgress(0.45, +'Warming up UI...')i.start()j.setProgress(0.9,'Finalizing...')end)if not k then j.setProgress(0.9,'Load failed.')warn(l) +end task.wait(0.2)j.destroy()end)()end,[3]=function()local b,c,d=a(3)local e return(function(...)local f=d(c: +WaitForChild'ObsidianLibrary.d')return{Library=(d(c:WaitForChild'ObsidianLibrary')::any)::f.Library,Types=f}end)()end,[4 +]=function()local b,c,d=a(4)local e return(function(...)export type Scheme={BackgroundColor:Color3,MainColor:Color3, +AccentColor:Color3,OutlineColor:Color3,FontColor:Color3,Font:Font,RedColor:Color3,DarkColor:Color3,WhiteColor:Color3} +export type Icon={Url:string,ImageRectOffset:Vector2,ImageRectSize:Vector2}export type ContextMenu={Active:boolean, +Holder:GuiObject,Menu:GuiObject,List:UIListLayout?,Signal:RBXScriptConnection?,Size:UDim2|(()->UDim2),Open:(self: +ContextMenu)->(),Close:(self:ContextMenu)->(),Toggle:(self:ContextMenu)->(),SetSize:(self:ContextMenu,Size:UDim2|(()-> +UDim2))->()}export type Tooltip={Disabled:boolean,Hovering:boolean,Signals:{[number]:RBXScriptConnection},Destroy:(self: +Tooltip)->()}export type Notification={Title:string?,Description:string,Time:number|Instance,SoundId:string|number?, +Steps:number?,Persist:boolean?,Destroyed:boolean,Resize:(self:Notification)->(),ChangeTitle:(self:Notification,Text: +string)->(),ChangeDescription:(self:Notification,Text:string)->(),ChangeStep:(self:Notification,NewStep:number)->(), +Destroy:(self:Notification)->()}export type KeybindToggle={Normal:boolean,Holder:TextButton,Label:TextLabel,Checkbox: +Frame,Loaded:boolean,Display:(self:KeybindToggle,State:boolean)->(),SetText:(self:KeybindToggle,Text:string)->(), +SetVisibility:(self:KeybindToggle,Visibility:boolean)->(),SetNormal:(self:KeybindToggle,Normal:boolean)->()}export type +DraggableLabel={Label:TextLabel,SetText:(self:DraggableLabel,Text:string)->(),SetVisible:(self:DraggableLabel,Visible: +boolean)->()}export type DraggableButton={Button:TextButton,SetText:(self:DraggableButton,Text:string)->()}export type +ButtonInfo={Text:string,Func:()->(),DoubleClick:boolean?,Tooltip:string?,DisabledTooltip:string?,Risky:boolean?,Disabled +:boolean?,Visible:boolean?}export type ToggleInfo={Text:string,Default:boolean?,Callback:((boolean)->())?,Changed:(( +boolean)->())?,Tooltip:string?,DisabledTooltip:string?,Risky:boolean?,Disabled:boolean?,Visible:boolean?}export type +InputInfo={Text:string,Default:string?,Finished:boolean?,Numeric:boolean?,ClearTextOnFocus:boolean?,Placeholder:string?, +AllowEmpty:boolean?,EmptyReset:string?,MaxLength:number?,Tooltip:string?,DisabledTooltip:string?,Callback:((string)->()) +?,Changed:((string)->())?,Disabled:boolean?,Visible:boolean?}export type SliderInfo={Text:string,Default:number?,Min: +number?,Max:number?,Rounding:number?,Prefix:string?,Suffix:string?,Compact:boolean?,HideMax:boolean?,FormatDisplayValue: +((Slider,number)->string)?,Tooltip:string?,DisabledTooltip:string?,Callback:((number)->())?,Changed:((number)->())?, +Disabled:boolean?,Visible:boolean?}export type DropdownInfo={Text:string?,Values:{any},Default:any,DisabledValues:{any}? +,Multi:boolean?,MaxVisibleDropdownItems:number?,SpecialType:'Player'|'Team'?,ExcludeLocalPlayer:boolean?,AllowNull: +boolean?,Searchable:boolean?,FormatDisplayValue:((any)->string)?,Tooltip:string?,DisabledTooltip:string?,Callback:((any +)->())?,Changed:((any)->())?,Disabled:boolean?,Visible:boolean?}export type ViewportInfo={Object:BasePart|Model,Camera: +Camera?,Clone:boolean?,AutoFocus:boolean?,Interactive:boolean?,Height:number?,Visible:boolean?}export type ImageInfo={ +Image:string,Transparency:number?,Color:Color3?,RectOffset:Vector2?,RectSize:Vector2?,ScaleType:Enum.ScaleType?,Height: +number?,Visible:boolean?}export type VideoInfo={Video:string,Looped:boolean?,Playing:boolean?,Volume:number?,Height: +number?,Visible:boolean?}export type UIPassthroughInfo={Instance:GuiBase2d,Height:number?,Visible:boolean?}export type +KeyPickerInfo={Text:string,Default:string?,Mode:'Always'|'Toggle'|'Hold'|'Press'?,Modes:{'Always'|'Toggle'|'Hold'| +'Press'}?,SyncToggleState:boolean?,NoUI:boolean?,WaitForCallback:boolean?,Callback:((boolean)->())?,ChangedCallback:(( +Enum.KeyCode|Enum.UserInputType)->())?,Changed:((Enum.KeyCode|Enum.UserInputType)->())?,Clicked:(()->())?}export type +ColorPickerInfo={Default:Color3?,Transparency:number?,Title:string?,Callback:((Color3)->())?,Changed:((Color3)->())?} +export type KeyPicker={Text:string,Value:string,Toggled:boolean,Mode:'Always'|'Toggle'|'Hold'|'Press',SyncToggleState: +boolean,Callback:(Toggled:boolean)->(),ChangedCallback:(Key:Enum.KeyCode|Enum.UserInputType)->(),Changed:(Key:Enum. +KeyCode|Enum.UserInputType)->(),Clicked:()->(),Type:'KeyPicker',Menu:ContextMenu,Display:(self:KeyPicker)->(),Update:( +self:KeyPicker)->(),GetState:(self:KeyPicker)->boolean,OnChanged:(self:KeyPicker,Func:(Key:Enum.KeyCode|Enum. +UserInputType)->())->(),OnClick:(self:KeyPicker,Func:()->())->(),DoClick:(self:KeyPicker)->(),SetValue:(self:KeyPicker, +Data:{string})->(),SetText:(self:KeyPicker,Text:string)->()}export type ColorPicker={Value:Color3,Transparency:number, +Title:string?,Callback:(Value:Color3)->(),Changed:(Value:Color3)->(),Type:'ColorPicker',Hue:number,Sat:number,Vib:number +,ColorMenu:ContextMenu,ContextMenu:ContextMenu,SetHSVFromRGB:(self:ColorPicker,Color:Color3)->(),Display:(self: +ColorPicker)->(),Update:(self:ColorPicker)->(),OnChanged:(self:ColorPicker,Func:(Value:Color3)->())->(),SetValue:(self: +ColorPicker,HSV:{number},Transparency:number?)->(),SetValueRGB:(self:ColorPicker,Color:Color3,Transparency:number?)->()} +export type Addon=KeyPicker|ColorPicker export type Label={Text:string,DoesWrap:boolean,Addons:{[number]:Addon},Visible: +boolean,Type:'Label',TextLabel:TextLabel,Container:GuiObject,Holder:TextLabel,SetVisible:(self:Label,Visible:boolean)->( +),SetText:(self:Label,Text:string)->(),AddKeyPicker:(self:Label,Idx:string,Info:KeyPickerInfo)->Label,AddColorPicker:( +self:Label,Idx:string,Info:ColorPickerInfo)->Label}export type Button={Text:string,Func:()->(),DoubleClick:boolean?, +Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Risky:boolean,Disabled:boolean,Visible:boolean,Tween:Tween +?,Type:'Button',Base:TextButton,Stroke:UIStroke,Holder:Frame,SubButton:SubButton?,AddButton:(self:Button,Info:ButtonInfo +|string,Func:(()->())?,Idx:string?)->SubButton,UpdateColors:(self:Button)->(),SetDisabled:(self:Button,Disabled:boolean +)->(),SetVisible:(self:Button,Visible:boolean)->(),SetText:(self:Button,Text:string)->()}export type SubButton={Text: +string,Func:()->(),DoubleClick:boolean?,Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Risky:boolean, +Disabled:boolean,Visible:boolean,Tween:Tween?,Type:'SubButton',Base:TextButton,Stroke:UIStroke,UpdateColors:(self: +SubButton)->(),SetDisabled:(self:SubButton,Disabled:boolean)->(),SetVisible:(self:SubButton,Visible:boolean)->(),SetText +:(self:SubButton,Text:string)->()}export type Toggle={Text:string,Value:boolean,Tooltip:string?,DisabledTooltip:string?, +TooltipTable:Tooltip?,Callback:(Value:boolean)->(),Changed:(Value:boolean)->(),Risky:boolean,Disabled:boolean,Visible: +boolean,Addons:{[number]:Addon},Type:'Toggle',TextLabel:TextLabel,Container:GuiObject,Holder:TextButton,UpdateColors:( +self:Toggle)->(),Display:(self:Toggle)->(),OnChanged:(self:Toggle,Func:(Value:boolean)->())->(),SetValue:(self:Toggle, +Value:boolean)->(),SetDisabled:(self:Toggle,Disabled:boolean)->(),SetVisible:(self:Toggle,Visible:boolean)->(),SetText:( +self:Toggle,Text:string)->(),AddKeyPicker:(self:Toggle,Idx:string,Info:KeyPickerInfo)->Toggle,AddColorPicker:(self: +Toggle,Idx:string,Info:ColorPickerInfo)->Toggle}export type Input={Text:string,Value:string,Finished:boolean,Numeric: +boolean,ClearTextOnFocus:boolean,Placeholder:string,AllowEmpty:boolean,EmptyReset:string,Tooltip:string?,DisabledTooltip +:string?,TooltipTable:Tooltip?,Callback:(Value:string)->(),Changed:(Value:string)->(),Disabled:boolean,Visible:boolean, +Type:'Input',Holder:Frame,UpdateColors:(self:Input)->(),OnChanged:(self:Input,Func:(Value:string)->())->(),SetValue:( +self:Input,Text:string)->(),SetDisabled:(self:Input,Disabled:boolean)->(),SetVisible:(self:Input,Visible:boolean)->(), +SetText:(self:Input,Text:string)->()}export type Slider={Text:string,Value:number,Min:number,Max:number,Prefix:string, +Suffix:string,Compact:boolean?,Rounding:number,Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Callback:( +Value:number)->(),Changed:(Value:number)->(),Disabled:boolean,Visible:boolean,Type:'Slider',Holder:Frame,UpdateColors:( +self:Slider)->(),Display:(self:Slider)->(),OnChanged:(self:Slider,Func:(Value:number)->())->(),SetMax:(self:Slider,Value +:number)->(),SetMin:(self:Slider,Value:number)->(),SetValue:(self:Slider,Value:number|string)->(),SetDisabled:(self: +Slider,Disabled:boolean)->(),SetVisible:(self:Slider,Visible:boolean)->(),SetText:(self:Slider,Text:string)->(), +SetPrefix:(self:Slider,Prefix:string)->(),SetSuffix:(self:Slider,Suffix:string)->()}export type Dropdown={Text:string?, +Value:{[any]:boolean}|any,Values:{any},DisabledValues:{any},Multi:boolean,SpecialType:'Player'|'Team'?, +ExcludeLocalPlayer:boolean?,Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Callback:(Value:any)->(), +Changed:(Value:any)->(),Disabled:boolean,Visible:boolean,Type:'Dropdown',Menu:ContextMenu,Holder:Frame, +RecalculateListSize:(self:Dropdown,Count:number?)->(),UpdateColors:(self:Dropdown)->(),Display:(self:Dropdown)->(), +OnChanged:(self:Dropdown,Func:(Value:any)->())->(),GetActiveValues:(self:Dropdown)->{any}|number,BuildDropdownList:(self +:Dropdown)->(),SetValue:(self:Dropdown,Value:any)->(),SetValues:(self:Dropdown,Values:{any})->(),AddValues:(self: +Dropdown,Values:{any}|string)->(),SetDisabledValues:(self:Dropdown,DisabledValues:{any})->(),AddDisabledValues:(self: +Dropdown,DisabledValues:{any}|string)->(),SetDisabled:(self:Dropdown,Disabled:boolean)->(),SetVisible:(self:Dropdown, +Visible:boolean)->(),SetText:(self:Dropdown,Text:string)->()}export type Viewport={Object:BasePart|Model,Camera:Camera, +Interactive:boolean,AutoFocus:boolean,Visible:boolean,Type:'Viewport',Holder:Frame,SetObject:(self:Viewport,Object: +Instance,Clone:boolean?)->(),SetHeight:(self:Viewport,Height:number)->(),Focus:(self:Viewport)->(),SetCamera:(self: +Viewport,Camera:Camera)->(),SetInteractive:(self:Viewport,Interactive:boolean)->(),SetVisible:(self:Viewport,Visible: +boolean)->()}export type Image={Image:string,Color:Color3,RectOffset:Vector2,RectSize:Vector2,Height:number,ScaleType: +Enum.ScaleType,Transparency:number,Visible:boolean,Type:'Image',Holder:Frame,SetHeight:(self:Image,Height:number)->(), +SetImage:(self:Image,NewImage:string)->(),SetColor:(self:Image,Color:Color3)->(),SetRectOffset:(self:Image,RectOffset: +Vector2)->(),SetRectSize:(self:Image,RectSize:Vector2)->(),SetScaleType:(self:Image,ScaleType:Enum.ScaleType)->(), +SetTransparency:(self:Image,Transparency:number)->(),SetVisible:(self:Image,Visible:boolean)->()}export type Video={ +Video:string,Looped:boolean,Playing:boolean,Volume:number,Height:number,Visible:boolean,Type:'Video',Holder:Frame, +VideoFrame:VideoFrame,SetHeight:(self:Video,Height:number)->(),SetVideo:(self:Video,NewVideo:string)->(),SetLooped:(self +:Video,Looped:boolean)->(),SetVolume:(self:Video,Volume:number)->(),SetPlaying:(self:Video,Playing:boolean)->(),Play:( +self:Video)->(),Pause:(self:Video)->(),SetVisible:(self:Video,Visible:boolean)->()}export type UIPassthrough={Instance: +GuiBase2d,Height:number,Visible:boolean,Type:'UIPassthrough',Holder:Frame,SetHeight:(self:UIPassthrough,Height:number)-> +(),SetInstance:(self:UIPassthrough,Instance:GuiBase2d)->(),SetVisible:(self:UIPassthrough,Visible:boolean)->()}export +type Divider={Type:'Divider',Holder:Frame}export type Element=Label|Button|Toggle|Input|Slider|Dropdown|Viewport|Image| +Video|UIPassthrough|Divider export type Option=Toggle|Input|Slider|Dropdown|Viewport|Image|Video|UIPassthrough|KeyPicker +|ColorPicker export type BaseGroupbox={AddDivider:(self:Groupbox)->(),AddLabel:(self:Groupbox,Info:{Text:string,DoesWrap +:boolean?,Size:number?,Visible:boolean?,Idx:string?}|string,DoesWrap:boolean?,Idx:string?)->Label,AddButton:(self: +Groupbox,Info:ButtonInfo|string,Func:(()->())?,Idx:string?)->Button,AddCheckbox:(self:Groupbox,Idx:string,Info: +ToggleInfo)->Toggle,AddToggle:(self:Groupbox,Idx:string,Info:ToggleInfo)->Toggle,AddInput:(self:Groupbox,Idx:string,Info +:InputInfo)->Input,AddSlider:(self:Groupbox,Idx:string,Info:SliderInfo)->Slider,AddDropdown:(self:Groupbox,Idx:string, +Info:DropdownInfo)->Dropdown,AddViewport:(self:Groupbox,Idx:string,Info:ViewportInfo)->Viewport,AddImage:(self:Groupbox, +Idx:string,Info:ImageInfo)->Image,AddVideo:(self:Groupbox,Idx:string,Info:VideoInfo)->Video,AddUIPassthrough:(self: +Groupbox,Idx:string,Info:UIPassthroughInfo)->UIPassthrough,AddDependencyBox:(self:Groupbox)->DependencyBox, +AddDependencyGroupbox:(self:Groupbox)->DependencyGroupbox}export type DependencyBox=BaseGroupbox&{Visible:boolean, +Dependencies:{[number]:{Element}},Holder:Frame,Container:Frame,Elements:{[number]:Element},DependencyBoxes:{[number]: +DependencyBox},Resize:(self:DependencyBox)->(),Update:(self:DependencyBox,CancelSearch:boolean?)->(),SetupDependencies:( +self:DependencyBox,Dependencies:{{Element}})->()}export type DependencyGroupbox=BaseGroupbox&{Visible:boolean, +Dependencies:{[number]:{Element}},BoxHolder:Frame,Holder:Frame,Container:Frame,Tab:Tab,Elements:{[number]:Element}, +DependencyBoxes:{[number]:DependencyBox},Resize:(self:DependencyGroupbox)->(),Update:(self:DependencyGroupbox, +CancelSearch:boolean?)->(),SetupDependencies:(self:DependencyGroupbox,Dependencies:{{Element}})->()}export type Groupbox +=BaseGroupbox&{BoxHolder:Frame,Holder:Frame,Container:Frame,Tab:Tab,DependencyBoxes:{[number]:DependencyBox},Elements:{[ +number]:Element},Resize:(self:Groupbox)->()}export type SubTab=BaseGroupbox&{ButtonHolder:TextButton,Container:Frame,Tab +:Tab,Elements:{[number]:Element},DependencyBoxes:{[number]:DependencyBox},Show:(self:SubTab)->(),Hide:(self:SubTab)->(), +Resize:(self:SubTab)->()}export type Tabbox={ActiveTab:SubTab?,BoxHolder:Frame,Holder:Frame,Tabs:{[string]:SubTab}, +AddTab:(self:Tabbox,Name:string)->SubTab}export type Tab={Groupboxes:{[string]:Groupbox},Tabboxes:{[string]:Tabbox}, +DependencyGroupboxes:{[number]:DependencyGroupbox},Sides:{ScrollingFrame},WarningBox:{IsNormal:boolean,LockSize:boolean, +Visible:boolean,Title:string,Text:string},UpdateWarningBox:(self:Tab,Info:{IsNormal:boolean?,LockSize:boolean?,Visible: +boolean?,Title:string?,Text:string?})->(),Resize:(self:Tab,ResizeWarningBox:boolean?)->(),AddGroupbox:(self:Tab,Info:{ +Side:number,Name:string,IconName:string?})->Groupbox,AddLeftGroupbox:(self:Tab,Name:string,IconName:string?)->Groupbox, +AddRightGroupbox:(self:Tab,Name:string,IconName:string?)->Groupbox,AddTabbox:(self:Tab,Info:{Side:number,Name:string?} +)->Tabbox,AddLeftTabbox:(self:Tab,Name:string?)->Tabbox,AddRightTabbox:(self:Tab,Name:string?)->Tabbox,Hover:(self:Tab, +Hovering:boolean)->(),Show:(self:Tab)->(),Hide:(self:Tab)->()}export type KeyTab=BaseGroupbox&{Elements:{[any]:any}, +IsKeyTab:true,Container:ScrollingFrame,AddKeyBox:(self:KeyTab,ExpectedKey:string?,Callback:(Success:boolean,Key:string +)->())->(),Resize:(self:KeyTab)->(),Hover:(self:KeyTab,Hovering:boolean)->(),Show:(self:KeyTab)->(),Hide:(self:KeyTab)-> +()}export type Window={IsSidebarCompacted:(self:Window)->boolean,GetSidebarWidth:(self:Window)->number,SetSidebarWidth:( +self:Window,Width:number)->(),AddTab:(self:Window,Info:{Name:string,Icon:string?,Description:string?}|string,Icon:string +?,Description:string?)->Tab,AddKeyTab:(self:Window,Info:{Name:string,Icon:string?,Description:string?}|string,Icon: +string?,Description:string?)->KeyTab}export type Library={LocalPlayer:Player,DevicePlatform:Enum.Platform?,IsMobile: +boolean,IsRobloxFocused:boolean,ScreenGui:ScreenGui?,SearchText:string,Searching:boolean,GlobalSearch:boolean, +LastSearchTab:Tab?,ActiveTab:Tab?,Tabs:{[string]:Tab|KeyTab},DependencyBoxes:{[number]:DependencyBox|DependencyGroupbox} +,KeybindFrame:Frame?,KeybindContainer:Frame?,KeybindToggles:{[number]:KeybindToggle},Notifications:{[GuiObject]: +Notification},ToggleKeybind:Enum.KeyCode,TweenInfo:TweenInfo,NotifyTweenInfo:TweenInfo,Toggled:boolean,Unloaded:boolean, +Labels:{[(string|number)]:Label},Buttons:{[(string|number)]:Button|SubButton},Toggles:{[(string|number)]:Toggle},Options +:{[(string|number)]:Option},NotifySide:'Right'|'Left',ShowCustomCursor:boolean,ForceCheckbox:boolean, +ShowToggleFrameInKeybinds:boolean,NotifyOnError:boolean,CantDragForced:boolean,Signals:{[number]:RBXScriptConnection}, +UnloadSignals:{[number]:()->()},MinSize:Vector2,DPIScale:number,CornerRadius:number,IsLightTheme:boolean,Scheme:Scheme, +Registry:{[GuiObject]:{[string]:string|(()->Color3)}},DPIRegistry:{[GuiObject]:{[string]:any}},CopiedColor:{Color3| +number}?,ImageManager:{AddAsset:(AssetName:string,RobloxAssetId:number,URL:string,ForceRedownload:boolean?)->nil, +GetAsset:(AssetName:string)->string?,DownloadAsset:(AssetName:string,ForceRedownload:boolean?)->nil},UpdateKeybindFrame: +(self:Library)->(),UpdateDependencyBoxes:(self:Library)->(),UpdateSearch:(self:Library,SearchText:string)->(), +AddToRegistry:(self:Library,Instance:GuiObject,Properties:{[string]:string|(()->Color3)})->(),RemoveFromRegistry:(self: +Library,Instance:GuiObject)->(),UpdateColorsUsingRegistry:(self:Library)->(),UpdateDPI:(self:Library,Instance:GuiObject, +Properties:{[string]:any})->(),SetDPIScale:(self:Library,DPIScale:number)->(),GiveSignal:(self:Library,Connection: +RBXScriptConnection)->RBXScriptConnection,GetIcon:(self:Library,IconName:string)->Icon?,Validate:(self:Library,Table:{[ +string]:any},Template:{[string]:any})->{[string]:any},GetBetterColor:(self:Library,Color:Color3,Add:number)->Color3, +GetDarkerColor:(self:Library,Color:Color3)->Color3,GetKeyString:(self:Library,KeyCode:Enum.KeyCode)->string, +GetTextBounds:(self:Library,Text:string,Font:Font,Size:number,Width:number?)->(number,number),MouseIsOverFrame:(self: +Library,Frame:GuiObject,Mouse:Vector2)->boolean,SafeCallback:(self:Library,Func:(...any)->...any,...any)->...any, +MakeDraggable:(self:Library,UI:GuiObject,DragFrame:GuiObject,IgnoreToggled:boolean?,IsMainWindow:boolean?)->(), +MakeResizable:(self:Library,UI:GuiObject,DragFrame:GuiObject,Callback:(()->())?)->(),MakeCover:(self:Library,Holder: +GuiObject,Place:string)->Frame,MakeLine:(self:Library,Frame:GuiObject,Info:{AnchorPoint:Vector2?,Position:UDim2,Size: +UDim2})->Frame,MakeOutline:(self:Library,Frame:GuiObject,Corner:number?,ZIndex:number?)->Frame,AddDraggableButton:(self: +Library,Text:string,Func:(DraggableButton)->())->DraggableButton,AddDraggableMenu:(self:Library,Name:string)->(Frame, +Frame),SetWatermarkVisibility:(self:Library,Visible:boolean)->(),SetWatermark:(self:Library,Text:string)->(), +AddContextMenu:(self:Library,Holder:GuiObject,Size:UDim2|(()->UDim2),Offset:{[number]:number}|(()->{[number]:number}), +List:number?,ActiveCallback:((boolean)->())?)->ContextMenu,AddTooltip:(self:Library,InfoStr:string,DisabledInfoStr: +string,HoverInstance:GuiObject)->Tooltip,OnUnload:(self:Library,Callback:()->())->(),Unload:(self:Library)->(),SetFont:( +self:Library,FontFace:Font|Enum.Font)->(),SetNotifySide:(self:Library,Side:'Left'|'Right')->(),Notify:(self:Library,Info +:{Title:string,Description:string,Time:number?,SoundId:string|number?,Steps:number?,Persist:boolean?}|string,Time:number +?,SoundId:string|number?)->Notification,CreateWindow:(self:Library,WindowInfo:{Title:string?,Footer:string?,Position: +UDim2?,Size:UDim2?,Icon:string?,IconSize:UDim2?,BackgroundImage:string?,AutoShow:boolean?,Center:boolean?,Resizable: +boolean?,DisableSearch:boolean?,SearchbarSize:UDim2?,GlobalSearch:boolean?,CornerRadius:number?,NotifySide:'Left'| +'Right'?,ShowCustomCursor:boolean?,Font:Font|Enum.Font?,ToggleKeybind:Enum.KeyCode?,MobileButtonsSide:'Left'|'Right'?, +UnlockMouseWhileOpen:boolean?,EnableSidebarResize:boolean?,EnableCompacting:boolean?,DisableCompactingSnap:boolean?, +SidebarCompacted:boolean?,MinContainerWidth:number?,MinSidebarWidth:number?,SidebarCompactWidth:number?, +CompactWidthActivation:number?})->Window,Toggle:(self:Library,Value:boolean?)->()}return nil end)()end,[5]=function() +local b,c,d=a(5)local e return(function(...)local f=(cloneref or clonereference or function(f:any)return f end)local g: +CoreGui,h:Players,i:RunService,j:SoundService,k:UserInputService,l:TextService,m:Teams,n:TweenService,o,p,q=f(game: +GetService'CoreGui'),f(game:GetService'Players'),f(game:GetService'RunService'),f(game:GetService'SoundService'),f(game: +GetService'UserInputService'),f(game:GetService'TextService'),f(game:GetService'Teams'),f(game:GetService'TweenService') +,getgenv or function()return shared end,setclipboard or nil,protectgui or(syn and syn.protect_gui)or function()end local +r,s=gethui or function()return g end,h.LocalPlayer or h.PlayerAdded:Wait()local t,u,v,w,x,y,z,A=f(s:GetMouse()),{},{},{} +,{},{},[[https://raw.githubusercontent.com/deividcomsono/Obsidian/refs/heads/main/]],{}local B={TransparencyTexture={ +RobloxId=139785960036434,Path='Obsidian/assets/TransparencyTexture.png',URL=z..'assets/TransparencyTexture.png',Id=nil}, +SaturationMap={RobloxId=4155801252,Path='Obsidian/assets/SaturationMap.png',URL=z..'assets/SaturationMap.png',Id=nil}}do +local function C(D:string,E:boolean?)if not isfolder or not makefolder then return end local F,G=D:split'/',''if E then +table.remove(F,#F)end for H,I in ipairs(F)do if not isfolder(G..I)then makefolder(G..I)end G=G..I..'/'end return G end +function A.AddAsset(D:string,E:number,F:string,G:boolean?)if B[D]~=nil then error(string.format( +'Asset %q already exists',D))end assert(typeof(E)=='number','RobloxAssetId must be a number')B[D]={RobloxId=E,Path= +string.format('Obsidian/custom_assets/%s',D),URL=F,Id=nil}A.DownloadAsset(D,G)end function A.GetAsset(D:string)if not B[ +D]then return nil end local E=B[D]if E.Id then return E.Id end local F=string.format('rbxassetid://%s',E.RobloxId)if +getcustomasset then local G,H=pcall(getcustomasset,E.Path)if G and H then F=H end end E.Id=F return F end function A. +DownloadAsset(D:string,E:boolean?)if not getcustomasset or not writefile or not isfile then return false, +'missing functions'end local F=B[D]C(F.Path,true)if E~=true and isfile(F.Path)then return true,nil end local G,H=pcall( +function()writefile(F.Path,game:HttpGet(F.URL))end)return G,H end for D,E in B do A.DownloadAsset(D)end end local C={ +LocalPlayer=s,DevicePlatform=nil,IsMobile=false,IsRobloxFocused=true,ScreenGui=nil,SearchText='',Searching=false, +GlobalSearch=false,LastSearchTab=nil,ActiveTab=nil,Tabs={},TabButtons={},DependencyBoxes={},KeybindFrame=nil, +KeybindContainer=nil,KeybindToggles={},Notifications={},ToggleKeybind=Enum.KeyCode.RightControl,TweenInfo=TweenInfo.new( +0.1,Enum.EasingStyle.Quad,Enum.EasingDirection.Out),NotifyTweenInfo=TweenInfo.new(0.25,Enum.EasingStyle.Quad,Enum. +EasingDirection.Out),Toggled=false,Unloaded=false,Labels=u,Buttons=v,Toggles=w,Options=x,NotifySide='Right', +ShowCustomCursor=true,ForceCheckbox=false,ShowToggleFrameInKeybinds=true,NotifyOnError=false,ForceTextIcons=false, +CantDragForced=false,Signals={},UnloadSignals={},OriginalMinSize=Vector2.new(480,360),MinSize=Vector2.new(480,360), +DPIScale=1,CornerRadius=4,IsLightTheme=false,Scheme={BackgroundColor=Color3.fromRGB(15,15,15),MainColor=Color3.fromRGB( +25,25,25),AccentColor=Color3.fromRGB(125,85,255),OutlineColor=Color3.fromRGB(40,40,40),FontColor=Color3.new(1,1,1),Font= +Font.fromEnum(Enum.Font.Code),RedColor=Color3.fromRGB(255,50,50),DarkColor=Color3.new(0,0,0),WhiteColor=Color3.new(1,1,1 +)},Registry={},Scales={},ImageManager=A}if i:IsStudio()then if k.TouchEnabled and not k.MouseEnabled then C.IsMobile= +true C.OriginalMinSize=Vector2.new(480,240)else C.IsMobile=false C.OriginalMinSize=Vector2.new(480,360)end else pcall( +function()C.DevicePlatform=k:GetPlatform()end)C.IsMobile=(C.DevicePlatform==Enum.Platform.Android or C.DevicePlatform== +Enum.Platform.IOS)C.OriginalMinSize=C.IsMobile and Vector2.new(480,240)or Vector2.new(480,360)end local D,E,F,G,H={Frame +={BorderSizePixel=0},ImageLabel={BackgroundTransparency=1,BorderSizePixel=0},ImageButton={AutoButtonColor=false, +BorderSizePixel=0},ScrollingFrame={BorderSizePixel=0},TextLabel={BorderSizePixel=0,FontFace='Font',RichText=true, +TextColor3='FontColor'},TextButton={AutoButtonColor=false,BorderSizePixel=0,FontFace='Font',RichText=true,TextColor3= +'FontColor'},TextBox={BorderSizePixel=0,FontFace='Font',PlaceholderColor3=function()local D,E,F=C.Scheme.FontColor: +ToHSV()return Color3.fromHSV(D,E,F/2)end,Text='',TextColor3='FontColor'},UIListLayout={SortOrder=Enum.SortOrder. +LayoutOrder},UIStroke={ApplyStrokeMode=Enum.ApplyStrokeMode.Border},Window={Title='No Title',Footer='No Footer',Position +=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(720,600),IconSize=UDim2.fromOffset(30,30),AutoShow=true,Center=true, +Resizable=true,SearchbarSize=UDim2.fromScale(1,1),GlobalSearch=false,CornerRadius=4,NotifySide='Right',ShowCustomCursor= +true,Font=Enum.Font.Code,ToggleKeybind=Enum.KeyCode.RightControl,MobileButtonsSide='Left',UnlockMouseWhileOpen=true, +EnableSidebarResize=false,EnableCompacting=true,DisableCompactingSnap=false,SidebarCompacted=false,MinContainerWidth=256 +,MinSidebarWidth=128,SidebarCompactWidth=48,SidebarCollapseThreshold=0.5,CompactWidthActivation=128},Toggle={Text= +'Toggle',Default=false,Callback=function()end,Changed=function()end,Risky=false,Disabled=false,Visible=true},Input={Text +='Input',Default='',Finished=false,Numeric=false,ClearTextOnFocus=true,Placeholder='',AllowEmpty=true,EmptyReset='---', +Callback=function()end,Changed=function()end,Disabled=false,Visible=true},Slider={Text='Slider',Default=0,Min=0,Max=100, +Rounding=0,Prefix='',Suffix='',Callback=function()end,Changed=function()end,Disabled=false,Visible=true},Dropdown={ +Values={},DisabledValues={},Multi=false,MaxVisibleDropdownItems=8,Callback=function()end,Changed=function()end,Disabled= +false,Visible=true},Viewport={Object=nil,Camera=nil,Clone=true,AutoFocus=true,Interactive=false,Height=200,Visible=true} +,Image={Image='',Transparency=0,BackgroundTransparency=0,Color=Color3.new(1,1,1),RectOffset=Vector2.zero,RectSize= +Vector2.zero,ScaleType=Enum.ScaleType.Fit,Height=200,Visible=true},Video={Video='',Looped=false,Playing=false,Volume=1, +Height=200,Visible=true},UIPassthrough={Instance=nil,Height=24,Visible=true},KeyPicker={Text='KeyPicker',Default='None', +DefaultModifiers={},Mode='Toggle',Modes={'Always','Toggle','Hold'},SyncToggleState=false,Callback=function()end, +ChangedCallback=function()end,Changed=function()end,Clicked=function()end},ColorPicker={Default=Color3.new(1,1,1), +Callback=function()end,Changed=function()end}},{Bottom={0,1},Right={1,0}},{Left={0.5,1},Right={0.5,1}},{RedColor='Red', +WhiteColor='White',DarkColor='Dark'},{Red='RedColor',White='WhiteColor',Dark='DarkColor'}local function I(J)if not J +then return nil end local K=G[J]if K and C.Scheme[K]~=nil then C.Scheme[J]=C.Scheme[K]C.Scheme[K]=nil return C.Scheme[J] +end local L=H[J]if L and C.Scheme[L]~=nil then warn(string.format( +'Scheme Value %q is deprecated, please use %q instead.',J,L))return C.Scheme[L]end return C.Scheme[J]end local function +J(K,L,M)local N=Instance.new'BindableEvent'local O=K:Once(function(...)if not M or typeof(M)=='function'and M(...)then N +:Fire(true)else N:Fire(false)end end)task.delay(L,function()O:Disconnect()N:Fire(false)end)local P=N.Event:Wait()N: +Destroy()return P end local function K(L:InputObject,M:boolean?)return L.UserInputType==Enum.UserInputType.MouseButton1 +or(M==true and L.UserInputType==Enum.UserInputType.MouseButton2)or L.UserInputType==Enum.UserInputType.Touch end +local function L(M:InputObject,N:boolean?)return K(M,N)and M.UserInputState==Enum.UserInputState.Begin and C. +IsRobloxFocused end local function M(N:InputObject)return(N.UserInputType==Enum.UserInputType.MouseMovement or N. +UserInputType==Enum.UserInputType.Touch)and N.UserInputState==Enum.UserInputState.Change end local function N(O: +InputObject,P:boolean?)return K(O,P)and(O.UserInputState==Enum.UserInputState.Begin or O.UserInputState==Enum. +UserInputState.Change)and C.IsRobloxFocused end local function O(P:{[any]:any})local Q=0 for R,S in P do Q+=1 end return +Q end local function P(Q:TweenBase)if not(Q and Q.PlaybackState==Enum.PlaybackState.Playing)then return end Q:Cancel() +end local function Q(S:string)return S:match'^%s*(.-)%s*$'end local function S(T,U)assert(U>=0, +'Invalid rounding number.')if U==0 then return math.floor(T)end return tonumber(string.format('%.'..U..'f',T))end +local function T(U:boolean?)local V=h:GetPlayers()if U then local W=table.find(V,s)if W then table.remove(V,W)end end +table.sort(V,function(W,X)return W.Name:lower()0 return Y end local function aa(W)for X,Y in W.Elements do Y.Holder.Visible=typeof(Y.Visible)=='boolean'and Y +.Visible or true if Y.SubButton then Y.Base.Visible=Y.Visible Y.SubButton.Base.Visible=Y.SubButton.Visible end end W: +Resize()W.Holder.Visible=true for X,Y in W.DependencyBoxes do if not Y.Visible then continue end aa(Y)end end +local function W(X,Y)if not X then return end local Z=false for _,ab in X.Groupboxes do local ac=0 for ad,ae in ab. +Elements do if ae.Type=='Divider'then ae.Holder.Visible=false continue elseif ae.SubButton then local af=false if ae. +Text:lower():match(Y)and ae.Visible then af=true else ae.Base.Visible=false end if ae.SubButton.Text:lower():match(Y)and +ae.SubButton.Visible then af=true else ae.SubButton.Base.Visible=false end ae.Holder.Visible=af if af then ac+=1 end +continue end if ae.Text and ae.Text:lower():match(Y)and ae.Visible then ae.Holder.Visible=true ac+=1 else ae.Holder. +Visible=false end end for ad,ae in ab.DependencyBoxes do if not ae.Visible then continue end ac+=V(ae,Y)end if ac>0 then +ab:Resize()Z=true end ab.BoxHolder.Visible=ac>0 end for ab,ac in X.Tabboxes do local ad,ae=0,{}for af,_ in ac.Tabs do ae +[_]=0 for ag,ah in _.Elements do if ah.Type=='Divider'then ah.Holder.Visible=false continue elseif ah.SubButton then +local ai=false if ah.Text:lower():match(Y)and ah.Visible then ai=true else ah.Base.Visible=false end if ah.SubButton. +Text:lower():match(Y)and ah.SubButton.Visible then ai=true else ah.SubButton.Base.Visible=false end ah.Holder.Visible=ai +if ai then ae[_]+=1 end continue end if ah.Text and ah.Text:lower():match(Y)and ah.Visible then ah.Holder.Visible=true +ae[_]+=1 else ah.Holder.Visible=false end end for ag,ah in _.DependencyBoxes do if not ah.Visible then continue end ae[_ +]+=V(ah,Y)end end for af,ag in ae do af.ButtonHolder.Visible=ag>0 if ag>0 then ad+=1 Z=true if ac.ActiveTab==af then af: +Resize()elseif ac.ActiveTab and ae[ac.ActiveTab]==0 then af:Show()end end end ac.BoxHolder.Visible=ad>0 end return Z end +local function ab(ac)if not ac then return end for ad,ae in ac.Groupboxes do for af,ag in ae.Elements do ag.Holder. +Visible=typeof(ag.Visible)=='boolean'and ag.Visible or true if ag.SubButton then ag.Base.Visible=ag.Visible ag.SubButton +.Base.Visible=ag.SubButton.Visible end end for af,ag in ae.DependencyBoxes do if not ag.Visible then continue end aa(ag) +end ae:Resize()ae.BoxHolder.Visible=true end for ad,ae in ac.Tabboxes do for af,ag in ae.Tabs do for ah,ai in ag. +Elements do ai.Holder.Visible=typeof(ai.Visible)=='boolean'and ai.Visible or true if ai.SubButton then ai.Base.Visible= +ai.Visible ai.SubButton.Base.Visible=ai.SubButton.Visible end end for ah,ai in ag.DependencyBoxes do if not ai.Visible +then continue end aa(ai)end ag.ButtonHolder.Visible=true end if ae.ActiveTab then ae.ActiveTab:Resize()end ae.BoxHolder. +Visible=true end end function C.UpdateSearch(ac,ad)C.SearchText=ad local ae={}if C.GlobalSearch then for af,ag in C.Tabs +do if typeof(ag)=='table'and not ag.IsKeyTab then table.insert(ae,ag)end end elseif C.LastSearchTab and typeof(C. +LastSearchTab)=='table'then table.insert(ae,C.LastSearchTab)end for af,ag in ipairs(ae)do ab(ag)end local af=ad:lower() +if Q(af)==''then C.Searching=false C.LastSearchTab=nil return end if not C.GlobalSearch and C.ActiveTab and C.ActiveTab. +IsKeyTab then C.Searching=false C.LastSearchTab=nil return end C.Searching=true local ag={}if C.GlobalSearch then ag=ae +if#ag==0 then for ah,ai in C.Tabs do if typeof(ai)=='table'and not ai.IsKeyTab then table.insert(ag,ai)end end end +elseif C.ActiveTab then table.insert(ag,C.ActiveTab)end local ah,ai=false for X,Y in ipairs(ag)do local Z=W(Y,af)if Z +then if not ai then ai=Y end if Y==C.ActiveTab then ah=true end end end if C.GlobalSearch then if ah and C.ActiveTab +then C.ActiveTab:RefreshSides()elseif ai then local X=ad task.defer(function()if C.SearchText~=X then return end if C. +ActiveTab~=ai then ai:Show()end end)end C.LastSearchTab=nil else C.LastSearchTab=C.ActiveTab end end function C. +AddToRegistry(ac,ad,ae)C.Registry[ad]=ae end function C.RemoveFromRegistry(ac,ad)C.Registry[ad]=nil end function C. +UpdateColorsUsingRegistry(ac)for ad,ae in C.Registry do for af,ag in ae do local ah=I(ag)if ah or typeof(ag)=='function' +then ad[af]=ah or ag()end end end end function C.SetDPIScale(ac,ad:number)C.DPIScale=ad/100 C.MinSize=C.OriginalMinSize* +C.DPIScale for ae,af in C.Scales do af.Scale=C.DPIScale end for ae,af in x do if af.Type=='Dropdown'then af: +RecalculateListSize()end end for ae,af in C.Notifications do af:Resize()end end function C.GiveSignal(ac,ad: +RBXScriptConnection|RBXScriptSignal)local ae=typeof(ad)if ad and(ae=='RBXScriptConnection'or ae=='RBXScriptSignal')then +table.insert(C.Signals,ad)end return ad end function IsValidCustomIcon(ac:string)return typeof(ac)=='string'and(ac:match +'rbxasset'or ac:match'roblox%.com/asset/%?id='or ac:match'rbxthumb://type=')end type Icon={Url:string,Id:number,IconName +:string,ImageRectOffset:Vector2,ImageRectSize:Vector2}type IconModule={Icons:{string},GetAsset:(Name:string)->Icon?} +local ac,ad,ae={Url='rbxasset://textures/ui/GuiImagePlaceholder.png',ImageRectOffset=Vector2.zero,ImageRectSize=Vector2. +zero,Custom=true},pcall(function()return(loadstring(game:HttpGet +[[https://raw.githubusercontent.com/deividcomsono/lucide-roblox-direct/refs/heads/main/source.lua]])::()->IconModule)() +end)function C.GetIcon(af,ag:string)if not ad then return end local ah,ai=pcall(ae.GetAsset,ag)if not ah then return end +return ai end function C.GetCustomIcon(af,ag:string)if not IsValidCustomIcon(ag)then return C:GetIcon(ag)else return{Url +=ag,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=true}end end function C.Validate(af,ag:{[string]:any} +,ah:{[string]:any}):{[string]:any}if typeof(ag)~='table'then return ah end for ai,X in ah do if typeof(ai)=='number'then +continue end if typeof(X)=='table'then ag[ai]=C:Validate(ag[ai],X)elseif ag[ai]==nil then ag[ai]=X end end return ag end +local function af(ag:{[string]:any},ah:GuiObject)local ai=C.Registry[ah]or{}for X,Y in ag do if ai[X]then ai[X]=nil +elseif X~='Text'then local Z=I(Y)if Z or typeof(Y)=='function'then ai[X]=Y Y=Z or Y()end end ah[X]=Y end if O(ai)>0 then +C.Registry[ah]=ai end end local function ag(ah:string,ai:{[string]:any}):any local X=Instance.new(ah)if D[ah]then af(D[ +ah],X)end af(ai,X)if ai.Parent and not ai.ZIndex then pcall(function()X.ZIndex=ai.Parent.ZIndex end)end return X end +local function ah(ai:Instance,X:Instance|(()->Instance))local Y,Z=pcall(function()if not X then X=g end local Y if +typeof(X)=='function'then Y=X()else Y=X end ai.Parent=Y end)if not(Y and ai.Parent)then ai.Parent=C.LocalPlayer: +WaitForChild('PlayerGui',math.huge)end end local function ai(X:Instance,Y:boolean?)if Y then ah(X,g)return end pcall(q,X +)ah(X,r)end local X=ag('ScreenGui',{Name='Obsidian',DisplayOrder=999,ResetOnSpawn=false})ai(X)C.ScreenGui=X X. +DescendantRemoving:Connect(function(Y)C:RemoveFromRegistry(Y)end)local Y,Z,_=(ag('TextButton',{BackgroundTransparency=1, +Modal=false,Size=UDim2.fromScale(0,0),AnchorPoint=Vector2.zero,Text='',ZIndex=-999,Parent=X}))do Z=ag('Frame',{ +AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size=UDim2.fromOffset(9,1),Visible=false,ZIndex=999, +Parent=X})ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2.fromScale(0.5,0.5), +Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=Z})local aj=ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3= +'WhiteColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.fromOffset(1,9),Parent=Z})ag('Frame',{AnchorPoint=Vector2.new( +0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=aj})_= +ag('ImageLabel',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0.5),Size=UDim2. +fromOffset(20,20),ZIndex=1000,Visible=false,Parent=Z})end local aj,ak do aj=ag('Frame',{AnchorPoint=Vector2.new(1,0), +BackgroundTransparency=1,Position=UDim2.new(1,-6,0,6),Size=UDim2.new(0,300,1,-6),Parent=X})table.insert(C.Scales,ag( +'UIScale',{Parent=aj}))ak=ag('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,8), +Parent=aj})end function C.ResetCursorIcon(al)_.Visible=false _.Size=UDim2.fromOffset(20,20)end function C. +ChangeCursorIcon(al,am:string)if not am or am==''then C:ResetCursorIcon()return end local an=C:GetCustomIcon(am)assert( +an,[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])_.Visible=true _.Image=an.Url _. +ImageRectOffset=an.ImageRectOffset _.ImageRectSize=an.ImageRectSize end function C.ChangeCursorIconSize(al,am:UDim2) +assert(typeof(am)=='UDim2','UDim2 expected.')_.Size=am end function C.GetBetterColor(al,am:Color3,an:number):Color3 an= +an*(C.IsLightTheme and-4 or 2)return Color3.fromRGB(math.clamp(am.R*255+an,0,255),math.clamp(am.G*255+an,0,255),math. +clamp(am.B*255+an,0,255))end function C.GetLighterColor(al,am:Color3):Color3 local an,ao,ap=am:ToHSV()return Color3. +fromHSV(an,math.max(0,ao-0.1),math.min(1,ap+0.1))end function C.GetDarkerColor(al,am:Color3):Color3 local an,ao,ap=am: +ToHSV()return Color3.fromHSV(an,ao,ap/2)end function C.GetKeyString(al,am:Enum.KeyCode)if am.EnumType==Enum.KeyCode and +am.Value>33 and am.Value<127 then return string.char(am.Value)end return am.Name end function C.GetTextBounds(al,am: +string,an:Font,ao:number,ap:number?):(number,number)local aq=Instance.new'GetTextBoundsParams'aq.Text=am aq.RichText= +true aq.Font=an aq.Size=ao aq.Width=ap or workspace.CurrentCamera.ViewportSize.X-32 local ar=l:GetTextBoundsAsync(aq) +return ar.X,ar.Y end function C.MouseIsOverFrame(al,am:GuiObject,an:Vector2):boolean local ao,ap=am.AbsolutePosition,am. +AbsoluteSize return an.X>=ao.X and an.X<=ao.X+ap.X and an.Y>=ao.Y and an.Y<=ao.Y+ap.Y end function C.SafeCallback(al,am: +(...any)->...any,...:any)if not(am and typeof(am)=='function')then return end local an=table.pack(xpcall(am,function(an) +task.defer(error,debug.traceback(an,2))if C.NotifyOnError then C:Notify(an)end return an end,...))if not an[1]then +return nil end return table.unpack(an,2,an.n)end function C.MakeDraggable(al,am:GuiObject,an:GuiObject,ao:boolean?,ap: +boolean?)local aq,ar,as,at=false an.InputBegan:Connect(function(au:InputObject)if not L(au)or ap and C.CantDragForced +then return end ar=au.Position as=am.Position aq=true at=au.Changed:Connect(function()if au.UserInputState~=Enum. +UserInputState.End then return end aq=false if at and at.Connected then at:Disconnect()at=nil end end)end)C:GiveSignal(k +.InputChanged:Connect(function(au:InputObject)if(not ao and not C.Toggled)or(ap and C.CantDragForced)or not(X and X. +Parent)then aq=false if at and at.Connected then at:Disconnect()at=nil end return end if aq and M(au)then local av=au. +Position-ar am.Position=UDim2.new(as.X.Scale,as.X.Offset+av.X,as.Y.Scale,as.Y.Offset+av.Y)end end))end function C. +MakeResizable(al,am:GuiObject,an:GuiObject,ao:(()->())?)local ap,aq,ar,as=false an.InputBegan:Connect(function(at: +InputObject)if not L(at)then return end aq=at.Position ar=am.Size ap=true as=at.Changed:Connect(function()if at. +UserInputState~=Enum.UserInputState.End then return end ap=false if as and as.Connected then as:Disconnect()as=nil end +end)end)C:GiveSignal(k.InputChanged:Connect(function(at:InputObject)if not am.Visible or not(X and X.Parent)then ap= +false if as and as.Connected then as:Disconnect()as=nil end return end if ap and M(at)then local au=at.Position-aq am. +Size=UDim2.new(ar.X.Scale,math.clamp(ar.X.Offset+au.X,C.MinSize.X,math.huge),ar.Y.Scale,math.clamp(ar.Y.Offset+au.Y,C. +MinSize.Y,math.huge))if ao then C:SafeCallback(ao)end end end))end function C.MakeCover(al,am:GuiObject,an:string)local +ao,ap=E[an]or{0,0},F[an]or{1,0.5}local aq=ag('Frame',{AnchorPoint=Vector2.new(ao[1],ao[2]),BackgroundColor3=am. +BackgroundColor3,Position=UDim2.fromScale(ao[1],ao[2]),Size=UDim2.fromScale(ap[1],ap[2]),Parent=am})return aq end +function C.MakeLine(al,am:GuiObject,an)local ao=ag('Frame',{AnchorPoint=an.AnchorPoint or Vector2.zero,BackgroundColor3= +'OutlineColor',Position=an.Position,Size=an.Size,ZIndex=an.ZIndex or am.ZIndex,Parent=am})return ao end function C. +AddOutline(al,am:GuiObject)local an,ao=ag('UIStroke',{Color='OutlineColor',Thickness=1,ZIndex=2,Parent=am}),ag( +'UIStroke',{Color='DarkColor',Thickness=1.5,ZIndex=1,Parent=am})return an,ao end function C.AddBlank(al,am:GuiObject,an: +UDim2)return ag('Frame',{BackgroundTransparency=1,Size=an or UDim2.fromScale(0,0),Parent=am})end function C.MakeOutline( +al,am:GuiObject,an:number?,ao:number?)warn +[[Obsidian:MakeOutline is deprecated, please use Obsidian:AddOutline instead.]]local ap=ag('Frame',{BackgroundColor3= +'DarkColor',Position=UDim2.fromOffset(-2,-2),Size=UDim2.new(1,4,1,4),ZIndex=ao,Parent=am})local aq=ag('Frame',{ +BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(1,1),Size=UDim2.new(1,-2,1,-2),ZIndex=ao,Parent=ap})if an and +an>0 then ag('UICorner',{CornerRadius=UDim.new(0,an+1),Parent=ap})ag('UICorner',{CornerRadius=UDim.new(0,an),Parent=aq}) +end return ap,aq end function C.AddDraggableLabel(al,am:string)local an,ao={},ag('TextLabel',{AutomaticSize=Enum. +AutomaticSize.XY,BackgroundColor3='BackgroundColor',Size=UDim2.fromOffset(0,0),Position=UDim2.fromOffset(6,6),Text=am, +TextSize=15,ZIndex=10,Parent=X})ag('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius),Parent=ao})ag('UIPadding',{ +PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),PaddingTop=UDim.new(0,6),Parent=ao}) +table.insert(C.Scales,ag('UIScale',{Parent=ao}))C:AddOutline(ao)C:MakeDraggable(ao,ao,true)an.Label=ao function an. +SetText(ap,aq:string)ao.Text=aq end function an.SetVisible(ap,aq:boolean)ao.Visible=aq end return an end function C. +AddDraggableButton(al,am:string,an,ao:boolean?)local ap,aq={},ag('TextButton',{BackgroundColor3='BackgroundColor', +Position=UDim2.fromOffset(6,6),TextSize=16,ZIndex=10,Parent=X})ag('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius), +Parent=aq})if not ao then table.insert(C.Scales,ag('UIScale',{Parent=aq}))end C:AddOutline(aq)aq.MouseButton1Click: +Connect(function()C:SafeCallback(an,ap)end)C:MakeDraggable(aq,aq,true)ap.Button=aq function ap.SetText(ar,as:string) +local at,au=C:GetTextBounds(as,C.Scheme.Font,16)aq.Text=as aq.Size=UDim2.fromOffset(at*2,au*2)end ap:SetText(am)return +ap end function C.AddDraggableMenu(al,am:string)local an=ag('Frame',{AutomaticSize=Enum.AutomaticSize.XY, +BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(0,0),ZIndex=10,Parent=X})ag( +'UICorner',{CornerRadius=UDim.new(0,C.CornerRadius),Parent=an})table.insert(C.Scales,ag('UIScale',{Parent=an}))C: +AddOutline(an)C:MakeLine(an,{Position=UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local ao=ag('TextLabel',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Text=am,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,Parent=an} +)ag('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),Parent=ao})local ap=ag('Frame',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=an})ag('UIListLayout',{Padding +=UDim.new(0,7),Parent=ap})ag('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0, +7),PaddingTop=UDim.new(0,7),Parent=ap})C:MakeDraggable(an,ao,true)return an,ap end do local al=C:AddDraggableLabel''al: +SetVisible(false)function C.SetWatermark(am,an:string)warn +[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]al:SetText(an)end function C. +SetWatermarkVisibility(am,an:boolean)warn[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]al: +SetVisible(an)end end local al function C.AddContextMenu(am,an:GuiObject,ao:UDim2|(()->()),ap:{[number]:number}|(()->{}) +,aq:number?,ar:((Active:boolean)->())?)local as if aq then as=ag('ScrollingFrame',{AutomaticCanvasSize=aq==2 and Enum. +AutomaticSize.Y or Enum.AutomaticSize.None,AutomaticSize=aq==1 and Enum.AutomaticSize.Y or Enum.AutomaticSize.None, +BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,BottomImage= +'rbxasset://textures/ui/Scroll/scroll-middle.png',CanvasSize=UDim2.fromOffset(0,0),ScrollBarImageColor3='OutlineColor', +ScrollBarThickness=aq==2 and 2 or 0,Size=typeof(ao)=='function'and ao()or ao,TopImage= +'rbxasset://textures/ui/Scroll/scroll-middle.png',Visible=false,ZIndex=10,Parent=X})else as=ag('Frame',{BackgroundColor3 +='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=typeof(ao)=='function'and ao()or ao,Visible=false, +ZIndex=10,Parent=X})end table.insert(C.Scales,ag('UIScale',{Parent=as}))local at={Active=false,Holder=an,Menu=as,List= +nil,Signal=nil,Size=ao}if aq then at.List=ag('UIListLayout',{Parent=as})end function at.Open(au)if al==at then return +elseif al then al:Close()end al=at at.Active=true if typeof(ap)=='function'then as.Position=UDim2.fromOffset(math.floor( +an.AbsolutePosition.X+ap()[1]),math.floor(an.AbsolutePosition.Y+ap()[2]))else as.Position=UDim2.fromOffset(math.floor(an +.AbsolutePosition.X+ap[1]),math.floor(an.AbsolutePosition.Y+ap[2]))end as.Size=typeof(at.Size)=='function'and at.Size() +or at.Size if typeof(ar)=='function'then C:SafeCallback(ar,true)end as.Visible=true at.Signal=an: +GetPropertyChangedSignal'AbsolutePosition':Connect(function()if typeof(ap)=='function'then as.Position=UDim2.fromOffset( +math.floor(an.AbsolutePosition.X+ap()[1]),math.floor(an.AbsolutePosition.Y+ap()[2]))else as.Position=UDim2.fromOffset( +math.floor(an.AbsolutePosition.X+ap[1]),math.floor(an.AbsolutePosition.Y+ap[2]))end end)end function at.Close(au)if al~= +at then return end as.Visible=false if at.Signal then at.Signal:Disconnect()at.Signal=nil end at.Active=false al=nil if +typeof(ar)=='function'then C:SafeCallback(ar,false)end end function at.Toggle(au)if at.Active then at:Close()else at: +Open()end end function at.SetSize(au,av)at.Size=av as.Size=typeof(av)=='function'and av()or av end return at end C: +GiveSignal(k.InputBegan:Connect(function(am:InputObject)if C.Unloaded then return end if L(am,true)then local an=am. +Position if al and not(C:MouseIsOverFrame(al.Menu,an)or C:MouseIsOverFrame(al.Holder,an))then al:Close()end end end)) +local am=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,TextSize=14,TextWrapped=true,Visible=false,ZIndex=20,Parent=X})ag('UIPadding',{ +PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,4),PaddingRight=UDim.new(0,4),PaddingTop=UDim.new(0,2),Parent=am}) +table.insert(C.Scales,ag('UIScale',{Parent=am}))am:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if C. +Unloaded then return end local an,ao=C:GetTextBounds(am.Text,am.FontFace,am.TextSize,(workspace.CurrentCamera. +ViewportSize.X-am.AbsolutePosition.X-8)/C.DPIScale)am.Size=UDim2.fromOffset(an+8)end)local an function C.AddTooltip(ao, +ap:string,aq:string,ar:GuiObject)local as={Disabled=false,Hovering=false,Signals={}}local function at()if an==ar or(al +and C:MouseIsOverFrame(al.Menu,t))or(as.Disabled and typeof(aq)~='string')or(not as.Disabled and typeof(ap)~='string') +then return end an=ar am.Text=as.Disabled and aq or ap am.Visible=true while C.Toggled and C:MouseIsOverFrame(ar,t)and +not(al and C:MouseIsOverFrame(al.Menu,t))do am.Position=UDim2.fromOffset(t.X+(C.ShowCustomCursor and 8 or 14),t.Y+(C. +ShowCustomCursor and 8 or 12))i.RenderStepped:Wait()end am.Visible=false an=nil end local function au(av: +RBXScriptConnection|RBXScriptSignal)local aw=typeof(av)if av and(aw=='RBXScriptConnection'or aw=='RBXScriptSignal')then +table.insert(as.Signals,av)end return av end au(ar.MouseEnter:Connect(at))au(ar.MouseMoved:Connect(at))au(ar.MouseLeave: +Connect(function()if an~=ar then return end am.Visible=false an=nil end))function as.Destroy(av)for aw=#as.Signals,1,-1 +do local ax=table.remove(as.Signals,aw)if ax and ax.Connected then ax:Disconnect()end end if an==ar then if am then am. +Visible=false end an=nil end end table.insert(y,am)return as end function C.OnUnload(ao,ap)table.insert(C.UnloadSignals, +ap)end function C.Unload(ao)for ap=#C.Signals,1,-1 do local aq=table.remove(C.Signals,ap)if aq and aq.Connected then aq: +Disconnect()end end for ap,aq in C.UnloadSignals do C:SafeCallback(aq)end for ap,aq in y do C:SafeCallback(aq.Destroy,aq +)end C.Unloaded=true X:Destroy()o().Library=nil end local ao,ap,aq,ar,as=C:GetIcon'check',C:GetIcon'chevron-up',C: +GetIcon'move-diagonal-2',C:GetIcon'key',C:GetIcon'move'function C.SetIconModule(at,au:IconModule)ad=true ae=au ao=C: +GetIcon'check'ap=C:GetIcon'chevron-up'aq=C:GetIcon'move-diagonal-2'ar=C:GetIcon'key'as=C:GetIcon'move'end local at={}do +local au={}function au.AddKeyPicker(av,aw,ax)ax=C:Validate(ax,D.KeyPicker)local ay=av local az,aA=ay.TextLabel,{Text=ax. +Text,Value=ax.Default,Modifiers=ax.DefaultModifiers,DisplayValue=ax.Default,Toggled=false,Mode=ax.Mode,SyncToggleState= +ax.SyncToggleState,Callback=ax.Callback,ChangedCallback=ax.ChangedCallback,Changed=ax.Changed,Clicked=ax.Clicked,Type= +'KeyPicker'}if aA.Mode=='Press'then assert(ay.Type=='Label', +[[KeyPicker with the mode 'Press' can be only applied on Labels.]])aA.SyncToggleState=false ax.Modes={'Press'}ax.Mode= +'Press'end if aA.SyncToggleState then ax.Modes={'Toggle','Hold'}if not table.find(ax.Modes,ax.Mode)then ax.Mode='Toggle' +end end local aB,aC,aD,aE,aF=false,{MB1=Enum.UserInputType.MouseButton1,MB2=Enum.UserInputType.MouseButton2,MB3=Enum. +UserInputType.MouseButton3},{[Enum.UserInputType.MouseButton1]='MB1',[Enum.UserInputType.MouseButton2]='MB2',[Enum. +UserInputType.MouseButton3]='MB3'},{LAlt=Enum.KeyCode.LeftAlt,RAlt=Enum.KeyCode.RightAlt,LCtrl=Enum.KeyCode.LeftControl, +RCtrl=Enum.KeyCode.RightControl,LShift=Enum.KeyCode.LeftShift,RShift=Enum.KeyCode.RightShift,Tab=Enum.KeyCode.Tab, +CapsLock=Enum.KeyCode.CapsLock},{[Enum.KeyCode.LeftAlt]='LAlt',[Enum.KeyCode.RightAlt]='RAlt',[Enum.KeyCode.LeftControl] +='LCtrl',[Enum.KeyCode.RightControl]='RCtrl',[Enum.KeyCode.LeftShift]='LShift',[Enum.KeyCode.RightShift]='RShift',[Enum. +KeyCode.Tab]='Tab',[Enum.KeyCode.CapsLock]='CapsLock'}local aG,aH=function(aG)return aG.UserInputType==Enum. +UserInputType.Keyboard and aF[aG.KeyCode]~=nil end,function()local aG={}for aH,aI in aE do if table.find(aG,aH)then +continue end if not k:IsKeyDown(aI)then continue end table.insert(aG,aH)end return aG end local aI,aJ,aK,aL=function(aI) +if not(typeof(aI)=='table'and O(aI)>0)then return true end local aJ,aK=aH(),true for aL,aM in aI do if table.find(aJ,aM) +then continue end aK=false break end return aK end,function(aI)if not aI then return false end if aD[aI.UserInputType]~= +nil then return k:IsMouseButtonPressed(aI.UserInputType)and not k:GetFocusedTextBox()elseif aI.UserInputType==Enum. +UserInputType.Keyboard then return k:IsKeyDown(aI.KeyCode)and not k:GetFocusedTextBox()else return false end end, +function(aI)local aJ={}for aK,aL in aI do table.insert(aJ,aE[aL])end return aJ end,function(aI)if typeof(aI)~='table' +then return{}end local aJ={}for aK,aL in aI do if not aE[aL]then continue end table.insert(aJ,aL)end return aJ end aA. +Modifiers=aL(aA.Modifiers)local aM,aN=ag('TextButton',{BackgroundColor3='MainColor',BorderColor3='OutlineColor', +BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text=aA.Value,TextSize=14,Parent=az}),{Normal=aA.Mode~='Toggle'}do local +aO=ag('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,16),Text='',Visible=not ax.NoUI,Parent=C. +KeybindContainer})local aP,aQ=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2. +fromScale(0,1),Text='',TextSize=14,TextTransparency=0.5,Parent=aO}),ag('Frame',{AnchorPoint=Vector2.new(0,0.5), +BackgroundColor3='MainColor',Position=UDim2.fromScale(0,0.5),Size=UDim2.fromOffset(14,14),SizeConstraint=Enum. +SizeConstraint.RelativeYY,Parent=aO})ag('UICorner',{CornerRadius=UDim.new(0,C.CornerRadius/2),Parent=aQ})ag('UIStroke',{ +Color='OutlineColor',Parent=aQ})local aR=ag('ImageLabel',{Image=ao and ao.Url or'',ImageColor3='FontColor', +ImageRectOffset=ao and ao.ImageRectOffset or Vector2.zero,ImageRectSize=ao and ao.ImageRectSize or Vector2.zero, +ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=aQ})function aN.Display(aS,aT)aP. +TextTransparency=aT and 0 or 0.5 aR.ImageTransparency=aT and 0 or 1 end function aN.SetText(aS,aT)aP.Text=aT end +function aN.SetVisibility(aS,aT)aO.Visible=aT end function aN.SetNormal(aS,aT)aN.Normal=aT aO.Active=not aT aP.Position= +aT and UDim2.fromOffset(0,0)or UDim2.fromOffset(22,0)aQ.Visible=not aT end aA.DoClick=function(...)end aO. +MouseButton1Click:Connect(function()if aN.Normal then return end aA.Toggled=not aA.Toggled aA:DoClick()end)aN.Holder=aO +aN.Label=aP aN.Checkbox=aQ aN.Loaded=true table.insert(C.KeybindToggles,aN)end local aO=C:AddContextMenu(aM,UDim2. +fromOffset(62,0),function()return{aM.AbsoluteSize.X+1.5,0.5}end,1)aA.Menu=aO local aP={}for aQ,aR in ax.Modes do local +aS,aT={},ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=aR, +TextSize=14,TextTransparency=0.5,Parent=aO.Menu})function aS.Select(aU)for aV,aW in aP do aW:Deselect()end aA.Mode=aR aT +.BackgroundTransparency=0 aT.TextTransparency=0 aO:Close()end function aS.Deselect(aU)aA.Mode=nil aT. +BackgroundTransparency=1 aT.TextTransparency=0.5 end aT.MouseButton1Click:Connect(function()aS:Select()end)if aA.Mode== +aR then aS:Select()end aP[aR]=aS end function aA.Display(aQ,aR)if C.Unloaded then return end local aS,aT=C: +GetTextBounds(aR or aA.DisplayValue,aM.FontFace,aM.TextSize,az.AbsoluteSize.X)aM.Text=aR or aA.DisplayValue aM.Size= +UDim2.fromOffset((aS+9),(aT+4))end function aA.Update(aQ)aA:Display()if ax.NoUI then return end if aA.Mode=='Toggle'and +ay.Type=='Toggle'and ay.Disabled then aN:SetVisibility(false)return end local aR,aS=aA:GetState(),C. +ShowToggleFrameInKeybinds and aA.Mode=='Toggle'if aA.SyncToggleState and ay.Value~=aR then ay:SetValue(aR)end if aN. +Loaded then if aS then aN:SetNormal(false)else aN:SetNormal(true)end aN:SetText(('[%s] %s (%s)'):format(aA.DisplayValue, +aA.Text,aA.Mode))aN:SetVisibility(true)aN:Display(aR)end end function aA.GetState(aQ)if aA.Mode=='Always'then return +true elseif aA.Mode=='Hold'then local aR=aA.Value if aR=='None'then return false end if not aI(aA.Modifiers)then return +false end if aC[aR]~=nil then return k:IsMouseButtonPressed(aC[aR])and not k:GetFocusedTextBox()else return k:IsKeyDown( +Enum.KeyCode[aR])and not k:GetFocusedTextBox()end else return aA.Toggled end end function aA.OnChanged(aQ,aR)aA.Changed= +aR end function aA.OnClick(aQ,aR)aA.Clicked=aR end function aA.DoClick(aQ)if aA.Mode=='Press'then if aA.Toggled and ax. +WaitForCallback==true then return end aA.Toggled=true end C:SafeCallback(aA.Callback,aA.Toggled)C:SafeCallback(aA. +Clicked,aA.Toggled)if aA.Mode=='Press'then aA.Toggled=false end end function aA.SetValue(aQ,aR)local aS,aT,aU=aR[1],aR[2 +],aR[3]local aV,aW=pcall(function()if aS=='None'then aS=nil return nil end if aC[aS]==nil then return Enum.KeyCode[aS] +end return aC[aS]end)if aS==nil then aA.Value='None'elseif aV then aA.Value=aS else aA.Value='Unknown'end aA.Modifiers= +aL(if typeof(aU)=='table'then aU else aA.Modifiers)aA.DisplayValue=if O(aA.Modifiers)>0 then(table.concat(aA.Modifiers, +' + ')..' + '..aA.Value)else aA.Value if aP[aT]then aP[aT]:Select()end local aX=aK(aA.Modifiers)C:SafeCallback(aA. +ChangedCallback,aW,aX)C:SafeCallback(aA.Changed,aW,aX)aA:Update()end function aA.SetText(aQ,aR)aN:SetText(aR)aA:Update() +end aM.MouseButton1Click:Connect(function()if aB then return end aB=true aM.Text='...'aM.Size=UDim2.fromOffset(29,18) +local aQ,aR={}local aS=function()aR=k.InputBegan:Wait()return k:GetFocusedTextBox()~=nil end repeat task.wait()aM.Text= +'...'aM.Size=UDim2.fromOffset(29,18)if aS()then aB=false aA:Update()return end if aR.KeyCode==Enum.KeyCode.Escape then +break end if aG(aR)then local aT=false repeat task.wait()if k:IsKeyDown(aR.KeyCode)then task.wait(0.075)if k:IsKeyDown( +aR.KeyCode)then if not table.find(aQ,aF[aR.KeyCode])then aQ[#aQ+1]=aF[aR.KeyCode]aA:Display(table.concat(aQ,' + ').. +' + ...')end if aS()then aT=true break end if aR.KeyCode==Enum.KeyCode.Escape then break end if not aG(aR)then break end +else if not table.find(aQ,aF[aR.KeyCode])then break end end end until false if aT then aB=false aA:Update()return end +end break until false local aT='Unknown'if aD[aR.UserInputType]~=nil then aT=aD[aR.UserInputType]elseif aR.UserInputType +==Enum.UserInputType.Keyboard then aT=aR.KeyCode==Enum.KeyCode.Escape and'None'or aR.KeyCode.Name end aQ=if aR.KeyCode== +Enum.KeyCode.Escape or aT=='Unknown'then{}else aQ aA.Toggled=false aA:SetValue{aT,aA.Mode,aQ}repeat task.wait()until not +aJ(aR)or k:GetFocusedTextBox()aB=false end)aM.MouseButton2Click:Connect(aO.Toggle)C:GiveSignal(k.InputBegan:Connect( +function(aQ:InputObject)if C.Unloaded then return end if aA.Mode=='Always'or aA.Value=='Unknown'or aA.Value=='None'or aB +or k:GetFocusedTextBox()then return end local aR,aS,aT=aA.Value,aI(aA.Modifiers),false if aR and aS==true and(aD[aQ. +UserInputType]==aR or(aQ.UserInputType==Enum.UserInputType.Keyboard and aQ.KeyCode.Name==aR))then aT=true end if aA.Mode +=='Toggle'then if aT then aA.Toggled=not aA.Toggled aA:DoClick()end elseif aA.Mode=='Press'then if aT then aA:DoClick() +end end aA:Update()end))C:GiveSignal(k.InputEnded:Connect(function()if C.Unloaded then return end if aA.Value=='Unknown' +or aA.Value=='None'or aB or k:GetFocusedTextBox()then return end aA:Update()end))aA:Update()if ay.Addons then table. +insert(ay.Addons,aA)end aA.Default=aA.Value aA.DefaultModifiers=table.clone(aA.Modifiers or{})x[aw]=aA return av end +local av={}for aw=0,1,0.1 do table.insert(av,ColorSequenceKeypoint.new(aw,Color3.fromHSV(aw,1,1)))end function au. +AddColorPicker(aw,ax,ay)ay=C:Validate(ay,D.ColorPicker)local az=aw local aA,aB=az.TextLabel,{Value=ay.Default, +Transparency=ay.Transparency or 0,Title=ay.Title,Callback=ay.Callback,Changed=ay.Changed,Type='ColorPicker'}aB.Hue,aB. +Sat,aB.Vib=aB.Value:ToHSV()local aC=ag('TextButton',{BackgroundColor3=aB.Value,BorderColor3=C:GetDarkerColor(aB.Value), +BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text='',Parent=aA})local aD,aE=ag('ImageLabel',{Image=A.GetAsset +'TransparencyTexture',ImageTransparency=(1-aB.Transparency),ScaleType=Enum.ScaleType.Tile,Size=UDim2.fromScale(1,1), +TileSize=UDim2.fromOffset(9,9),Parent=aC}),C:AddContextMenu(aC,UDim2.fromOffset(ay.Transparency and 256 or 234,0), +function()return{0.5,aC.AbsoluteSize.Y+1.5}end,1)aE.List.Padding=UDim.new(0,8)aB.ColorMenu=aE ag('UIPadding',{ +PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,6),Parent=aE.Menu +})if typeof(aB.Title)=='string'then ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,8),Text=aB.Title, +TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=aE.Menu})end local aF=ag('Frame',{BackgroundTransparency=1, +Size=UDim2.new(1,0,0,200),Parent=aE.Menu})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim. +new(0,6),Parent=aF})local aG=ag('ImageButton',{BackgroundColor3=aB.Value,Image=A.GetAsset'SaturationMap',Size=UDim2. +fromOffset(200,200),Parent=aF})local aH=ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size= +UDim2.fromOffset(6,6),Parent=aG})ag('UICorner',{CornerRadius=UDim.new(1,0),Parent=aH})ag('UIStroke',{Color='DarkColor', +Parent=aH})local aI=ag('TextButton',{Size=UDim2.fromOffset(16,200),Text='',Parent=aF})ag('UIGradient',{Color= +ColorSequence.new(av),Rotation=90,Parent=aI})local aJ,aK,aL,aM=(ag('Frame',{AnchorPoint=Vector2.new(0.5,0.5), +BackgroundColor3='WhiteColor',BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,aB.Hue),Size=UDim2 +.new(1,2,0,1),Parent=aI}))if ay.Transparency then aK=ag('ImageButton',{Image=A.GetAsset'TransparencyTexture',ScaleType= +Enum.ScaleType.Tile,Size=UDim2.fromOffset(16,200),TileSize=UDim2.fromOffset(8,8),Parent=aF})aL=ag('Frame',{ +BackgroundColor3=aB.Value,Size=UDim2.fromScale(1,1),Parent=aK})ag('UIGradient',{Rotation=90,Transparency=NumberSequence. +new{NumberSequenceKeypoint.new(0,0),NumberSequenceKeypoint.new(1,1)},Parent=aL})aM=ag('Frame',{AnchorPoint=Vector2.new( +0.5,0.5),BackgroundColor3='WhiteColor',BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,aB. +Transparency),Size=UDim2.new(1,2,0,1),Parent=aK})end local aN=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0, +20),Parent=aE.Menu})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment. +Fill,Padding=UDim.new(0,8),Parent=aN})local aO,aP,aQ=ag('TextBox',{BackgroundColor3='MainColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size=UDim2.fromScale(1,1),Text='#??????',TextSize=14,Parent=aN}) +,ag('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size= +UDim2.fromScale(1,1),Text='?, ?, ?',TextSize=14,Parent=aN}),C:AddContextMenu(aC,UDim2.fromOffset(93,0),function()return{ +aC.AbsoluteSize.X+1.5,0.5}end,1)aB.ContextMenu=aQ do local function aR(aS,aT)local aU=ag('TextButton',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=aS,TextSize=14,Parent=aQ.Menu})aU.MouseButton1Click:Connect( +function()C:SafeCallback(aT)aQ:Close()end)end aR('Copy color',function()C.CopiedColor={aB.Value,aB.Transparency}end)aB. +SetValueRGB=function(...)end aR('Paste color',function()aB:SetValueRGB(C.CopiedColor[1],C.CopiedColor[2])end)if p then +aR('Copy Hex',function()p(tostring(aB.Value:ToHex()))end)aR('Copy RGB',function()p(table.concat({math.floor(aB.Value.R* +255),math.floor(aB.Value.G*255),math.floor(aB.Value.B*255)},', '))end)end end function aB.SetHSVFromRGB(aR,aS)aB.Hue,aB. +Sat,aB.Vib=aS:ToHSV()end function aB.Display(aR)if C.Unloaded then return end aB.Value=Color3.fromHSV(aB.Hue,aB.Sat,aB. +Vib)aC.BackgroundColor3=aB.Value aC.BorderColor3=C:GetDarkerColor(aB.Value)aD.ImageTransparency=(1-aB.Transparency)aG. +BackgroundColor3=Color3.fromHSV(aB.Hue,1,1)if aL then aL.BackgroundColor3=aB.Value end aH.Position=UDim2.fromScale(aB. +Sat,1-aB.Vib)aJ.Position=UDim2.fromScale(0.5,aB.Hue)if aM then aM.Position=UDim2.fromScale(0.5,aB.Transparency)end aO. +Text='#'..aB.Value:ToHex()aP.Text=table.concat({math.floor(aB.Value.R*255),math.floor(aB.Value.G*255),math.floor(aB. +Value.B*255)},', ')end function aB.Update(aR)aB:Display()C:SafeCallback(aB.Callback,aB.Value)C:SafeCallback(aB.Changed, +aB.Value)end function aB.OnChanged(aR,aS)aB.Changed=aS end function aB.SetValue(aR,aS,aT)if typeof(aS)=='Color3'then aB: +SetValueRGB(aS,aT)return end local aU=Color3.fromHSV(aS[1],aS[2],aS[3])aB.Transparency=ay.Transparency and aT or 0 aB: +SetHSVFromRGB(aU)aB:Update()end function aB.SetValueRGB(aR,aS,aT)aB.Transparency=ay.Transparency and aT or 0 aB: +SetHSVFromRGB(aS)aB:Update()end aC.MouseButton1Click:Connect(aE.Toggle)aC.MouseButton2Click:Connect(aQ.Toggle)aG. +InputBegan:Connect(function(aR:InputObject)while N(aR)do local aS=aG.AbsolutePosition.X local aT=aS+aG.AbsoluteSize.X +local aU,aV=math.clamp(t.X,aS,aT),aG.AbsolutePosition.Y local aW=aV+aG.AbsoluteSize.Y local aX,aY,aZ=math.clamp(t.Y,aV, +aW),aB.Sat,aB.Vib aB.Sat=(aU-aS)/(aT-aS)aB.Vib=1-((aX-aV)/(aW-aV))if aB.Sat~=aY or aB.Vib~=aZ then aB:Update()end i. +RenderStepped:Wait()end end)aI.InputBegan:Connect(function(aR:InputObject)while N(aR)do local aS=aI.AbsolutePosition.Y +local aT=aS+aI.AbsoluteSize.Y local aU,aV=math.clamp(t.Y,aS,aT),aB.Hue aB.Hue=(aU-aS)/(aT-aS)if aB.Hue~=aV then aB: +Update()end i.RenderStepped:Wait()end end)if aK then aK.InputBegan:Connect(function(aR:InputObject)while N(aR)do local +aS,aT=aK.AbsolutePosition.Y,aK.AbsolutePosition.Y+aK.AbsoluteSize.Y local aU,aV=math.clamp(t.Y,aS,aT),aB.Transparency aB +.Transparency=(aU-aS)/(aT-aS)if aB.Transparency~=aV then aB:Update()end i.RenderStepped:Wait()end end)end aO.FocusLost: +Connect(function(aR)if not aR then return end local aS,aT=pcall(Color3.fromHex,aO.Text)if aS and typeof(aT)=='Color3' +then aB.Hue,aB.Sat,aB.Vib=aT:ToHSV()end aB:Update()end)aP.FocusLost:Connect(function(aR)if not aR then return end local +aS,aT,aU=aP.Text:match'(%d+),%s*(%d+),%s*(%d+)'if aS and aT and aU then aB:SetHSVFromRGB(Color3.fromRGB(aS,aT,aU))end aB +:Update()end)aB:Display()if az.Addons then table.insert(az.Addons,aB)end aB.Default=aB.Value x[ax]=aB return aw end at. +__index=au at.__namecall=function(aw,ax,...)return au[ax](...)end end local au={}do local av={}function av.AddDivider(aw +,ax)local ay=aw local az=ay.Container local aA=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,6),Parent=az}) +if ax then local aB=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(1,0 +),Text=ax,TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Center,Parent=aA})local aC,aD=C: +GetTextBounds(ax,aB.FontFace,aB.TextSize,aB.AbsoluteSize.X)local aE=aC//2+10 ag('Frame',{AnchorPoint=Vector2.new(0,0.5), +BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0,0.5),Size=UDim2. +new(0.5,-aE,0,2),Parent=aA})ag('Frame',{AnchorPoint=Vector2.new(1,0.5),BackgroundColor3='MainColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(1,0.5),Size=UDim2.new(0.5,-aE,0,2),Parent=aA})else ag('Frame', +{AnchorPoint=Vector2.new(0,0.5),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position= +UDim2.fromScale(0,0.5),Size=UDim2.new(1,0,0,2),Parent=aA})end ay:Resize()table.insert(ay.Elements,{Holder=aA,Type= +'Divider'})end function av.AddLabel(aw,...)local ax,ay,az,aA={},{},select(1,...),select(2,...)if typeof(az)=='table'or +typeof(aA)=='table'then local aB=typeof(az)=='table'and az or aA ax.Text=aB.Text or''ax.DoesWrap=aB.DoesWrap or false ax +.Size=aB.Size or 14 ax.Visible=aB.Visible or true ax.Idx=typeof(aA)=='table'and az or nil else ax.Text=az or''ax. +DoesWrap=aA or false ax.Size=14 ax.Visible=true ax.Idx=select(3,...)or nil end local aB=aw local aC,aD=aB.Container,{ +Text=ax.Text,DoesWrap=ax.DoesWrap,Addons=ay,Visible=ax.Visible,Type='Label'}local aE=ag('TextLabel',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text=aD.Text,TextSize=ax.Size,TextWrapped=aD.DoesWrap,TextXAlignment= +aB.IsKeyTab and Enum.TextXAlignment.Center or Enum.TextXAlignment.Left,Parent=aC})function aD.SetVisible(aF,aG:boolean) +aD.Visible=aG aE.Visible=aD.Visible aB:Resize()end function aD.SetText(aF,aG:string)aD.Text=aG aE.Text=aG if aD.DoesWrap +then local aH,aI=C:GetTextBounds(aD.Text,aE.FontFace,aE.TextSize,aE.AbsoluteSize.X)aE.Size=UDim2.new(1,0,0,aI+4)end aB: +Resize()end if aD.DoesWrap then local aF,aG=C:GetTextBounds(aD.Text,aE.FontFace,aE.TextSize,aE.AbsoluteSize.X)aE.Size= +UDim2.new(1,0,0,aG+4)local aH=aE.AbsoluteSize aE:GetPropertyChangedSignal'AbsoluteSize':Connect(function()if aE. +AbsoluteSize==aH then return end local aI,aJ=C:GetTextBounds(aD.Text,aE.FontFace,aE.TextSize,aE.AbsoluteSize.X)aE.Size= +UDim2.new(1,0,0,aJ+4)aH=aE.AbsoluteSize aB:Resize()end)else ag('UIListLayout',{FillDirection=Enum.FillDirection. +Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=aE})end aB:Resize()aD. +TextLabel=aE aD.Container=aC if not ax.DoesWrap then setmetatable(aD,at)end aD.Holder=aE table.insert(aB.Elements,aD)if +ax.Idx then u[ax.Idx]=aD else table.insert(u,aD)end return aD end function av.AddButton(aw,...)local function ax(...) +local ay,az,aA={},select(1,...),select(2,...)if typeof(az)=='table'or typeof(aA)=='table'then local aB=typeof(az)== +'table'and az or aA ay.Text=aB.Text or''ay.Func=aB.Func or aB.Callback or function()end ay.DoubleClick=aB.DoubleClick ay +.Tooltip=aB.Tooltip ay.DisabledTooltip=aB.DisabledTooltip ay.Risky=aB.Risky or false ay.Disabled=aB.Disabled or false ay +.Visible=aB.Visible or true ay.Idx=typeof(aA)=='table'and az or nil else ay.Text=az or''ay.Func=aA or function()end ay. +DoubleClick=false ay.Tooltip=nil ay.DisabledTooltip=nil ay.Risky=false ay.Disabled=false ay.Visible=true ay.Idx=select(3 +,...)or nil end return ay end local ay,az=ax(...),aw local aA,aB=az.Container,{Text=ay.Text,Func=ay.Func,DoubleClick=ay. +DoubleClick,Tooltip=ay.Tooltip,DisabledTooltip=ay.DisabledTooltip,TooltipTable=nil,Risky=ay.Risky,Disabled=ay.Disabled, +Visible=ay.Visible,Tween=nil,Type='Button'}local aC=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Parent +=aA})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Padding= +UDim.new(0,9),Parent=aC})local function aD(aE)local aF=ag('TextButton',{Active=not aE.Disabled,BackgroundColor3=aE. +Disabled and'BackgroundColor'or'MainColor',Size=UDim2.fromScale(1,1),Text=aE.Text,TextSize=14,TextTransparency=0.4, +Visible=aE.Visible,Parent=aC})local aG=ag('UIStroke',{Color='OutlineColor',Transparency=aE.Disabled and 0.5 or 0,Parent= +aF})return aF,aG end local function aE(aF)aF.Base.MouseEnter:Connect(function()if aF.Disabled then return end aF.Tween=n +:Create(aF.Base,C.TweenInfo,{TextTransparency=0})aF.Tween:Play()end)aF.Base.MouseLeave:Connect(function()if aF.Disabled +then return end aF.Tween=n:Create(aF.Base,C.TweenInfo,{TextTransparency=0.4})aF.Tween:Play()end)aF.Base. +MouseButton1Click:Connect(function()if aF.Disabled or aF.Locked then return end if aF.DoubleClick then aF.Locked=true aF +.Base.Text='Are you sure?'aF.Base.TextColor3=C.Scheme.AccentColor C.Registry[aF.Base].TextColor3='AccentColor'local aG= +J(aF.Base.MouseButton1Click,0.5)aF.Base.Text=aF.Text aF.Base.TextColor3=aF.Risky and C.Scheme.RedColor or C.Scheme. +FontColor C.Registry[aF.Base].TextColor3=aF.Risky and'RedColor'or'FontColor'if aG then C:SafeCallback(aF.Func)end i. +RenderStepped:Wait()aF.Locked=false return end C:SafeCallback(aF.Func)end)end aB.Base,aB.Stroke=aD(aB)aE(aB)function aB. +AddButton(aF,...)local aG=ax(...)local aH={Text=aG.Text,Func=aG.Func,DoubleClick=aG.DoubleClick,Tooltip=aG.Tooltip, +DisabledTooltip=aG.DisabledTooltip,TooltipTable=nil,Risky=aG.Risky,Disabled=aG.Disabled,Visible=aG.Visible,Tween=nil, +Type='SubButton'}aB.SubButton=aH aH.Base,aH.Stroke=aD(aH)aE(aH)function aH.UpdateColors(aI)if C.Unloaded then return end +P(aH.Tween)aH.Base.BackgroundColor3=aH.Disabled and C.Scheme.BackgroundColor or C.Scheme.MainColor aH.Base. +TextTransparency=aH.Disabled and 0.8 or 0.4 aH.Stroke.Transparency=aH.Disabled and 0.5 or 0 C.Registry[aH.Base]. +BackgroundColor3=aH.Disabled and'BackgroundColor'or'MainColor'end function aH.SetDisabled(aI,aJ:boolean)aH.Disabled=aJ +if aH.TooltipTable then aH.TooltipTable.Disabled=aH.Disabled end aH.Base.Active=not aH.Disabled aH:UpdateColors()end +function aH.SetVisible(aI,aJ:boolean)aH.Visible=aJ aH.Base.Visible=aH.Visible az:Resize()end function aH.SetText(aI,aJ: +string)aH.Text=aJ aH.Base.Text=aJ end if typeof(aH.Tooltip)=='string'or typeof(aH.DisabledTooltip)=='string'then aH. +TooltipTable=C:AddTooltip(aH.Tooltip,aH.DisabledTooltip,aH.Base)aH.TooltipTable.Disabled=aH.Disabled end if aH.Risky +then aH.Base.TextColor3=C.Scheme.RedColor C.Registry[aH.Base].TextColor3='RedColor'end aH:UpdateColors()if aG.Idx then v +[aG.Idx]=aH else table.insert(v,aH)end return aH end function aB.UpdateColors(aF)if C.Unloaded then return end P(aB. +Tween)aB.Base.BackgroundColor3=aB.Disabled and C.Scheme.BackgroundColor or C.Scheme.MainColor aB.Base.TextTransparency= +aB.Disabled and 0.8 or 0.4 aB.Stroke.Transparency=aB.Disabled and 0.5 or 0 C.Registry[aB.Base].BackgroundColor3=aB. +Disabled and'BackgroundColor'or'MainColor'end function aB.SetDisabled(aF,aG:boolean)aB.Disabled=aG if aB.TooltipTable +then aB.TooltipTable.Disabled=aB.Disabled end aB.Base.Active=not aB.Disabled aB:UpdateColors()end function aB.SetVisible +(aF,aG:boolean)aB.Visible=aG aC.Visible=aB.Visible az:Resize()end function aB.SetText(aF,aG:string)aB.Text=aG aB.Base. +Text=aG end if typeof(aB.Tooltip)=='string'or typeof(aB.DisabledTooltip)=='string'then aB.TooltipTable=C:AddTooltip(aB. +Tooltip,aB.DisabledTooltip,aB.Base)aB.TooltipTable.Disabled=aB.Disabled end if aB.Risky then aB.Base.TextColor3=C.Scheme +.RedColor C.Registry[aB.Base].TextColor3='RedColor'end aB:UpdateColors()az:Resize()aB.Holder=aC table.insert(az.Elements +,aB)if ay.Idx then v[ay.Idx]=aB else table.insert(v,aB)end return aB end function av.AddCheckbox(aw,ax,ay)ay=C:Validate( +ay,D.Toggle)local az=aw local aA,aB=az.Container,{Text=ay.Text,Value=ay.Default,Tooltip=ay.Tooltip,DisabledTooltip=ay. +DisabledTooltip,TooltipTable=nil,Callback=ay.Callback,Changed=ay.Changed,Risky=ay.Risky,Disabled=ay.Disabled,Visible=ay. +Visible,Addons={},Type='Toggle'}local aC=ag('TextButton',{Active=not aB.Disabled,BackgroundTransparency=1,Size=UDim2. +new(1,0,0,18),Text='',Visible=aB.Visible,Parent=aA})local aD=ag('TextLabel',{BackgroundTransparency=1,Position=UDim2. +fromOffset(26,0),Size=UDim2.new(1,-26,1,0),Text=aB.Text,TextSize=14,TextTransparency=0.4,TextXAlignment=Enum. +TextXAlignment.Left,Parent=aC})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum. +HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=aD})local aE=ag('Frame',{BackgroundColor3='MainColor',Size=UDim2. +fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=aC})ag('UICorner',{CornerRadius=UDim.new(0,C. +CornerRadius/2),Parent=aE})local aF,aG=ag('UIStroke',{Color='OutlineColor',Parent=aE}),ag('ImageLabel',{Image=ao and ao. +Url or'',ImageColor3='FontColor',ImageRectOffset=ao and ao.ImageRectOffset or Vector2.zero,ImageRectSize=ao and ao. +ImageRectSize or Vector2.zero,ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=aE}) +function aB.UpdateColors(aH)aB:Display()end function aB.Display(aH)if C.Unloaded then return end aF.Transparency=aB. +Disabled and 0.5 or 0 if aB.Disabled then aD.TextTransparency=0.8 aG.ImageTransparency=aB.Value and 0.8 or 1 aE. +BackgroundColor3=C.Scheme.BackgroundColor C.Registry[aE].BackgroundColor3='BackgroundColor'return end n:Create(aD,C. +TweenInfo,{TextTransparency=aB.Value and 0 or 0.4}):Play()n:Create(aG,C.TweenInfo,{ImageTransparency=aB.Value and 0 or 1 +}):Play()aE.BackgroundColor3=C.Scheme.MainColor C.Registry[aE].BackgroundColor3='MainColor'end function aB.OnChanged(aH, +aI)aB.Changed=aI end function aB.SetValue(aH,aI)if aB.Disabled then return end aB.Value=aI aB:Display()for aJ,aK in aB. +Addons do if aK.Type=='KeyPicker'and aK.SyncToggleState then aK.Toggled=aB.Value aK:Update()end end C: +UpdateDependencyBoxes()C:SafeCallback(aB.Callback,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end function aB. +SetDisabled(aH,aI:boolean)aB.Disabled=aI if aB.TooltipTable then aB.TooltipTable.Disabled=aB.Disabled end for aJ,aK in +aB.Addons do if aK.Type=='KeyPicker'and aK.SyncToggleState then aK:Update()end end aC.Active=not aB.Disabled aB:Display( +)end function aB.SetVisible(aH,aI:boolean)aB.Visible=aI aC.Visible=aB.Visible az:Resize()end function aB.SetText(aH,aI: +string)aB.Text=aI aD.Text=aI end aC.MouseButton1Click:Connect(function()if aB.Disabled then return end aB:SetValue(not +aB.Value)end)if typeof(aB.Tooltip)=='string'or typeof(aB.DisabledTooltip)=='string'then aB.TooltipTable=C:AddTooltip(aB. +Tooltip,aB.DisabledTooltip,aC)aB.TooltipTable.Disabled=aB.Disabled end if aB.Risky then aD.TextColor3=C.Scheme.RedColor +C.Registry[aD].TextColor3='RedColor'end aB:Display()az:Resize()aB.TextLabel=aD aB.Container=aA setmetatable(aB,at)aB. +Holder=aC table.insert(az.Elements,aB)aB.Default=aB.Value w[ax]=aB return aB end function av.AddToggle(aw,ax,ay)if C. +ForceCheckbox then return av.AddCheckbox(aw,ax,ay)end ay=C:Validate(ay,D.Toggle)local az=aw local aA,aB=az.Container,{ +Text=ay.Text,Value=ay.Default,Tooltip=ay.Tooltip,DisabledTooltip=ay.DisabledTooltip,TooltipTable=nil,Callback=ay. +Callback,Changed=ay.Changed,Risky=ay.Risky,Disabled=ay.Disabled,Visible=ay.Visible,Addons={},Type='Toggle'}local aC=ag( +'TextButton',{Active=not aB.Disabled,BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text='',Visible=aB.Visible,Parent +=aA})local aD=ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,-40,1,0),Text=aB.Text,TextSize=14, +TextTransparency=0.4,TextXAlignment=Enum.TextXAlignment.Left,Parent=aC})ag('UIListLayout',{FillDirection=Enum. +FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=aD})local aE= +ag('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3='MainColor',Position=UDim2.fromScale(1,0),Size=UDim2. +fromOffset(32,18),Parent=aC})ag('UICorner',{CornerRadius=UDim.new(1,0),Parent=aE})ag('UIPadding',{PaddingBottom=UDim. +new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2),PaddingTop=UDim.new(0,2),Parent=aE})local aF,aG=ag( +'UIStroke',{Color='OutlineColor',Parent=aE}),ag('Frame',{BackgroundColor3='FontColor',Size=UDim2.fromScale(1,1), +SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=aE})ag('UICorner',{CornerRadius=UDim.new(1,0),Parent=aG})function +aB.UpdateColors(aH)aB:Display()end function aB.Display(aH)if C.Unloaded then return end local aI=aB.Value and 1 or 0 aE. +BackgroundTransparency=aB.Disabled and 0.75 or 0 aF.Transparency=aB.Disabled and 0.75 or 0 aE.BackgroundColor3=aB.Value +and C.Scheme.AccentColor or C.Scheme.MainColor aF.Color=aB.Value and C.Scheme.AccentColor or C.Scheme.OutlineColor C. +Registry[aE].BackgroundColor3=aB.Value and'AccentColor'or'MainColor'C.Registry[aF].Color=aB.Value and'AccentColor'or +'OutlineColor'if aB.Disabled then aD.TextTransparency=0.8 aG.AnchorPoint=Vector2.new(aI,0)aG.Position=UDim2.fromScale(aI +,0)aG.BackgroundColor3=C:GetDarkerColor(C.Scheme.FontColor)C.Registry[aG].BackgroundColor3=function()return C: +GetDarkerColor(C.Scheme.FontColor)end return end n:Create(aD,C.TweenInfo,{TextTransparency=aB.Value and 0 or 0.4}):Play( +)n:Create(aG,C.TweenInfo,{AnchorPoint=Vector2.new(aI,0),Position=UDim2.fromScale(aI,0)}):Play()aG.BackgroundColor3=C. +Scheme.FontColor C.Registry[aG].BackgroundColor3='FontColor'end function aB.OnChanged(aH,aI)aB.Changed=aI end function +aB.SetValue(aH,aI)if aB.Disabled then return end aB.Value=aI aB:Display()for aJ,aK in aB.Addons do if aK.Type== +'KeyPicker'and aK.SyncToggleState then aK.Toggled=aB.Value aK:Update()end end C:UpdateDependencyBoxes()C:SafeCallback(aB +.Callback,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end function aB.SetDisabled(aH,aI:boolean)aB.Disabled=aI if aB. +TooltipTable then aB.TooltipTable.Disabled=aB.Disabled end for aJ,aK in aB.Addons do if aK.Type=='KeyPicker'and aK. +SyncToggleState then aK:Update()end end aC.Active=not aB.Disabled aB:Display()end function aB.SetVisible(aH,aI:boolean) +aB.Visible=aI aC.Visible=aB.Visible az:Resize()end function aB.SetText(aH,aI:string)aB.Text=aI aD.Text=aI end aC. +MouseButton1Click:Connect(function()if aB.Disabled then return end aB:SetValue(not aB.Value)end)if typeof(aB.Tooltip)== +'string'or typeof(aB.DisabledTooltip)=='string'then aB.TooltipTable=C:AddTooltip(aB.Tooltip,aB.DisabledTooltip,aC)aB. +TooltipTable.Disabled=aB.Disabled end if aB.Risky then aD.TextColor3=C.Scheme.RedColor C.Registry[aD].TextColor3= +'RedColor'end aB:Display()az:Resize()aB.TextLabel=aD aB.Container=aA setmetatable(aB,at)aB.Holder=aC table.insert(az. +Elements,aB)aB.Default=aB.Value w[ax]=aB return aB end function av.AddInput(aw,ax,ay)ay=C:Validate(ay,D.Input)local az= +aw local aA,aB=az.Container,{Text=ay.Text,Value=ay.Default,Finished=ay.Finished,Numeric=ay.Numeric,ClearTextOnFocus=ay. +ClearTextOnFocus,Placeholder=ay.Placeholder,AllowEmpty=ay.AllowEmpty,EmptyReset=ay.EmptyReset,Tooltip=ay.Tooltip, +DisabledTooltip=ay.DisabledTooltip,TooltipTable=nil,Callback=ay.Callback,Changed=ay.Changed,Disabled=ay.Disabled,Visible +=ay.Visible,Type='Input'}local aC=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,39),Visible=aB.Visible, +Parent=aA})local aD,aE=ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=aB.Text,TextSize=14, +TextXAlignment=Enum.TextXAlignment.Left,Parent=aC}),ag('TextBox',{AnchorPoint=Vector2.new(0,1),BackgroundColor3= +'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus=not aB.Disabled and aB.ClearTextOnFocus, +PlaceholderText=aB.Placeholder,Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,21),Text=aB.Value,TextEditable=not aB. +Disabled,TextScaled=true,TextXAlignment=Enum.TextXAlignment.Left,Parent=aC})ag('UIPadding',{PaddingBottom=UDim.new(0,3), +PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aE})function aB.UpdateColors(aF)if +C.Unloaded then return end aD.TextTransparency=aB.Disabled and 0.8 or 0 aE.TextTransparency=aB.Disabled and 0.8 or 0 end +function aB.OnChanged(aF,aG)aB.Changed=aG end function aB.SetValue(aF,aG)if not aB.AllowEmpty and Q(aG)==''then aG=aB. +EmptyReset end if ay.MaxLength and#aG>ay.MaxLength then aG=aG:sub(1,ay.MaxLength)end if aB.Numeric then if#tostring(aG)> +0 and not tonumber(aG)then aG=aB.Value end end aB.Value=aG aE.Text=aG if not aB.Disabled then C:SafeCallback(aB.Callback +,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end end function aB.SetDisabled(aF,aG:boolean)aB.Disabled=aG if aB. +TooltipTable then aB.TooltipTable.Disabled=aB.Disabled end aE.ClearTextOnFocus=not aB.Disabled and aB.ClearTextOnFocus +aE.TextEditable=not aB.Disabled aB:UpdateColors()end function aB.SetVisible(aF,aG:boolean)aB.Visible=aG aC.Visible=aB. +Visible az:Resize()end function aB.SetText(aF,aG:string)aB.Text=aG aD.Text=aG end if aB.Finished then aE.FocusLost: +Connect(function(aF)if not aF then return end aB:SetValue(aE.Text)end)else aE:GetPropertyChangedSignal'Text':Connect( +function()if aE.Text==aB.Value then return end aB:SetValue(aE.Text)end)end if typeof(aB.Tooltip)=='string'or typeof(aB. +DisabledTooltip)=='string'then aB.TooltipTable=C:AddTooltip(aB.Tooltip,aB.DisabledTooltip,aE)aB.TooltipTable.Disabled=aB +.Disabled end az:Resize()aB.Holder=aC table.insert(az.Elements,aB)aB.Default=aB.Value x[ax]=aB return aB end function av +.AddSlider(aw,ax,ay)ay=C:Validate(ay,D.Slider)local az=aw local aA,aB=az.Container,{Text=ay.Text,Value=ay.Default,Min=ay +.Min,Max=ay.Max,Prefix=ay.Prefix,Suffix=ay.Suffix,Compact=ay.Compact,Rounding=ay.Rounding,Tooltip=ay.Tooltip, +DisabledTooltip=ay.DisabledTooltip,TooltipTable=nil,Callback=ay.Callback,Changed=ay.Changed,Disabled=ay.Disabled,Visible +=ay.Visible,Type='Slider'}local aC,aD=(ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Compact and 13 or 31 +),Visible=aB.Visible,Parent=aA}))if not ay.Compact then aD=ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0 +,14),Text=aB.Text,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=aC})end local aE=ag('TextButton',{Active= +not aB.Disabled,AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1, +Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,13),Text='',Parent=aC})local aF=ag('TextLabel',{ +BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text='',TextSize=14,ZIndex=2,Parent=aE})ag('UIStroke',{ +ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=aF})local +aG=ag('Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(0.5,1),Parent=aE})function aB.UpdateColors(aH)if C. +Unloaded then return end if aD then aD.TextTransparency=aB.Disabled and 0.8 or 0 end aF.TextTransparency=aB.Disabled and +0.8 or 0 aG.BackgroundColor3=aB.Disabled and C.Scheme.OutlineColor or C.Scheme.AccentColor C.Registry[aG]. +BackgroundColor3=aB.Disabled and'OutlineColor'or'AccentColor'end function aB.Display(aH)if C.Unloaded then return end +local aI if ay.FormatDisplayValue then aI=ay.FormatDisplayValue(aB,aB.Value)end if aI then aF.Text=tostring(aI)else if +ay.Compact then aF.Text=string.format('%s: %s%s%s',aB.Text,aB.Prefix,aB.Value,aB.Suffix)elseif ay.HideMax then aF.Text= +string.format('%s%s%s',aB.Prefix,aB.Value,aB.Suffix)else aF.Text=string.format('%s%s%s/%s%s%s',aB.Prefix,aB.Value,aB. +Suffix,aB.Prefix,aB.Max,aB.Suffix)end end local aJ=(aB.Value-aB.Min)/(aB.Max-aB.Min)aG.Size=UDim2.fromScale(aJ,1)end +function aB.OnChanged(aH,aI)aB.Changed=aI end function aB.SetMax(aH,aI)assert(aI>aB.Min, +'Max value cannot be less than the current min value.')aB:SetValue(math.clamp(aB.Value,aB.Min,aI))aB.Max=aI aB:Display() +end function aB.SetMin(aH,aI)assert(aI25 then aJ=aJ:sub(1,22)..'...'end +aE.Text=(aJ==''and'---'or aJ)end function aB.OnChanged(aI,aJ)aB.Changed=aJ end function aB.GetActiveValues(aI)if ay. +Multi then local aJ={}for aK,aL in aB.Value do table.insert(aJ,aK)end return aJ end return aB.Value and 1 or 0 end local +aI={}function aB.BuildDropdownList(aJ)local aK,aL=aB.Values,aB.DisabledValues for aM,aN in aI do aM:Destroy()end table. +clear(aI)local aM=0 for aN,aO in aK do if aG and not tostring(aO):lower():match(aG.Text:lower())then continue end aM+=1 +local aP,aQ=table.find(aL,aO),{}local aR=ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1, +LayoutOrder=aP and 1 or 0,Size=UDim2.new(1,0,0,21),Text=tostring(aO),TextSize=14,TextTransparency=0.5,TextXAlignment= +Enum.TextXAlignment.Left,Parent=aH.Menu})ag('UIPadding',{PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),Parent=aR} +)local aS if ay.Multi then aS=aB.Value[aO]else aS=aB.Value==aO end function aQ.UpdateButton(aT)if ay.Multi then aS=aB. +Value[aO]else aS=aB.Value==aO end aR.BackgroundTransparency=aS and 0 or 1 aR.TextTransparency=aP and 0.8 or aS and 0 or +0.5 end if not aP then aR.MouseButton1Click:Connect(function()local aT=not aS if not(aB:GetActiveValues()==1 and not aT +and not ay.AllowNull)then aS=aT if ay.Multi then aB.Value[aO]=aS and true or nil else aB.Value=aS and aO or nil end for +aU,aV in aI do aV:UpdateButton()end end aQ:UpdateButton()aB:Display()C:UpdateDependencyBoxes()C:SafeCallback(aB.Callback +,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end)end aQ:UpdateButton()aB:Display()aI[aR]=aQ end aB:RecalculateListSize( +aM)end function aB.SetValue(aJ,aK)if ay.Multi then local aL={}for aM,aN in aK or{}do if typeof(aN)~='boolean'then aL[aN] +=true elseif aN and table.find(aB.Values,aM)then aL[aM]=true end end aB.Value=aL else if table.find(aB.Values,aK)then aB +.Value=aK elseif not aK then aB.Value=nil end end aB:Display()for aL,aM in aI do aM:UpdateButton()end if not aB.Disabled +then C:UpdateDependencyBoxes()C:SafeCallback(aB.Callback,aB.Value)C:SafeCallback(aB.Changed,aB.Value)end end function aB +.SetValues(aJ,aK)aB.Values=aK aB:BuildDropdownList()end function aB.AddValues(aJ,aK)if typeof(aK)=='table'then for aL,aM +in aK do table.insert(aB.Values,aM)end elseif typeof(aK)=='string'then table.insert(aB.Values,aK)else return end aB: +BuildDropdownList()end function aB.SetDisabledValues(aJ,aK)aB.DisabledValues=aK aB:BuildDropdownList()end function aB. +AddDisabledValues(aJ,aK)if typeof(aK)=='table'then for aL,aM in aK do table.insert(aB.DisabledValues,aM)end elseif +typeof(aK)=='string'then table.insert(aB.DisabledValues,aK)else return end aB:BuildDropdownList()end function aB. +SetDisabled(aJ,aK:boolean)aB.Disabled=aK if aB.TooltipTable then aB.TooltipTable.Disabled=aB.Disabled end aH:Close()aE. +Active=not aB.Disabled aB:UpdateColors()end function aB.SetVisible(aJ,aK:boolean)aB.Visible=aK aC.Visible=aB.Visible az: +Resize()end function aB.SetText(aJ,aK:string)aB.Text=aK aC.Size=UDim2.new(1,0,0,aK and 39 or 21)aD.Text=aK and aK or''aD +.Visible=not not aK end aE.MouseButton1Click:Connect(function()if aB.Disabled then return end aH:Toggle()end)if aG then +aG:GetPropertyChangedSignal'Text':Connect(aB.BuildDropdownList)end local aJ={}if typeof(ay.Default)=='string'then local +aK=table.find(aB.Values,ay.Default)if aK then table.insert(aJ,aK)end elseif typeof(ay.Default)=='table'then for aK,aL in +next,ay.Default do local aM=table.find(aB.Values,aL)if aM then table.insert(aJ,aM)end end elseif aB.Values[ay.Default]~= +nil then table.insert(aJ,ay.Default)end if next(aJ)then for aK=1,#aJ do local aL=aJ[aK]if ay.Multi then aB.Value[aB. +Values[aL] ]=true else aB.Value=aB.Values[aL]end if not ay.Multi then break end end end if typeof(aB.Tooltip)=='string' +or typeof(aB.DisabledTooltip)=='string'then aB.TooltipTable=C:AddTooltip(aB.Tooltip,aB.DisabledTooltip,aE)aB. +TooltipTable.Disabled=aB.Disabled end aB:UpdateColors()aB:Display()aB:BuildDropdownList()az:Resize()aB.Holder=aC table. +insert(az.Elements,aB)aB.Default=aJ aB.DefaultValues=aB.Values x[ax]=aB return aB end function av.AddViewport(aw,ax,ay) +ay=C:Validate(ay,D.Viewport)local az=aw local aA,aB,aC,aD,aE,aF=az.Container,false,false,0,(ay.Object)if ay.Clone and +typeof(ay.Object)=='Instance'then if ay.Object.Archivable then aE=aE:Clone()else ay.Object.Archivable=true aE=aE:Clone() +ay.Object.Archivable=false end end local aG={Object=aE,Camera=if not ay.Camera then Instance.new'Camera'else ay.Camera, +Interactive=ay.Interactive,AutoFocus=ay.AutoFocus,Visible=ay.Visible,Type='Viewport'}assert(typeof(aG.Object)== +'Instance'and(aG.Object:IsA'BasePart'or aG.Object:IsA'Model'),'Instance must be a BasePart or Model.')assert(typeof(aG. +Camera)=='Instance'and aG.Camera:IsA'Camera','Camera must be a valid Camera instance.')local function aH(aI)if aI:IsA +'BasePart'then return aI.Size end return select(2,aI:GetBoundingBox())end local function aI()local aJ=aH(aG.Object)local +aK=math.max(aJ.X,aJ.Y,aJ.Z)local aL,aM=aK*2,aG.Object:GetPivot().Position aG.Camera.CFrame=CFrame.new(aM+Vector3.new(0, +aK/2,aL),aM)end local aJ=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Height),Visible=aG.Visible,Parent= +aA})local aK=ag('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor', +BorderSizePixel=1,Position=UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aJ})ag('UIPadding',{PaddingBottom=UDim. +new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aK})local aL=ag( +'ViewportFrame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Parent=aK,CurrentCamera=aG.Camera,Active=aG. +Interactive})aL.MouseEnter:Connect(function()if not aG.Interactive then return end for aM,aN in az.Tab.Sides do aN. +ScrollingEnabled=false end end)aL.MouseLeave:Connect(function()if not aG.Interactive then return end for aM,aN in az.Tab +.Sides do aN.ScrollingEnabled=true end end)aL.InputBegan:Connect(function(aM)if not aG.Interactive then return end if aM +.UserInputType==Enum.UserInputType.MouseButton2 then aB=true aF=aM.Position elseif aM.UserInputType==Enum.UserInputType. +Touch and not aC then aB=true aF=aM.Position end end)C:GiveSignal(k.InputEnded:Connect(function(aM)if C.Unloaded then +return end if not aG.Interactive then return end if aM.UserInputType==Enum.UserInputType.MouseButton2 then aB=false +elseif aM.UserInputType==Enum.UserInputType.Touch then aB=false end end))C:GiveSignal(k.InputChanged:Connect(function(aM +)if C.Unloaded then return end if not aG.Interactive or not aB or aC then return end if aM.UserInputType==Enum. +UserInputType.MouseMovement or aM.UserInputType==Enum.UserInputType.Touch then local aN=aM.Position-aF aF=aM.Position +local aO,aP,aQ=aG.Object:GetPivot().Position,aG.Camera,CFrame.fromAxisAngle(Vector3.new(0,1,0),-aN.X*0.01)aP.CFrame= +CFrame.new(aO)*aQ*CFrame.new(-aO)*aP.CFrame local aR=CFrame.fromAxisAngle(aP.CFrame.RightVector,-aN.Y*0.01)local aS= +CFrame.new(aO)*aR*CFrame.new(-aO)*aP.CFrame if aS.UpVector.Y>0.1 then aP.CFrame=aS end end end))aL.InputChanged:Connect( +function(aM)if not aG.Interactive then return end if aM.UserInputType==Enum.UserInputType.MouseWheel then local aN=aM. +Position.Z*2 aG.Camera.CFrame+=aG.Camera.CFrame.LookVector*aN end end)C:GiveSignal(k.TouchPinch:Connect(function(aM,aN, +aO,aP)if C.Unloaded then return end if not aG.Interactive or not C:MouseIsOverFrame(aL,aM[1])then return end if aP==Enum +.UserInputState.Begin then aC=true aB=false aD=(aM[1]-aM[2]).Magnitude elseif aP==Enum.UserInputState.Change then local +aQ=(aM[1]-aM[2]).Magnitude local aR=(aQ-aD)*0.1 aD=aQ aG.Camera.CFrame+=aG.Camera.CFrame.LookVector*aR elseif aP==Enum. +UserInputState.End or aP==Enum.UserInputState.Cancel then aC=false end end))aG.Object.Parent=aL if aG.AutoFocus then aI( +)end function aG.SetObject(aM,aN:Instance,aO:boolean?)assert(aN,'Object cannot be nil.')if aO then aN=aN:Clone()end if +aG.Object then aG.Object:Destroy()end aG.Object=aN aG.Object.Parent=aL az:Resize()end function aG.SetHeight(aM,aN:number +)assert(aN>0,'Height must be greater than 0.')aJ.Size=UDim2.new(1,0,0,aN)az:Resize()end function aG.Focus(aM)if not aG. +Object then return end aI()end function aG.SetCamera(aM,aN:Instance)assert(aN and typeof(aN)=='Instance'and aN:IsA +'Camera','Camera must be a valid Camera instance.')aG.Camera=aN aL.CurrentCamera=aN end function aG.SetInteractive(aM,aN +:boolean)aG.Interactive=aN aL.Active=aN end function aG.SetVisible(aM,aN:boolean)aG.Visible=aN aJ.Visible=aG.Visible az: +Resize()end az:Resize()aG.Holder=aJ table.insert(az.Elements,aG)x[ax]=aG return aG end function av.AddImage(aw,ax,ay)ay= +C:Validate(ay,D.Image)local az=aw local aA,aB=az.Container,{Image=ay.Image,Color=ay.Color,RectOffset=ay.RectOffset, +RectSize=ay.RectSize,Height=ay.Height,ScaleType=ay.ScaleType,Transparency=ay.Transparency,BackgroundTransparency=ay. +BackgroundTransparency,Visible=ay.Visible,Type='Image'}local aC=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0, +0,ay.Height),Visible=aB.Visible,Parent=aA})local aD=ag('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3= +'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,BackgroundTransparency=aB.BackgroundTransparency,Position= +UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aC})ag('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim. +new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aD})local aE={BackgroundTransparency=1,Size=UDim2. +fromScale(1,1),Image=aB.Image,ImageTransparency=aB.Transparency,ImageColor3=aB.Color,ImageRectOffset=aB.RectOffset, +ImageRectSize=aB.RectSize,ScaleType=aB.ScaleType,Parent=aD}local aF=C:GetCustomIcon(aE.Image)assert(aF, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])aE.Image=aF.Url aE.ImageRectOffset=aF. +ImageRectOffset aE.ImageRectSize=aF.ImageRectSize local aG=ag('ImageLabel',aE)function aB.SetHeight(aH,aI:number)assert( +aI>0,'Height must be greater than 0.')aB.Height=aI aC.Size=UDim2.new(1,0,0,aI)az:Resize()end function aB.SetImage(aH,aI: +string)assert(typeof(aI)=='string','Image must be a string.')local aJ=C:GetCustomIcon(aI)assert(aJ, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])aI=aJ.Url aB.RectOffset=aJ.ImageRectOffset +aB.RectSize=aJ.ImageRectSize aG.Image=aI aB.Image=aI end function aB.SetColor(aH,aI:Color3)assert(typeof(aI)=='Color3', +'Color must be a Color3 value.')aG.ImageColor3=aI aB.Color=aI end function aB.SetRectOffset(aH,aI:Vector2)assert(typeof( +aI)=='Vector2','RectOffset must be a Vector2 value.')aG.ImageRectOffset=aI aB.RectOffset=aI end function aB.SetRectSize( +aH,aI:Vector2)assert(typeof(aI)=='Vector2','RectSize must be a Vector2 value.')aG.ImageRectSize=aI aB.RectSize=aI end +function aB.SetScaleType(aH,aI:Enum.ScaleType)assert(typeof(aI)=='EnumItem'and aI:IsA'ScaleType', +'ScaleType must be a valid Enum.ScaleType.')aG.ScaleType=aI aB.ScaleType=aI end function aB.SetTransparency(aH,aI:number +)assert(typeof(aI)=='number','Transparency must be a number between 0 and 1.')assert(aI>=0 and aI<=1, +'Transparency must be between 0 and 1.')aG.ImageTransparency=aI aB.Transparency=aI end function aB.SetVisible(aH,aI: +boolean)aB.Visible=aI aC.Visible=aB.Visible az:Resize()end az:Resize()aB.Holder=aC table.insert(az.Elements,aB)x[ax]=aB +return aB end function av.AddVideo(aw,ax,ay)ay=C:Validate(ay,D.Video)local az=aw local aA,aB=az.Container,{Video=ay. +Video,Looped=ay.Looped,Playing=ay.Playing,Volume=ay.Volume,Height=ay.Height,Visible=ay.Visible,Type='Video'}local aC=ag( +'Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Height),Visible=aB.Visible,Parent=aA})local aD=ag('Frame',{ +AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2. +fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=aC})ag('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8 +),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=aD})local aE=ag('VideoFrame',{BackgroundTransparency=1,Size +=UDim2.fromScale(1,1),Video=aB.Video,Looped=aB.Looped,Volume=aB.Volume,Parent=aD})aE.Playing=aB.Playing function aB. +SetHeight(aF,aG:number)assert(aG>0,'Height must be greater than 0.')aB.Height=aG aC.Size=UDim2.new(1,0,0,aG)az:Resize() +end function aB.SetVideo(aF,aG:string)assert(typeof(aG)=='string','Video must be a string.')aE.Video=aG aB.Video=aG end +function aB.SetLooped(aF,aG:boolean)assert(typeof(aG)=='boolean','Looped must be a boolean.')aE.Looped=aG aB.Looped=aG +end function aB.SetVolume(aF,aG:number)assert(typeof(aG)=='number','Volume must be a number between 0 and 10.')aE.Volume +=aG aB.Volume=aG end function aB.SetPlaying(aF,aG:boolean)assert(typeof(aG)=='boolean','Playing must be a boolean.')aE. +Playing=aG aB.Playing=aG end function aB.Play(aF)aE.Playing=true aB.Playing=true end function aB.Pause(aF)aE.Playing= +false aB.Playing=false end function aB.SetVisible(aF,aG:boolean)aB.Visible=aG aC.Visible=aB.Visible az:Resize()end az: +Resize()aB.Holder=aC aB.VideoFrame=aE table.insert(az.Elements,aB)x[ax]=aB return aB end function av.AddUIPassthrough(aw +,ax,ay)ay=C:Validate(ay,D.UIPassthrough)local az=aw local aA=az.Container assert(ay.Instance, +'Instance must be provided.')assert(typeof(ay.Instance)=='Instance'and ay.Instance:IsA'GuiBase2d', +'Instance must inherit from GuiBase2d.')assert(typeof(ay.Height)=='number'and ay.Height>0, +'Height must be a number greater than 0.')local aB={Instance=ay.Instance,Height=ay.Height,Visible=ay.Visible,Type= +'UIPassthrough'}local aC=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,ay.Height),Visible=aB.Visible,Parent= +aA})aB.Instance.Parent=aC az:Resize()function aB.SetHeight(aD,aE:number)assert(typeof(aE)=='number'and aE>0, +'Height must be a number greater than 0.')aB.Height=aE aC.Size=UDim2.new(1,0,0,aE)az:Resize()end function aB.SetInstance +(aD,aE:Instance)assert(aE,'Instance must be provided.')assert(typeof(aE)=='Instance'and aE:IsA'GuiBase2d', +'Instance must inherit from GuiBase2d.')if aB.Instance then aB.Instance.Parent=nil end aB.Instance=aE aB.Instance.Parent +=aC end function aB.SetVisible(aD,aE:boolean)aB.Visible=aE aC.Visible=aB.Visible az:Resize()end aB.Holder=aC table. +insert(az.Elements,aB)x[ax]=aB return aB end function av.AddDependencyBox(aw)local ax=aw local ay,az,aA=(ax.Container)do +az=ag('Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=ay})aA=ag('UIListLayout',{Padding +=UDim.new(0,8),Parent=az})end local aB={Visible=false,Dependencies={},Holder=az,Container=az,Elements={},DependencyBoxes +={}}function aB.Resize(aC)az.Size=UDim2.new(1,0,0,aA.AbsoluteContentSize.Y/C.DPIScale)ax:Resize()end function aB.Update( +aC,aD)for aE,aF in aB.Dependencies do local aG,aH=aF[1],aF[2]if aG.Type=='Toggle'and aG.Value~=aH then az.Visible=false +aB.Visible=false return elseif aG.Type=='Dropdown'then if typeof(aG.Value)=='table'then if not aG.Value[aH]then az. +Visible=false aB.Visible=false return end else if aG.Value~=aH then az.Visible=false aB.Visible=false return end end end +end aB.Visible=true az.Visible=true if not C.Searching then task.defer(function()aB:Resize()end)elseif not aD then C: +UpdateSearch(C.SearchText)end end aA:GetPropertyChangedSignal'AbsoluteContentSize':Connect(function()if not aB.Visible +then return end aB:Resize()end)function aB.SetupDependencies(aC,aD)for aE,aF in aD do assert(typeof(aF)=='table', +'Dependency should be a table.')assert(aF[1]~=nil,'Dependency is missing element.')assert(aF[2]~=nil, +'Dependency is missing expected value.')end aB.Dependencies=aD aB:Update()end az:GetPropertyChangedSignal'Visible': +Connect(function()aB:Resize()end)setmetatable(aB,au)table.insert(ax.DependencyBoxes,aB)table.insert(C.DependencyBoxes,aB +)return aB end function av.AddDependencyGroupbox(aw)local ax=aw local ay,az,aA,aB=ax.Tab,(ax.BoxHolder)do aA=ag('Frame', +{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Visible=false,Parent=az})ag('UICorner',{CornerRadius=UDim. +new(0,C.CornerRadius),Parent=aA})C:AddOutline(aA)aB=ag('UIListLayout',{Padding=UDim.new(0,8),Parent=aA})ag('UIPadding',{ +PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=aA})end +local aC={Visible=false,Dependencies={},BoxHolder=az,Holder=aA,Container=aA,Tab=ay,Elements={},DependencyBoxes={}} +function aC.Resize(aD)aA.Size=UDim2.new(1,0,0,(aB.AbsoluteContentSize.Y/C.DPIScale)+18)end function aC.Update(aD,aE)for +aF,aG in aC.Dependencies do local aH,aI=aG[1],aG[2]if aH.Type=='Toggle'and aH.Value~=aI then aA.Visible=false aC.Visible +=false return elseif aH.Type=='Dropdown'then if typeof(aH.Value)=='table'then if not aH.Value[aI]then aA.Visible=false +aC.Visible=false return end else if aH.Value~=aI then aA.Visible=false aC.Visible=false return end end end end aC. +Visible=true if not C.Searching then aA.Visible=true aC:Resize()elseif not aE then C:UpdateSearch(C.SearchText)end end +function aC.SetupDependencies(aD,aE)for aF,aG in aE do assert(typeof(aG)=='table','Dependency should be a table.') +assert(aG[1]~=nil,'Dependency is missing element.')assert(aG[2]~=nil,'Dependency is missing expected value.')end aC. +Dependencies=aE aC:Update()end setmetatable(aC,au)table.insert(ay.DependencyGroupboxes,aC)table.insert(C.DependencyBoxes +,aC)return aC end au.__index=av au.__namecall=function(aw,ax,...)return av[ax](...)end end function C.SetFont(av,aw)if +typeof(aw)=='EnumItem'then aw=Font.fromEnum(aw)end C.Scheme.Font=aw C:UpdateColorsUsingRegistry()end function C. +SetNotifySide(av,aw:string)C.NotifySide=aw if aw:lower()=='left'then aj.AnchorPoint=Vector2.new(0,0)aj.Position=UDim2. +fromOffset(6,6)ak.HorizontalAlignment=Enum.HorizontalAlignment.Left else aj.AnchorPoint=Vector2.new(1,0)aj.Position= +UDim2.new(1,-6,0,6)ak.HorizontalAlignment=Enum.HorizontalAlignment.Right end end function C.Notify(av,...)local aw,ax={} +,select(1,...)if typeof(ax)=='table'then aw.Title=tostring(ax.Title)aw.Description=tostring(ax.Description)aw.Time=ax. +Time or 5 aw.SoundId=ax.SoundId aw.Steps=ax.Steps aw.Persist=ax.Persist else aw.Description=tostring(ax)aw.Time=select(2 +,...)or 5 aw.SoundId=select(3,...)end aw.Destroyed=false local ay,az=false if typeof(aw.Time)=='Instance'then az=aw.Time +.Destroying:Connect(function()ay=true az:Disconnect()az=nil end)end local aA=ag('Frame',{AutomaticSize=Enum. +AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Visible=false,Parent=aj})local aB=ag('Frame',{ +AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='MainColor',Position=C.NotifySide:lower()=='left'and UDim2.new(-1,-8 +,0,-2)or UDim2.new(1,8,0,-2),Size=UDim2.fromScale(1,1),ZIndex=5,Parent=aA})ag('UICorner',{CornerRadius=UDim.new(0,C. +CornerRadius),Parent=aB})ag('UIListLayout',{Padding=UDim.new(0,4),Parent=aB})ag('UIPadding',{PaddingBottom=UDim.new(0,8) +,PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aB})C:AddOutline(aB)local aC,aD,aE +,aF,aG=0,0 if aw.Title then aE=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2. +fromScale(0,0),Text=aw.Title,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,Parent=aB})end if aw. +Description then aF=ag('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(0,0 +),Text=aw.Description,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextWrapped=true,Parent=aB})end function aw. +Resize(aH)if aE then local aI,aJ=C:GetTextBounds(aE.Text,aE.FontFace,aE.TextSize,(aj.AbsoluteSize.X/C.DPIScale)-24)aE. +Size=UDim2.fromOffset(0,aJ)aC=aI end if aF then local aI,aJ=C:GetTextBounds(aF.Text,aF.FontFace,aF.TextSize,(aj. +AbsoluteSize.X/C.DPIScale)-24)aF.Size=UDim2.fromOffset(0,aJ)aD=aI end aA.Size=UDim2.fromOffset(math.max(aC,aD)+24,0)end +function aw.ChangeTitle(aH,aI)if aE then aw.Title=tostring(aI)aE.Text=aw.Title aw:Resize()end end function aw. +ChangeDescription(aH,aI)if aF then aw.Description=tostring(aI)aF.Text=aw.Description aw:Resize()end end function aw. +ChangeStep(aH,aI)if aG and aw.Steps then aI=math.clamp(aI or 0,0,aw.Steps)aG.Size=UDim2.fromScale(aI/aw.Steps,1)end end +function aw.Destroy(aH)aw.Destroyed=true if typeof(aw.Time)=='Instance'then pcall(aw.Time.Destroy,aw.Time)end if az then +az:Disconnect()end n:Create(aB,C.NotifyTweenInfo,{Position=C.NotifySide:lower()=='left'and UDim2.new(-1,-8,0,-2)or UDim2 +.new(1,8,0,-2)}):Play()task.delay(C.NotifyTweenInfo.Time,function()C.Notifications[aA]=nil aA:Destroy()end)end aw: +Resize()local aH=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,7),Visible=(aw.Persist~=true and typeof(aw. +Time)~='Instance')or typeof(aw.Steps)=='number',Parent=aB})local aI=ag('Frame',{BackgroundColor3='BackgroundColor', +BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromOffset(0,3),Size=UDim2.new(1,0,0,2),Parent=aH})aG=ag( +'Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(1,1),Parent=aI})if typeof(aw.Time)=='Instance'then aG.Size= +UDim2.fromScale(0,1)end if aw.SoundId then local aJ=aw.SoundId if typeof(aJ)=='number'then aJ=string.format( +'rbxassetid://%d',aJ)end ag('Sound',{SoundId=aJ,Volume=3,PlayOnRemove=true,Parent=j}):Destroy()end C.Notifications[aA]= +aw aA.Visible=true n:Create(aB,C.NotifyTweenInfo,{Position=UDim2.fromOffset(0,0)}):Play()task.delay(C.NotifyTweenInfo. +Time,function()if aw.Persist then return elseif typeof(aw.Time)=='Instance'then repeat task.wait()until ay or aw. +Destroyed else n:Create(aG,TweenInfo.new(aw.Time,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{Size=UDim2. +fromScale(0,1)}):Play()task.wait(aw.Time)end if not aw.Destroyed then aw:Destroy()end end)return aw end function C. +CreateWindow(av,aw)aw=C:Validate(aw,D.Window)local ax:Vector2=workspace.CurrentCamera.ViewportSize if i:IsStudio()and ax +.X<=5 and ax.Y<=5 then repeat ax=workspace.CurrentCamera.ViewportSize task.wait()until ax.X>5 and ax.Y>5 end local ay,az +=ax.X-64,ax.Y-64 C.OriginalMinSize=Vector2.new(math.min(C.OriginalMinSize.X,ay),math.min(C.OriginalMinSize.Y,az))C. +MinSize=C.OriginalMinSize aw.Size=UDim2.fromOffset(math.clamp(aw.Size.X.Offset,C.MinSize.X,ay),math.clamp(aw.Size.Y. +Offset,C.MinSize.Y,az))if typeof(aw.Font)=='EnumItem'then aw.Font=Font.fromEnum(aw.Font)end aw.CornerRadius=math.min(aw. +CornerRadius,20)if aw.Compact~=nil then aw.SidebarCompacted=aw.Compact end if aw.SidebarMinWidth~=nil then aw. +MinSidebarWidth=aw.SidebarMinWidth end aw.MinSidebarWidth=math.max(64,aw.MinSidebarWidth)aw.SidebarCompactWidth=math. +max(48,aw.SidebarCompactWidth)aw.SidebarCollapseThreshold=math.clamp(aw.SidebarCollapseThreshold,0.1,0.9)aw. +CompactWidthActivation=math.max(48,aw.CompactWidthActivation)C.CornerRadius=aw.CornerRadius C:SetNotifySide(aw. +NotifySide)C.ShowCustomCursor=aw.ShowCustomCursor C.Scheme.Font=aw.Font C.ToggleKeybind=aw.ToggleKeybind C.GlobalSearch= +aw.GlobalSearch local aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP=aw.SearchbarSize==UDim2.fromScale(1,1),math.ceil( +aw.Size.X.Offset*0.3),(aw.SidebarCompacted)local aQ=aB do C.KeybindFrame,C.KeybindContainer=C:AddDraggableMenu'Keybinds' +C.KeybindFrame.AnchorPoint=Vector2.new(0,0.5)C.KeybindFrame.Position=UDim2.new(0,6,0.5,0)C.KeybindFrame.Visible=false aD +=ag('TextButton',{BackgroundColor3=function()return C:GetBetterColor(C.Scheme.BackgroundColor,-1)end,Name='Main',Text='' +,Position=aw.Position,Size=aw.Size,Visible=false,Parent=X})ag('UICorner',{CornerRadius=UDim.new(0,aw.CornerRadius), +Parent=aD})table.insert(C.Scales,ag('UIScale',{Parent=aD}))C:AddOutline(aD)C:MakeLine(aD,{Position=UDim2.fromOffset(0,48 +),Size=UDim2.new(1,0,0,1)})aE=ag('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(aB,0),Size=UDim2. +new(0,1,1,-21),Parent=aD})if aw.BackgroundImage then ag('ImageLabel',{Image=aw.BackgroundImage,Position=UDim2.fromScale( +0,0),Size=UDim2.fromScale(1,1),ScaleType=Enum.ScaleType.Stretch,ZIndex=999,BackgroundTransparency=1,ImageTransparency= +0.75,Parent=aD})end if aw.Center then aD.Position=UDim2.new(0.5,-aD.Size.X.Offset/2,0.5,-aD.Size.Y.Offset/2)end local aR +=ag('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,48),Parent=aD})C:MakeDraggable(aD,aR,false,true)aF=ag('Frame' +,{BackgroundTransparency=1,Size=UDim2.new(0,aB,1,0),Parent=aR})ag('UIListLayout',{FillDirection=Enum.FillDirection. +Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Center,VerticalAlignment=Enum.VerticalAlignment.Center,Padding= +UDim.new(0,6),Parent=aF})if aw.Icon then aH=ag('ImageLabel',{Image=if tonumber(aw.Icon)then string.format( +'rbxassetid://%d',aw.Icon)else aw.Icon,Size=aw.IconSize,Parent=aF})else aH=ag('TextLabel',{BackgroundTransparency=1,Size +=aw.IconSize,Text=aw.Title:sub(1,1),TextScaled=true,Visible=false,Parent=aF})end local aS=C:GetTextBounds(aw.Title,C. +Scheme.Font,20,aF.AbsoluteSize.X-(aw.Icon and aw.IconSize.X.Offset+6 or 0)-12)aG=ag('TextLabel',{BackgroundTransparency= +1,Size=UDim2.new(0,aS,1,0),Text=aw.Title,TextSize=20,Parent=aF})aI=ag('Frame',{AnchorPoint=Vector2.new(1,0.5), +BackgroundTransparency=1,Position=UDim2.new(1,-49,0.5,0),Size=UDim2.new(1,-aB-57-1,1,-16),Parent=aR})ag('UIListLayout',{ +FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Left,VerticalAlignment=Enum. +VerticalAlignment.Center,Padding=UDim.new(0,8),Parent=aI})aK=ag('Frame',{Size=UDim2.fromScale(aw.DisableSearch and 1 or +0.5,1),Visible=false,BackgroundTransparency=1,Parent=aI})ag('UIFlexItem',{FlexMode=Enum.UIFlexMode.Grow,Parent=aK})ag( +'UIListLayout',{FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Left, +VerticalAlignment=Enum.VerticalAlignment.Center,Parent=aK})ag('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim. +new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aK})aL=ag('TextLabel',{BackgroundTransparency=1,Size +=UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text='',TextSize=14,TextXAlignment=Enum.TextXAlignment.Left, +Parent=aK})aM=ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text +='',TextWrapped=true,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextTransparency=0.5,Parent=aK})aJ=ag('TextBox' +,{BackgroundColor3='MainColor',PlaceholderText='Search',Size=aw.SearchbarSize,TextScaled=true,Visible=not(aw. +DisableSearch or false),Parent=aI})ag('UIFlexItem',{FlexMode=Enum.UIFlexMode.Shrink,Parent=aJ})ag('UICorner',{ +CornerRadius=UDim.new(0,aw.CornerRadius),Parent=aJ})ag('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8 +),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=aJ})ag('UIStroke',{Color='OutlineColor',Parent=aJ})local aT +=C:GetIcon'search'if aT then ag('ImageLabel',{Image=aT.Url,ImageColor3='FontColor',ImageRectOffset=aT.ImageRectOffset, +ImageRectSize=aT.ImageRectSize,ImageTransparency=0.5,Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint. +RelativeYY,Parent=aJ})end if as then ag('ImageLabel',{AnchorPoint=Vector2.new(1,0.5),Image=as.Url,ImageColor3= +'OutlineColor',ImageRectOffset=as.ImageRectOffset,ImageRectSize=as.ImageRectSize,Position=UDim2.new(1,-10,0.5,0),Size= +UDim2.fromOffset(28,28),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=aR})end local aU=ag('Frame',{AnchorPoint= +Vector2.new(0,1),BackgroundColor3=function()return C:GetBetterColor(C.Scheme.BackgroundColor,4)end,Position=UDim2. +fromScale(0,1),Size=UDim2.new(1,0,0,aw.CornerRadius*2),Parent=aD})C:MakeLine(aD,{AnchorPoint=Vector2.new(0,1),Position= +UDim2.new(0,0,1,-20),Size=UDim2.new(1,0,0,1)})local aV=ag('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundTransparency=1 +,Position=UDim2.fromScale(0,1),Size=UDim2.new(1,0,0,20),Parent=aD})ag('UICorner',{CornerRadius=UDim.new(0,aw. +CornerRadius),Parent=aU})ag('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text=aw.Footer,TextSize=14, +TextTransparency=0.5,Parent=aV})if aw.Resizable then aN=ag('TextButton',{AnchorPoint=Vector2.new(1,0), +BackgroundTransparency=1,Position=UDim2.new(1,-aw.CornerRadius/4,0,0),Size=UDim2.fromScale(1,1),SizeConstraint=Enum. +SizeConstraint.RelativeYY,Text='',Parent=aV})C:MakeResizable(aD,aN,function()for aW,aX in C.Tabs do aX:Resize(true)end +end)end ag('ImageLabel',{Image=aq and aq.Url or'',ImageColor3='FontColor',ImageRectOffset=aq and aq.ImageRectOffset or +Vector2.zero,ImageRectSize=aq and aq.ImageRectSize or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromOffset(2,2), +Size=UDim2.new(1,-4,1,-4),Parent=aN})aO=ag('ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundColor3= +'BackgroundColor',CanvasSize=UDim2.fromScale(0,0),Position=UDim2.fromOffset(0,49),ScrollBarThickness=0,Size=UDim2.new(0, +aB,1,-70),Parent=aD})ag('UIListLayout',{Parent=aO})aP=ag('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3=function +()return C:GetBetterColor(C.Scheme.BackgroundColor,1)end,Name='Container',Position=UDim2.new(1,0,0,49),Size=UDim2.new(1, +-aB-1,1,-70),Parent=aD})ag('UIPadding',{PaddingBottom=UDim.new(0,0),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6) +,PaddingTop=UDim.new(0,0),Parent=aP})end local aR={}function aR.ChangeTitle(aS,aT)assert(typeof(aT)=='string', +'Expected string for title got: '..typeof(aT))aG.Text=aT aw.Title=aT end local function aS()aC=aR:GetSidebarWidth()==aw. +SidebarCompactWidth if aw.DisableCompactingSnap then aC=aR:GetSidebarWidth()<=aw.CompactWidthActivation end aG.Visible= +not aC if not aw.Icon then aH.Visible=aC end for aT,aU in C.TabButtons do if not aU.Icon then continue end aU.Label. +Visible=not aC aU.Padding.PaddingBottom=UDim.new(0,aC and 6 or 11)aU.Padding.PaddingLeft=UDim.new(0,aC and 6 or 12)aU. +Padding.PaddingRight=UDim.new(0,aC and 6 or 12)aU.Padding.PaddingTop=UDim.new(0,aC and 6 or 11)aU.Icon.SizeConstraint=aC +and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY end end function aR.IsSidebarCompacted(aT)return aC +end function aR.SetCompact(aT,aU)aR:SetSidebarWidth(aU and aw.SidebarCompactWidth or aQ)end function aR.GetSidebarWidth( +aT)return aO.Size.X.Offset end function aR.SetSidebarWidth(aT,aU)aU=math.clamp(aU,48,aD.Size.X.Offset-aw. +MinContainerWidth-1)aE.Position=UDim2.fromOffset(aU,0)aF.Size=UDim2.new(0,aU,1,0)aI.Size=UDim2.new(1,-aU-57-1,1,-16)aO. +Size=UDim2.new(0,aU,1,-70)aP.Size=UDim2.new(1,-aU-1,1,-70)if aw.EnableCompacting then aS()end if not aC then aQ=aU end +end function aR.ShowTabInfo(aT,aU,aV)aL.Text=aU aM.Text=aV if aA then aJ.Size=UDim2.fromScale(0.5,1)end aK.Visible=true +end function aR.HideTabInfo(aT)aK.Visible=false if aA then aJ.Size=UDim2.fromScale(1,1)end end function aR.AddTab(aT,... +)local aU,aV,aW if select('#',...)==1 and typeof(...)=='table'then local aX=select(1,...)aU=aX.Name or'Tab'aV=aX.Icon aW +=aX.Description else aU=select(1,...)aV=select(2,...)aW=select(3,...)end local aX:TextButton,aY,aZ,a_,a0,a1 aV=C: +GetCustomIcon(aV)or ac do aX=ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0 +,40),Text='',Parent=aO})local a2=ag('UIPadding',{PaddingBottom=UDim.new(0,aC and 6 or 11),PaddingLeft=UDim.new(0,aC and +6 or 12),PaddingRight=UDim.new(0,aC and 6 or 12),PaddingTop=UDim.new(0,aC and 6 or 11),Parent=aX})aY=ag('TextLabel',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=aU,TextSize=16,TextTransparency= +0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not aC,Parent=aX})if C.ForceTextIcons then aY.Text=string.format( +'[%s] %s',aU:sub(1,1):upper(),aU)aY.Position=UDim2.fromOffset(12,0)aY.Size=UDim2.new(1,-12,1,0)end if aV then aZ=ag( +'ImageLabel',{Image=aV.Url,ImageColor3=aV.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=aV.ImageRectOffset, +ImageRectSize=aV.ImageRectSize,ImageTransparency=0.5,ScaleType=Enum.ScaleType.Fit,Size=UDim2.fromScale(1,1), +SizeConstraint=aC and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=aX})if C.ForceTextIcons +then aZ.ImageTransparency=0.85 end end table.insert(C.TabButtons,{Label=aY,Padding=a2,Icon=aZ})a_=ag('Frame',{ +BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=aP})a0=ag('ScrollingFrame',{AutomaticCanvasSize= +Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),ScrollBarImageTransparency=1, +ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=a_})ag('UIListLayout',{Padding=UDim.new(0,2),Parent=a0})ag( +'UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2),PaddingTop=UDim.new(0,2), +Parent=a0})do ag('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=a0})ag('Frame',{BackgroundTransparency=1, +LayoutOrder=1,Parent=a0})end a1=ag('ScrollingFrame',{AnchorPoint=Vector2.new(1,0),AutomaticCanvasSize=Enum.AutomaticSize +.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),Position=UDim2.fromScale(1,0),ScrollBarImageTransparency=1, +ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=a_})ag('UIListLayout',{Padding=UDim.new(0,2),Parent=a1})ag( +'UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2),PaddingTop=UDim.new(0,2), +Parent=a1})do ag('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=a1})ag('Frame',{BackgroundTransparency=1, +LayoutOrder=1,Parent=a1})end end local a2,a3,a4,a5,a6,a7,a8,a9=(ag('Frame',{AutomaticSize=Enum.AutomaticSize.Y, +BackgroundTransparency=1,Position=UDim2.fromOffset(0,7),Size=UDim2.fromScale(1,0),Visible=false,Parent=a_}))do a3=ag( +'Frame',{BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(2,0),Size=UDim2.new(1,-5,0,0),Parent=a2})ag( +'UICorner',{CornerRadius=UDim.new(0,aw.CornerRadius),Parent=a3})a4,a5=C:AddOutline(a3)a6=ag('ScrollingFrame',{ +BackgroundTransparency=1,BorderSizePixel=0,Size=UDim2.fromScale(1,1),CanvasSize=UDim2.new(0,0,0,0),ScrollBarThickness=3, +ScrollingDirection=Enum.ScrollingDirection.Y,Parent=a3})ag('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingLeft=UDim. +new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,4),Parent=a6})a7=ag('TextLabel',{BackgroundTransparency=1,Size +=UDim2.new(1,-4,0,14),Text='',TextColor3=Color3.fromRGB(255,50,50),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left, +Parent=a6})a8=ag('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color=Color3.fromRGB(169,0,0),LineJoinMode= +Enum.LineJoinMode.Miter,Parent=a7})a9=ag('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,16),Size= +UDim2.new(1,-4,0,0),Text='',TextSize=14,TextWrapped=true,Parent=a6,TextXAlignment=Enum.TextXAlignment.Left, +TextYAlignment=Enum.TextYAlignment.Top})ag('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color='DarkColor' +,LineJoinMode=Enum.LineJoinMode.Miter,Parent=a9})end local ba={Groupboxes={},Tabboxes={},DependencyGroupboxes={},Sides={ +a0,a1},WarningBox={IsNormal=false,LockSize=false,Visible=false,Title='WARNING',Text=''}}function ba.UpdateWarningBox(bb, +bc)if typeof(bc.IsNormal)=='boolean'then ba.WarningBox.IsNormal=bc.IsNormal end if typeof(bc.LockSize)=='boolean'then ba +.WarningBox.LockSize=bc.LockSize end if typeof(bc.Visible)=='boolean'then ba.WarningBox.Visible=bc.Visible end if +typeof(bc.Title)=='string'then ba.WarningBox.Title=bc.Title end if typeof(bc.Text)=='string'then ba.WarningBox.Text=bc. +Text end a2.Visible=ba.WarningBox.Visible a7.Text=ba.WarningBox.Title a9.Text=ba.WarningBox.Text ba:Resize(true)a3. +BackgroundColor3=ba.WarningBox.IsNormal==true and C.Scheme.BackgroundColor or Color3.fromRGB(127,0,0)a5.Color=ba. +WarningBox.IsNormal==true and C.Scheme.DarkColor or Color3.fromRGB(85,0,0)a4.Color=ba.WarningBox.IsNormal==true and C. +Scheme.OutlineColor or Color3.fromRGB(255,50,50)a7.TextColor3=ba.WarningBox.IsNormal==true and C.Scheme.FontColor or +Color3.fromRGB(255,50,50)a8.Color=ba.WarningBox.IsNormal==true and C.Scheme.OutlineColor or Color3.fromRGB(169,0,0)if +not C.Registry[a3]then C:AddToRegistry(a3,{})end if not C.Registry[a5]then C:AddToRegistry(a5,{})end if not C.Registry[ +a4]then C:AddToRegistry(a4,{})end if not C.Registry[a7]then C:AddToRegistry(a7,{})end if not C.Registry[a8]then C: +AddToRegistry(a8,{})end C.Registry[a3].BackgroundColor3=function()return ba.WarningBox.IsNormal==true and C.Scheme. +BackgroundColor or Color3.fromRGB(127,0,0)end C.Registry[a5].Color=function()return ba.WarningBox.IsNormal==true and C. +Scheme.DarkColor or Color3.fromRGB(85,0,0)end C.Registry[a4].Color=function()return ba.WarningBox.IsNormal==true and C. +Scheme.OutlineColor or Color3.fromRGB(255,50,50)end C.Registry[a7].TextColor3=function()return ba.WarningBox.IsNormal== +true and C.Scheme.FontColor or Color3.fromRGB(255,50,50)end C.Registry[a8].Color=function()return ba.WarningBox.IsNormal +==true and C.Scheme.OutlineColor or Color3.fromRGB(169,0,0)end end function ba.RefreshSides(bb)local bc=a2.Visible and +a3.Size.Y.Offset+8 or 0 for bd,be in ba.Sides do be.Position=UDim2.new(be.Position.X.Scale,0,0,bc)be.Size=UDim2.new(0.5, +-3,1,-bc)end end function ba.Resize(bb,bc:boolean?)if bc then local bd,be,bf=math.floor(a_.AbsoluteSize.Y/3.25),C: +GetTextBounds(a9.Text,C.Scheme.Font,a9.TextSize,a9.AbsoluteSize.X)local bg=24+bf if ba.WarningBox.LockSize==true and bg +>=bd then a6.CanvasSize=UDim2.fromOffset(0,bg)bg=bd else a6.CanvasSize=UDim2.fromOffset(0,0)end a9.Size=UDim2.new(1,-4,0 +,bf)a3.Size=UDim2.new(1,-5,0,bg+4)end ba:RefreshSides()end function ba.AddGroupbox(bb,bc)local bd=ag('Frame',{ +AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=bc.Side==1 and a0 or a1}) +ag('UIListLayout',{Padding=UDim.new(0,6),Parent=bd})ag('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0,4) +,Parent=bd})local be,bf,bg,bh do be=ag('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Parent=bd}) +ag('UICorner',{CornerRadius=UDim.new(0,aw.CornerRadius),Parent=be})C:AddOutline(be)C:MakeLine(be,{Position=UDim2. +fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local bi=C:GetCustomIcon(bc.IconName)or(bc.IconName and ac or nil)if bi then +ag('ImageLabel',{Image=bi.Url,ImageColor3=bi.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=bi.ImageRectOffset, +ImageRectSize=bi.ImageRectSize,Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(22,22),Parent=be})end bf=ag( +'TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(bi and 24 or 0,0),Size=UDim2.new(1,0,0,34),Text=bc.Name, +TextSize=15,TextXAlignment=Enum.TextXAlignment.Left,Parent=be})ag('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight= +UDim.new(0,12),Parent=bf})bg=ag('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,- +35),Parent=be})bh=ag('UIListLayout',{Padding=UDim.new(0,8),Parent=bg})ag('UIPadding',{PaddingBottom=UDim.new(0,7), +PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bg})end local bi={BoxHolder=bd, +Holder=be,Container=bg,Tab=ba,DependencyBoxes={},Elements={}}function bi.Resize(bj)be.Size=UDim2.new(1,0,0,(bh. +AbsoluteContentSize.Y/C.DPIScale)+49)end setmetatable(bi,au)bi:Resize()ba.Groupboxes[bc.Name]=bi return bi end function +ba.AddLeftGroupbox(bb,bc,bd)return ba:AddGroupbox{Side=1,Name=bc,IconName=bd}end function ba.AddRightGroupbox(bb,bc,bd) +return ba:AddGroupbox{Side=2,Name=bc,IconName=bd}end function ba.AddTabbox(bb,bc)local bd=ag('Frame',{AutomaticSize=Enum +.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=bc.Side==1 and a0 or a1})ag('UIListLayout',{ +Padding=UDim.new(0,6),Parent=bd})ag('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0,4),Parent=bd})local +be,bf do be=ag('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Parent=bd})ag('UICorner',{ +CornerRadius=UDim.new(0,aw.CornerRadius),Parent=be})C:AddOutline(be)bf=ag('Frame',{BackgroundTransparency=1,Size=UDim2. +new(1,0,0,34),Parent=be})ag('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum. +UIFlexAlignment.Fill,Parent=bf})end local bg={ActiveTab=nil,BoxHolder=bd,Holder=be,Tabs={}}function bg.AddTab(bh,bi) +local bj=ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=0,Size=UDim2.fromOffset(0,34),Text=bi, +TextSize=15,TextTransparency=0.5,Parent=bf})local bk,bl=C:MakeLine(bj,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0 +,0,1,1),Size=UDim2.new(1,0,0,1)}),ag('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1, +0,1,-35),Visible=false,Parent=be})local bm=ag('UIListLayout',{Padding=UDim.new(0,8),Parent=bl})ag('UIPadding',{ +PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bl}) +local bn={ButtonHolder=bj,Container=bl,Tab=ba,Elements={},DependencyBoxes={}}function bn.Show(bo)if bg.ActiveTab then bg +.ActiveTab:Hide()end bj.BackgroundTransparency=1 bj.TextTransparency=0 bk.Visible=false bl.Visible=true bg.ActiveTab=bn +bn:Resize()end function bn.Hide(bo)bj.BackgroundTransparency=0 bj.TextTransparency=0.5 bk.Visible=true bl.Visible=false +bg.ActiveTab=nil end function bn.Resize(bo)if bg.ActiveTab~=bn then return end be.Size=UDim2.new(1,0,0,(bm. +AbsoluteContentSize.Y/C.DPIScale)+49)end if not bg.ActiveTab then bn:Show()end bj.MouseButton1Click:Connect(bn.Show) +setmetatable(bn,au)bg.Tabs[bi]=bn return bn end if bc.Name then ba.Tabboxes[bc.Name]=bg else table.insert(ba.Tabboxes,bg +)end return bg end function ba.AddLeftTabbox(bb,bc)return ba:AddTabbox{Side=1,Name=bc}end function ba.AddRightTabbox(bb, +bc)return ba:AddTabbox{Side=2,Name=bc}end function ba.Hover(bb,bc)if C.ActiveTab==ba then return end n:Create(aY,C. +TweenInfo,{TextTransparency=bc and 0.25 or 0.5}):Play()if aZ then n:Create(aZ,C.TweenInfo,{ImageTransparency=bc and 0.25 +or 0.5}):Play()end end function ba.Show(bb)if C.ActiveTab then C.ActiveTab:Hide()end n:Create(aX,C.TweenInfo,{ +BackgroundTransparency=0}):Play()n:Create(aY,C.TweenInfo,{TextTransparency=0}):Play()if aZ then n:Create(aZ,C.TweenInfo, +{ImageTransparency=0}):Play()end if aW then aR:ShowTabInfo(aU,aW)end a_.Visible=true ba:RefreshSides()C.ActiveTab=ba if +C.Searching then C:UpdateSearch(C.SearchText)end end function ba.Hide(bb)n:Create(aX,C.TweenInfo,{BackgroundTransparency +=1}):Play()n:Create(aY,C.TweenInfo,{TextTransparency=0.5}):Play()if aZ then n:Create(aZ,C.TweenInfo,{ImageTransparency= +0.5}):Play()end a_.Visible=false aR:HideTabInfo()C.ActiveTab=nil end if not C.ActiveTab then ba:Show()end aX.MouseEnter: +Connect(function()ba:Hover(true)end)aX.MouseLeave:Connect(function()ba:Hover(false)end)aX.MouseButton1Click:Connect(ba. +Show)C.Tabs[aU]=ba return ba end function aR.AddKeyTab(aT,...)local aU,aV,aW if select('#',...)==1 and typeof(...)== +'table'then local aX=select(1,...)aU=aX.Name or'Tab'aV=aX.Icon aW=aX.Description else aU=select(1,...)or'Tab'aV=select(2 +,...)aW=select(3,...)end aV=aV or'key'local aX:TextButton,aY,aZ,a_ aV=if aV=='key'then ar else C:GetCustomIcon(aV)do aX= +ag('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,40),Text='',Parent=aO})local +a0=ag('UIPadding',{PaddingBottom=UDim.new(0,aC and 6 or 11),PaddingLeft=UDim.new(0,aC and 6 or 12),PaddingRight=UDim. +new(0,aC and 6 or 12),PaddingTop=UDim.new(0,aC and 6 or 11),Parent=aX})aY=ag('TextLabel',{BackgroundTransparency=1, +Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=aU,TextSize=16,TextTransparency=0.5,TextXAlignment=Enum. +TextXAlignment.Left,Visible=not aC,Parent=aX})if aV then aZ=ag('ImageLabel',{Image=aV.Url,ImageColor3=aV.Custom and +'WhiteColor'or'AccentColor',ImageRectOffset=aV.ImageRectOffset,ImageRectSize=aV.ImageRectSize,ImageTransparency=0.5,Size +=UDim2.fromScale(1,1),SizeConstraint=aC and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=aX}) +if C.ForceTextIcons then aZ.Visible=false end end table.insert(C.TabButtons,{Label=aY,Padding=a0,Icon=aZ})a_=ag( +'ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0), +ScrollBarThickness=0,Size=UDim2.fromScale(1,1),Visible=false,Parent=aP})ag('UIListLayout',{HorizontalAlignment=Enum. +HorizontalAlignment.Center,Padding=UDim.new(0,8),VerticalAlignment=Enum.VerticalAlignment.Center,Parent=a_})ag( +'UIPadding',{PaddingLeft=UDim.new(0,1),PaddingRight=UDim.new(0,1),Parent=a_})end local a0={Elements={},IsKeyTab=true} +function a0.AddKeyBox(a1,a2)assert(typeof(a2)=='function','Callback must be a function')local a3=ag('Frame',{ +BackgroundTransparency=1,Size=UDim2.new(0.75,0,0,21),Parent=a_})local a4=ag('TextBox',{BackgroundColor3='MainColor', +BorderColor3='OutlineColor',BorderSizePixel=1,PlaceholderText='Key',Size=UDim2.new(1,-71,1,0),TextSize=14,TextXAlignment +=Enum.TextXAlignment.Left,Parent=a3})ag('UIPadding',{PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),Parent=a4}) +local a5=ag('TextButton',{AnchorPoint=Vector2.new(1,0),BackgroundColor3='MainColor',BorderColor3='OutlineColor', +BorderSizePixel=1,Position=UDim2.fromScale(1,0),Size=UDim2.new(0,63,1,0),Text='Execute',TextSize=14,Parent=a3})a5. +InputBegan:Connect(function(a6)if not L(a6)then return end if not C:MouseIsOverFrame(a5,a6.Position)then return end a2( +a4.Text)end)end function a0.RefreshSides(a1)end function a0.Resize(a1)end function a0.Hover(a1,a2)if C.ActiveTab==a0 +then return end n:Create(aY,C.TweenInfo,{TextTransparency=a2 and 0.25 or 0.5}):Play()if aZ then n:Create(aZ,C.TweenInfo, +{ImageTransparency=a2 and 0.25 or 0.5}):Play()end end function a0.Show(a1)if C.ActiveTab then C.ActiveTab:Hide()end n: +Create(aX,C.TweenInfo,{BackgroundTransparency=0}):Play()n:Create(aY,C.TweenInfo,{TextTransparency=0}):Play()if aZ then n +:Create(aZ,C.TweenInfo,{ImageTransparency=0}):Play()end a_.Visible=true if aW then aR:ShowTabInfo(aU,aW)end a0: +RefreshSides()C.ActiveTab=a0 if C.Searching then C:UpdateSearch(C.SearchText)end end function a0.Hide(a1)n:Create(aX,C. +TweenInfo,{BackgroundTransparency=1}):Play()n:Create(aY,C.TweenInfo,{TextTransparency=0.5}):Play()if aZ then n:Create(aZ +,C.TweenInfo,{ImageTransparency=0.5}):Play()end a_.Visible=false aR:HideTabInfo()C.ActiveTab=nil end if not C.ActiveTab +then a0:Show()end aX.MouseEnter:Connect(function()a0:Hover(true)end)aX.MouseLeave:Connect(function()a0:Hover(false)end) +aX.MouseButton1Click:Connect(a0.Show)a0.Container=a_ setmetatable(a0,au)C.Tabs[aU]=a0 return a0 end function C.Toggle(aT +,aU:boolean?)if typeof(aU)=='boolean'then C.Toggled=aU else C.Toggled=not C.Toggled end aD.Visible=C.Toggled if aw. +UnlockMouseWhileOpen then Y.Modal=C.Toggled end if C.Toggled and not C.IsMobile then local aV=k.MouseIconEnabled pcall( +function()i:UnbindFromRenderStep'ShowCursor'end)i:BindToRenderStep('ShowCursor',Enum.RenderPriority.Last.Value,function( +)k.MouseIconEnabled=not C.ShowCustomCursor Z.Position=UDim2.fromOffset(t.X,t.Y)Z.Visible=C.ShowCustomCursor if not(C. +Toggled and X and X.Parent)then k.MouseIconEnabled=aV Z.Visible=false i:UnbindFromRenderStep'ShowCursor'end end)elseif +not C.Toggled then am.Visible=false for aV,aW in C.Options do if aW.Type=='ColorPicker'then aW.ColorMenu:Close()aW. +ContextMenu:Close()elseif aW.Type=='Dropdown'or aW.Type=='KeyPicker'then aW.Menu:Close()end end end end if aw. +EnableSidebarResize then local aT,aU,aV,aW,aX,aY=(aw.MinSidebarWidth+aw.SidebarCompactWidth)*aw.SidebarCollapseThreshold +,false,(ag('TextButton',{AnchorPoint=Vector2.new(0.5,0),BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0),Size= +UDim2.new(0,8,1,0),Text='',Parent=aE}))aV.MouseEnter:Connect(function()n:Create(aE,C.TweenInfo,{BackgroundColor3=C: +GetLighterColor(C.Scheme.OutlineColor)}):Play()end)aV.MouseLeave:Connect(function()if aU then return end n:Create(aE,C. +TweenInfo,{BackgroundColor3=C.Scheme.OutlineColor}):Play()end)aV.InputBegan:Connect(function(aZ:InputObject)if not L(aZ) +then return end C.CantDragForced=true aW=aZ.Position aX=aR:GetSidebarWidth()aU=true aY=aZ.Changed:Connect(function()if +aZ.UserInputState~=Enum.UserInputState.End then return end C.CantDragForced=false n:Create(aE,C.TweenInfo,{ +BackgroundColor3=C.Scheme.OutlineColor}):Play()aU=false if aY and aY.Connected then aY:Disconnect()aY=nil end end)end)C: +GiveSignal(k.InputChanged:Connect(function(aZ:InputObject)if not C.Toggled or not(X and X.Parent)then aU=false if aY and +aY.Connected then aY:Disconnect()aY=nil end return end if aU and M(aZ)then local a_=aZ.Position-aW local a0=aX+a_.X if +aw.DisableCompactingSnap then aR:SetSidebarWidth(a0)return end if a0>aT then aR:SetSidebarWidth(math.max(a0,aw. +MinSidebarWidth))else aR:SetSidebarWidth(aw.SidebarCompactWidth)end end end))end if aw.EnableCompacting and aw. +SidebarCompacted then aR:SetSidebarWidth(aw.SidebarCompactWidth)end if aw.AutoShow then task.spawn(C.Toggle)end if C. +IsMobile then local aT,aU=C:AddDraggableButton('Toggle',function()C:Toggle()end,true),C:AddDraggableButton('Lock', +function(aT)C.CantDragForced=not C.CantDragForced aT:SetText(C.CantDragForced and'Unlock'or'Lock')end,true)if aw. +MobileButtonsSide=='Right'then aT.Button.Position=UDim2.new(1,-6,0,6)aT.Button.AnchorPoint=Vector2.new(1,0)aU.Button. +Position=UDim2.new(1,-6,0,46)aU.Button.AnchorPoint=Vector2.new(1,0)else aU.Button.Position=UDim2.fromOffset(6,46)end end +aJ:GetPropertyChangedSignal'Text':Connect(function()C:UpdateSearch(aJ.Text)end)C:GiveSignal(k.InputBegan:Connect( +function(aT:InputObject)if C.Unloaded then return end if k:GetFocusedTextBox()then return end if(typeof(C.ToggleKeybind) +=='table'and C.ToggleKeybind.Type=='KeyPicker'and aT.KeyCode.Name==C.ToggleKeybind.Value)or aT.KeyCode==C.ToggleKeybind +then C.Toggle()end end))C:GiveSignal(k.WindowFocused:Connect(function()C.IsRobloxFocused=true end))C:GiveSignal(k. +WindowFocusReleased:Connect(function()C.IsRobloxFocused=false end))return aR end local function av()if C.Unloaded then +return end local aw,ax=T(),T(true)for ay,az in x do if az.Type=='Dropdown'and az.SpecialType=='Player'then az:SetValues( +az.ExcludeLocalPlayer and ax or aw)end end end local function aw()if C.Unloaded then return end local ax=U()for ay,az in +x do if az.Type=='Dropdown'and az.SpecialType=='Team'then az:SetValues(ax)end end end C:GiveSignal(h.PlayerAdded: +Connect(av))C:GiveSignal(h.PlayerRemoving:Connect(av))C:GiveSignal(m.ChildAdded:Connect(aw))C:GiveSignal(m.ChildRemoved: +Connect(aw))o().Library=C return C end)()end,[6]=function()local aa,ab,ac=a(6)local ad return(function(...)local ae,af, +ag,ah=game:GetService'Players',game:GetService'TweenService',game:GetService'RunService',{}local function ai()local aj= +ae.LocalPlayer if not aj then return nil end local ak=aj:FindFirstChildOfClass'PlayerGui'if not ak then ak=Instance.new +'PlayerGui'ak.Name='PlayerGui'ak.Parent=aj end local al=Instance.new'ScreenGui'al.Name='ObsidianLoader'al.IgnoreGuiInset +=true al.ResetOnSpawn=false local am=Instance.new'Frame'am.Name='Root'am.Size=UDim2.fromScale(1,1)am. +BackgroundTransparency=1 am.BorderSizePixel=0 am.Parent=al local an=Instance.new'Frame'an.Name='Panel'an.Size=UDim2. +fromScale(0.32,0.14)an.Position=UDim2.fromScale(0.5,0.52)an.AnchorPoint=Vector2.new(0.5,0.5)an.BackgroundColor3=Color3. +fromRGB(14,18,26)an.BackgroundTransparency=0.08 an.BorderSizePixel=0 an.Parent=am local ao=Instance.new'UIStroke'ao. +Color=Color3.fromRGB(58,72,94)ao.Thickness=1 ao.Parent=an local ap=Instance.new'UICorner'ap.CornerRadius=UDim.new(0,10) +ap.Parent=an local aq=Instance.new'TextLabel'aq.Name='Title'aq.BackgroundTransparency=1 aq.Size=UDim2.new(1,-24,0,24)aq. +Position=UDim2.new(0,12,0,12)aq.Font=Enum.Font.GothamSemibold aq.Text='Obsidian'aq.TextSize=20 aq.TextColor3=Color3. +fromRGB(236,242,252)aq.TextXAlignment=Enum.TextXAlignment.Left aq.Parent=an local ar=Instance.new'TextLabel'ar.Name= +'Subtitle'ar.BackgroundTransparency=1 ar.Size=UDim2.new(1,-24,0,18)ar.Position=UDim2.new(0,12,0,40)ar.Font=Enum.Font. +Gotham ar.Text='Initializing UI...'ar.TextSize=14 ar.TextColor3=Color3.fromRGB(160,175,195)ar.TextXAlignment=Enum. +TextXAlignment.Left ar.Parent=an local as=Instance.new'Frame'as.Name='Bar'as.Size=UDim2.new(1,-24,0,6)as.Position=UDim2. +new(0,12,1,-20)as.BackgroundColor3=Color3.fromRGB(24,30,42)as.BackgroundTransparency=0.2 as.BorderSizePixel=0 as.Parent= +an local at=Instance.new'UICorner'at.CornerRadius=UDim.new(1,0)at.Parent=as local au=Instance.new'Frame'au.Name='Fill'au +.Size=UDim2.new(0.05,0,1,0)au.BackgroundColor3=Color3.fromRGB(72,165,255)au.BorderSizePixel=0 au.Parent=as local av= +Instance.new'UICorner'av.CornerRadius=UDim.new(1,0)av.Parent=au local aw=Instance.new'Frame'aw.Name='Shimmer'aw.Size= +UDim2.new(0.25,0,1,0)aw.Position=UDim2.new(-0.3,0,0,0)aw.BackgroundColor3=Color3.fromRGB(255,255,255)aw. +BackgroundTransparency=0.8 aw.BorderSizePixel=0 aw.Parent=au local ax=Instance.new'UIGradient'ax.Color=ColorSequence.new +{ColorSequenceKeypoint.new(0,Color3.fromRGB(255,255,255)),ColorSequenceKeypoint.new(1,Color3.fromRGB(255,255,255))}ax. +Transparency=NumberSequence.new{NumberSequenceKeypoint.new(0,1),NumberSequenceKeypoint.new(0.5,0.3), +NumberSequenceKeypoint.new(1,1)}ax.Rotation=20 ax.Parent=aw local ay=Instance.new'UIGradient'ay.Color=ColorSequence.new{ +ColorSequenceKeypoint.new(0,Color3.fromRGB(52,120,200)),ColorSequenceKeypoint.new(1,Color3.fromRGB(92,210,255))}ay. +Rotation=-15 ay.Parent=au al.Parent=ak return al,au,ar,an,ao,aw end function ah.show()local aj,ak,al,am,an,ao=ai()if not +aj then return{destroy=function()end,setProgress=function()end}end local ap,aq=0.05,true am.Position=UDim2.fromScale(0.5 +,0.56)am.BackgroundTransparency=1 an.Transparency=1 al.TextTransparency=1 ak.BackgroundTransparency=1 local function ar( +as,at)ap=math.clamp(as,0.05,0.98)if at then al.Text=at end af:Create(ak,TweenInfo.new(0.2,Enum.EasingStyle.Quad,Enum. +EasingDirection.Out),{Size=UDim2.new(ap,0,1,0)}):Play()end af:Create(am,TweenInfo.new(0.45,Enum.EasingStyle.Quint,Enum. +EasingDirection.Out),{Position=UDim2.fromScale(0.5,0.5),BackgroundTransparency=0.08}):Play()af:Create(an,TweenInfo.new( +0.45,Enum.EasingStyle.Quint,Enum.EasingDirection.Out),{Transparency=0}):Play()af:Create(al,TweenInfo.new(0.45,Enum. +EasingStyle.Quint,Enum.EasingDirection.Out),{TextTransparency=0}):Play()af:Create(ak,TweenInfo.new(0.45,Enum.EasingStyle +.Quint,Enum.EasingDirection.Out),{BackgroundTransparency=0}):Play()local as as=ag.Heartbeat:Connect(function()if not aq +then as:Disconnect()return end end)task.spawn(function()while aq do af:Create(an,TweenInfo.new(1.2,Enum.EasingStyle.Sine +,Enum.EasingDirection.InOut),{Thickness=2}):Play()task.wait(1.2)if not aq then break end af:Create(an,TweenInfo.new(1.2, +Enum.EasingStyle.Sine,Enum.EasingDirection.InOut),{Thickness=1}):Play()task.wait(1.2)end end)task.spawn(function()while +aq do ao.Position=UDim2.new(-0.3,0,0,0)af:Create(ao,TweenInfo.new(1,Enum.EasingStyle.Sine,Enum.EasingDirection.Out),{ +Position=UDim2.new(1.1,0,0,0)}):Play()task.wait(1.1)end end)return{setProgress=ar,destroy=function()aq=false af:Create( +am,TweenInfo.new(0.3,Enum.EasingStyle.Quad,Enum.EasingDirection.In),{Position=UDim2.fromScale(0.5,0.46), +BackgroundTransparency=1}):Play()af:Create(an,TweenInfo.new(0.3,Enum.EasingStyle.Quad,Enum.EasingDirection.In),{ +Transparency=1}):Play()af:Create(al,TweenInfo.new(0.25,Enum.EasingStyle.Quad,Enum.EasingDirection.In),{TextTransparency= +1}):Play()af:Create(ak,TweenInfo.new(0.25,Enum.EasingStyle.Quad,Enum.EasingDirection.In),{BackgroundTransparency=1}): +Play()task.wait(0.25)aj:Destroy()end}end return ah end)()end,[7]=function()local aa,ab,ac=a(7)local ad return(function( +...)local ae=ab.Parent return{ObsidianLibrary=ac(ae:WaitForChild'ObsidianLibrary'),Types=ac(ae:WaitForChild +'ObsidianLibrary.d'),ObsidianUI=ae:WaitForChild'ObsidianUI'}end)()end,[8]=function()local aa,ab,ac=a(8)local ad return( +function(...)local ae=(cloneref or clonereference or function(ae:any)return ae end)local af:CoreGui,ag:Players,ah: +RunService,ai:SoundService,aj:UserInputService,ak:TextService,al:Teams,am:TweenService,an,ao,ap=ae(game:GetService +'CoreGui'),ae(game:GetService'Players'),ae(game:GetService'RunService'),ae(game:GetService'SoundService'),ae(game: +GetService'UserInputService'),ae(game:GetService'TextService'),ae(game:GetService'Teams'),ae(game:GetService +'TweenService'),getgenv or function()return shared end,setclipboard or nil,protectgui or(syn and syn.protect_gui)or +function()end local aq,ar=gethui or function()return af end,ag.LocalPlayer or ag.PlayerAdded:Wait()local as,at,au,av,aw, +ax,ay,az=ae(ar:GetMouse()),{},{},{},{},{},[[https://raw.githubusercontent.com/deividcomsono/Obsidian/refs/heads/main/]], +{}local aA={TransparencyTexture={RobloxId=139785960036434,Path='Obsidian/assets/TransparencyTexture.png',URL=ay.. +'assets/TransparencyTexture.png',Id=nil},SaturationMap={RobloxId=4155801252,Path='Obsidian/assets/SaturationMap.png',URL +=ay..'assets/SaturationMap.png',Id=nil}}do local function aB(aC:string,aD:boolean?)if not isfolder or not makefolder +then return end local aE,aF=aC:split'/',''if aD then table.remove(aE,#aE)end for aG,aH in ipairs(aE)do if not isfolder( +aF..aH)then makefolder(aF..aH)end aF=aF..aH..'/'end return aF end function az.AddAsset(aC:string,aD:number,aE:string,aF: +boolean?)if aA[aC]~=nil then error(string.format('Asset %q already exists',aC))end assert(typeof(aD)=='number', +'RobloxAssetId must be a number')aA[aC]={RobloxId=aD,Path=string.format('Obsidian/custom_assets/%s',aC),URL=aE,Id=nil}az +.DownloadAsset(aC,aF)end function az.GetAsset(aC:string)if not aA[aC]then return nil end local aD=aA[aC]if aD.Id then +return aD.Id end local aE=string.format('rbxassetid://%s',aD.RobloxId)if getcustomasset then local aF,aG=pcall( +getcustomasset,aD.Path)if aF and aG then aE=aG end end aD.Id=aE return aE end function az.DownloadAsset(aC:string,aD: +boolean?)if not getcustomasset or not writefile or not isfile then return false,'missing functions'end local aE=aA[aC] +aB(aE.Path,true)if aD~=true and isfile(aE.Path)then return true,nil end local aF,aG=pcall(function()writefile(aE.Path, +game:HttpGet(aE.URL))end)return aF,aG end for aC,aD in aA do az.DownloadAsset(aC)end end local aB={LocalPlayer=ar, +DevicePlatform=nil,IsMobile=false,IsRobloxFocused=true,ScreenGui=nil,SearchText='',Searching=false,GlobalSearch=false, +LastSearchTab=nil,ActiveTab=nil,Tabs={},TabButtons={},DependencyBoxes={},KeybindFrame=nil,KeybindContainer=nil, +KeybindToggles={},Notifications={},ToggleKeybind=Enum.KeyCode.RightControl,TweenInfo=TweenInfo.new(0.1,Enum.EasingStyle. +Quad,Enum.EasingDirection.Out),NotifyTweenInfo=TweenInfo.new(0.25,Enum.EasingStyle.Quad,Enum.EasingDirection.Out), +Toggled=false,Unloaded=false,Labels=at,Buttons=au,Toggles=av,Options=aw,NotifySide='Right',ShowCustomCursor=true, +ForceCheckbox=false,ShowToggleFrameInKeybinds=true,NotifyOnError=false,ForceTextIcons=false,CantDragForced=false,Signals +={},UnloadSignals={},OriginalMinSize=Vector2.new(480,360),MinSize=Vector2.new(480,360),DPIScale=1,CornerRadius=4, +IsLightTheme=false,Scheme={BackgroundColor=Color3.fromRGB(15,15,15),MainColor=Color3.fromRGB(25,25,25),AccentColor= +Color3.fromRGB(125,85,255),OutlineColor=Color3.fromRGB(40,40,40),FontColor=Color3.new(1,1,1),Font=Font.fromEnum(Enum. +Font.Code),RedColor=Color3.fromRGB(255,50,50),DarkColor=Color3.new(0,0,0),WhiteColor=Color3.new(1,1,1)},Registry={}, +Scales={},ImageManager=az}if ah:IsStudio()then if aj.TouchEnabled and not aj.MouseEnabled then aB.IsMobile=true aB. +OriginalMinSize=Vector2.new(480,240)else aB.IsMobile=false aB.OriginalMinSize=Vector2.new(480,360)end else pcall( +function()aB.DevicePlatform=aj:GetPlatform()end)aB.IsMobile=(aB.DevicePlatform==Enum.Platform.Android or aB. +DevicePlatform==Enum.Platform.IOS)aB.OriginalMinSize=aB.IsMobile and Vector2.new(480,240)or Vector2.new(480,360)end +local aC,aD,aE,aF,aG={Frame={BorderSizePixel=0},ImageLabel={BackgroundTransparency=1,BorderSizePixel=0},ImageButton={ +AutoButtonColor=false,BorderSizePixel=0},ScrollingFrame={BorderSizePixel=0},TextLabel={BorderSizePixel=0,FontFace='Font' +,RichText=true,TextColor3='FontColor'},TextButton={AutoButtonColor=false,BorderSizePixel=0,FontFace='Font',RichText=true +,TextColor3='FontColor'},TextBox={BorderSizePixel=0,FontFace='Font',PlaceholderColor3=function()local aC,aD,aE=aB.Scheme +.FontColor:ToHSV()return Color3.fromHSV(aC,aD,aE/2)end,Text='',TextColor3='FontColor'},UIListLayout={SortOrder=Enum. +SortOrder.LayoutOrder},UIStroke={ApplyStrokeMode=Enum.ApplyStrokeMode.Border},Window={Title='No Title',Footer= +'No Footer',Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(720,600),IconSize=UDim2.fromOffset(30,30),AutoShow=true +,Center=true,Resizable=true,SearchbarSize=UDim2.fromScale(1,1),GlobalSearch=false,CornerRadius=4,NotifySide='Right', +ShowCustomCursor=true,Font=Enum.Font.Code,ToggleKeybind=Enum.KeyCode.RightControl,MobileButtonsSide='Left', +UnlockMouseWhileOpen=true,EnableSidebarResize=false,EnableCompacting=true,DisableCompactingSnap=false,SidebarCompacted= +false,MinContainerWidth=256,MinSidebarWidth=128,SidebarCompactWidth=48,SidebarCollapseThreshold=0.5, +CompactWidthActivation=128},Toggle={Text='Toggle',Default=false,Callback=function()end,Changed=function()end,Risky=false +,Disabled=false,Visible=true},Input={Text='Input',Default='',Finished=false,Numeric=false,ClearTextOnFocus=true, +Placeholder='',AllowEmpty=true,EmptyReset='---',Callback=function()end,Changed=function()end,Disabled=false,Visible=true +},Slider={Text='Slider',Default=0,Min=0,Max=100,Rounding=0,Prefix='',Suffix='',Callback=function()end,Changed=function() +end,Disabled=false,Visible=true},Dropdown={Values={},DisabledValues={},Multi=false,MaxVisibleDropdownItems=8,Callback= +function()end,Changed=function()end,Disabled=false,Visible=true},Viewport={Object=nil,Camera=nil,Clone=true,AutoFocus= +true,Interactive=false,Height=200,Visible=true},Image={Image='',Transparency=0,BackgroundTransparency=0,Color=Color3. +new(1,1,1),RectOffset=Vector2.zero,RectSize=Vector2.zero,ScaleType=Enum.ScaleType.Fit,Height=200,Visible=true},Video={ +Video='',Looped=false,Playing=false,Volume=1,Height=200,Visible=true},UIPassthrough={Instance=nil,Height=24,Visible=true +},KeyPicker={Text='KeyPicker',Default='None',DefaultModifiers={},Mode='Toggle',Modes={'Always','Toggle','Hold'}, +SyncToggleState=false,Callback=function()end,ChangedCallback=function()end,Changed=function()end,Clicked=function()end}, +ColorPicker={Default=Color3.new(1,1,1),Callback=function()end,Changed=function()end}},{Bottom={0,1},Right={1,0}},{Left={ +0.5,1},Right={0.5,1}},{RedColor='Red',WhiteColor='White',DarkColor='Dark'},{Red='RedColor',White='WhiteColor',Dark= +'DarkColor'}local function aH(aI)if not aI then return nil end local aJ=aF[aI]if aJ and aB.Scheme[aJ]~=nil then aB. +Scheme[aI]=aB.Scheme[aJ]aB.Scheme[aJ]=nil return aB.Scheme[aI]end local aK=aG[aI]if aK and aB.Scheme[aK]~=nil then warn( +string.format('Scheme Value %q is deprecated, please use %q instead.',aI,aK))return aB.Scheme[aK]end return aB.Scheme[aI +]end local function aI(aJ,aK,aL)local aM=Instance.new'BindableEvent'local aN=aJ:Once(function(...)if not aL or typeof(aL +)=='function'and aL(...)then aM:Fire(true)else aM:Fire(false)end end)task.delay(aK,function()aN:Disconnect()aM:Fire( +false)end)local aO=aM.Event:Wait()aM:Destroy()return aO end local function aJ(aK:InputObject,aL:boolean?)return aK. +UserInputType==Enum.UserInputType.MouseButton1 or(aL==true and aK.UserInputType==Enum.UserInputType.MouseButton2)or aK. +UserInputType==Enum.UserInputType.Touch end local function aK(aL:InputObject,aM:boolean?)return aJ(aL,aM)and aL. +UserInputState==Enum.UserInputState.Begin and aB.IsRobloxFocused end local function aL(aM:InputObject)return(aM. +UserInputType==Enum.UserInputType.MouseMovement or aM.UserInputType==Enum.UserInputType.Touch)and aM.UserInputState== +Enum.UserInputState.Change end local function aM(aN:InputObject,aO:boolean?)return aJ(aN,aO)and(aN.UserInputState==Enum. +UserInputState.Begin or aN.UserInputState==Enum.UserInputState.Change)and aB.IsRobloxFocused end local function aN(aO:{[ +any]:any})local aP=0 for aQ,aR in aO do aP+=1 end return aP end local function aO(aP:TweenBase)if not(aP and aP. +PlaybackState==Enum.PlaybackState.Playing)then return end aP:Cancel()end local function aP(aR:string)return aR:match +'^%s*(.-)%s*$'end local function aR(aS,aT)assert(aT>=0,'Invalid rounding number.')if aT==0 then return math.floor(aS)end +return tonumber(string.format('%.'..aT..'f',aS))end local function aS(aT:boolean?)local aU=ag:GetPlayers()if aT then +local aV=table.find(aU,ar)if aV then table.remove(aU,aV)end end table.sort(aU,function(aV,aW)return aV.Name:lower()0 return aX end local function aV(aW)for aX,aY in aW.Elements do aY.Holder.Visible=typeof(aY.Visible)== +'boolean'and aY.Visible or true if aY.SubButton then aY.Base.Visible=aY.Visible aY.SubButton.Base.Visible=aY.SubButton. +Visible end end aW:Resize()aW.Holder.Visible=true for aX,aY in aW.DependencyBoxes do if not aY.Visible then continue end +aV(aY)end end local function aW(aX,aY)if not aX then return end local aZ=false for a_,a0 in aX.Groupboxes do local a1=0 +for a2,a3 in a0.Elements do if a3.Type=='Divider'then a3.Holder.Visible=false continue elseif a3.SubButton then local a4 +=false if a3.Text:lower():match(aY)and a3.Visible then a4=true else a3.Base.Visible=false end if a3.SubButton.Text: +lower():match(aY)and a3.SubButton.Visible then a4=true else a3.SubButton.Base.Visible=false end a3.Holder.Visible=a4 if +a4 then a1+=1 end continue end if a3.Text and a3.Text:lower():match(aY)and a3.Visible then a3.Holder.Visible=true a1+=1 +else a3.Holder.Visible=false end end for a2,a3 in a0.DependencyBoxes do if not a3.Visible then continue end a1+=aU(a3,aY +)end if a1>0 then a0:Resize()aZ=true end a0.BoxHolder.Visible=a1>0 end for a_,a0 in aX.Tabboxes do local a1,a2=0,{}for +a3,a4 in a0.Tabs do a2[a4]=0 for a5,a6 in a4.Elements do if a6.Type=='Divider'then a6.Holder.Visible=false continue +elseif a6.SubButton then local a7=false if a6.Text:lower():match(aY)and a6.Visible then a7=true else a6.Base.Visible= +false end if a6.SubButton.Text:lower():match(aY)and a6.SubButton.Visible then a7=true else a6.SubButton.Base.Visible= +false end a6.Holder.Visible=a7 if a7 then a2[a4]+=1 end continue end if a6.Text and a6.Text:lower():match(aY)and a6. +Visible then a6.Holder.Visible=true a2[a4]+=1 else a6.Holder.Visible=false end end for a5,a6 in a4.DependencyBoxes do if +not a6.Visible then continue end a2[a4]+=aU(a6,aY)end end for a3,a4 in a2 do a3.ButtonHolder.Visible=a4>0 if a4>0 then +a1+=1 aZ=true if a0.ActiveTab==a3 then a3:Resize()elseif a0.ActiveTab and a2[a0.ActiveTab]==0 then a3:Show()end end end +a0.BoxHolder.Visible=a1>0 end return aZ end local function aX(aY)if not aY then return end for aZ,a_ in aY.Groupboxes do +for a0,a1 in a_.Elements do a1.Holder.Visible=typeof(a1.Visible)=='boolean'and a1.Visible or true if a1.SubButton then +a1.Base.Visible=a1.Visible a1.SubButton.Base.Visible=a1.SubButton.Visible end end for a0,a1 in a_.DependencyBoxes do if +not a1.Visible then continue end aV(a1)end a_:Resize()a_.BoxHolder.Visible=true end for aZ,a_ in aY.Tabboxes do for a0, +a1 in a_.Tabs do for a2,a3 in a1.Elements do a3.Holder.Visible=typeof(a3.Visible)=='boolean'and a3.Visible or true if a3 +.SubButton then a3.Base.Visible=a3.Visible a3.SubButton.Base.Visible=a3.SubButton.Visible end end for a2,a3 in a1. +DependencyBoxes do if not a3.Visible then continue end aV(a3)end a1.ButtonHolder.Visible=true end if a_.ActiveTab then +a_.ActiveTab:Resize()end a_.BoxHolder.Visible=true end end function aB.UpdateSearch(aY,aZ)aB.SearchText=aZ local a_={}if +aB.GlobalSearch then for a0,a1 in aB.Tabs do if typeof(a1)=='table'and not a1.IsKeyTab then table.insert(a_,a1)end end +elseif aB.LastSearchTab and typeof(aB.LastSearchTab)=='table'then table.insert(a_,aB.LastSearchTab)end for a0,a1 in +ipairs(a_)do aX(a1)end local a0=aZ:lower()if aP(a0)==''then aB.Searching=false aB.LastSearchTab=nil return end if not aB +.GlobalSearch and aB.ActiveTab and aB.ActiveTab.IsKeyTab then aB.Searching=false aB.LastSearchTab=nil return end aB. +Searching=true local a1={}if aB.GlobalSearch then a1=a_ if#a1==0 then for a2,a3 in aB.Tabs do if typeof(a3)=='table'and +not a3.IsKeyTab then table.insert(a1,a3)end end end elseif aB.ActiveTab then table.insert(a1,aB.ActiveTab)end local a2, +a3=false for a4,a5 in ipairs(a1)do local a6=aW(a5,a0)if a6 then if not a3 then a3=a5 end if a5==aB.ActiveTab then a2= +true end end end if aB.GlobalSearch then if a2 and aB.ActiveTab then aB.ActiveTab:RefreshSides()elseif a3 then local a4= +aZ task.defer(function()if aB.SearchText~=a4 then return end if aB.ActiveTab~=a3 then a3:Show()end end)end aB. +LastSearchTab=nil else aB.LastSearchTab=aB.ActiveTab end end function aB.AddToRegistry(aY,aZ,a_)aB.Registry[aZ]=a_ end +function aB.RemoveFromRegistry(aY,aZ)aB.Registry[aZ]=nil end function aB.UpdateColorsUsingRegistry(aY)for aZ,a_ in aB. +Registry do for a0,a1 in a_ do local a2=aH(a1)if a2 or typeof(a1)=='function'then aZ[a0]=a2 or a1()end end end end +function aB.SetDPIScale(aY,aZ:number)aB.DPIScale=aZ/100 aB.MinSize=aB.OriginalMinSize*aB.DPIScale for a_,a0 in aB.Scales +do a0.Scale=aB.DPIScale end for a_,a0 in aw do if a0.Type=='Dropdown'then a0:RecalculateListSize()end end for a_,a0 in +aB.Notifications do a0:Resize()end end function aB.GiveSignal(aY,aZ:RBXScriptConnection|RBXScriptSignal)local a_=typeof( +aZ)if aZ and(a_=='RBXScriptConnection'or a_=='RBXScriptSignal')then table.insert(aB.Signals,aZ)end return aZ end +function IsValidCustomIcon(aY:string)return typeof(aY)=='string'and(aY:match'rbxasset'or aY:match +'roblox%.com/asset/%?id='or aY:match'rbxthumb://type=')end type Icon={Url:string,Id:number,IconName:string, +ImageRectOffset:Vector2,ImageRectSize:Vector2}type IconModule={Icons:{string},GetAsset:(Name:string)->Icon?}local aY,aZ, +a_={Url='rbxasset://textures/ui/GuiImagePlaceholder.png',ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom= +true},pcall(function()return(loadstring(game:HttpGet +[[https://raw.githubusercontent.com/deividcomsono/lucide-roblox-direct/refs/heads/main/source.lua]])::()->IconModule)() +end)function aB.GetIcon(a0,a1:string)if not aZ then return end local a2,a3=pcall(a_.GetAsset,a1)if not a2 then return +end return a3 end function aB.GetCustomIcon(a0,a1:string)if not IsValidCustomIcon(a1)then return aB:GetIcon(a1)else +return{Url=a1,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=true}end end function aB.Validate(a0,a1:{[ +string]:any},a2:{[string]:any}):{[string]:any}if typeof(a1)~='table'then return a2 end for a3,a4 in a2 do if typeof(a3) +=='number'then continue end if typeof(a4)=='table'then a1[a3]=aB:Validate(a1[a3],a4)elseif a1[a3]==nil then a1[a3]=a4 +end end return a1 end local function a0(a1:{[string]:any},a2:GuiObject)local a3=aB.Registry[a2]or{}for a4,a5 in a1 do if +a3[a4]then a3[a4]=nil elseif a4~='Text'then local a6=aH(a5)if a6 or typeof(a5)=='function'then a3[a4]=a5 a5=a6 or a5() +end end a2[a4]=a5 end if aN(a3)>0 then aB.Registry[a2]=a3 end end local function a1(a2:string,a3:{[string]:any}):any +local a4=Instance.new(a2)if aC[a2]then a0(aC[a2],a4)end a0(a3,a4)if a3.Parent and not a3.ZIndex then pcall(function()a4. +ZIndex=a3.Parent.ZIndex end)end return a4 end local function a2(a3:Instance,a4:Instance|(()->Instance))local a5,a6= +pcall(function()if not a4 then a4=af end local a5 if typeof(a4)=='function'then a5=a4()else a5=a4 end a3.Parent=a5 end) +if not(a5 and a3.Parent)then a3.Parent=aB.LocalPlayer:WaitForChild('PlayerGui',math.huge)end end local function a3(a4: +Instance,a5:boolean?)if a5 then a2(a4,af)return end pcall(ap,a4)a2(a4,aq)end local a4=a1('ScreenGui',{Name='Obsidian', +DisplayOrder=999,ResetOnSpawn=false})a3(a4)aB.ScreenGui=a4 a4.DescendantRemoving:Connect(function(a5)aB: +RemoveFromRegistry(a5)end)local a5,a6,a7=(a1('TextButton',{BackgroundTransparency=1,Modal=false,Size=UDim2.fromScale(0,0 +),AnchorPoint=Vector2.zero,Text='',ZIndex=-999,Parent=a4}))do a6=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5), +BackgroundColor3='WhiteColor',Size=UDim2.fromOffset(9,1),Visible=false,ZIndex=999,Parent=a4})a1('Frame',{AnchorPoint= +Vector2.new(0.5,0.5),BackgroundColor3='DarkColor',Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998, +Parent=a6})local a8=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Position=UDim2.fromScale( +0.5,0.5),Size=UDim2.fromOffset(1,9),Parent=a6})a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='DarkColor' +,Position=UDim2.fromScale(0.5,0.5),Size=UDim2.new(1,2,1,2),ZIndex=998,Parent=a8})a7=a1('ImageLabel',{AnchorPoint=Vector2 +.new(0.5,0.5),BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0.5),Size=UDim2.fromOffset(20,20),ZIndex=1000, +Visible=false,Parent=a6})end local a8,a9 do a8=a1('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundTransparency=1, +Position=UDim2.new(1,-6,0,6),Size=UDim2.new(0,300,1,-6),Parent=a4})table.insert(aB.Scales,a1('UIScale',{Parent=a8}))a9= +a1('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,8),Parent=a8})end function aB. +ResetCursorIcon(b)a7.Visible=false a7.Size=UDim2.fromOffset(20,20)end function aB.ChangeCursorIcon(b,ba:string)if not ba +or ba==''then aB:ResetCursorIcon()return end local bb=aB:GetCustomIcon(ba)assert(bb, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])a7.Visible=true a7.Image=bb.Url a7. +ImageRectOffset=bb.ImageRectOffset a7.ImageRectSize=bb.ImageRectSize end function aB.ChangeCursorIconSize(b,ba:UDim2) +assert(typeof(ba)=='UDim2','UDim2 expected.')a7.Size=ba end function aB.GetBetterColor(b,ba:Color3,bb:number):Color3 bb= +bb*(aB.IsLightTheme and-4 or 2)return Color3.fromRGB(math.clamp(ba.R*255+bb,0,255),math.clamp(ba.G*255+bb,0,255),math. +clamp(ba.B*255+bb,0,255))end function aB.GetLighterColor(b,ba:Color3):Color3 local bb,bc,bd=ba:ToHSV()return Color3. +fromHSV(bb,math.max(0,bc-0.1),math.min(1,bd+0.1))end function aB.GetDarkerColor(b,ba:Color3):Color3 local bb,bc,bd=ba: +ToHSV()return Color3.fromHSV(bb,bc,bd/2)end function aB.GetKeyString(b,ba:Enum.KeyCode)if ba.EnumType==Enum.KeyCode and +ba.Value>33 and ba.Value<127 then return string.char(ba.Value)end return ba.Name end function aB.GetTextBounds(b,ba: +string,bb:Font,bc:number,bd:number?):(number,number)local be=Instance.new'GetTextBoundsParams'be.Text=ba be.RichText= +true be.Font=bb be.Size=bc be.Width=bd or workspace.CurrentCamera.ViewportSize.X-32 local bf=ak:GetTextBoundsAsync(be) +return bf.X,bf.Y end function aB.MouseIsOverFrame(b,ba:GuiObject,bb:Vector2):boolean local bc,bd=ba.AbsolutePosition,ba. +AbsoluteSize return bb.X>=bc.X and bb.X<=bc.X+bd.X and bb.Y>=bc.Y and bb.Y<=bc.Y+bd.Y end function aB.SafeCallback(b,ba: +(...any)->...any,...:any)if not(ba and typeof(ba)=='function')then return end local bb=table.pack(xpcall(ba,function(bb) +task.defer(error,debug.traceback(bb,2))if aB.NotifyOnError then aB:Notify(bb)end return bb end,...))if not bb[1]then +return nil end return table.unpack(bb,2,bb.n)end function aB.MakeDraggable(b,ba:GuiObject,bb:GuiObject,bc:boolean?,bd: +boolean?)local be,bf,bg,bh=false bb.InputBegan:Connect(function(bi:InputObject)if not aK(bi)or bd and aB.CantDragForced +then return end bf=bi.Position bg=ba.Position be=true bh=bi.Changed:Connect(function()if bi.UserInputState~=Enum. +UserInputState.End then return end be=false if bh and bh.Connected then bh:Disconnect()bh=nil end end)end)aB:GiveSignal( +aj.InputChanged:Connect(function(bi:InputObject)if(not bc and not aB.Toggled)or(bd and aB.CantDragForced)or not(a4 and +a4.Parent)then be=false if bh and bh.Connected then bh:Disconnect()bh=nil end return end if be and aL(bi)then local bj= +bi.Position-bf ba.Position=UDim2.new(bg.X.Scale,bg.X.Offset+bj.X,bg.Y.Scale,bg.Y.Offset+bj.Y)end end))end function aB. +MakeResizable(b,ba:GuiObject,bb:GuiObject,bc:(()->())?)local bd,be,bf,bg=false bb.InputBegan:Connect(function(bh: +InputObject)if not aK(bh)then return end be=bh.Position bf=ba.Size bd=true bg=bh.Changed:Connect(function()if bh. +UserInputState~=Enum.UserInputState.End then return end bd=false if bg and bg.Connected then bg:Disconnect()bg=nil end +end)end)aB:GiveSignal(aj.InputChanged:Connect(function(bh:InputObject)if not ba.Visible or not(a4 and a4.Parent)then bd= +false if bg and bg.Connected then bg:Disconnect()bg=nil end return end if bd and aL(bh)then local bi=bh.Position-be ba. +Size=UDim2.new(bf.X.Scale,math.clamp(bf.X.Offset+bi.X,aB.MinSize.X,math.huge),bf.Y.Scale,math.clamp(bf.Y.Offset+bi.Y,aB. +MinSize.Y,math.huge))if bc then aB:SafeCallback(bc)end end end))end function aB.MakeCover(b,ba:GuiObject,bb:string)local +bc,bd=aD[bb]or{0,0},aE[bb]or{1,0.5}local be=a1('Frame',{AnchorPoint=Vector2.new(bc[1],bc[2]),BackgroundColor3=ba. +BackgroundColor3,Position=UDim2.fromScale(bc[1],bc[2]),Size=UDim2.fromScale(bd[1],bd[2]),Parent=ba})return be end +function aB.MakeLine(b,ba:GuiObject,bb)local bc=a1('Frame',{AnchorPoint=bb.AnchorPoint or Vector2.zero,BackgroundColor3= +'OutlineColor',Position=bb.Position,Size=bb.Size,ZIndex=bb.ZIndex or ba.ZIndex,Parent=ba})return bc end function aB. +AddOutline(b,ba:GuiObject)local bb,bc=a1('UIStroke',{Color='OutlineColor',Thickness=1,ZIndex=2,Parent=ba}),a1('UIStroke' +,{Color='DarkColor',Thickness=1.5,ZIndex=1,Parent=ba})return bb,bc end function aB.AddBlank(b,ba:GuiObject,bb:UDim2) +return a1('Frame',{BackgroundTransparency=1,Size=bb or UDim2.fromScale(0,0),Parent=ba})end function aB.MakeOutline(b,ba: +GuiObject,bb:number?,bc:number?)warn[[Obsidian:MakeOutline is deprecated, please use Obsidian:AddOutline instead.]]local +bd=a1('Frame',{BackgroundColor3='DarkColor',Position=UDim2.fromOffset(-2,-2),Size=UDim2.new(1,4,1,4),ZIndex=bc,Parent=ba +})local be=a1('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(1,1),Size=UDim2.new(1,-2,1,-2),ZIndex= +bc,Parent=bd})if bb and bb>0 then a1('UICorner',{CornerRadius=UDim.new(0,bb+1),Parent=bd})a1('UICorner',{CornerRadius= +UDim.new(0,bb),Parent=be})end return bd,be end function aB.AddDraggableLabel(b,ba:string)local bb,bc={},a1('TextLabel',{ +AutomaticSize=Enum.AutomaticSize.XY,BackgroundColor3='BackgroundColor',Size=UDim2.fromOffset(0,0),Position=UDim2. +fromOffset(6,6),Text=ba,TextSize=15,ZIndex=10,Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent= +bc})a1('UIPadding',{PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),PaddingTop=UDim. +new(0,6),Parent=bc})table.insert(aB.Scales,a1('UIScale',{Parent=bc}))aB:AddOutline(bc)aB:MakeDraggable(bc,bc,true)bb. +Label=bc function bb.SetText(bd,be:string)bc.Text=be end function bb.SetVisible(bd,be:boolean)bc.Visible=be end return +bb end function aB.AddDraggableButton(b,ba:string,bb,bc:boolean?)local bd,be={},a1('TextButton',{BackgroundColor3= +'BackgroundColor',Position=UDim2.fromOffset(6,6),TextSize=16,ZIndex=10,Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0 +,aB.CornerRadius),Parent=be})if not bc then table.insert(aB.Scales,a1('UIScale',{Parent=be}))end aB:AddOutline(be)be. +MouseButton1Click:Connect(function()aB:SafeCallback(bb,bd)end)aB:MakeDraggable(be,be,true)bd.Button=be function bd. +SetText(bf,bg:string)local bh,bi=aB:GetTextBounds(bg,aB.Scheme.Font,16)be.Text=bg be.Size=UDim2.fromOffset(bh*2,bi*2)end +bd:SetText(ba)return bd end function aB.AddDraggableMenu(b,ba:string)local bb=a1('Frame',{AutomaticSize=Enum. +AutomaticSize.XY,BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(0,0),ZIndex=10, +Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=bb})table.insert(aB.Scales,a1('UIScale',{ +Parent=bb}))aB:AddOutline(bb)aB:MakeLine(bb,{Position=UDim2.fromOffset(0,34),Size=UDim2.new(1,0,0,1)})local bc=a1( +'TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Text=ba,TextSize=15,TextXAlignment=Enum.TextXAlignment. +Left,Parent=bb})a1('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12),Parent=bc})local bd=a1('Frame',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=bb})a1('UIListLayout',{Padding +=UDim.new(0,7),Parent=bd})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0, +7),PaddingTop=UDim.new(0,7),Parent=bd})aB:MakeDraggable(bb,bc,true)return bb,bd end do local b=aB:AddDraggableLabel''b: +SetVisible(false)function aB.SetWatermark(ba,bb:string)warn +[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]b:SetText(bb)end function aB. +SetWatermarkVisibility(ba,bb:boolean)warn[[Watermark is deprecated, please use Library:AddDraggableLabel instead.]]b: +SetVisible(bb)end end local b function aB.AddContextMenu(ba,bb:GuiObject,bc:UDim2|(()->()),bd:{[number]:number}|(()->{}) +,be:number?,bf:((Active:boolean)->())?)local bg if be then bg=a1('ScrollingFrame',{AutomaticCanvasSize=be==2 and Enum. +AutomaticSize.Y or Enum.AutomaticSize.None,AutomaticSize=be==1 and Enum.AutomaticSize.Y or Enum.AutomaticSize.None, +BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,BottomImage= +'rbxasset://textures/ui/Scroll/scroll-middle.png',CanvasSize=UDim2.fromOffset(0,0),ScrollBarImageColor3='OutlineColor', +ScrollBarThickness=be==2 and 2 or 0,Size=typeof(bc)=='function'and bc()or bc,TopImage= +'rbxasset://textures/ui/Scroll/scroll-middle.png',Visible=false,ZIndex=10,Parent=a4})else bg=a1('Frame',{ +BackgroundColor3='BackgroundColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=typeof(bc)=='function'and bc()or +bc,Visible=false,ZIndex=10,Parent=a4})end table.insert(aB.Scales,a1('UIScale',{Parent=bg}))local bh={Active=false,Holder +=bb,Menu=bg,List=nil,Signal=nil,Size=bc}if be then bh.List=a1('UIListLayout',{Parent=bg})end function bh.Open(bi)if b== +bh then return elseif b then b:Close()end b=bh bh.Active=true if typeof(bd)=='function'then bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd()[1]),math.floor(bb.AbsolutePosition.Y+bd()[2]))else bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd[1]),math.floor(bb.AbsolutePosition.Y+bd[2]))end bg.Size=typeof(bh.Size)== +'function'and bh.Size()or bh.Size if typeof(bf)=='function'then aB:SafeCallback(bf,true)end bg.Visible=true bh.Signal=bb +:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if typeof(bd)=='function'then bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd()[1]),math.floor(bb.AbsolutePosition.Y+bd()[2]))else bg.Position=UDim2. +fromOffset(math.floor(bb.AbsolutePosition.X+bd[1]),math.floor(bb.AbsolutePosition.Y+bd[2]))end end)end function bh.Close +(bi)if b~=bh then return end bg.Visible=false if bh.Signal then bh.Signal:Disconnect()bh.Signal=nil end bh.Active=false +b=nil if typeof(bf)=='function'then aB:SafeCallback(bf,false)end end function bh.Toggle(bi)if bh.Active then bh:Close() +else bh:Open()end end function bh.SetSize(bi,bj)bh.Size=bj bg.Size=typeof(bj)=='function'and bj()or bj end return bh end +aB:GiveSignal(aj.InputBegan:Connect(function(ba:InputObject)if aB.Unloaded then return end if aK(ba,true)then local bb= +ba.Position if b and not(aB:MouseIsOverFrame(b.Menu,bb)or aB:MouseIsOverFrame(b.Holder,bb))then b:Close()end end end)) +local ba=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',BorderColor3= +'OutlineColor',BorderSizePixel=1,TextSize=14,TextWrapped=true,Visible=false,ZIndex=20,Parent=a4})a1('UIPadding',{ +PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,4),PaddingRight=UDim.new(0,4),PaddingTop=UDim.new(0,2),Parent=ba}) +table.insert(aB.Scales,a1('UIScale',{Parent=ba}))ba:GetPropertyChangedSignal'AbsolutePosition':Connect(function()if aB. +Unloaded then return end local bb,bc=aB:GetTextBounds(ba.Text,ba.FontFace,ba.TextSize,(workspace.CurrentCamera. +ViewportSize.X-ba.AbsolutePosition.X-8)/aB.DPIScale)ba.Size=UDim2.fromOffset(bb+8)end)local bb function aB.AddTooltip(bc +,bd:string,be:string,bf:GuiObject)local bg={Disabled=false,Hovering=false,Signals={}}local function bh()if bb==bf or(b +and aB:MouseIsOverFrame(b.Menu,as))or(bg.Disabled and typeof(be)~='string')or(not bg.Disabled and typeof(bd)~='string') +then return end bb=bf ba.Text=bg.Disabled and be or bd ba.Visible=true while aB.Toggled and aB:MouseIsOverFrame(bf,as) +and not(b and aB:MouseIsOverFrame(b.Menu,as))do ba.Position=UDim2.fromOffset(as.X+(aB.ShowCustomCursor and 8 or 14),as.Y ++(aB.ShowCustomCursor and 8 or 12))ah.RenderStepped:Wait()end ba.Visible=false bb=nil end local function bi(bj: +RBXScriptConnection|RBXScriptSignal)local bk=typeof(bj)if bj and(bk=='RBXScriptConnection'or bk=='RBXScriptSignal')then +table.insert(bg.Signals,bj)end return bj end bi(bf.MouseEnter:Connect(bh))bi(bf.MouseMoved:Connect(bh))bi(bf.MouseLeave: +Connect(function()if bb~=bf then return end ba.Visible=false bb=nil end))function bg.Destroy(bj)for bk=#bg.Signals,1,-1 +do local bl=table.remove(bg.Signals,bk)if bl and bl.Connected then bl:Disconnect()end end if bb==bf then if ba then ba. +Visible=false end bb=nil end end table.insert(ax,ba)return bg end function aB.OnUnload(bc,bd)table.insert(aB. +UnloadSignals,bd)end function aB.Unload(bc)for bd=#aB.Signals,1,-1 do local be=table.remove(aB.Signals,bd)if be and be. +Connected then be:Disconnect()end end for bd,be in aB.UnloadSignals do aB:SafeCallback(be)end for bd,be in ax do aB: +SafeCallback(be.Destroy,be)end aB.Unloaded=true a4:Destroy()an().Library=nil end local bc,bd,be,bf,bg=aB:GetIcon'check', +aB:GetIcon'chevron-up',aB:GetIcon'move-diagonal-2',aB:GetIcon'key',aB:GetIcon'move'function aB.SetIconModule(bh,bi: +IconModule)aZ=true a_=bi bc=aB:GetIcon'check'bd=aB:GetIcon'chevron-up'be=aB:GetIcon'move-diagonal-2'bf=aB:GetIcon'key'bg +=aB:GetIcon'move'end local bh={}do local bi={}function bi.AddKeyPicker(bj,bk,bl)bl=aB:Validate(bl,aC.KeyPicker)local bm= +bj local bn,bo=bm.TextLabel,{Text=bl.Text,Value=bl.Default,Modifiers=bl.DefaultModifiers,DisplayValue=bl.Default,Toggled +=false,Mode=bl.Mode,SyncToggleState=bl.SyncToggleState,Callback=bl.Callback,ChangedCallback=bl.ChangedCallback,Changed= +bl.Changed,Clicked=bl.Clicked,Type='KeyPicker'}if bo.Mode=='Press'then assert(bm.Type=='Label', +[[KeyPicker with the mode 'Press' can be only applied on Labels.]])bo.SyncToggleState=false bl.Modes={'Press'}bl.Mode= +'Press'end if bo.SyncToggleState then bl.Modes={'Toggle','Hold'}if not table.find(bl.Modes,bl.Mode)then bl.Mode='Toggle' +end end local c,d,e,f,g=false,{MB1=Enum.UserInputType.MouseButton1,MB2=Enum.UserInputType.MouseButton2,MB3=Enum. +UserInputType.MouseButton3},{[Enum.UserInputType.MouseButton1]='MB1',[Enum.UserInputType.MouseButton2]='MB2',[Enum. +UserInputType.MouseButton3]='MB3'},{LAlt=Enum.KeyCode.LeftAlt,RAlt=Enum.KeyCode.RightAlt,LCtrl=Enum.KeyCode.LeftControl, +RCtrl=Enum.KeyCode.RightControl,LShift=Enum.KeyCode.LeftShift,RShift=Enum.KeyCode.RightShift,Tab=Enum.KeyCode.Tab, +CapsLock=Enum.KeyCode.CapsLock},{[Enum.KeyCode.LeftAlt]='LAlt',[Enum.KeyCode.RightAlt]='RAlt',[Enum.KeyCode.LeftControl] +='LCtrl',[Enum.KeyCode.RightControl]='RCtrl',[Enum.KeyCode.LeftShift]='LShift',[Enum.KeyCode.RightShift]='RShift',[Enum. +KeyCode.Tab]='Tab',[Enum.KeyCode.CapsLock]='CapsLock'}local h,i=function(h)return h.UserInputType==Enum.UserInputType. +Keyboard and g[h.KeyCode]~=nil end,function()local h={}for i,j in f do if table.find(h,i)then continue end if not aj: +IsKeyDown(j)then continue end table.insert(h,i)end return h end local j,k,l,m=function(j)if not(typeof(j)=='table'and +aN(j)>0)then return true end local k,l=i(),true for m,n in j do if table.find(k,n)then continue end l=false break end +return l end,function(j)if not j then return false end if e[j.UserInputType]~=nil then return aj:IsMouseButtonPressed(j. +UserInputType)and not aj:GetFocusedTextBox()elseif j.UserInputType==Enum.UserInputType.Keyboard then return aj: +IsKeyDown(j.KeyCode)and not aj:GetFocusedTextBox()else return false end end,function(j)local k={}for l,m in j do table. +insert(k,f[m])end return k end,function(j)if typeof(j)~='table'then return{}end local k={}for l,m in j do if not f[m] +then continue end table.insert(k,m)end return k end bo.Modifiers=m(bo.Modifiers)local n,o=a1('TextButton',{ +BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text=bo.Value, +TextSize=14,Parent=bn}),{Normal=bo.Mode~='Toggle'}do local p=a1('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1, +0,0,16),Text='',Visible=not bl.NoUI,Parent=aB.KeybindContainer})local q,r=a1('TextLabel',{AutomaticSize=Enum. +AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(0,1),Text='',TextSize=14,TextTransparency=0.5,Parent=p}), +a1('Frame',{AnchorPoint=Vector2.new(0,0.5),BackgroundColor3='MainColor',Position=UDim2.fromScale(0,0.5),Size=UDim2. +fromOffset(14,14),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=p})a1('UICorner',{CornerRadius=UDim.new(0,aB. +CornerRadius/2),Parent=r})a1('UIStroke',{Color='OutlineColor',Parent=r})local s=a1('ImageLabel',{Image=bc and bc.Url or +'',ImageColor3='FontColor',ImageRectOffset=bc and bc.ImageRectOffset or Vector2.zero,ImageRectSize=bc and bc. +ImageRectSize or Vector2.zero,ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=r}) +function o.Display(t,u)q.TextTransparency=u and 0 or 0.5 s.ImageTransparency=u and 0 or 1 end function o.SetText(t,u)q. +Text=u end function o.SetVisibility(t,u)p.Visible=u end function o.SetNormal(t,u)o.Normal=u p.Active=not u q.Position=u +and UDim2.fromOffset(0,0)or UDim2.fromOffset(22,0)r.Visible=not u end bo.DoClick=function(...)end p.MouseButton1Click: +Connect(function()if o.Normal then return end bo.Toggled=not bo.Toggled bo:DoClick()end)o.Holder=p o.Label=q o.Checkbox= +r o.Loaded=true table.insert(aB.KeybindToggles,o)end local p=aB:AddContextMenu(n,UDim2.fromOffset(62,0),function()return +{n.AbsoluteSize.X+1.5,0.5}end,1)bo.Menu=p local q={}for r,s in bl.Modes do local t,u={},a1('TextButton',{ +BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=s,TextSize=14,TextTransparency=0.5, +Parent=p.Menu})function t.Select(v)for w,x in q do x:Deselect()end bo.Mode=s u.BackgroundTransparency=0 u. +TextTransparency=0 p:Close()end function t.Deselect(v)bo.Mode=nil u.BackgroundTransparency=1 u.TextTransparency=0.5 end +u.MouseButton1Click:Connect(function()t:Select()end)if bo.Mode==s then t:Select()end q[s]=t end function bo.Display(r,s) +if aB.Unloaded then return end local t,u=aB:GetTextBounds(s or bo.DisplayValue,n.FontFace,n.TextSize,bn.AbsoluteSize.X)n +.Text=s or bo.DisplayValue n.Size=UDim2.fromOffset((t+9),(u+4))end function bo.Update(r)bo:Display()if bl.NoUI then +return end if bo.Mode=='Toggle'and bm.Type=='Toggle'and bm.Disabled then o:SetVisibility(false)return end local s,t=bo: +GetState(),aB.ShowToggleFrameInKeybinds and bo.Mode=='Toggle'if bo.SyncToggleState and bm.Value~=s then bm:SetValue(s) +end if o.Loaded then if t then o:SetNormal(false)else o:SetNormal(true)end o:SetText(('[%s] %s (%s)'):format(bo. +DisplayValue,bo.Text,bo.Mode))o:SetVisibility(true)o:Display(s)end end function bo.GetState(r)if bo.Mode=='Always'then +return true elseif bo.Mode=='Hold'then local s=bo.Value if s=='None'then return false end if not j(bo.Modifiers)then +return false end if d[s]~=nil then return aj:IsMouseButtonPressed(d[s])and not aj:GetFocusedTextBox()else return aj: +IsKeyDown(Enum.KeyCode[s])and not aj:GetFocusedTextBox()end else return bo.Toggled end end function bo.OnChanged(r,s)bo. +Changed=s end function bo.OnClick(r,s)bo.Clicked=s end function bo.DoClick(r)if bo.Mode=='Press'then if bo.Toggled and +bl.WaitForCallback==true then return end bo.Toggled=true end aB:SafeCallback(bo.Callback,bo.Toggled)aB:SafeCallback(bo. +Clicked,bo.Toggled)if bo.Mode=='Press'then bo.Toggled=false end end function bo.SetValue(r,s)local t,u,v=s[1],s[2],s[3] +local w,x=pcall(function()if t=='None'then t=nil return nil end if d[t]==nil then return Enum.KeyCode[t]end return d[t] +end)if t==nil then bo.Value='None'elseif w then bo.Value=t else bo.Value='Unknown'end bo.Modifiers=m(if typeof(v)== +'table'then v else bo.Modifiers)bo.DisplayValue=if aN(bo.Modifiers)>0 then(table.concat(bo.Modifiers,' + ')..' + '..bo. +Value)else bo.Value if q[u]then q[u]:Select()end local y=l(bo.Modifiers)aB:SafeCallback(bo.ChangedCallback,x,y)aB: +SafeCallback(bo.Changed,x,y)bo:Update()end function bo.SetText(r,s)o:SetText(s)bo:Update()end n.MouseButton1Click: +Connect(function()if c then return end c=true n.Text='...'n.Size=UDim2.fromOffset(29,18)local r,s={}local t=function()s= +aj.InputBegan:Wait()return aj:GetFocusedTextBox()~=nil end repeat task.wait()n.Text='...'n.Size=UDim2.fromOffset(29,18) +if t()then c=false bo:Update()return end if s.KeyCode==Enum.KeyCode.Escape then break end if h(s)then local u=false +repeat task.wait()if aj:IsKeyDown(s.KeyCode)then task.wait(0.075)if aj:IsKeyDown(s.KeyCode)then if not table.find(r,g[s. +KeyCode])then r[#r+1]=g[s.KeyCode]bo:Display(table.concat(r,' + ')..' + ...')end if t()then u=true break end if s. +KeyCode==Enum.KeyCode.Escape then break end if not h(s)then break end else if not table.find(r,g[s.KeyCode])then break +end end end until false if u then c=false bo:Update()return end end break until false local u='Unknown'if e[s. +UserInputType]~=nil then u=e[s.UserInputType]elseif s.UserInputType==Enum.UserInputType.Keyboard then u=s.KeyCode==Enum. +KeyCode.Escape and'None'or s.KeyCode.Name end r=if s.KeyCode==Enum.KeyCode.Escape or u=='Unknown'then{}else r bo.Toggled +=false bo:SetValue{u,bo.Mode,r}repeat task.wait()until not k(s)or aj:GetFocusedTextBox()c=false end)n.MouseButton2Click: +Connect(p.Toggle)aB:GiveSignal(aj.InputBegan:Connect(function(r:InputObject)if aB.Unloaded then return end if bo.Mode== +'Always'or bo.Value=='Unknown'or bo.Value=='None'or c or aj:GetFocusedTextBox()then return end local s,t,u=bo.Value,j(bo +.Modifiers),false if s and t==true and(e[r.UserInputType]==s or(r.UserInputType==Enum.UserInputType.Keyboard and r. +KeyCode.Name==s))then u=true end if bo.Mode=='Toggle'then if u then bo.Toggled=not bo.Toggled bo:DoClick()end elseif bo. +Mode=='Press'then if u then bo:DoClick()end end bo:Update()end))aB:GiveSignal(aj.InputEnded:Connect(function()if aB. +Unloaded then return end if bo.Value=='Unknown'or bo.Value=='None'or c or aj:GetFocusedTextBox()then return end bo: +Update()end))bo:Update()if bm.Addons then table.insert(bm.Addons,bo)end bo.Default=bo.Value bo.DefaultModifiers=table. +clone(bo.Modifiers or{})aw[bk]=bo return bj end local bj={}for bk=0,1,0.1 do table.insert(bj,ColorSequenceKeypoint.new( +bk,Color3.fromHSV(bk,1,1)))end function bi.AddColorPicker(bk,bl,bm)bm=aB:Validate(bm,aC.ColorPicker)local bn=bk local bo +,c=bn.TextLabel,{Value=bm.Default,Transparency=bm.Transparency or 0,Title=bm.Title,Callback=bm.Callback,Changed=bm. +Changed,Type='ColorPicker'}c.Hue,c.Sat,c.Vib=c.Value:ToHSV()local d=a1('TextButton',{BackgroundColor3=c.Value, +BorderColor3=aB:GetDarkerColor(c.Value),BorderSizePixel=1,Size=UDim2.fromOffset(18,18),Text='',Parent=bo})local e,f=a1( +'ImageLabel',{Image=az.GetAsset'TransparencyTexture',ImageTransparency=(1-c.Transparency),ScaleType=Enum.ScaleType.Tile, +Size=UDim2.fromScale(1,1),TileSize=UDim2.fromOffset(9,9),Parent=d}),aB:AddContextMenu(d,UDim2.fromOffset(bm.Transparency +and 256 or 234,0),function()return{0.5,d.AbsoluteSize.Y+1.5}end,1)f.List.Padding=UDim.new(0,8)c.ColorMenu=f a1( +'UIPadding',{PaddingBottom=UDim.new(0,6),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,6), +Parent=f.Menu})if typeof(c.Title)=='string'then a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,8),Text=c. +Title,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=f.Menu})end local g=a1('Frame',{BackgroundTransparency= +1,Size=UDim2.new(1,0,0,200),Parent=f.Menu})a1('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,Padding=UDim. +new(0,6),Parent=g})local h=a1('ImageButton',{BackgroundColor3=c.Value,Image=az.GetAsset'SaturationMap',Size=UDim2. +fromOffset(200,200),Parent=g})local i=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor',Size= +UDim2.fromOffset(6,6),Parent=h})a1('UICorner',{CornerRadius=UDim.new(1,0),Parent=i})a1('UIStroke',{Color='DarkColor', +Parent=i})local j=a1('TextButton',{Size=UDim2.fromOffset(16,200),Text='',Parent=g})a1('UIGradient',{Color=ColorSequence. +new(bj),Rotation=90,Parent=j})local k,l,m,n=(a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor', +BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,c.Hue),Size=UDim2.new(1,2,0,1),Parent=j}))if bm. +Transparency then l=a1('ImageButton',{Image=az.GetAsset'TransparencyTexture',ScaleType=Enum.ScaleType.Tile,Size=UDim2. +fromOffset(16,200),TileSize=UDim2.fromOffset(8,8),Parent=g})m=a1('Frame',{BackgroundColor3=c.Value,Size=UDim2.fromScale( +1,1),Parent=l})a1('UIGradient',{Rotation=90,Transparency=NumberSequence.new{NumberSequenceKeypoint.new(0,0), +NumberSequenceKeypoint.new(1,1)},Parent=m})n=a1('Frame',{AnchorPoint=Vector2.new(0.5,0.5),BackgroundColor3='WhiteColor', +BorderColor3='DarkColor',BorderSizePixel=1,Position=UDim2.fromScale(0.5,c.Transparency),Size=UDim2.new(1,2,0,1),Parent=l +})end local o=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,20),Parent=f.Menu})a1('UIListLayout',{ +FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Padding=UDim.new(0,8),Parent=o}) +local p,q,r=a1('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus= +false,Size=UDim2.fromScale(1,1),Text='#??????',TextSize=14,Parent=o}),a1('TextBox',{BackgroundColor3='MainColor', +BorderColor3='OutlineColor',BorderSizePixel=1,ClearTextOnFocus=false,Size=UDim2.fromScale(1,1),Text='?, ?, ?',TextSize= +14,Parent=o}),aB:AddContextMenu(d,UDim2.fromOffset(93,0),function()return{d.AbsoluteSize.X+1.5,0.5}end,1)c.ContextMenu=r +do local function s(t,u)local v=a1('TextButton',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,21),Text=t,TextSize=14, +Parent=r.Menu})v.MouseButton1Click:Connect(function()aB:SafeCallback(u)r:Close()end)end s('Copy color',function()aB. +CopiedColor={c.Value,c.Transparency}end)c.SetValueRGB=function(...)end s('Paste color',function()c:SetValueRGB(aB. +CopiedColor[1],aB.CopiedColor[2])end)if ao then s('Copy Hex',function()ao(tostring(c.Value:ToHex()))end)s('Copy RGB', +function()ao(table.concat({math.floor(c.Value.R*255),math.floor(c.Value.G*255),math.floor(c.Value.B*255)},', '))end)end +end function c.SetHSVFromRGB(s,t)c.Hue,c.Sat,c.Vib=t:ToHSV()end function c.Display(s)if aB.Unloaded then return end c. +Value=Color3.fromHSV(c.Hue,c.Sat,c.Vib)d.BackgroundColor3=c.Value d.BorderColor3=aB:GetDarkerColor(c.Value)e. +ImageTransparency=(1-c.Transparency)h.BackgroundColor3=Color3.fromHSV(c.Hue,1,1)if m then m.BackgroundColor3=c.Value end +i.Position=UDim2.fromScale(c.Sat,1-c.Vib)k.Position=UDim2.fromScale(0.5,c.Hue)if n then n.Position=UDim2.fromScale(0.5,c +.Transparency)end p.Text='#'..c.Value:ToHex()q.Text=table.concat({math.floor(c.Value.R*255),math.floor(c.Value.G*255), +math.floor(c.Value.B*255)},', ')end function c.Update(s)c:Display()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c. +Changed,c.Value)end function c.OnChanged(s,t)c.Changed=t end function c.SetValue(s,t,u)if typeof(t)=='Color3'then c: +SetValueRGB(t,u)return end local v=Color3.fromHSV(t[1],t[2],t[3])c.Transparency=bm.Transparency and u or 0 c: +SetHSVFromRGB(v)c:Update()end function c.SetValueRGB(s,t,u)c.Transparency=bm.Transparency and u or 0 c:SetHSVFromRGB(t)c +:Update()end d.MouseButton1Click:Connect(f.Toggle)d.MouseButton2Click:Connect(r.Toggle)h.InputBegan:Connect(function(s: +InputObject)while aM(s)do local t=h.AbsolutePosition.X local u=t+h.AbsoluteSize.X local v,w=math.clamp(as.X,t,u),h. +AbsolutePosition.Y local x=w+h.AbsoluteSize.Y local y,z,A=math.clamp(as.Y,w,x),c.Sat,c.Vib c.Sat=(v-t)/(u-t)c.Vib=1-((y- +w)/(x-w))if c.Sat~=z or c.Vib~=A then c:Update()end ah.RenderStepped:Wait()end end)j.InputBegan:Connect(function(s: +InputObject)while aM(s)do local t=j.AbsolutePosition.Y local u=t+j.AbsoluteSize.Y local v,w=math.clamp(as.Y,t,u),c.Hue c +.Hue=(v-t)/(u-t)if c.Hue~=w then c:Update()end ah.RenderStepped:Wait()end end)if l then l.InputBegan:Connect(function(s: +InputObject)while aM(s)do local t,u=l.AbsolutePosition.Y,l.AbsolutePosition.Y+l.AbsoluteSize.Y local v,w=math.clamp(as.Y +,t,u),c.Transparency c.Transparency=(v-t)/(u-t)if c.Transparency~=w then c:Update()end ah.RenderStepped:Wait()end end) +end p.FocusLost:Connect(function(s)if not s then return end local t,u=pcall(Color3.fromHex,p.Text)if t and typeof(u)== +'Color3'then c.Hue,c.Sat,c.Vib=u:ToHSV()end c:Update()end)q.FocusLost:Connect(function(s)if not s then return end local +t,u,v=q.Text:match'(%d+),%s*(%d+),%s*(%d+)'if t and u and v then c:SetHSVFromRGB(Color3.fromRGB(t,u,v))end c:Update()end +)c:Display()if bn.Addons then table.insert(bn.Addons,c)end c.Default=c.Value aw[bl]=c return bk end bh.__index=bi bh. +__namecall=function(bk,bl,...)return bi[bl](...)end end local bi={}do local bj={}function bj.AddDivider(bk,bl)local bm= +bk local bn=bm.Container local bo=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,6),Parent=bn})if bl then +local c=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.X,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Text=bl, +TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Center,Parent=bo})local d,e=aB:GetTextBounds(bl,c. +FontFace,c.TextSize,c.AbsoluteSize.X)local f=d//2+10 a1('Frame',{AnchorPoint=Vector2.new(0,0.5),BackgroundColor3= +'MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0,0.5),Size=UDim2.new(0.5,-f,0,2), +Parent=bo})a1('Frame',{AnchorPoint=Vector2.new(1,0.5),BackgroundColor3='MainColor',BorderColor3='OutlineColor', +BorderSizePixel=1,Position=UDim2.fromScale(1,0.5),Size=UDim2.new(0.5,-f,0,2),Parent=bo})else a1('Frame',{AnchorPoint= +Vector2.new(0,0.5),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0 +,0.5),Size=UDim2.new(1,0,0,2),Parent=bo})end bm:Resize()table.insert(bm.Elements,{Holder=bo,Type='Divider'})end function +bj.AddLabel(bk,...)local bl,bm,bn,bo={},{},select(1,...),select(2,...)if typeof(bn)=='table'or typeof(bo)=='table'then +local c=typeof(bn)=='table'and bn or bo bl.Text=c.Text or''bl.DoesWrap=c.DoesWrap or false bl.Size=c.Size or 14 bl. +Visible=c.Visible or true bl.Idx=typeof(bo)=='table'and bn or nil else bl.Text=bn or''bl.DoesWrap=bo or false bl.Size=14 +bl.Visible=true bl.Idx=select(3,...)or nil end local c=bk local d,e=c.Container,{Text=bl.Text,DoesWrap=bl.DoesWrap, +Addons=bm,Visible=bl.Visible,Type='Label'}local f=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text +=e.Text,TextSize=bl.Size,TextWrapped=e.DoesWrap,TextXAlignment=c.IsKeyTab and Enum.TextXAlignment.Center or Enum. +TextXAlignment.Left,Parent=d})function e.SetVisible(g,h:boolean)e.Visible=h f.Visible=e.Visible c:Resize()end function e +.SetText(g,h:string)e.Text=h f.Text=h if e.DoesWrap then local i,j=aB:GetTextBounds(e.Text,f.FontFace,f.TextSize,f. +AbsoluteSize.X)f.Size=UDim2.new(1,0,0,j+4)end c:Resize()end if e.DoesWrap then local g,h=aB:GetTextBounds(e.Text,f. +FontFace,f.TextSize,f.AbsoluteSize.X)f.Size=UDim2.new(1,0,0,h+4)local i=f.AbsoluteSize f:GetPropertyChangedSignal +'AbsoluteSize':Connect(function()if f.AbsoluteSize==i then return end local j,k=aB:GetTextBounds(e.Text,f.FontFace,f. +TextSize,f.AbsoluteSize.X)f.Size=UDim2.new(1,0,0,k+4)i=f.AbsoluteSize c:Resize()end)else a1('UIListLayout',{ +FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding=UDim.new(0,6), +Parent=f})end c:Resize()e.TextLabel=f e.Container=d if not bl.DoesWrap then setmetatable(e,bh)end e.Holder=f table. +insert(c.Elements,e)if bl.Idx then at[bl.Idx]=e else table.insert(at,e)end return e end function bj.AddButton(bk,...) +local function bl(...)local bm,bn,bo={},select(1,...),select(2,...)if typeof(bn)=='table'or typeof(bo)=='table'then +local c=typeof(bn)=='table'and bn or bo bm.Text=c.Text or''bm.Func=c.Func or c.Callback or function()end bm.DoubleClick= +c.DoubleClick bm.Tooltip=c.Tooltip bm.DisabledTooltip=c.DisabledTooltip bm.Risky=c.Risky or false bm.Disabled=c.Disabled +or false bm.Visible=c.Visible or true bm.Idx=typeof(bo)=='table'and bn or nil else bm.Text=bn or''bm.Func=bo or function +()end bm.DoubleClick=false bm.Tooltip=nil bm.DisabledTooltip=nil bm.Risky=false bm.Disabled=false bm.Visible=true bm.Idx +=select(3,...)or nil end return bm end local bm,bn=bl(...),bk local bo,c=bn.Container,{Text=bm.Text,Func=bm.Func, +DoubleClick=bm.DoubleClick,Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip,TooltipTable=nil,Risky=bm.Risky, +Disabled=bm.Disabled,Visible=bm.Visible,Tween=nil,Type='Button'}local d=a1('Frame',{BackgroundTransparency=1,Size=UDim2. +new(1,0,0,21),Parent=bo})a1('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum. +UIFlexAlignment.Fill,Padding=UDim.new(0,9),Parent=d})local function e(f)local g=a1('TextButton',{Active=not f.Disabled, +BackgroundColor3=f.Disabled and'BackgroundColor'or'MainColor',Size=UDim2.fromScale(1,1),Text=f.Text,TextSize=14, +TextTransparency=0.4,Visible=f.Visible,Parent=d})local h=a1('UIStroke',{Color='OutlineColor',Transparency=f.Disabled and +0.5 or 0,Parent=g})return g,h end local function f(g)g.Base.MouseEnter:Connect(function()if g.Disabled then return end g +.Tween=am:Create(g.Base,aB.TweenInfo,{TextTransparency=0})g.Tween:Play()end)g.Base.MouseLeave:Connect(function()if g. +Disabled then return end g.Tween=am:Create(g.Base,aB.TweenInfo,{TextTransparency=0.4})g.Tween:Play()end)g.Base. +MouseButton1Click:Connect(function()if g.Disabled or g.Locked then return end if g.DoubleClick then g.Locked=true g.Base +.Text='Are you sure?'g.Base.TextColor3=aB.Scheme.AccentColor aB.Registry[g.Base].TextColor3='AccentColor'local h=aI(g. +Base.MouseButton1Click,0.5)g.Base.Text=g.Text g.Base.TextColor3=g.Risky and aB.Scheme.RedColor or aB.Scheme.FontColor aB +.Registry[g.Base].TextColor3=g.Risky and'RedColor'or'FontColor'if h then aB:SafeCallback(g.Func)end ah.RenderStepped: +Wait()g.Locked=false return end aB:SafeCallback(g.Func)end)end c.Base,c.Stroke=e(c)f(c)function c.AddButton(g,...)local +h=bl(...)local i={Text=h.Text,Func=h.Func,DoubleClick=h.DoubleClick,Tooltip=h.Tooltip,DisabledTooltip=h.DisabledTooltip, +TooltipTable=nil,Risky=h.Risky,Disabled=h.Disabled,Visible=h.Visible,Tween=nil,Type='SubButton'}c.SubButton=i i.Base,i. +Stroke=e(i)f(i)function i.UpdateColors(j)if aB.Unloaded then return end aO(i.Tween)i.Base.BackgroundColor3=i.Disabled +and aB.Scheme.BackgroundColor or aB.Scheme.MainColor i.Base.TextTransparency=i.Disabled and 0.8 or 0.4 i.Stroke. +Transparency=i.Disabled and 0.5 or 0 aB.Registry[i.Base].BackgroundColor3=i.Disabled and'BackgroundColor'or'MainColor' +end function i.SetDisabled(j,k:boolean)i.Disabled=k if i.TooltipTable then i.TooltipTable.Disabled=i.Disabled end i.Base +.Active=not i.Disabled i:UpdateColors()end function i.SetVisible(j,k:boolean)i.Visible=k i.Base.Visible=i.Visible bn: +Resize()end function i.SetText(j,k:string)i.Text=k i.Base.Text=k end if typeof(i.Tooltip)=='string'or typeof(i. +DisabledTooltip)=='string'then i.TooltipTable=aB:AddTooltip(i.Tooltip,i.DisabledTooltip,i.Base)i.TooltipTable.Disabled=i +.Disabled end if i.Risky then i.Base.TextColor3=aB.Scheme.RedColor aB.Registry[i.Base].TextColor3='RedColor'end i: +UpdateColors()if h.Idx then au[h.Idx]=i else table.insert(au,i)end return i end function c.UpdateColors(g)if aB.Unloaded +then return end aO(c.Tween)c.Base.BackgroundColor3=c.Disabled and aB.Scheme.BackgroundColor or aB.Scheme.MainColor c. +Base.TextTransparency=c.Disabled and 0.8 or 0.4 c.Stroke.Transparency=c.Disabled and 0.5 or 0 aB.Registry[c.Base]. +BackgroundColor3=c.Disabled and'BackgroundColor'or'MainColor'end function c.SetDisabled(g,h:boolean)c.Disabled=h if c. +TooltipTable then c.TooltipTable.Disabled=c.Disabled end c.Base.Active=not c.Disabled c:UpdateColors()end function c. +SetVisible(g,h:boolean)c.Visible=h d.Visible=c.Visible bn:Resize()end function c.SetText(g,h:string)c.Text=h c.Base.Text +=h end if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c +.DisabledTooltip,c.Base)c.TooltipTable.Disabled=c.Disabled end if c.Risky then c.Base.TextColor3=aB.Scheme.RedColor aB. +Registry[c.Base].TextColor3='RedColor'end c:UpdateColors()bn:Resize()c.Holder=d table.insert(bn.Elements,c)if bm.Idx +then au[bm.Idx]=c else table.insert(au,c)end return c end function bj.AddCheckbox(bk,bl,bm)bm=aB:Validate(bm,aC.Toggle) +local bn=bk local bo,c=bn.Container,{Text=bm.Text,Value=bm.Default,Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip +,TooltipTable=nil,Callback=bm.Callback,Changed=bm.Changed,Risky=bm.Risky,Disabled=bm.Disabled,Visible=bm.Visible,Addons= +{},Type='Toggle'}local d=a1('TextButton',{Active=not c.Disabled,BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text= +'',Visible=c.Visible,Parent=bo})local e=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(26,0),Size= +UDim2.new(1,-26,1,0),Text=c.Text,TextSize=14,TextTransparency=0.4,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})a1( +'UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Right,Padding= +UDim.new(0,6),Parent=e})local f=a1('Frame',{BackgroundColor3='MainColor',Size=UDim2.fromScale(1,1),SizeConstraint=Enum. +SizeConstraint.RelativeYY,Parent=d})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius/2),Parent=f})local g,h=a1( +'UIStroke',{Color='OutlineColor',Parent=f}),a1('ImageLabel',{Image=bc and bc.Url or'',ImageColor3='FontColor', +ImageRectOffset=bc and bc.ImageRectOffset or Vector2.zero,ImageRectSize=bc and bc.ImageRectSize or Vector2.zero, +ImageTransparency=1,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=f})function c.UpdateColors(i)c: +Display()end function c.Display(i)if aB.Unloaded then return end g.Transparency=c.Disabled and 0.5 or 0 if c.Disabled +then e.TextTransparency=0.8 h.ImageTransparency=c.Value and 0.8 or 1 f.BackgroundColor3=aB.Scheme.BackgroundColor aB. +Registry[f].BackgroundColor3='BackgroundColor'return end am:Create(e,aB.TweenInfo,{TextTransparency=c.Value and 0 or 0.4 +}):Play()am:Create(h,aB.TweenInfo,{ImageTransparency=c.Value and 0 or 1}):Play()f.BackgroundColor3=aB.Scheme.MainColor +aB.Registry[f].BackgroundColor3='MainColor'end function c.OnChanged(i,j)c.Changed=j end function c.SetValue(i,j)if c. +Disabled then return end c.Value=j c:Display()for k,l in c.Addons do if l.Type=='KeyPicker'and l.SyncToggleState then l. +Toggled=c.Value l:Update()end end aB:UpdateDependencyBoxes()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed +,c.Value)end function c.SetDisabled(i,j:boolean)c.Disabled=j if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled +end for k,l in c.Addons do if l.Type=='KeyPicker'and l.SyncToggleState then l:Update()end end d.Active=not c.Disabled c: +Display()end function c.SetVisible(i,j:boolean)c.Visible=j d.Visible=c.Visible bn:Resize()end function c.SetText(i,j: +string)c.Text=j e.Text=j end d.MouseButton1Click:Connect(function()if c.Disabled then return end c:SetValue(not c.Value) +end)if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c. +DisabledTooltip,d)c.TooltipTable.Disabled=c.Disabled end if c.Risky then e.TextColor3=aB.Scheme.RedColor aB.Registry[e]. +TextColor3='RedColor'end c:Display()bn:Resize()c.TextLabel=e c.Container=bo setmetatable(c,bh)c.Holder=d table.insert(bn +.Elements,c)c.Default=c.Value av[bl]=c return c end function bj.AddToggle(bk,bl,bm)if aB.ForceCheckbox then return bj. +AddCheckbox(bk,bl,bm)end bm=aB:Validate(bm,aC.Toggle)local bn=bk local bo,c=bn.Container,{Text=bm.Text,Value=bm.Default, +Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip,TooltipTable=nil,Callback=bm.Callback,Changed=bm.Changed,Risky=bm. +Risky,Disabled=bm.Disabled,Visible=bm.Visible,Addons={},Type='Toggle'}local d=a1('TextButton',{Active=not c.Disabled, +BackgroundTransparency=1,Size=UDim2.new(1,0,0,18),Text='',Visible=c.Visible,Parent=bo})local e=a1('TextLabel',{ +BackgroundTransparency=1,Size=UDim2.new(1,-40,1,0),Text=c.Text,TextSize=14,TextTransparency=0.4,TextXAlignment=Enum. +TextXAlignment.Left,Parent=d})a1('UIListLayout',{FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum. +HorizontalAlignment.Right,Padding=UDim.new(0,6),Parent=e})local f=a1('Frame',{AnchorPoint=Vector2.new(1,0), +BackgroundColor3='MainColor',Position=UDim2.fromScale(1,0),Size=UDim2.fromOffset(32,18),Parent=d})a1('UICorner',{ +CornerRadius=UDim.new(1,0),Parent=f})a1('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight= +UDim.new(0,2),PaddingTop=UDim.new(0,2),Parent=f})local g,h=a1('UIStroke',{Color='OutlineColor',Parent=f}),a1('Frame',{ +BackgroundColor3='FontColor',Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=f})a1( +'UICorner',{CornerRadius=UDim.new(1,0),Parent=h})function c.UpdateColors(i)c:Display()end function c.Display(i)if aB. +Unloaded then return end local j=c.Value and 1 or 0 f.BackgroundTransparency=c.Disabled and 0.75 or 0 g.Transparency=c. +Disabled and 0.75 or 0 f.BackgroundColor3=c.Value and aB.Scheme.AccentColor or aB.Scheme.MainColor g.Color=c.Value and +aB.Scheme.AccentColor or aB.Scheme.OutlineColor aB.Registry[f].BackgroundColor3=c.Value and'AccentColor'or'MainColor'aB. +Registry[g].Color=c.Value and'AccentColor'or'OutlineColor'if c.Disabled then e.TextTransparency=0.8 h.AnchorPoint= +Vector2.new(j,0)h.Position=UDim2.fromScale(j,0)h.BackgroundColor3=aB:GetDarkerColor(aB.Scheme.FontColor)aB.Registry[h]. +BackgroundColor3=function()return aB:GetDarkerColor(aB.Scheme.FontColor)end return end am:Create(e,aB.TweenInfo,{ +TextTransparency=c.Value and 0 or 0.4}):Play()am:Create(h,aB.TweenInfo,{AnchorPoint=Vector2.new(j,0),Position=UDim2. +fromScale(j,0)}):Play()h.BackgroundColor3=aB.Scheme.FontColor aB.Registry[h].BackgroundColor3='FontColor'end function c. +OnChanged(i,j)c.Changed=j end function c.SetValue(i,j)if c.Disabled then return end c.Value=j c:Display()for k,l in c. +Addons do if l.Type=='KeyPicker'and l.SyncToggleState then l.Toggled=c.Value l:Update()end end aB:UpdateDependencyBoxes( +)aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end function c.SetDisabled(i,j:boolean)c.Disabled= +j if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled end for k,l in c.Addons do if l.Type=='KeyPicker'and l. +SyncToggleState then l:Update()end end d.Active=not c.Disabled c:Display()end function c.SetVisible(i,j:boolean)c. +Visible=j d.Visible=c.Visible bn:Resize()end function c.SetText(i,j:string)c.Text=j e.Text=j end d.MouseButton1Click: +Connect(function()if c.Disabled then return end c:SetValue(not c.Value)end)if typeof(c.Tooltip)=='string'or typeof(c. +DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c.DisabledTooltip,d)c.TooltipTable.Disabled=c. +Disabled end if c.Risky then e.TextColor3=aB.Scheme.RedColor aB.Registry[e].TextColor3='RedColor'end c:Display()bn: +Resize()c.TextLabel=e c.Container=bo setmetatable(c,bh)c.Holder=d table.insert(bn.Elements,c)c.Default=c.Value av[bl]=c +return c end function bj.AddInput(bk,bl,bm)bm=aB:Validate(bm,aC.Input)local bn=bk local bo,c=bn.Container,{Text=bm.Text, +Value=bm.Default,Finished=bm.Finished,Numeric=bm.Numeric,ClearTextOnFocus=bm.ClearTextOnFocus,Placeholder=bm.Placeholder +,AllowEmpty=bm.AllowEmpty,EmptyReset=bm.EmptyReset,Tooltip=bm.Tooltip,DisabledTooltip=bm.DisabledTooltip,TooltipTable= +nil,Callback=bm.Callback,Changed=bm.Changed,Disabled=bm.Disabled,Visible=bm.Visible,Type='Input'}local d=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,39),Visible=c.Visible,Parent=bo})local e,f=a1('TextLabel',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=c.Text,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent +=d}),a1('TextBox',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel +=1,ClearTextOnFocus=not c.Disabled and c.ClearTextOnFocus,PlaceholderText=c.Placeholder,Position=UDim2.fromScale(0,1), +Size=UDim2.new(1,0,0,21),Text=c.Value,TextEditable=not c.Disabled,TextScaled=true,TextXAlignment=Enum.TextXAlignment. +Left,Parent=d})a1('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8), +PaddingTop=UDim.new(0,4),Parent=f})function c.UpdateColors(g)if aB.Unloaded then return end e.TextTransparency=c. +Disabled and 0.8 or 0 f.TextTransparency=c.Disabled and 0.8 or 0 end function c.OnChanged(g,h)c.Changed=h end function c +.SetValue(g,h)if not c.AllowEmpty and aP(h)==''then h=c.EmptyReset end if bm.MaxLength and#h>bm.MaxLength then h=h:sub(1 +,bm.MaxLength)end if c.Numeric then if#tostring(h)>0 and not tonumber(h)then h=c.Value end end c.Value=h f.Text=h if not +c.Disabled then aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end end function c.SetDisabled(g,h: +boolean)c.Disabled=h if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled end f.ClearTextOnFocus=not c.Disabled and +c.ClearTextOnFocus f.TextEditable=not c.Disabled c:UpdateColors()end function c.SetVisible(g,h:boolean)c.Visible=h d. +Visible=c.Visible bn:Resize()end function c.SetText(g,h:string)c.Text=h e.Text=h end if c.Finished then f.FocusLost: +Connect(function(g)if not g then return end c:SetValue(f.Text)end)else f:GetPropertyChangedSignal'Text':Connect(function +()if f.Text==c.Value then return end c:SetValue(f.Text)end)end if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip +)=='string'then c.TooltipTable=aB:AddTooltip(c.Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end bn: +Resize()c.Holder=d table.insert(bn.Elements,c)c.Default=c.Value aw[bl]=c return c end function bj.AddSlider(bk,bl,bm)bm= +aB:Validate(bm,aC.Slider)local bn=bk local bo,c=bn.Container,{Text=bm.Text,Value=bm.Default,Min=bm.Min,Max=bm.Max,Prefix +=bm.Prefix,Suffix=bm.Suffix,Compact=bm.Compact,Rounding=bm.Rounding,Tooltip=bm.Tooltip,DisabledTooltip=bm. +DisabledTooltip,TooltipTable=nil,Callback=bm.Callback,Changed=bm.Changed,Disabled=bm.Disabled,Visible=bm.Visible,Type= +'Slider'}local d,e=(a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Compact and 13 or 31),Visible=c.Visible +,Parent=bo}))if not bm.Compact then e=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,14),Text=c.Text, +TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=d})end local f=a1('TextButton',{Active=not c.Disabled, +AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2. +fromScale(0,1),Size=UDim2.new(1,0,0,13),Text='',Parent=d})local g=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2. +fromScale(1,1),Text='',TextSize=14,ZIndex=2,Parent=f})a1('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual, +Color='DarkColor',LineJoinMode=Enum.LineJoinMode.Miter,Parent=g})local h=a1('Frame',{BackgroundColor3='AccentColor',Size +=UDim2.fromScale(0.5,1),Parent=f})function c.UpdateColors(i)if aB.Unloaded then return end if e then e.TextTransparency= +c.Disabled and 0.8 or 0 end g.TextTransparency=c.Disabled and 0.8 or 0 h.BackgroundColor3=c.Disabled and aB.Scheme. +OutlineColor or aB.Scheme.AccentColor aB.Registry[h].BackgroundColor3=c.Disabled and'OutlineColor'or'AccentColor'end +function c.Display(i)if aB.Unloaded then return end local j if bm.FormatDisplayValue then j=bm.FormatDisplayValue(c,c. +Value)end if j then g.Text=tostring(j)else if bm.Compact then g.Text=string.format('%s: %s%s%s',c.Text,c.Prefix,c.Value, +c.Suffix)elseif bm.HideMax then g.Text=string.format('%s%s%s',c.Prefix,c.Value,c.Suffix)else g.Text=string.format( +'%s%s%s/%s%s%s',c.Prefix,c.Value,c.Suffix,c.Prefix,c.Max,c.Suffix)end end local k=(c.Value-c.Min)/(c.Max-c.Min)h.Size= +UDim2.fromScale(k,1)end function c.OnChanged(i,j)c.Changed=j end function c.SetMax(i,j)assert(j>c.Min, +'Max value cannot be less than the current min value.')c:SetValue(math.clamp(c.Value,c.Min,j))c.Max=j c:Display()end +function c.SetMin(i,j)assert(j25 then k=k:sub(1,22)..'...' +end f.Text=(k==''and'---'or k)end function c.OnChanged(j,k)c.Changed=k end function c.GetActiveValues(j)if bm.Multi then +local k={}for l,m in c.Value do table.insert(k,l)end return k end return c.Value and 1 or 0 end local j={}function c. +BuildDropdownList(k)local l,m=c.Values,c.DisabledValues for n,o in j do n:Destroy()end table.clear(j)local n=0 for o,p +in l do if h and not tostring(p):lower():match(h.Text:lower())then continue end n+=1 local q,r=table.find(m,p),{}local s +=a1('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,LayoutOrder=q and 1 or 0,Size=UDim2.new(1,0,0,21 +),Text=tostring(p),TextSize=14,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Parent=i.Menu})a1( +'UIPadding',{PaddingLeft=UDim.new(0,7),PaddingRight=UDim.new(0,7),Parent=s})local t if bm.Multi then t=c.Value[p]else t= +c.Value==p end function r.UpdateButton(u)if bm.Multi then t=c.Value[p]else t=c.Value==p end s.BackgroundTransparency=t +and 0 or 1 s.TextTransparency=q and 0.8 or t and 0 or 0.5 end if not q then s.MouseButton1Click:Connect(function()local +u=not t if not(c:GetActiveValues()==1 and not u and not bm.AllowNull)then t=u if bm.Multi then c.Value[p]=t and true or +nil else c.Value=t and p or nil end for v,w in j do w:UpdateButton()end end r:UpdateButton()c:Display()aB: +UpdateDependencyBoxes()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end)end r:UpdateButton()c: +Display()j[s]=r end c:RecalculateListSize(n)end function c.SetValue(k,l)if bm.Multi then local m={}for n,o in l or{}do +if typeof(o)~='boolean'then m[o]=true elseif o and table.find(c.Values,n)then m[n]=true end end c.Value=m else if table. +find(c.Values,l)then c.Value=l elseif not l then c.Value=nil end end c:Display()for m,n in j do n:UpdateButton()end if +not c.Disabled then aB:UpdateDependencyBoxes()aB:SafeCallback(c.Callback,c.Value)aB:SafeCallback(c.Changed,c.Value)end +end function c.SetValues(k,l)c.Values=l c:BuildDropdownList()end function c.AddValues(k,l)if typeof(l)=='table'then for +m,n in l do table.insert(c.Values,n)end elseif typeof(l)=='string'then table.insert(c.Values,l)else return end c: +BuildDropdownList()end function c.SetDisabledValues(k,l)c.DisabledValues=l c:BuildDropdownList()end function c. +AddDisabledValues(k,l)if typeof(l)=='table'then for m,n in l do table.insert(c.DisabledValues,n)end elseif typeof(l)== +'string'then table.insert(c.DisabledValues,l)else return end c:BuildDropdownList()end function c.SetDisabled(k,l:boolean +)c.Disabled=l if c.TooltipTable then c.TooltipTable.Disabled=c.Disabled end i:Close()f.Active=not c.Disabled c: +UpdateColors()end function c.SetVisible(k,l:boolean)c.Visible=l d.Visible=c.Visible bn:Resize()end function c.SetText(k, +l:string)c.Text=l d.Size=UDim2.new(1,0,0,l and 39 or 21)e.Text=l and l or''e.Visible=not not l end f.MouseButton1Click: +Connect(function()if c.Disabled then return end i:Toggle()end)if h then h:GetPropertyChangedSignal'Text':Connect(c. +BuildDropdownList)end local k={}if typeof(bm.Default)=='string'then local l=table.find(c.Values,bm.Default)if l then +table.insert(k,l)end elseif typeof(bm.Default)=='table'then for l,m in next,bm.Default do local n=table.find(c.Values,m) +if n then table.insert(k,n)end end elseif c.Values[bm.Default]~=nil then table.insert(k,bm.Default)end if next(k)then +for l=1,#k do local m=k[l]if bm.Multi then c.Value[c.Values[m] ]=true else c.Value=c.Values[m]end if not bm.Multi then +break end end end if typeof(c.Tooltip)=='string'or typeof(c.DisabledTooltip)=='string'then c.TooltipTable=aB:AddTooltip( +c.Tooltip,c.DisabledTooltip,f)c.TooltipTable.Disabled=c.Disabled end c:UpdateColors()c:Display()c:BuildDropdownList()bn: +Resize()c.Holder=d table.insert(bn.Elements,c)c.Default=k c.DefaultValues=c.Values aw[bl]=c return c end function bj. +AddViewport(bk,bl,bm)bm=aB:Validate(bm,aC.Viewport)local bn=bk local bo,c,d,e,f,g=bn.Container,false,false,0,(bm.Object) +if bm.Clone and typeof(bm.Object)=='Instance'then if bm.Object.Archivable then f=f:Clone()else bm.Object.Archivable=true +f=f:Clone()bm.Object.Archivable=false end end local h={Object=f,Camera=if not bm.Camera then Instance.new'Camera'else bm +.Camera,Interactive=bm.Interactive,AutoFocus=bm.AutoFocus,Visible=bm.Visible,Type='Viewport'}assert(typeof(h.Object)== +'Instance'and(h.Object:IsA'BasePart'or h.Object:IsA'Model'),'Instance must be a BasePart or Model.')assert(typeof(h. +Camera)=='Instance'and h.Camera:IsA'Camera','Camera must be a valid Camera instance.')local function i(j)if j:IsA +'BasePart'then return j.Size end return select(2,j:GetBoundingBox())end local function j()local k=i(h.Object)local l= +math.max(k.X,k.Y,k.Z)local m,n=l*2,h.Object:GetPivot().Position h.Camera.CFrame=CFrame.new(n+Vector3.new(0,l/2,m),n)end +local k=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Height),Visible=h.Visible,Parent=bo})local l=a1( +'Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1, +Position=UDim2.fromScale(0,1),Size=UDim2.fromScale(1,1),Parent=k})a1('UIPadding',{PaddingBottom=UDim.new(0,3), +PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=l})local m=a1('ViewportFrame',{ +BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Parent=l,CurrentCamera=h.Camera,Active=h.Interactive})m.MouseEnter: +Connect(function()if not h.Interactive then return end for n,o in bn.Tab.Sides do o.ScrollingEnabled=false end end)m. +MouseLeave:Connect(function()if not h.Interactive then return end for n,o in bn.Tab.Sides do o.ScrollingEnabled=true end +end)m.InputBegan:Connect(function(n)if not h.Interactive then return end if n.UserInputType==Enum.UserInputType. +MouseButton2 then c=true g=n.Position elseif n.UserInputType==Enum.UserInputType.Touch and not d then c=true g=n. +Position end end)aB:GiveSignal(aj.InputEnded:Connect(function(n)if aB.Unloaded then return end if not h.Interactive then +return end if n.UserInputType==Enum.UserInputType.MouseButton2 then c=false elseif n.UserInputType==Enum.UserInputType. +Touch then c=false end end))aB:GiveSignal(aj.InputChanged:Connect(function(n)if aB.Unloaded then return end if not h. +Interactive or not c or d then return end if n.UserInputType==Enum.UserInputType.MouseMovement or n.UserInputType==Enum. +UserInputType.Touch then local o=n.Position-g g=n.Position local p,q,r=h.Object:GetPivot().Position,h.Camera,CFrame. +fromAxisAngle(Vector3.new(0,1,0),-o.X*0.01)q.CFrame=CFrame.new(p)*r*CFrame.new(-p)*q.CFrame local s=CFrame. +fromAxisAngle(q.CFrame.RightVector,-o.Y*0.01)local t=CFrame.new(p)*s*CFrame.new(-p)*q.CFrame if t.UpVector.Y>0.1 then q. +CFrame=t end end end))m.InputChanged:Connect(function(n)if not h.Interactive then return end if n.UserInputType==Enum. +UserInputType.MouseWheel then local o=n.Position.Z*2 h.Camera.CFrame+=h.Camera.CFrame.LookVector*o end end)aB: +GiveSignal(aj.TouchPinch:Connect(function(n,o,p,q)if aB.Unloaded then return end if not h.Interactive or not aB: +MouseIsOverFrame(m,n[1])then return end if q==Enum.UserInputState.Begin then d=true c=false e=(n[1]-n[2]).Magnitude +elseif q==Enum.UserInputState.Change then local r=(n[1]-n[2]).Magnitude local s=(r-e)*0.1 e=r h.Camera.CFrame+=h.Camera. +CFrame.LookVector*s elseif q==Enum.UserInputState.End or q==Enum.UserInputState.Cancel then d=false end end))h.Object. +Parent=m if h.AutoFocus then j()end function h.SetObject(n,o:Instance,p:boolean?)assert(o,'Object cannot be nil.')if p +then o=o:Clone()end if h.Object then h.Object:Destroy()end h.Object=o h.Object.Parent=m bn:Resize()end function h. +SetHeight(n,o:number)assert(o>0,'Height must be greater than 0.')k.Size=UDim2.new(1,0,0,o)bn:Resize()end function h. +Focus(n)if not h.Object then return end j()end function h.SetCamera(n,o:Instance)assert(o and typeof(o)=='Instance'and o +:IsA'Camera','Camera must be a valid Camera instance.')h.Camera=o m.CurrentCamera=o end function h.SetInteractive(n,o: +boolean)h.Interactive=o m.Active=o end function h.SetVisible(n,o:boolean)h.Visible=o k.Visible=h.Visible bn:Resize()end +bn:Resize()h.Holder=k table.insert(bn.Elements,h)aw[bl]=h return h end function bj.AddImage(bk,bl,bm)bm=aB:Validate(bm, +aC.Image)local bn=bk local bo,c=bn.Container,{Image=bm.Image,Color=bm.Color,RectOffset=bm.RectOffset,RectSize=bm. +RectSize,Height=bm.Height,ScaleType=bm.ScaleType,Transparency=bm.Transparency,BackgroundTransparency=bm. +BackgroundTransparency,Visible=bm.Visible,Type='Image'}local d=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0 +,bm.Height),Visible=c.Visible,Parent=bo})local e=a1('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundColor3='MainColor', +BorderColor3='OutlineColor',BorderSizePixel=1,BackgroundTransparency=c.BackgroundTransparency,Position=UDim2.fromScale(0 +,1),Size=UDim2.fromScale(1,1),Parent=d})a1('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8), +PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=e})local f={BackgroundTransparency=1,Size=UDim2.fromScale(1,1 +),Image=c.Image,ImageTransparency=c.Transparency,ImageColor3=c.Color,ImageRectOffset=c.RectOffset,ImageRectSize=c. +RectSize,ScaleType=c.ScaleType,Parent=e}local g=aB:GetCustomIcon(f.Image)assert(g, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])f.Image=g.Url f.ImageRectOffset=g. +ImageRectOffset f.ImageRectSize=g.ImageRectSize local h=a1('ImageLabel',f)function c.SetHeight(i,j:number)assert(j>0, +'Height must be greater than 0.')c.Height=j d.Size=UDim2.new(1,0,0,j)bn:Resize()end function c.SetImage(i,j:string) +assert(typeof(j)=='string','Image must be a string.')local k=aB:GetCustomIcon(j)assert(k, +[[Image must be a valid Roblox asset or a valid URL or a valid lucide icon.]])j=k.Url c.RectOffset=k.ImageRectOffset c. +RectSize=k.ImageRectSize h.Image=j c.Image=j end function c.SetColor(i,j:Color3)assert(typeof(j)=='Color3', +'Color must be a Color3 value.')h.ImageColor3=j c.Color=j end function c.SetRectOffset(i,j:Vector2)assert(typeof(j)== +'Vector2','RectOffset must be a Vector2 value.')h.ImageRectOffset=j c.RectOffset=j end function c.SetRectSize(i,j: +Vector2)assert(typeof(j)=='Vector2','RectSize must be a Vector2 value.')h.ImageRectSize=j c.RectSize=j end function c. +SetScaleType(i,j:Enum.ScaleType)assert(typeof(j)=='EnumItem'and j:IsA'ScaleType', +'ScaleType must be a valid Enum.ScaleType.')h.ScaleType=j c.ScaleType=j end function c.SetTransparency(i,j:number) +assert(typeof(j)=='number','Transparency must be a number between 0 and 1.')assert(j>=0 and j<=1, +'Transparency must be between 0 and 1.')h.ImageTransparency=j c.Transparency=j end function c.SetVisible(i,j:boolean)c. +Visible=j d.Visible=c.Visible bn:Resize()end bn:Resize()c.Holder=d table.insert(bn.Elements,c)aw[bl]=c return c end +function bj.AddVideo(bk,bl,bm)bm=aB:Validate(bm,aC.Video)local bn=bk local bo,c=bn.Container,{Video=bm.Video,Looped=bm. +Looped,Playing=bm.Playing,Volume=bm.Volume,Height=bm.Height,Visible=bm.Visible,Type='Video'}local d=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Height),Visible=c.Visible,Parent=bo})local e=a1('Frame',{AnchorPoint= +Vector2.new(0,1),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(0,1 +),Size=UDim2.fromScale(1,1),Parent=d})a1('UIPadding',{PaddingBottom=UDim.new(0,3),PaddingLeft=UDim.new(0,8),PaddingRight +=UDim.new(0,8),PaddingTop=UDim.new(0,4),Parent=e})local f=a1('VideoFrame',{BackgroundTransparency=1,Size=UDim2. +fromScale(1,1),Video=c.Video,Looped=c.Looped,Volume=c.Volume,Parent=e})f.Playing=c.Playing function c.SetHeight(g,h: +number)assert(h>0,'Height must be greater than 0.')c.Height=h d.Size=UDim2.new(1,0,0,h)bn:Resize()end function c. +SetVideo(g,h:string)assert(typeof(h)=='string','Video must be a string.')f.Video=h c.Video=h end function c.SetLooped(g, +h:boolean)assert(typeof(h)=='boolean','Looped must be a boolean.')f.Looped=h c.Looped=h end function c.SetVolume(g,h: +number)assert(typeof(h)=='number','Volume must be a number between 0 and 10.')f.Volume=h c.Volume=h end function c. +SetPlaying(g,h:boolean)assert(typeof(h)=='boolean','Playing must be a boolean.')f.Playing=h c.Playing=h end function c. +Play(g)f.Playing=true c.Playing=true end function c.Pause(g)f.Playing=false c.Playing=false end function c.SetVisible(g, +h:boolean)c.Visible=h d.Visible=c.Visible bn:Resize()end bn:Resize()c.Holder=d c.VideoFrame=f table.insert(bn.Elements,c +)aw[bl]=c return c end function bj.AddUIPassthrough(bk,bl,bm)bm=aB:Validate(bm,aC.UIPassthrough)local bn=bk local bo=bn. +Container assert(bm.Instance,'Instance must be provided.')assert(typeof(bm.Instance)=='Instance'and bm.Instance:IsA +'GuiBase2d','Instance must inherit from GuiBase2d.')assert(typeof(bm.Height)=='number'and bm.Height>0, +'Height must be a number greater than 0.')local c={Instance=bm.Instance,Height=bm.Height,Visible=bm.Visible,Type= +'UIPassthrough'}local d=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,bm.Height),Visible=c.Visible,Parent=bo +})c.Instance.Parent=d bn:Resize()function c.SetHeight(e,f:number)assert(typeof(f)=='number'and f>0, +'Height must be a number greater than 0.')c.Height=f d.Size=UDim2.new(1,0,0,f)bn:Resize()end function c.SetInstance(e,f: +Instance)assert(f,'Instance must be provided.')assert(typeof(f)=='Instance'and f:IsA'GuiBase2d', +'Instance must inherit from GuiBase2d.')if c.Instance then c.Instance.Parent=nil end c.Instance=f c.Instance.Parent=d +end function c.SetVisible(e,f:boolean)c.Visible=f d.Visible=c.Visible bn:Resize()end c.Holder=d table.insert(bn.Elements +,c)aw[bl]=c return c end function bj.AddDependencyBox(bk)local bl=bk local bm,bn,bo=(bl.Container)do bn=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=bm})bo=a1('UIListLayout',{Padding=UDim.new(0,8), +Parent=bn})end local c={Visible=false,Dependencies={},Holder=bn,Container=bn,Elements={},DependencyBoxes={}}function c. +Resize(d)bn.Size=UDim2.new(1,0,0,bo.AbsoluteContentSize.Y/aB.DPIScale)bl:Resize()end function c.Update(d,e)for f,g in c. +Dependencies do local h,i=g[1],g[2]if h.Type=='Toggle'and h.Value~=i then bn.Visible=false c.Visible=false return elseif +h.Type=='Dropdown'then if typeof(h.Value)=='table'then if not h.Value[i]then bn.Visible=false c.Visible=false return end +else if h.Value~=i then bn.Visible=false c.Visible=false return end end end end c.Visible=true bn.Visible=true if not aB +.Searching then task.defer(function()c:Resize()end)elseif not e then aB:UpdateSearch(aB.SearchText)end end bo: +GetPropertyChangedSignal'AbsoluteContentSize':Connect(function()if not c.Visible then return end c:Resize()end)function +c.SetupDependencies(d,e)for f,g in e do assert(typeof(g)=='table','Dependency should be a table.')assert(g[1]~=nil, +'Dependency is missing element.')assert(g[2]~=nil,'Dependency is missing expected value.')end c.Dependencies=e c:Update( +)end bn:GetPropertyChangedSignal'Visible':Connect(function()c:Resize()end)setmetatable(c,bi)table.insert(bl. +DependencyBoxes,c)table.insert(aB.DependencyBoxes,c)return c end function bj.AddDependencyGroupbox(bk)local bl=bk local +bm,bn,bo,c=bl.Tab,(bl.BoxHolder)do bo=a1('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Visible= +false,Parent=bn})a1('UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=bo})aB:AddOutline(bo)c=a1('UIListLayout' +,{Padding=UDim.new(0,8),Parent=bo})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7),PaddingRight= +UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=bo})end local d={Visible=false,Dependencies={},BoxHolder=bn,Holder=bo, +Container=bo,Tab=bm,Elements={},DependencyBoxes={}}function d.Resize(e)bo.Size=UDim2.new(1,0,0,(c.AbsoluteContentSize.Y/ +aB.DPIScale)+18)end function d.Update(e,f)for g,h in d.Dependencies do local i,j=h[1],h[2]if i.Type=='Toggle'and i.Value +~=j then bo.Visible=false d.Visible=false return elseif i.Type=='Dropdown'then if typeof(i.Value)=='table'then if not i. +Value[j]then bo.Visible=false d.Visible=false return end else if i.Value~=j then bo.Visible=false d.Visible=false return +end end end end d.Visible=true if not aB.Searching then bo.Visible=true d:Resize()elseif not f then aB:UpdateSearch(aB. +SearchText)end end function d.SetupDependencies(e,f)for g,h in f do assert(typeof(h)=='table', +'Dependency should be a table.')assert(h[1]~=nil,'Dependency is missing element.')assert(h[2]~=nil, +'Dependency is missing expected value.')end d.Dependencies=f d:Update()end setmetatable(d,bi)table.insert(bm. +DependencyGroupboxes,d)table.insert(aB.DependencyBoxes,d)return d end bi.__index=bj bi.__namecall=function(bk,bl,...) +return bj[bl](...)end end function aB.SetFont(bj,bk)if typeof(bk)=='EnumItem'then bk=Font.fromEnum(bk)end aB.Scheme.Font +=bk aB:UpdateColorsUsingRegistry()end function aB.SetNotifySide(bj,bk:string)aB.NotifySide=bk if bk:lower()=='left'then +a8.AnchorPoint=Vector2.new(0,0)a8.Position=UDim2.fromOffset(6,6)a9.HorizontalAlignment=Enum.HorizontalAlignment.Left +else a8.AnchorPoint=Vector2.new(1,0)a8.Position=UDim2.new(1,-6,0,6)a9.HorizontalAlignment=Enum.HorizontalAlignment.Right +end end function aB.Notify(bj,...)local bk,bl={},select(1,...)if typeof(bl)=='table'then bk.Title=tostring(bl.Title)bk. +Description=tostring(bl.Description)bk.Time=bl.Time or 5 bk.SoundId=bl.SoundId bk.Steps=bl.Steps bk.Persist=bl.Persist +else bk.Description=tostring(bl)bk.Time=select(2,...)or 5 bk.SoundId=select(3,...)end bk.Destroyed=false local bm,bn= +false if typeof(bk.Time)=='Instance'then bn=bk.Time.Destroying:Connect(function()bm=true bn:Disconnect()bn=nil end)end +local bo=a1('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Visible=false +,Parent=a8})local c=a1('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundColor3='MainColor',Position=aB.NotifySide: +lower()=='left'and UDim2.new(-1,-8,0,-2)or UDim2.new(1,8,0,-2),Size=UDim2.fromScale(1,1),ZIndex=5,Parent=bo})a1( +'UICorner',{CornerRadius=UDim.new(0,aB.CornerRadius),Parent=c})a1('UIListLayout',{Padding=UDim.new(0,4),Parent=c})a1( +'UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8), +Parent=c})aB:AddOutline(c)local d,e,f,g,h=0,0 if bk.Title then f=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.X, +BackgroundTransparency=1,Size=UDim2.fromScale(0,0),Text=bk.Title,TextSize=15,TextXAlignment=Enum.TextXAlignment.Left, +TextWrapped=true,Parent=c})end if bk.Description then g=a1('TextLabel',{AutomaticSize=Enum.AutomaticSize.X, +BackgroundTransparency=1,Size=UDim2.fromScale(0,0),Text=bk.Description,TextSize=14,TextXAlignment=Enum.TextXAlignment. +Left,TextWrapped=true,Parent=c})end function bk.Resize(i)if f then local j,k=aB:GetTextBounds(f.Text,f.FontFace,f. +TextSize,(a8.AbsoluteSize.X/aB.DPIScale)-24)f.Size=UDim2.fromOffset(0,k)d=j end if g then local j,k=aB:GetTextBounds(g. +Text,g.FontFace,g.TextSize,(a8.AbsoluteSize.X/aB.DPIScale)-24)g.Size=UDim2.fromOffset(0,k)e=j end bo.Size=UDim2. +fromOffset(math.max(d,e)+24,0)end function bk.ChangeTitle(i,j)if f then bk.Title=tostring(j)f.Text=bk.Title bk:Resize() +end end function bk.ChangeDescription(i,j)if g then bk.Description=tostring(j)g.Text=bk.Description bk:Resize()end end +function bk.ChangeStep(i,j)if h and bk.Steps then j=math.clamp(j or 0,0,bk.Steps)h.Size=UDim2.fromScale(j/bk.Steps,1)end +end function bk.Destroy(i)bk.Destroyed=true if typeof(bk.Time)=='Instance'then pcall(bk.Time.Destroy,bk.Time)end if bn +then bn:Disconnect()end am:Create(c,aB.NotifyTweenInfo,{Position=aB.NotifySide:lower()=='left'and UDim2.new(-1,-8,0,-2) +or UDim2.new(1,8,0,-2)}):Play()task.delay(aB.NotifyTweenInfo.Time,function()aB.Notifications[bo]=nil bo:Destroy()end)end +bk:Resize()local i=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,7),Visible=(bk.Persist~=true and typeof(bk. +Time)~='Instance')or typeof(bk.Steps)=='number',Parent=c})local j=a1('Frame',{BackgroundColor3='BackgroundColor', +BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromOffset(0,3),Size=UDim2.new(1,0,0,2),Parent=i})h=a1( +'Frame',{BackgroundColor3='AccentColor',Size=UDim2.fromScale(1,1),Parent=j})if typeof(bk.Time)=='Instance'then h.Size= +UDim2.fromScale(0,1)end if bk.SoundId then local k=bk.SoundId if typeof(k)=='number'then k=string.format( +'rbxassetid://%d',k)end a1('Sound',{SoundId=k,Volume=3,PlayOnRemove=true,Parent=ai}):Destroy()end aB.Notifications[bo]= +bk bo.Visible=true am:Create(c,aB.NotifyTweenInfo,{Position=UDim2.fromOffset(0,0)}):Play()task.delay(aB.NotifyTweenInfo. +Time,function()if bk.Persist then return elseif typeof(bk.Time)=='Instance'then repeat task.wait()until bm or bk. +Destroyed else am:Create(h,TweenInfo.new(bk.Time,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut),{Size=UDim2. +fromScale(0,1)}):Play()task.wait(bk.Time)end if not bk.Destroyed then bk:Destroy()end end)return bk end function aB. +CreateWindow(bj,bk)bk=aB:Validate(bk,aC.Window)local bl:Vector2=workspace.CurrentCamera.ViewportSize if ah:IsStudio()and +bl.X<=5 and bl.Y<=5 then repeat bl=workspace.CurrentCamera.ViewportSize task.wait()until bl.X>5 and bl.Y>5 end local bm, +bn=bl.X-64,bl.Y-64 aB.OriginalMinSize=Vector2.new(math.min(aB.OriginalMinSize.X,bm),math.min(aB.OriginalMinSize.Y,bn))aB +.MinSize=aB.OriginalMinSize bk.Size=UDim2.fromOffset(math.clamp(bk.Size.X.Offset,aB.MinSize.X,bm),math.clamp(bk.Size.Y. +Offset,aB.MinSize.Y,bn))if typeof(bk.Font)=='EnumItem'then bk.Font=Font.fromEnum(bk.Font)end bk.CornerRadius=math.min(bk +.CornerRadius,20)if bk.Compact~=nil then bk.SidebarCompacted=bk.Compact end if bk.SidebarMinWidth~=nil then bk. +MinSidebarWidth=bk.SidebarMinWidth end bk.MinSidebarWidth=math.max(64,bk.MinSidebarWidth)bk.SidebarCompactWidth=math. +max(48,bk.SidebarCompactWidth)bk.SidebarCollapseThreshold=math.clamp(bk.SidebarCollapseThreshold,0.1,0.9)bk. +CompactWidthActivation=math.max(48,bk.CompactWidthActivation)aB.CornerRadius=bk.CornerRadius aB:SetNotifySide(bk. +NotifySide)aB.ShowCustomCursor=bk.ShowCustomCursor aB.Scheme.Font=bk.Font aB.ToggleKeybind=bk.ToggleKeybind aB. +GlobalSearch=bk.GlobalSearch local bo,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q=bk.SearchbarSize==UDim2.fromScale(1,1),math.ceil(bk. +Size.X.Offset*0.3),(bk.SidebarCompacted)local r=c do aB.KeybindFrame,aB.KeybindContainer=aB:AddDraggableMenu'Keybinds'aB +.KeybindFrame.AnchorPoint=Vector2.new(0,0.5)aB.KeybindFrame.Position=UDim2.new(0,6,0.5,0)aB.KeybindFrame.Visible=false e +=a1('TextButton',{BackgroundColor3=function()return aB:GetBetterColor(aB.Scheme.BackgroundColor,-1)end,Name='Main',Text= +'',Position=bk.Position,Size=bk.Size,Visible=false,Parent=a4})a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius), +Parent=e})table.insert(aB.Scales,a1('UIScale',{Parent=e}))aB:AddOutline(e)aB:MakeLine(e,{Position=UDim2.fromOffset(0,48) +,Size=UDim2.new(1,0,0,1)})f=a1('Frame',{BackgroundColor3='OutlineColor',Position=UDim2.fromOffset(c,0),Size=UDim2.new(0, +1,1,-21),Parent=e})if bk.BackgroundImage then a1('ImageLabel',{Image=bk.BackgroundImage,Position=UDim2.fromScale(0,0), +Size=UDim2.fromScale(1,1),ScaleType=Enum.ScaleType.Stretch,ZIndex=999,BackgroundTransparency=1,ImageTransparency=0.75, +Parent=e})end if bk.Center then e.Position=UDim2.new(0.5,-e.Size.X.Offset/2,0.5,-e.Size.Y.Offset/2)end local s=a1( +'Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,48),Parent=e})aB:MakeDraggable(e,s,false,true)g=a1('Frame',{ +BackgroundTransparency=1,Size=UDim2.new(0,c,1,0),Parent=s})a1('UIListLayout',{FillDirection=Enum.FillDirection. +Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Center,VerticalAlignment=Enum.VerticalAlignment.Center,Padding= +UDim.new(0,6),Parent=g})if bk.Icon then i=a1('ImageLabel',{Image=if tonumber(bk.Icon)then string.format( +'rbxassetid://%d',bk.Icon)else bk.Icon,Size=bk.IconSize,Parent=g})else i=a1('TextLabel',{BackgroundTransparency=1,Size= +bk.IconSize,Text=bk.Title:sub(1,1),TextScaled=true,Visible=false,Parent=g})end local t=aB:GetTextBounds(bk.Title,aB. +Scheme.Font,20,g.AbsoluteSize.X-(bk.Icon and bk.IconSize.X.Offset+6 or 0)-12)h=a1('TextLabel',{BackgroundTransparency=1, +Size=UDim2.new(0,t,1,0),Text=bk.Title,TextSize=20,Parent=g})j=a1('Frame',{AnchorPoint=Vector2.new(1,0.5), +BackgroundTransparency=1,Position=UDim2.new(1,-49,0.5,0),Size=UDim2.new(1,-c-57-1,1,-16),Parent=s})a1('UIListLayout',{ +FillDirection=Enum.FillDirection.Horizontal,HorizontalAlignment=Enum.HorizontalAlignment.Left,VerticalAlignment=Enum. +VerticalAlignment.Center,Padding=UDim.new(0,8),Parent=j})l=a1('Frame',{Size=UDim2.fromScale(bk.DisableSearch and 1 or +0.5,1),Visible=false,BackgroundTransparency=1,Parent=j})a1('UIFlexItem',{FlexMode=Enum.UIFlexMode.Grow,Parent=l})a1( +'UIListLayout',{FillDirection=Enum.FillDirection.Vertical,HorizontalAlignment=Enum.HorizontalAlignment.Left, +VerticalAlignment=Enum.VerticalAlignment.Center,Parent=l})a1('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim. +new(0,8),PaddingRight=UDim.new(0,8),PaddingTop=UDim.new(0,8),Parent=l})m=a1('TextLabel',{BackgroundTransparency=1,Size= +UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text='',TextSize=14,TextXAlignment=Enum.TextXAlignment.Left, +Parent=l})n=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,0),AutomaticSize=Enum.AutomaticSize.Y,Text= +'',TextWrapped=true,TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,TextTransparency=0.5,Parent=l})k=a1('TextBox',{ +BackgroundColor3='MainColor',PlaceholderText='Search',Size=bk.SearchbarSize,TextScaled=true,Visible=not(bk.DisableSearch +or false),Parent=j})a1('UIFlexItem',{FlexMode=Enum.UIFlexMode.Shrink,Parent=k})a1('UICorner',{CornerRadius=UDim.new(0,bk +.CornerRadius),Parent=k})a1('UIPadding',{PaddingBottom=UDim.new(0,8),PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8 +),PaddingTop=UDim.new(0,8),Parent=k})a1('UIStroke',{Color='OutlineColor',Parent=k})local u=aB:GetIcon'search'if u then +a1('ImageLabel',{Image=u.Url,ImageColor3='FontColor',ImageRectOffset=u.ImageRectOffset,ImageRectSize=u.ImageRectSize, +ImageTransparency=0.5,Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=k})end if bg then +a1('ImageLabel',{AnchorPoint=Vector2.new(1,0.5),Image=bg.Url,ImageColor3='OutlineColor',ImageRectOffset=bg. +ImageRectOffset,ImageRectSize=bg.ImageRectSize,Position=UDim2.new(1,-10,0.5,0),Size=UDim2.fromOffset(28,28), +SizeConstraint=Enum.SizeConstraint.RelativeYY,Parent=s})end local v=a1('Frame',{AnchorPoint=Vector2.new(0,1), +BackgroundColor3=function()return aB:GetBetterColor(aB.Scheme.BackgroundColor,4)end,Position=UDim2.fromScale(0,1),Size= +UDim2.new(1,0,0,bk.CornerRadius*2),Parent=e})aB:MakeLine(e,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0,0,1,-20), +Size=UDim2.new(1,0,0,1)})local w=a1('Frame',{AnchorPoint=Vector2.new(0,1),BackgroundTransparency=1,Position=UDim2. +fromScale(0,1),Size=UDim2.new(1,0,0,20),Parent=e})a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=v})a1( +'TextLabel',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Text=bk.Footer,TextSize=14,TextTransparency=0.5,Parent=w +})if bk.Resizable then o=a1('TextButton',{AnchorPoint=Vector2.new(1,0),BackgroundTransparency=1,Position=UDim2.new(1,-bk +.CornerRadius/4,0,0),Size=UDim2.fromScale(1,1),SizeConstraint=Enum.SizeConstraint.RelativeYY,Text='',Parent=w})aB: +MakeResizable(e,o,function()for x,y in aB.Tabs do y:Resize(true)end end)end a1('ImageLabel',{Image=be and be.Url or'', +ImageColor3='FontColor',ImageRectOffset=be and be.ImageRectOffset or Vector2.zero,ImageRectSize=be and be.ImageRectSize +or Vector2.zero,ImageTransparency=0.5,Position=UDim2.fromOffset(2,2),Size=UDim2.new(1,-4,1,-4),Parent=o})p=a1( +'ScrollingFrame',{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundColor3='BackgroundColor',CanvasSize=UDim2. +fromScale(0,0),Position=UDim2.fromOffset(0,49),ScrollBarThickness=0,Size=UDim2.new(0,c,1,-70),Parent=e})a1( +'UIListLayout',{Parent=p})q=a1('Frame',{AnchorPoint=Vector2.new(1,0),BackgroundColor3=function()return aB: +GetBetterColor(aB.Scheme.BackgroundColor,1)end,Name='Container',Position=UDim2.new(1,0,0,49),Size=UDim2.new(1,-c-1,1,-70 +),Parent=e})a1('UIPadding',{PaddingBottom=UDim.new(0,0),PaddingLeft=UDim.new(0,6),PaddingRight=UDim.new(0,6),PaddingTop= +UDim.new(0,0),Parent=q})end local s={}function s.ChangeTitle(t,u)assert(typeof(u)=='string', +'Expected string for title got: '..typeof(u))h.Text=u bk.Title=u end local function t()d=s:GetSidebarWidth()==bk. +SidebarCompactWidth if bk.DisableCompactingSnap then d=s:GetSidebarWidth()<=bk.CompactWidthActivation end h.Visible=not +d if not bk.Icon then i.Visible=d end for u,v in aB.TabButtons do if not v.Icon then continue end v.Label.Visible=not d +v.Padding.PaddingBottom=UDim.new(0,d and 6 or 11)v.Padding.PaddingLeft=UDim.new(0,d and 6 or 12)v.Padding.PaddingRight= +UDim.new(0,d and 6 or 12)v.Padding.PaddingTop=UDim.new(0,d and 6 or 11)v.Icon.SizeConstraint=d and Enum.SizeConstraint. +RelativeXY or Enum.SizeConstraint.RelativeYY end end function s.IsSidebarCompacted(u)return d end function s.SetCompact( +u,v)s:SetSidebarWidth(v and bk.SidebarCompactWidth or r)end function s.GetSidebarWidth(u)return p.Size.X.Offset end +function s.SetSidebarWidth(u,v)v=math.clamp(v,48,e.Size.X.Offset-bk.MinContainerWidth-1)f.Position=UDim2.fromOffset(v,0) +g.Size=UDim2.new(0,v,1,0)j.Size=UDim2.new(1,-v-57-1,1,-16)p.Size=UDim2.new(0,v,1,-70)q.Size=UDim2.new(1,-v-1,1,-70)if bk +.EnableCompacting then t()end if not d then r=v end end function s.ShowTabInfo(u,v,w)m.Text=v n.Text=w if bo then k.Size +=UDim2.fromScale(0.5,1)end l.Visible=true end function s.HideTabInfo(u)l.Visible=false if bo then k.Size=UDim2. +fromScale(1,1)end end function s.AddTab(u,...)local v,w,x if select('#',...)==1 and typeof(...)=='table'then local y= +select(1,...)v=y.Name or'Tab'w=y.Icon x=y.Description else v=select(1,...)w=select(2,...)x=select(3,...)end local y: +TextButton,z,A,B,C,D w=aB:GetCustomIcon(w)or aY do y=a1('TextButton',{BackgroundColor3='MainColor', +BackgroundTransparency=1,Size=UDim2.new(1,0,0,40),Text='',Parent=p})local E=a1('UIPadding',{PaddingBottom=UDim.new(0,d +and 6 or 11),PaddingLeft=UDim.new(0,d and 6 or 12),PaddingRight=UDim.new(0,d and 6 or 12),PaddingTop=UDim.new(0,d and 6 +or 11),Parent=y})z=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(30,0),Size=UDim2.new(1,-30,1,0), +Text=v,TextSize=16,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment.Left,Visible=not d,Parent=y})if aB. +ForceTextIcons then z.Text=string.format('[%s] %s',v:sub(1,1):upper(),v)z.Position=UDim2.fromOffset(12,0)z.Size=UDim2. +new(1,-12,1,0)end if w then A=a1('ImageLabel',{Image=w.Url,ImageColor3=w.Custom and'WhiteColor'or'AccentColor', +ImageRectOffset=w.ImageRectOffset,ImageRectSize=w.ImageRectSize,ImageTransparency=0.5,ScaleType=Enum.ScaleType.Fit,Size= +UDim2.fromScale(1,1),SizeConstraint=d and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=y})if +aB.ForceTextIcons then A.ImageTransparency=0.85 end end table.insert(aB.TabButtons,{Label=z,Padding=E,Icon=A})B=a1( +'Frame',{BackgroundTransparency=1,Size=UDim2.fromScale(1,1),Visible=false,Parent=q})C=a1('ScrollingFrame',{ +AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0), +ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=B})a1('UIListLayout',{Padding=UDim. +new(0,2),Parent=C})a1('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim.new(0,2), +PaddingTop=UDim.new(0,2),Parent=C})do a1('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=C})a1('Frame',{ +BackgroundTransparency=1,LayoutOrder=1,Parent=C})end D=a1('ScrollingFrame',{AnchorPoint=Vector2.new(1,0), +AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),Position=UDim2. +fromScale(1,0),ScrollBarImageTransparency=1,ScrollBarThickness=0,Size=UDim2.new(0.5,-3,1,0),Parent=B})a1('UIListLayout', +{Padding=UDim.new(0,2),Parent=D})a1('UIPadding',{PaddingBottom=UDim.new(0,2),PaddingLeft=UDim.new(0,2),PaddingRight=UDim +.new(0,2),PaddingTop=UDim.new(0,2),Parent=D})do a1('Frame',{BackgroundTransparency=1,LayoutOrder=-1,Parent=D})a1('Frame' +,{BackgroundTransparency=1,LayoutOrder=1,Parent=D})end end local E,F,G,H,I,J,K,L=(a1('Frame',{AutomaticSize=Enum. +AutomaticSize.Y,BackgroundTransparency=1,Position=UDim2.fromOffset(0,7),Size=UDim2.fromScale(1,0),Visible=false,Parent=B +}))do F=a1('Frame',{BackgroundColor3='BackgroundColor',Position=UDim2.fromOffset(2,0),Size=UDim2.new(1,-5,0,0),Parent=E} +)a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=F})G,H=aB:AddOutline(F)I=a1('ScrollingFrame',{ +BackgroundTransparency=1,BorderSizePixel=0,Size=UDim2.fromScale(1,1),CanvasSize=UDim2.new(0,0,0,0),ScrollBarThickness=3, +ScrollingDirection=Enum.ScrollingDirection.Y,Parent=F})a1('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingLeft=UDim.new( +0,6),PaddingRight=UDim.new(0,6),PaddingTop=UDim.new(0,4),Parent=I})J=a1('TextLabel',{BackgroundTransparency=1,Size=UDim2 +.new(1,-4,0,14),Text='',TextColor3=Color3.fromRGB(255,50,50),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent= +I})K=a1('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color=Color3.fromRGB(169,0,0),LineJoinMode=Enum. +LineJoinMode.Miter,Parent=J})L=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,16),Size=UDim2.new(1 +,-4,0,0),Text='',TextSize=14,TextWrapped=true,Parent=I,TextXAlignment=Enum.TextXAlignment.Left,TextYAlignment=Enum. +TextYAlignment.Top})a1('UIStroke',{ApplyStrokeMode=Enum.ApplyStrokeMode.Contextual,Color='DarkColor',LineJoinMode=Enum. +LineJoinMode.Miter,Parent=L})end local M={Groupboxes={},Tabboxes={},DependencyGroupboxes={},Sides={C,D},WarningBox={ +IsNormal=false,LockSize=false,Visible=false,Title='WARNING',Text=''}}function M.UpdateWarningBox(N,O)if typeof(O. +IsNormal)=='boolean'then M.WarningBox.IsNormal=O.IsNormal end if typeof(O.LockSize)=='boolean'then M.WarningBox.LockSize +=O.LockSize end if typeof(O.Visible)=='boolean'then M.WarningBox.Visible=O.Visible end if typeof(O.Title)=='string'then +M.WarningBox.Title=O.Title end if typeof(O.Text)=='string'then M.WarningBox.Text=O.Text end E.Visible=M.WarningBox. +Visible J.Text=M.WarningBox.Title L.Text=M.WarningBox.Text M:Resize(true)F.BackgroundColor3=M.WarningBox.IsNormal==true +and aB.Scheme.BackgroundColor or Color3.fromRGB(127,0,0)H.Color=M.WarningBox.IsNormal==true and aB.Scheme.DarkColor or +Color3.fromRGB(85,0,0)G.Color=M.WarningBox.IsNormal==true and aB.Scheme.OutlineColor or Color3.fromRGB(255,50,50)J. +TextColor3=M.WarningBox.IsNormal==true and aB.Scheme.FontColor or Color3.fromRGB(255,50,50)K.Color=M.WarningBox.IsNormal +==true and aB.Scheme.OutlineColor or Color3.fromRGB(169,0,0)if not aB.Registry[F]then aB:AddToRegistry(F,{})end if not +aB.Registry[H]then aB:AddToRegistry(H,{})end if not aB.Registry[G]then aB:AddToRegistry(G,{})end if not aB.Registry[J] +then aB:AddToRegistry(J,{})end if not aB.Registry[K]then aB:AddToRegistry(K,{})end aB.Registry[F].BackgroundColor3= +function()return M.WarningBox.IsNormal==true and aB.Scheme.BackgroundColor or Color3.fromRGB(127,0,0)end aB.Registry[H]. +Color=function()return M.WarningBox.IsNormal==true and aB.Scheme.DarkColor or Color3.fromRGB(85,0,0)end aB.Registry[G]. +Color=function()return M.WarningBox.IsNormal==true and aB.Scheme.OutlineColor or Color3.fromRGB(255,50,50)end aB. +Registry[J].TextColor3=function()return M.WarningBox.IsNormal==true and aB.Scheme.FontColor or Color3.fromRGB(255,50,50) +end aB.Registry[K].Color=function()return M.WarningBox.IsNormal==true and aB.Scheme.OutlineColor or Color3.fromRGB(169,0 +,0)end end function M.RefreshSides(N)local O=E.Visible and F.Size.Y.Offset+8 or 0 for P,Q in M.Sides do Q.Position=UDim2 +.new(Q.Position.X.Scale,0,0,O)Q.Size=UDim2.new(0.5,-3,1,-O)end end function M.Resize(N,O:boolean?)if O then local P,Q,S= +math.floor(B.AbsoluteSize.Y/3.25),aB:GetTextBounds(L.Text,aB.Scheme.Font,L.TextSize,L.AbsoluteSize.X)local T=24+S if M. +WarningBox.LockSize==true and T>=P then I.CanvasSize=UDim2.fromOffset(0,T)T=P else I.CanvasSize=UDim2.fromOffset(0,0)end +L.Size=UDim2.new(1,-4,0,S)F.Size=UDim2.new(1,-5,0,T+4)end M:RefreshSides()end function M.AddGroupbox(N,O)local P=a1( +'Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2.fromScale(1,0),Parent=O.Side==1 and C or +D})a1('UIListLayout',{Padding=UDim.new(0,6),Parent=P})a1('UIPadding',{PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0, +4),Parent=P})local Q,S,T,U do Q=a1('Frame',{BackgroundColor3='BackgroundColor',Size=UDim2.fromScale(1,0),Parent=P})a1( +'UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=Q})aB:AddOutline(Q)aB:MakeLine(Q,{Position=UDim2.fromOffset( +0,34),Size=UDim2.new(1,0,0,1)})local V=aB:GetCustomIcon(O.IconName)or(O.IconName and aY or nil)if V then a1('ImageLabel' +,{Image=V.Url,ImageColor3=V.Custom and'WhiteColor'or'AccentColor',ImageRectOffset=V.ImageRectOffset,ImageRectSize=V. +ImageRectSize,Position=UDim2.fromOffset(6,6),Size=UDim2.fromOffset(22,22),Parent=Q})end S=a1('TextLabel',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(V and 24 or 0,0),Size=UDim2.new(1,0,0,34),Text=O.Name,TextSize=15, +TextXAlignment=Enum.TextXAlignment.Left,Parent=Q})a1('UIPadding',{PaddingLeft=UDim.new(0,12),PaddingRight=UDim.new(0,12) +,Parent=S})T=a1('Frame',{BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Parent=Q})U= +a1('UIListLayout',{Padding=UDim.new(0,8),Parent=T})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7) +,PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=T})end local V={BoxHolder=P,Holder=Q,Container=T,Tab=M, +DependencyBoxes={},Elements={}}function V.Resize(W)Q.Size=UDim2.new(1,0,0,(U.AbsoluteContentSize.Y/aB.DPIScale)+49)end +setmetatable(V,bi)V:Resize()M.Groupboxes[O.Name]=V return V end function M.AddLeftGroupbox(N,O,P)return M:AddGroupbox{ +Side=1,Name=O,IconName=P}end function M.AddRightGroupbox(N,O,P)return M:AddGroupbox{Side=2,Name=O,IconName=P}end +function M.AddTabbox(N,O)local P=a1('Frame',{AutomaticSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,Size=UDim2. +fromScale(1,0),Parent=O.Side==1 and C or D})a1('UIListLayout',{Padding=UDim.new(0,6),Parent=P})a1('UIPadding',{ +PaddingBottom=UDim.new(0,4),PaddingTop=UDim.new(0,4),Parent=P})local Q,S do Q=a1('Frame',{BackgroundColor3= +'BackgroundColor',Size=UDim2.fromScale(1,0),Parent=P})a1('UICorner',{CornerRadius=UDim.new(0,bk.CornerRadius),Parent=Q}) +aB:AddOutline(Q)S=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(1,0,0,34),Parent=Q})a1('UIListLayout',{ +FillDirection=Enum.FillDirection.Horizontal,HorizontalFlex=Enum.UIFlexAlignment.Fill,Parent=S})end local T={ActiveTab= +nil,BoxHolder=P,Holder=Q,Tabs={}}function T.AddTab(U,V)local W=a1('TextButton',{BackgroundColor3='MainColor', +BackgroundTransparency=0,Size=UDim2.fromOffset(0,34),Text=V,TextSize=15,TextTransparency=0.5,Parent=S})local X,Y=aB: +MakeLine(W,{AnchorPoint=Vector2.new(0,1),Position=UDim2.new(0,0,1,1),Size=UDim2.new(1,0,0,1)}),a1('Frame',{ +BackgroundTransparency=1,Position=UDim2.fromOffset(0,35),Size=UDim2.new(1,0,1,-35),Visible=false,Parent=Q})local Z=a1( +'UIListLayout',{Padding=UDim.new(0,8),Parent=Y})a1('UIPadding',{PaddingBottom=UDim.new(0,7),PaddingLeft=UDim.new(0,7), +PaddingRight=UDim.new(0,7),PaddingTop=UDim.new(0,7),Parent=Y})local _={ButtonHolder=W,Container=Y,Tab=M,Elements={}, +DependencyBoxes={}}function _.Show(bp)if T.ActiveTab then T.ActiveTab:Hide()end W.BackgroundTransparency=1 W. +TextTransparency=0 X.Visible=false Y.Visible=true T.ActiveTab=_ _:Resize()end function _.Hide(bp)W. +BackgroundTransparency=0 W.TextTransparency=0.5 X.Visible=true Y.Visible=false T.ActiveTab=nil end function _.Resize(bp) +if T.ActiveTab~=_ then return end Q.Size=UDim2.new(1,0,0,(Z.AbsoluteContentSize.Y/aB.DPIScale)+49)end if not T.ActiveTab +then _:Show()end W.MouseButton1Click:Connect(_.Show)setmetatable(_,bi)T.Tabs[V]=_ return _ end if O.Name then M.Tabboxes +[O.Name]=T else table.insert(M.Tabboxes,T)end return T end function M.AddLeftTabbox(bp,N)return M:AddTabbox{Side=1,Name= +N}end function M.AddRightTabbox(bp,N)return M:AddTabbox{Side=2,Name=N}end function M.Hover(bp,N)if aB.ActiveTab==M then +return end am:Create(z,aB.TweenInfo,{TextTransparency=N and 0.25 or 0.5}):Play()if A then am:Create(A,aB.TweenInfo,{ +ImageTransparency=N and 0.25 or 0.5}):Play()end end function M.Show(bp)if aB.ActiveTab then aB.ActiveTab:Hide()end am: +Create(y,aB.TweenInfo,{BackgroundTransparency=0}):Play()am:Create(z,aB.TweenInfo,{TextTransparency=0}):Play()if A then +am:Create(A,aB.TweenInfo,{ImageTransparency=0}):Play()end if x then s:ShowTabInfo(v,x)end B.Visible=true M:RefreshSides( +)aB.ActiveTab=M if aB.Searching then aB:UpdateSearch(aB.SearchText)end end function M.Hide(bp)am:Create(y,aB.TweenInfo,{ +BackgroundTransparency=1}):Play()am:Create(z,aB.TweenInfo,{TextTransparency=0.5}):Play()if A then am:Create(A,aB. +TweenInfo,{ImageTransparency=0.5}):Play()end B.Visible=false s:HideTabInfo()aB.ActiveTab=nil end if not aB.ActiveTab +then M:Show()end y.MouseEnter:Connect(function()M:Hover(true)end)y.MouseLeave:Connect(function()M:Hover(false)end)y. +MouseButton1Click:Connect(M.Show)aB.Tabs[v]=M return M end function s.AddKeyTab(bp,...)local u,v,w if select('#',...)==1 +and typeof(...)=='table'then local x=select(1,...)u=x.Name or'Tab'v=x.Icon w=x.Description else u=select(1,...)or'Tab'v= +select(2,...)w=select(3,...)end v=v or'key'local x:TextButton,y,z,A v=if v=='key'then bf else aB:GetCustomIcon(v)do x= +a1('TextButton',{BackgroundColor3='MainColor',BackgroundTransparency=1,Size=UDim2.new(1,0,0,40),Text='',Parent=p})local +B=a1('UIPadding',{PaddingBottom=UDim.new(0,d and 6 or 11),PaddingLeft=UDim.new(0,d and 6 or 12),PaddingRight=UDim.new(0, +d and 6 or 12),PaddingTop=UDim.new(0,d and 6 or 11),Parent=x})y=a1('TextLabel',{BackgroundTransparency=1,Position=UDim2. +fromOffset(30,0),Size=UDim2.new(1,-30,1,0),Text=u,TextSize=16,TextTransparency=0.5,TextXAlignment=Enum.TextXAlignment. +Left,Visible=not d,Parent=x})if v then z=a1('ImageLabel',{Image=v.Url,ImageColor3=v.Custom and'WhiteColor'or +'AccentColor',ImageRectOffset=v.ImageRectOffset,ImageRectSize=v.ImageRectSize,ImageTransparency=0.5,Size=UDim2. +fromScale(1,1),SizeConstraint=d and Enum.SizeConstraint.RelativeXY or Enum.SizeConstraint.RelativeYY,Parent=x})if aB. +ForceTextIcons then z.Visible=false end end table.insert(aB.TabButtons,{Label=y,Padding=B,Icon=z})A=a1('ScrollingFrame', +{AutomaticCanvasSize=Enum.AutomaticSize.Y,BackgroundTransparency=1,CanvasSize=UDim2.fromScale(0,0),ScrollBarThickness=0, +Size=UDim2.fromScale(1,1),Visible=false,Parent=q})a1('UIListLayout',{HorizontalAlignment=Enum.HorizontalAlignment.Center +,Padding=UDim.new(0,8),VerticalAlignment=Enum.VerticalAlignment.Center,Parent=A})a1('UIPadding',{PaddingLeft=UDim.new(0, +1),PaddingRight=UDim.new(0,1),Parent=A})end local B={Elements={},IsKeyTab=true}function B.AddKeyBox(C,D)assert(typeof(D) +=='function','Callback must be a function')local E=a1('Frame',{BackgroundTransparency=1,Size=UDim2.new(0.75,0,0,21), +Parent=A})local F=a1('TextBox',{BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1, +PlaceholderText='Key',Size=UDim2.new(1,-71,1,0),TextSize=14,TextXAlignment=Enum.TextXAlignment.Left,Parent=E})a1( +'UIPadding',{PaddingLeft=UDim.new(0,8),PaddingRight=UDim.new(0,8),Parent=F})local G=a1('TextButton',{AnchorPoint=Vector2 +.new(1,0),BackgroundColor3='MainColor',BorderColor3='OutlineColor',BorderSizePixel=1,Position=UDim2.fromScale(1,0),Size= +UDim2.new(0,63,1,0),Text='Execute',TextSize=14,Parent=E})G.InputBegan:Connect(function(H)if not aK(H)then return end if +not aB:MouseIsOverFrame(G,H.Position)then return end D(F.Text)end)end function B.RefreshSides(C)end function B.Resize(C) +end function B.Hover(C,D)if aB.ActiveTab==B then return end am:Create(y,aB.TweenInfo,{TextTransparency=D and 0.25 or 0.5 +}):Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=D and 0.25 or 0.5}):Play()end end function B.Show(C)if aB +.ActiveTab then aB.ActiveTab:Hide()end am:Create(x,aB.TweenInfo,{BackgroundTransparency=0}):Play()am:Create(y,aB. +TweenInfo,{TextTransparency=0}):Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=0}):Play()end A.Visible=true +if w then s:ShowTabInfo(u,w)end B:RefreshSides()aB.ActiveTab=B if aB.Searching then aB:UpdateSearch(aB.SearchText)end +end function B.Hide(C)am:Create(x,aB.TweenInfo,{BackgroundTransparency=1}):Play()am:Create(y,aB.TweenInfo,{ +TextTransparency=0.5}):Play()if z then am:Create(z,aB.TweenInfo,{ImageTransparency=0.5}):Play()end A.Visible=false s: +HideTabInfo()aB.ActiveTab=nil end if not aB.ActiveTab then B:Show()end x.MouseEnter:Connect(function()B:Hover(true)end)x +.MouseLeave:Connect(function()B:Hover(false)end)x.MouseButton1Click:Connect(B.Show)B.Container=A setmetatable(B,bi)aB. +Tabs[u]=B return B end function aB.Toggle(bp,u:boolean?)if typeof(u)=='boolean'then aB.Toggled=u else aB.Toggled=not aB. +Toggled end e.Visible=aB.Toggled if bk.UnlockMouseWhileOpen then a5.Modal=aB.Toggled end if aB.Toggled and not aB. +IsMobile then local v=aj.MouseIconEnabled pcall(function()ah:UnbindFromRenderStep'ShowCursor'end)ah:BindToRenderStep( +'ShowCursor',Enum.RenderPriority.Last.Value,function()aj.MouseIconEnabled=not aB.ShowCustomCursor a6.Position=UDim2. +fromOffset(as.X,as.Y)a6.Visible=aB.ShowCustomCursor if not(aB.Toggled and a4 and a4.Parent)then aj.MouseIconEnabled=v a6 +.Visible=false ah:UnbindFromRenderStep'ShowCursor'end end)elseif not aB.Toggled then ba.Visible=false for v,w in aB. +Options do if w.Type=='ColorPicker'then w.ColorMenu:Close()w.ContextMenu:Close()elseif w.Type=='Dropdown'or w.Type== +'KeyPicker'then w.Menu:Close()end end end end if bk.EnableSidebarResize then local bp,u,v,w,x,y=(bk.MinSidebarWidth+bk. +SidebarCompactWidth)*bk.SidebarCollapseThreshold,false,(a1('TextButton',{AnchorPoint=Vector2.new(0.5,0), +BackgroundTransparency=1,Position=UDim2.fromScale(0.5,0),Size=UDim2.new(0,8,1,0),Text='',Parent=f}))v.MouseEnter: +Connect(function()am:Create(f,aB.TweenInfo,{BackgroundColor3=aB:GetLighterColor(aB.Scheme.OutlineColor)}):Play()end)v. +MouseLeave:Connect(function()if u then return end am:Create(f,aB.TweenInfo,{BackgroundColor3=aB.Scheme.OutlineColor}): +Play()end)v.InputBegan:Connect(function(z:InputObject)if not aK(z)then return end aB.CantDragForced=true w=z.Position x= +s:GetSidebarWidth()u=true y=z.Changed:Connect(function()if z.UserInputState~=Enum.UserInputState.End then return end aB. +CantDragForced=false am:Create(f,aB.TweenInfo,{BackgroundColor3=aB.Scheme.OutlineColor}):Play()u=false if y and y. +Connected then y:Disconnect()y=nil end end)end)aB:GiveSignal(aj.InputChanged:Connect(function(z:InputObject)if not aB. +Toggled or not(a4 and a4.Parent)then u=false if y and y.Connected then y:Disconnect()y=nil end return end if u and aL(z) +then local A=z.Position-w local B=x+A.X if bk.DisableCompactingSnap then s:SetSidebarWidth(B)return end if B>bp then s: +SetSidebarWidth(math.max(B,bk.MinSidebarWidth))else s:SetSidebarWidth(bk.SidebarCompactWidth)end end end))end if bk. +EnableCompacting and bk.SidebarCompacted then s:SetSidebarWidth(bk.SidebarCompactWidth)end if bk.AutoShow then task. +spawn(aB.Toggle)end if aB.IsMobile then local bp,u=aB:AddDraggableButton('Toggle',function()aB:Toggle()end,true),aB: +AddDraggableButton('Lock',function(bp)aB.CantDragForced=not aB.CantDragForced bp:SetText(aB.CantDragForced and'Unlock'or +'Lock')end,true)if bk.MobileButtonsSide=='Right'then bp.Button.Position=UDim2.new(1,-6,0,6)bp.Button.AnchorPoint=Vector2 +.new(1,0)u.Button.Position=UDim2.new(1,-6,0,46)u.Button.AnchorPoint=Vector2.new(1,0)else u.Button.Position=UDim2. +fromOffset(6,46)end end k:GetPropertyChangedSignal'Text':Connect(function()aB:UpdateSearch(k.Text)end)aB:GiveSignal(aj. +InputBegan:Connect(function(bp:InputObject)if aB.Unloaded then return end if aj:GetFocusedTextBox()then return end if( +typeof(aB.ToggleKeybind)=='table'and aB.ToggleKeybind.Type=='KeyPicker'and bp.KeyCode.Name==aB.ToggleKeybind.Value)or bp +.KeyCode==aB.ToggleKeybind then aB.Toggle()end end))aB:GiveSignal(aj.WindowFocused:Connect(function()aB.IsRobloxFocused= +true end))aB:GiveSignal(aj.WindowFocusReleased:Connect(function()aB.IsRobloxFocused=false end))return s end +local function bj()if aB.Unloaded then return end local bk,bl=aS(),aS(true)for bm,bn in aw do if bn.Type=='Dropdown'and +bn.SpecialType=='Player'then bn:SetValues(bn.ExcludeLocalPlayer and bl or bk)end end end local function bk()if aB. +Unloaded then return end local bl=aT()for bm,bn in aw do if bn.Type=='Dropdown'and bn.SpecialType=='Team'then bn: +SetValues(bl)end end end aB:GiveSignal(ag.PlayerAdded:Connect(bj))aB:GiveSignal(ag.PlayerRemoving:Connect(bj))aB: +GiveSignal(al.ChildAdded:Connect(bk))aB:GiveSignal(al.ChildRemoved:Connect(bk))an().Library=aB return aB end)()end,[9]= +function()local aa,ab,ac=a(9)local ad return(function(...)export type Scheme={BackgroundColor:Color3,MainColor:Color3, +AccentColor:Color3,OutlineColor:Color3,FontColor:Color3,Font:Font,RedColor:Color3,DarkColor:Color3,WhiteColor:Color3} +export type Icon={Url:string,ImageRectOffset:Vector2,ImageRectSize:Vector2}export type ContextMenu={Active:boolean, +Holder:GuiObject,Menu:GuiObject,List:UIListLayout?,Signal:RBXScriptConnection?,Size:UDim2|(()->UDim2),Open:(self: +ContextMenu)->(),Close:(self:ContextMenu)->(),Toggle:(self:ContextMenu)->(),SetSize:(self:ContextMenu,Size:UDim2|(()-> +UDim2))->()}export type Tooltip={Disabled:boolean,Hovering:boolean,Signals:{[number]:RBXScriptConnection},Destroy:(self: +Tooltip)->()}export type Notification={Title:string?,Description:string,Time:number|Instance,SoundId:string|number?, +Steps:number?,Persist:boolean?,Destroyed:boolean,Resize:(self:Notification)->(),ChangeTitle:(self:Notification,Text: +string)->(),ChangeDescription:(self:Notification,Text:string)->(),ChangeStep:(self:Notification,NewStep:number)->(), +Destroy:(self:Notification)->()}export type KeybindToggle={Normal:boolean,Holder:TextButton,Label:TextLabel,Checkbox: +Frame,Loaded:boolean,Display:(self:KeybindToggle,State:boolean)->(),SetText:(self:KeybindToggle,Text:string)->(), +SetVisibility:(self:KeybindToggle,Visibility:boolean)->(),SetNormal:(self:KeybindToggle,Normal:boolean)->()}export type +DraggableLabel={Label:TextLabel,SetText:(self:DraggableLabel,Text:string)->(),SetVisible:(self:DraggableLabel,Visible: +boolean)->()}export type DraggableButton={Button:TextButton,SetText:(self:DraggableButton,Text:string)->()}export type +ButtonInfo={Text:string,Func:()->(),DoubleClick:boolean?,Tooltip:string?,DisabledTooltip:string?,Risky:boolean?,Disabled +:boolean?,Visible:boolean?}export type ToggleInfo={Text:string,Default:boolean?,Callback:((boolean)->())?,Changed:(( +boolean)->())?,Tooltip:string?,DisabledTooltip:string?,Risky:boolean?,Disabled:boolean?,Visible:boolean?}export type +InputInfo={Text:string,Default:string?,Finished:boolean?,Numeric:boolean?,ClearTextOnFocus:boolean?,Placeholder:string?, +AllowEmpty:boolean?,EmptyReset:string?,MaxLength:number?,Tooltip:string?,DisabledTooltip:string?,Callback:((string)->()) +?,Changed:((string)->())?,Disabled:boolean?,Visible:boolean?}export type SliderInfo={Text:string,Default:number?,Min: +number?,Max:number?,Rounding:number?,Prefix:string?,Suffix:string?,Compact:boolean?,HideMax:boolean?,FormatDisplayValue: +((Slider,number)->string)?,Tooltip:string?,DisabledTooltip:string?,Callback:((number)->())?,Changed:((number)->())?, +Disabled:boolean?,Visible:boolean?}export type DropdownInfo={Text:string?,Values:{any},Default:any,DisabledValues:{any}? +,Multi:boolean?,MaxVisibleDropdownItems:number?,SpecialType:'Player'|'Team'?,ExcludeLocalPlayer:boolean?,AllowNull: +boolean?,Searchable:boolean?,FormatDisplayValue:((any)->string)?,Tooltip:string?,DisabledTooltip:string?,Callback:((any +)->())?,Changed:((any)->())?,Disabled:boolean?,Visible:boolean?}export type ViewportInfo={Object:BasePart|Model,Camera: +Camera?,Clone:boolean?,AutoFocus:boolean?,Interactive:boolean?,Height:number?,Visible:boolean?}export type ImageInfo={ +Image:string,Transparency:number?,Color:Color3?,RectOffset:Vector2?,RectSize:Vector2?,ScaleType:Enum.ScaleType?,Height: +number?,Visible:boolean?}export type VideoInfo={Video:string,Looped:boolean?,Playing:boolean?,Volume:number?,Height: +number?,Visible:boolean?}export type UIPassthroughInfo={Instance:GuiBase2d,Height:number?,Visible:boolean?}export type +KeyPickerInfo={Text:string,Default:string?,Mode:'Always'|'Toggle'|'Hold'|'Press'?,Modes:{'Always'|'Toggle'|'Hold'| +'Press'}?,SyncToggleState:boolean?,NoUI:boolean?,WaitForCallback:boolean?,Callback:((boolean)->())?,ChangedCallback:(( +Enum.KeyCode|Enum.UserInputType)->())?,Changed:((Enum.KeyCode|Enum.UserInputType)->())?,Clicked:(()->())?}export type +ColorPickerInfo={Default:Color3?,Transparency:number?,Title:string?,Callback:((Color3)->())?,Changed:((Color3)->())?} +export type KeyPicker={Text:string,Value:string,Toggled:boolean,Mode:'Always'|'Toggle'|'Hold'|'Press',SyncToggleState: +boolean,Callback:(Toggled:boolean)->(),ChangedCallback:(Key:Enum.KeyCode|Enum.UserInputType)->(),Changed:(Key:Enum. +KeyCode|Enum.UserInputType)->(),Clicked:()->(),Type:'KeyPicker',Menu:ContextMenu,Display:(self:KeyPicker)->(),Update:( +self:KeyPicker)->(),GetState:(self:KeyPicker)->boolean,OnChanged:(self:KeyPicker,Func:(Key:Enum.KeyCode|Enum. +UserInputType)->())->(),OnClick:(self:KeyPicker,Func:()->())->(),DoClick:(self:KeyPicker)->(),SetValue:(self:KeyPicker, +Data:{string})->(),SetText:(self:KeyPicker,Text:string)->()}export type ColorPicker={Value:Color3,Transparency:number, +Title:string?,Callback:(Value:Color3)->(),Changed:(Value:Color3)->(),Type:'ColorPicker',Hue:number,Sat:number,Vib:number +,ColorMenu:ContextMenu,ContextMenu:ContextMenu,SetHSVFromRGB:(self:ColorPicker,Color:Color3)->(),Display:(self: +ColorPicker)->(),Update:(self:ColorPicker)->(),OnChanged:(self:ColorPicker,Func:(Value:Color3)->())->(),SetValue:(self: +ColorPicker,HSV:{number},Transparency:number?)->(),SetValueRGB:(self:ColorPicker,Color:Color3,Transparency:number?)->()} +export type Addon=KeyPicker|ColorPicker export type Label={Text:string,DoesWrap:boolean,Addons:{[number]:Addon},Visible: +boolean,Type:'Label',TextLabel:TextLabel,Container:GuiObject,Holder:TextLabel,SetVisible:(self:Label,Visible:boolean)->( +),SetText:(self:Label,Text:string)->(),AddKeyPicker:(self:Label,Idx:string,Info:KeyPickerInfo)->Label,AddColorPicker:( +self:Label,Idx:string,Info:ColorPickerInfo)->Label}export type Button={Text:string,Func:()->(),DoubleClick:boolean?, +Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Risky:boolean,Disabled:boolean,Visible:boolean,Tween:Tween +?,Type:'Button',Base:TextButton,Stroke:UIStroke,Holder:Frame,SubButton:SubButton?,AddButton:(self:Button,Info:ButtonInfo +|string,Func:(()->())?,Idx:string?)->SubButton,UpdateColors:(self:Button)->(),SetDisabled:(self:Button,Disabled:boolean +)->(),SetVisible:(self:Button,Visible:boolean)->(),SetText:(self:Button,Text:string)->()}export type SubButton={Text: +string,Func:()->(),DoubleClick:boolean?,Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Risky:boolean, +Disabled:boolean,Visible:boolean,Tween:Tween?,Type:'SubButton',Base:TextButton,Stroke:UIStroke,UpdateColors:(self: +SubButton)->(),SetDisabled:(self:SubButton,Disabled:boolean)->(),SetVisible:(self:SubButton,Visible:boolean)->(),SetText +:(self:SubButton,Text:string)->()}export type Toggle={Text:string,Value:boolean,Tooltip:string?,DisabledTooltip:string?, +TooltipTable:Tooltip?,Callback:(Value:boolean)->(),Changed:(Value:boolean)->(),Risky:boolean,Disabled:boolean,Visible: +boolean,Addons:{[number]:Addon},Type:'Toggle',TextLabel:TextLabel,Container:GuiObject,Holder:TextButton,UpdateColors:( +self:Toggle)->(),Display:(self:Toggle)->(),OnChanged:(self:Toggle,Func:(Value:boolean)->())->(),SetValue:(self:Toggle, +Value:boolean)->(),SetDisabled:(self:Toggle,Disabled:boolean)->(),SetVisible:(self:Toggle,Visible:boolean)->(),SetText:( +self:Toggle,Text:string)->(),AddKeyPicker:(self:Toggle,Idx:string,Info:KeyPickerInfo)->Toggle,AddColorPicker:(self: +Toggle,Idx:string,Info:ColorPickerInfo)->Toggle}export type Input={Text:string,Value:string,Finished:boolean,Numeric: +boolean,ClearTextOnFocus:boolean,Placeholder:string,AllowEmpty:boolean,EmptyReset:string,Tooltip:string?,DisabledTooltip +:string?,TooltipTable:Tooltip?,Callback:(Value:string)->(),Changed:(Value:string)->(),Disabled:boolean,Visible:boolean, +Type:'Input',Holder:Frame,UpdateColors:(self:Input)->(),OnChanged:(self:Input,Func:(Value:string)->())->(),SetValue:( +self:Input,Text:string)->(),SetDisabled:(self:Input,Disabled:boolean)->(),SetVisible:(self:Input,Visible:boolean)->(), +SetText:(self:Input,Text:string)->()}export type Slider={Text:string,Value:number,Min:number,Max:number,Prefix:string, +Suffix:string,Compact:boolean?,Rounding:number,Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Callback:( +Value:number)->(),Changed:(Value:number)->(),Disabled:boolean,Visible:boolean,Type:'Slider',Holder:Frame,UpdateColors:( +self:Slider)->(),Display:(self:Slider)->(),OnChanged:(self:Slider,Func:(Value:number)->())->(),SetMax:(self:Slider,Value +:number)->(),SetMin:(self:Slider,Value:number)->(),SetValue:(self:Slider,Value:number|string)->(),SetDisabled:(self: +Slider,Disabled:boolean)->(),SetVisible:(self:Slider,Visible:boolean)->(),SetText:(self:Slider,Text:string)->(), +SetPrefix:(self:Slider,Prefix:string)->(),SetSuffix:(self:Slider,Suffix:string)->()}export type Dropdown={Text:string?, +Value:{[any]:boolean}|any,Values:{any},DisabledValues:{any},Multi:boolean,SpecialType:'Player'|'Team'?, +ExcludeLocalPlayer:boolean?,Tooltip:string?,DisabledTooltip:string?,TooltipTable:Tooltip?,Callback:(Value:any)->(), +Changed:(Value:any)->(),Disabled:boolean,Visible:boolean,Type:'Dropdown',Menu:ContextMenu,Holder:Frame, +RecalculateListSize:(self:Dropdown,Count:number?)->(),UpdateColors:(self:Dropdown)->(),Display:(self:Dropdown)->(), +OnChanged:(self:Dropdown,Func:(Value:any)->())->(),GetActiveValues:(self:Dropdown)->{any}|number,BuildDropdownList:(self +:Dropdown)->(),SetValue:(self:Dropdown,Value:any)->(),SetValues:(self:Dropdown,Values:{any})->(),AddValues:(self: +Dropdown,Values:{any}|string)->(),SetDisabledValues:(self:Dropdown,DisabledValues:{any})->(),AddDisabledValues:(self: +Dropdown,DisabledValues:{any}|string)->(),SetDisabled:(self:Dropdown,Disabled:boolean)->(),SetVisible:(self:Dropdown, +Visible:boolean)->(),SetText:(self:Dropdown,Text:string)->()}export type Viewport={Object:BasePart|Model,Camera:Camera, +Interactive:boolean,AutoFocus:boolean,Visible:boolean,Type:'Viewport',Holder:Frame,SetObject:(self:Viewport,Object: +Instance,Clone:boolean?)->(),SetHeight:(self:Viewport,Height:number)->(),Focus:(self:Viewport)->(),SetCamera:(self: +Viewport,Camera:Camera)->(),SetInteractive:(self:Viewport,Interactive:boolean)->(),SetVisible:(self:Viewport,Visible: +boolean)->()}export type Image={Image:string,Color:Color3,RectOffset:Vector2,RectSize:Vector2,Height:number,ScaleType: +Enum.ScaleType,Transparency:number,Visible:boolean,Type:'Image',Holder:Frame,SetHeight:(self:Image,Height:number)->(), +SetImage:(self:Image,NewImage:string)->(),SetColor:(self:Image,Color:Color3)->(),SetRectOffset:(self:Image,RectOffset: +Vector2)->(),SetRectSize:(self:Image,RectSize:Vector2)->(),SetScaleType:(self:Image,ScaleType:Enum.ScaleType)->(), +SetTransparency:(self:Image,Transparency:number)->(),SetVisible:(self:Image,Visible:boolean)->()}export type Video={ +Video:string,Looped:boolean,Playing:boolean,Volume:number,Height:number,Visible:boolean,Type:'Video',Holder:Frame, +VideoFrame:VideoFrame,SetHeight:(self:Video,Height:number)->(),SetVideo:(self:Video,NewVideo:string)->(),SetLooped:(self +:Video,Looped:boolean)->(),SetVolume:(self:Video,Volume:number)->(),SetPlaying:(self:Video,Playing:boolean)->(),Play:( +self:Video)->(),Pause:(self:Video)->(),SetVisible:(self:Video,Visible:boolean)->()}export type UIPassthrough={Instance: +GuiBase2d,Height:number,Visible:boolean,Type:'UIPassthrough',Holder:Frame,SetHeight:(self:UIPassthrough,Height:number)-> +(),SetInstance:(self:UIPassthrough,Instance:GuiBase2d)->(),SetVisible:(self:UIPassthrough,Visible:boolean)->()}export +type Divider={Type:'Divider',Holder:Frame}export type Element=Label|Button|Toggle|Input|Slider|Dropdown|Viewport|Image| +Video|UIPassthrough|Divider export type Option=Toggle|Input|Slider|Dropdown|Viewport|Image|Video|UIPassthrough|KeyPicker +|ColorPicker export type BaseGroupbox={AddDivider:(self:Groupbox)->(),AddLabel:(self:Groupbox,Info:{Text:string,DoesWrap +:boolean?,Size:number?,Visible:boolean?,Idx:string?}|string,DoesWrap:boolean?,Idx:string?)->Label,AddButton:(self: +Groupbox,Info:ButtonInfo|string,Func:(()->())?,Idx:string?)->Button,AddCheckbox:(self:Groupbox,Idx:string,Info: +ToggleInfo)->Toggle,AddToggle:(self:Groupbox,Idx:string,Info:ToggleInfo)->Toggle,AddInput:(self:Groupbox,Idx:string,Info +:InputInfo)->Input,AddSlider:(self:Groupbox,Idx:string,Info:SliderInfo)->Slider,AddDropdown:(self:Groupbox,Idx:string, +Info:DropdownInfo)->Dropdown,AddViewport:(self:Groupbox,Idx:string,Info:ViewportInfo)->Viewport,AddImage:(self:Groupbox, +Idx:string,Info:ImageInfo)->Image,AddVideo:(self:Groupbox,Idx:string,Info:VideoInfo)->Video,AddUIPassthrough:(self: +Groupbox,Idx:string,Info:UIPassthroughInfo)->UIPassthrough,AddDependencyBox:(self:Groupbox)->DependencyBox, +AddDependencyGroupbox:(self:Groupbox)->DependencyGroupbox}export type DependencyBox=BaseGroupbox&{Visible:boolean, +Dependencies:{[number]:{Element}},Holder:Frame,Container:Frame,Elements:{[number]:Element},DependencyBoxes:{[number]: +DependencyBox},Resize:(self:DependencyBox)->(),Update:(self:DependencyBox,CancelSearch:boolean?)->(),SetupDependencies:( +self:DependencyBox,Dependencies:{{Element}})->()}export type DependencyGroupbox=BaseGroupbox&{Visible:boolean, +Dependencies:{[number]:{Element}},BoxHolder:Frame,Holder:Frame,Container:Frame,Tab:Tab,Elements:{[number]:Element}, +DependencyBoxes:{[number]:DependencyBox},Resize:(self:DependencyGroupbox)->(),Update:(self:DependencyGroupbox, +CancelSearch:boolean?)->(),SetupDependencies:(self:DependencyGroupbox,Dependencies:{{Element}})->()}export type Groupbox +=BaseGroupbox&{BoxHolder:Frame,Holder:Frame,Container:Frame,Tab:Tab,DependencyBoxes:{[number]:DependencyBox},Elements:{[ +number]:Element},Resize:(self:Groupbox)->()}export type SubTab=BaseGroupbox&{ButtonHolder:TextButton,Container:Frame,Tab +:Tab,Elements:{[number]:Element},DependencyBoxes:{[number]:DependencyBox},Show:(self:SubTab)->(),Hide:(self:SubTab)->(), +Resize:(self:SubTab)->()}export type Tabbox={ActiveTab:SubTab?,BoxHolder:Frame,Holder:Frame,Tabs:{[string]:SubTab}, +AddTab:(self:Tabbox,Name:string)->SubTab}export type Tab={Groupboxes:{[string]:Groupbox},Tabboxes:{[string]:Tabbox}, +DependencyGroupboxes:{[number]:DependencyGroupbox},Sides:{ScrollingFrame},WarningBox:{IsNormal:boolean,LockSize:boolean, +Visible:boolean,Title:string,Text:string},UpdateWarningBox:(self:Tab,Info:{IsNormal:boolean?,LockSize:boolean?,Visible: +boolean?,Title:string?,Text:string?})->(),Resize:(self:Tab,ResizeWarningBox:boolean?)->(),AddGroupbox:(self:Tab,Info:{ +Side:number,Name:string,IconName:string?})->Groupbox,AddLeftGroupbox:(self:Tab,Name:string,IconName:string?)->Groupbox, +AddRightGroupbox:(self:Tab,Name:string,IconName:string?)->Groupbox,AddTabbox:(self:Tab,Info:{Side:number,Name:string?} +)->Tabbox,AddLeftTabbox:(self:Tab,Name:string?)->Tabbox,AddRightTabbox:(self:Tab,Name:string?)->Tabbox,Hover:(self:Tab, +Hovering:boolean)->(),Show:(self:Tab)->(),Hide:(self:Tab)->()}export type KeyTab=BaseGroupbox&{Elements:{[any]:any}, +IsKeyTab:true,Container:ScrollingFrame,AddKeyBox:(self:KeyTab,ExpectedKey:string?,Callback:(Success:boolean,Key:string +)->())->(),Resize:(self:KeyTab)->(),Hover:(self:KeyTab,Hovering:boolean)->(),Show:(self:KeyTab)->(),Hide:(self:KeyTab)-> +()}export type Window={IsSidebarCompacted:(self:Window)->boolean,GetSidebarWidth:(self:Window)->number,SetSidebarWidth:( +self:Window,Width:number)->(),AddTab:(self:Window,Info:{Name:string,Icon:string?,Description:string?}|string,Icon:string +?,Description:string?)->Tab,AddKeyTab:(self:Window,Info:{Name:string,Icon:string?,Description:string?}|string,Icon: +string?,Description:string?)->KeyTab}export type Library={LocalPlayer:Player,DevicePlatform:Enum.Platform?,IsMobile: +boolean,IsRobloxFocused:boolean,ScreenGui:ScreenGui?,SearchText:string,Searching:boolean,GlobalSearch:boolean, +LastSearchTab:Tab?,ActiveTab:Tab?,Tabs:{[string]:Tab|KeyTab},DependencyBoxes:{[number]:DependencyBox|DependencyGroupbox} +,KeybindFrame:Frame?,KeybindContainer:Frame?,KeybindToggles:{[number]:KeybindToggle},Notifications:{[GuiObject]: +Notification},ToggleKeybind:Enum.KeyCode,TweenInfo:TweenInfo,NotifyTweenInfo:TweenInfo,Toggled:boolean,Unloaded:boolean, +Labels:{[(string|number)]:Label},Buttons:{[(string|number)]:Button|SubButton},Toggles:{[(string|number)]:Toggle},Options +:{[(string|number)]:Option},NotifySide:'Right'|'Left',ShowCustomCursor:boolean,ForceCheckbox:boolean, +ShowToggleFrameInKeybinds:boolean,NotifyOnError:boolean,CantDragForced:boolean,Signals:{[number]:RBXScriptConnection}, +UnloadSignals:{[number]:()->()},MinSize:Vector2,DPIScale:number,CornerRadius:number,IsLightTheme:boolean,Scheme:Scheme, +Registry:{[GuiObject]:{[string]:string|(()->Color3)}},DPIRegistry:{[GuiObject]:{[string]:any}},CopiedColor:{Color3| +number}?,ImageManager:{AddAsset:(AssetName:string,RobloxAssetId:number,URL:string,ForceRedownload:boolean?)->nil, +GetAsset:(AssetName:string)->string?,DownloadAsset:(AssetName:string,ForceRedownload:boolean?)->nil},UpdateKeybindFrame: +(self:Library)->(),UpdateDependencyBoxes:(self:Library)->(),UpdateSearch:(self:Library,SearchText:string)->(), +AddToRegistry:(self:Library,Instance:GuiObject,Properties:{[string]:string|(()->Color3)})->(),RemoveFromRegistry:(self: +Library,Instance:GuiObject)->(),UpdateColorsUsingRegistry:(self:Library)->(),UpdateDPI:(self:Library,Instance:GuiObject, +Properties:{[string]:any})->(),SetDPIScale:(self:Library,DPIScale:number)->(),GiveSignal:(self:Library,Connection: +RBXScriptConnection)->RBXScriptConnection,GetIcon:(self:Library,IconName:string)->Icon?,Validate:(self:Library,Table:{[ +string]:any},Template:{[string]:any})->{[string]:any},GetBetterColor:(self:Library,Color:Color3,Add:number)->Color3, +GetDarkerColor:(self:Library,Color:Color3)->Color3,GetKeyString:(self:Library,KeyCode:Enum.KeyCode)->string, +GetTextBounds:(self:Library,Text:string,Font:Font,Size:number,Width:number?)->(number,number),MouseIsOverFrame:(self: +Library,Frame:GuiObject,Mouse:Vector2)->boolean,SafeCallback:(self:Library,Func:(...any)->...any,...any)->...any, +MakeDraggable:(self:Library,UI:GuiObject,DragFrame:GuiObject,IgnoreToggled:boolean?,IsMainWindow:boolean?)->(), +MakeResizable:(self:Library,UI:GuiObject,DragFrame:GuiObject,Callback:(()->())?)->(),MakeCover:(self:Library,Holder: +GuiObject,Place:string)->Frame,MakeLine:(self:Library,Frame:GuiObject,Info:{AnchorPoint:Vector2?,Position:UDim2,Size: +UDim2})->Frame,MakeOutline:(self:Library,Frame:GuiObject,Corner:number?,ZIndex:number?)->Frame,AddDraggableButton:(self: +Library,Text:string,Func:(DraggableButton)->())->DraggableButton,AddDraggableMenu:(self:Library,Name:string)->(Frame, +Frame),SetWatermarkVisibility:(self:Library,Visible:boolean)->(),SetWatermark:(self:Library,Text:string)->(), +AddContextMenu:(self:Library,Holder:GuiObject,Size:UDim2|(()->UDim2),Offset:{[number]:number}|(()->{[number]:number}), +List:number?,ActiveCallback:((boolean)->())?)->ContextMenu,AddTooltip:(self:Library,InfoStr:string,DisabledInfoStr: +string,HoverInstance:GuiObject)->Tooltip,OnUnload:(self:Library,Callback:()->())->(),Unload:(self:Library)->(),SetFont:( +self:Library,FontFace:Font|Enum.Font)->(),SetNotifySide:(self:Library,Side:'Left'|'Right')->(),Notify:(self:Library,Info +:{Title:string,Description:string,Time:number?,SoundId:string|number?,Steps:number?,Persist:boolean?}|string,Time:number +?,SoundId:string|number?)->Notification,CreateWindow:(self:Library,WindowInfo:{Title:string?,Footer:string?,Position: +UDim2?,Size:UDim2?,Icon:string?,IconSize:UDim2?,BackgroundImage:string?,AutoShow:boolean?,Center:boolean?,Resizable: +boolean?,DisableSearch:boolean?,SearchbarSize:UDim2?,GlobalSearch:boolean?,CornerRadius:number?,NotifySide:'Left'| +'Right'?,ShowCustomCursor:boolean?,Font:Font|Enum.Font?,ToggleKeybind:Enum.KeyCode?,MobileButtonsSide:'Left'|'Right'?, +UnlockMouseWhileOpen:boolean?,EnableSidebarResize:boolean?,EnableCompacting:boolean?,DisableCompactingSnap:boolean?, +SidebarCompacted:boolean?,MinContainerWidth:number?,MinSidebarWidth:number?,SidebarCompactWidth:number?, +CompactWidthActivation:number?})->Window,Toggle:(self:Library,Value:boolean?)->()}return nil end)()end,[11]=function() +local aa,ab,ac=a(11)local ad return(function(...)local ae,af,ag,ah=game:GetService'ReplicatedStorage',game:GetService +'RunService',game:GetService'ContentProvider',ab.Parent local ai,aj,ak,al,am,an,ao,ap,aq,ar=ac(ah:WaitForChild'UIConfig' +),ac(ah:WaitForChild'tabs':WaitForChild'ESPTab'),ac(ah:WaitForChild'tabs':WaitForChild'FlyTab'),ac(ah:WaitForChild'tabs' +:WaitForChild'NoclipTab'),ac(ah:WaitForChild'tabs':WaitForChild'LocalTab'),ac(ah:WaitForChild'tabs':WaitForChild +'AimbotTab'),ac(ah:WaitForChild'tabs':WaitForChild'ItemSpawnerTab'),ac(ah:WaitForChild'tabs':WaitForChild'VisualTab'), +ac(ah:WaitForChild'tabs':WaitForChild'UtilsTab'),ac(ah:WaitForChild'tabs':WaitForChild'UISettingsTab')local function as( +):ModuleScript print'[LOG] Searching for Obsidian Init module...'local at=ae:FindFirstChild'Init'if at and at.ClassName +=='ModuleScript'then print'[LOG] Found Init module in ReplicatedStorage'return at end local au=ah.Parent and ah.Parent: +FindFirstChild'Init'if au and au.ClassName=='ModuleScript'then print'[LOG] Found Init module in Root.Parent'return au +end local av=ae:FindFirstChild'Shared'if av then local aw=av:FindFirstChild'init'or av:FindFirstChild'Init'if aw and aw. +ClassName=='ModuleScript'then print'[LOG] Found Init module in ReplicatedStorage.Shared'return aw end end print +'[LOG] ERROR: Could not find Obsidian Init-Module'error +[[Konnte Obsidian Init-Module nicht finden. Erwartet: ReplicatedStorage.Init oder ReplicatedStorage.Shared.init]]end +local at={}function at.start()local au=getgenv and getgenv()or _G local av,aw,ax=(au.ObsidianSilent==true)if av then aw= +_G.print ax=_G.warn _G.print=function()end _G.warn=function()end au.print=_G.print au.warn=_G.warn end print +'[LOG] Loading Obsidian Library...'local ay=ac(as())local az=ay.Library local aA=az.Options or{}au.Library=az local aB +do local aC,aD=pcall(function()return ac(ah:WaitForChild'utils':WaitForChild'icons')end)if aC and aD then aB=aD az: +SetIconModule(aD)else local aE,aF=pcall(function()return ac(ah:WaitForChild'FallbackIcons')end)if aE and aF then aB=aF +az:SetIconModule(aF)end end end if aB and aB.GetAsset then az.GetIcon=function(aC,aD)local aE,aF=pcall(aB.GetAsset,aD)if +aE then return aF end return nil end end local function aC(aD,aE)if aB and aB.GetAsset then local aF,aG=pcall(aB. +GetAsset,aD)if aF and aG and aG.Url then return aG.Url end end return aE or aD end print +'[LOG] Setting up UI color scheme...'az.Scheme.AccentColor=Color3.fromRGB(72,165,255)az.Scheme.BackgroundColor=Color3. +fromRGB(10,12,18)az.Scheme.MainColor=Color3.fromRGB(17,22,31)az.Scheme.OutlineColor=Color3.fromRGB(42,50,66)az. +ForceTextIcons=true print'[LOG] Creating main window...'local aD=az:CreateWindow(ai.Window)print +'[LOG] Adding tabs to window...'print('[DEBUG] Window object:',aD)local aE={ESP=aC('target','rbxassetid://6031071053'), +Player=aC('user','rbxassetid://6031071508'),Aimbot=aC('crosshair','rbxassetid://6031071320'),ItemSpawner=aC('box', +'rbxassetid://6031071146'),Visual=aC('palette','rbxassetid://6031071569'),Utils=aC('wrench','rbxassetid://6031071626'), +Fly=aC('wind','rbxassetid://6031071087'),Noclip=aC('ghost','rbxassetid://6031071453'),UISettings=aC('sliders-horizontal' +,'rbxassetid://6031071591')}local function aF(aG,aH)local aI,aJ=pcall(function()return aD:AddTab(aG,aH)end)if not aI +then warn(string.format('[ERROR] Failed to add tab %q: %s',aG,aJ))return nil end return aJ end local aG={ESP=aF('ESP',aE +.ESP),Player=aF('Player',aE.Player),Aimbot=aF('Aimbot',aE.Aimbot),ItemSpawner=aF('Item Spawner',aE.ItemSpawner),Visual= +aF('Visual',aE.Visual),Utils=aF('Utils',aE.Utils),Fly=aF('Fly',aE.Fly),Noclip=aF('Noclip',aE.Noclip),['UI Settings']=aF( +'UI Settings',aE.UISettings)}pcall(function()ag:PreloadAsync{aE.ESP,aE.Player,aE.Aimbot,aE.ItemSpawner,aE.Visual,aE. +Utils,aE.Fly,aE.Noclip,aE.UISettings}end)print('[DEBUG] Tabs table created with',#aG,'entries')local function aH(aI,aJ, +...)if not aG[aI]then warn(string.format('[ERROR] Tab %q not created (nil). Skipping build.',aI))return end local aK,aL= +pcall(aJ,...)if not aK then warn(string.format('[ERROR] Failed to build tab %q: %s',aI,aL))end end print +'[LOG] Building ESP tab...'aH('ESP',aj.build,az,aG)print'[LOG] Building Player tab...'aH('Player',am.build,az,aG)print +'[LOG] Building Aimbot tab...'aH('Aimbot',an.build,az,aG)print'[LOG] Building Item Spawner tab...'aH('ItemSpawner',ao. +build,az,aG)print'[LOG] Building Visual tab...'aH('Visual',ap.build,az,aG)print'[LOG] Building Utils tab...'aH('Utils', +aq.build,az,aG)print'[DEBUG] Utils tab built successfully'print'[LOG] Building Fly tab...'aH('Fly',ak.build,az,aG)print +'[DEBUG] Fly tab built successfully'print'[LOG] Building Noclip tab...'aH('Noclip',al.build,az,aG)print +'[DEBUG] Noclip tab built successfully'print'[LOG] Building UI Settings tab...'aH('UI Settings',ar.build,az,aG)print +'[DEBUG] UI Settings tab built successfully'print'[LOG] All tabs initialized successfully'print +'[LOG] Obsidian Admin Panel ready!'print'[LOG] Setting up unload mechanism...'au.unloadObsidian=function()print +'[LOG] Unload requested, unloading UI...'local aI,aJ=pcall(function()if az and not az.Unloaded then az:Unload()end end) +if aI then print'[LOG] UI unloaded successfully'else print('[ERROR] Failed to unload UI:',aJ)end end az:OnUnload( +function()au.unloadObsidian=nil au.Library=nil if av then if aw then _G.print=aw end if ax then _G.warn=ax end end end) +print[[[LOG] Unload mechanism ready. Use: getgenv().unloadObsidian() or _G.unloadObsidian()]]end return at end)()end,[12 +]=function()local aa,ab,ac=a(12)local ad return(function(...)local ae,af= +'rbxasset://textures/ui/GuiImagePlaceholder.png',{'radar','feather','layers','sliders','sparkles','target','wind', +'shield','palette','monitor','bolt','brush','book-open','wand-sparkles'}local ag={Icons=af}function ag.GetAsset(ah)for +ai,aj in ipairs(af)do if aj==ah then return{Url=ae,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=true} +end end return nil end return ag end)()end,[13]=function()local aa,ab,ac=a(13)local ad return(function(...)return{Window +={Title='Redstone Universal',Footer='Game: Universal',Center=true,AutoShow=true,Resizable=true,NotifySide='Right', +ShowCustomCursor=true}}end)()end,[15]=function()local aa,ab,ac=a(15)local ad return(function(...)local ae,af,ag,ah,ai= +game:GetService'Players',game:GetService'RunService',game:GetService'Workspace',Drawing,{}ai.__index=ai local aj={ +Enabled=true,IncludePlayers=true,IncludeNPCs=true,ShowHighlights=true,ShowLabels=true,ShowDistance=true,ShowTracers= +false,TextSize=15,LabelOffsetY=3,MaxDistance=3000,HighlightColor=Color3.fromRGB(255,170,0),LabelColor=Color3.fromRGB(255 +,230,150),TracerColor=Color3.fromRGB(255,0,0),FillTransparency=0.55,OutlineTransparency=0}local function ak(al)if not al +then return nil end return al:FindFirstChild'HumanoidRootPart'or al:FindFirstChild'UpperTorso'or al:FindFirstChild +'Torso'or al.PrimaryPart or al:FindFirstChildWhichIsA'BasePart'end local function al(am)if am.IsA then local an,ao= +pcall(function()return am:IsA'BasePart'end)if an then return ao end end local an=am.ClassName return an=='Part'or an== +'MeshPart'or an=='BasePart'or an=='UnionOperation'or an=='WedgePart'or an=='CornerWedgePart'or an=='TrussPart'end +local function am(an,ao)if an.FindFirstChildOfClass then return an:FindFirstChildOfClass(ao)end for ap,aq in an: +GetChildren()do if aq.ClassName==ao then return aq end end return nil end local function an(ao)for ap,aq in ao: +GetChildren()do if al(aq)then return aq end end return nil end local function ao(ap)return ap:FindFirstChild +'HumanoidRootPart'or ap:FindFirstChild'UpperTorso'or ap:FindFirstChild'Torso'or ap.PrimaryPart or(ap. +FindFirstChildWhichIsA and ap:FindFirstChildWhichIsA'BasePart')or an(ap)end local function ap(aq,ar)if aq.ClassName~= +'Model'then return false end local as=am(aq,'Humanoid')if not as then return false end local at=ae: +GetPlayerFromCharacter(aq)if at then if not ar.IncludePlayers or at==ae.LocalPlayer then return false end return ao(aq) +~=nil end if not ar.IncludeNPCs then return false end return ao(aq)~=nil end function ai.new()local aq=setmetatable({}, +ai)aq.config=table.clone(aj)aq.entries={}aq.connections={}aq.running=false return aq end function ai.UpdateConfig(aq,ar) +for as,at in ar do aq.config[as]=at end end function ai._createEntry(aq,ar)if aq.entries[ar]or not ap(ar,aq.config)then +return end local as=ao(ar)if not as then return end local at=Instance.new'Highlight'at.Name='CustomESP_Highlight'at. +Adornee=ar at.DepthMode=Enum.HighlightDepthMode.AlwaysOnTop at.Parent=ar local au=Instance.new'BillboardGui'au.Name= +'CustomESP_Billboard'au.Adornee=as au.AlwaysOnTop=true au.Size=UDim2.fromOffset(180,40)au.StudsOffset=Vector3.new(0,3,0) +au.Parent=ar local av=Instance.new'TextLabel'av.BackgroundTransparency=1 av.Size=UDim2.fromScale(1,1)av.Font=Enum.Font. +Code av.TextScaled=false av.TextSize=aq.config.TextSize av.TextStrokeTransparency=0.3 av.TextXAlignment=Enum. +TextXAlignment.Center av.TextYAlignment=Enum.TextYAlignment.Center av.Parent=au local aw=ah.new'Line'aw.Thickness=2 aw. +Color=aq.config.TracerColor aw.Transparency=1 aw.Visible=false aq.entries[ar]={model=ar,rootPart=as,highlight=at, +billboard=au,text=av,tracer=aw}end function ai._removeEntry(aq,ar)local as=aq.entries[ar]if not as then return end if as +.highlight then as.highlight:Destroy()end if as.billboard then as.billboard:Destroy()end if as.tracer then as.tracer: +Remove()end aq.entries[ar]=nil end function ai._updateEntry(aq,ar)if not ar.model.Parent then aq:_removeEntry(ar.model) +return end ar.rootPart=ao(ar.model)if not ar.rootPart then aq:_removeEntry(ar.model)return end ar.billboard.Adornee=ar. +rootPart ar.highlight.Adornee=ar.model local as,at=ag.CurrentCamera,ae.LocalPlayer local au=ak(at and at.Character)local +av=au and au.Position or(as and as.CFrame.Position)if not av then return end local aw=(ar.rootPart.Position-av). +Magnitude local ax=aw<=aq.config.MaxDistance local ay=aq.config.Enabled and ax ar.highlight.Enabled=ay and aq.config. +ShowHighlights ar.billboard.Enabled=ay and aq.config.ShowLabels ar.highlight.FillColor=aq.config.HighlightColor ar. +highlight.OutlineColor=aq.config.LabelColor ar.highlight.FillTransparency=aq.config.FillTransparency ar.highlight. +OutlineTransparency=aq.config.OutlineTransparency ar.billboard.StudsOffset=Vector3.new(0,aq.config.LabelOffsetY,0)ar. +text.TextSize=aq.config.TextSize ar.text.TextColor3=aq.config.LabelColor if aq.config.ShowDistance then ar.text.Text= +string.format('%s [%.0f]',ar.model.Name,aw)else ar.text.Text=ar.model.Name end ar.tracer.Visible=ay and aq.config. +ShowTracers if ar.tracer.Visible then local az,aA=as:WorldToViewportPoint(ar.rootPart.Position)local aB=Vector2.new(as. +ViewportSize.X/2,as.ViewportSize.Y)ar.tracer.From=aB ar.tracer.To=Vector2.new(az.X,az.Y)ar.tracer.Color=aq.config. +TracerColor end end function ai._scanWorkspace(aq)for ar,as in ag:GetDescendants()do if as.ClassName=='Model'then aq: +_createEntry(as)end end end function ai.Start(aq)if aq.running then return end aq.running=true aq:_scanWorkspace()for ar +,as in ae:GetPlayers()do if as~=ae.LocalPlayer then local function at(au)aq:_createEntry(au)end if as.Character then at( +as.Character)end table.insert(aq.connections,as.CharacterAdded:Connect(at))end end table.insert(aq.connections,ae. +PlayerAdded:Connect(function(ar)if not aq.running then return end local function as(at)aq:_createEntry(at)end if ar. +Character then as(ar.Character)end table.insert(aq.connections,ar.CharacterAdded:Connect(as))end))table.insert(aq. +connections,ae.PlayerRemoving:Connect(function(ar)local as=ar.Character if as then aq:_removeEntry(as)end end))table. +insert(aq.connections,ag.DescendantAdded:Connect(function(ar)if ar.ClassName=='Model'then aq:_createEntry(ar)end end)) +table.insert(aq.connections,ag.DescendantRemoving:Connect(function(ar)if ar.ClassName=='Model'then aq:_removeEntry(ar) +end end))table.insert(aq.connections,af.Heartbeat:Connect(function(ar)if not aq.running then return end aq. +_scanAccumulator=(aq._scanAccumulator or 0)+ar if aq._scanAccumulator>=5 then aq._scanAccumulator=0 aq:_scanWorkspace() +end end))table.insert(aq.connections,af.RenderStepped:Connect(function()for ar,as in aq.entries do aq:_updateEntry(as) +end end))end function ai.Stop(aq)if not aq.running then return end aq.running=false for ar,as in aq.connections do if as +and as.Connected then as:Disconnect()end end table.clear(aq.connections)for ar,as in aq.entries do aq:_removeEntry(ar) +end end return ai end)()end,[16]=function()local aa,ab,ac=a(16)local ad return(function(...)local ae,af,ag,ah,ai=game: +GetService'Players',game:GetService'RunService',game:GetService'UserInputService',game:GetService'Workspace',{}ai. +__index=ai local aj={Enabled=false,Speed=80,BoostMultiplier=2,Noclip=true}local function ak()local al=ae.LocalPlayer if +not al or not al.Character then return nil,nil end local am=al.Character local an,ao=am:FindFirstChildOfClass'Humanoid', +am:FindFirstChild'HumanoidRootPart'return ao,an end function ai.new()local al=setmetatable({},ai)al.config=table.clone( +aj)al.connections={}al.keyDown={[Enum.KeyCode.W]=false,[Enum.KeyCode.A]=false,[Enum.KeyCode.S]=false,[Enum.KeyCode.D]= +false}al.cachedCollision={}return al end function ai.UpdateConfig(al,am)for an,ao in am do al.config[an]=ao end end +function ai._disconnectAll(al)for am,an in al.connections do if an and an.Connected then an:Disconnect()end end table. +clear(al.connections)end function ai._setNoclip(al,am,an)for ao,ap in am:GetDescendants()do if ap:IsA'BasePart'then if +an then if al.cachedCollision[ap]==nil then al.cachedCollision[ap]=ap.CanCollide end ap.CanCollide=false else local aq= +al.cachedCollision[ap]if aq~=nil then ap.CanCollide=aq al.cachedCollision[ap]=nil end end end end end function ai.Start( +al)al:Stop()table.insert(al.connections,ag.InputBegan:Connect(function(am,an)if an then return end if al.keyDown[am. +KeyCode]~=nil then al.keyDown[am.KeyCode]=true end end))table.insert(al.connections,ag.InputEnded:Connect(function(am)if +al.keyDown[am.KeyCode]~=nil then al.keyDown[am.KeyCode]=false end end))table.insert(al.connections,af.RenderStepped: +Connect(function(am)if not al.config.Enabled then return end local an,ao=ak()if not an or not ao then return end ao: +ChangeState(Enum.HumanoidStateType.Physics)ao.AutoRotate=false local ap=ah.CurrentCamera if ap then local aq,ar,as=ap. +CFrame.LookVector,ap.CFrame.RightVector,Vector3.zero if al.keyDown[Enum.KeyCode.W]then as+=aq end if al.keyDown[Enum. +KeyCode.S]then as-=aq end if al.keyDown[Enum.KeyCode.A]then as-=ar end if al.keyDown[Enum.KeyCode.D]then as+=ar end if +as.Magnitude>0 then as=as.Unit end local at=al.config.Speed if ag:IsKeyDown(Enum.KeyCode.LeftShift)then at*=al.config. +BoostMultiplier end an.CFrame=an.CFrame+(as*at*am)an.AssemblyLinearVelocity=Vector3.zero an.AssemblyAngularVelocity= +Vector3.zero end if al.config.Noclip then al:_setNoclip(an.Parent,true)else al:_setNoclip(an.Parent,false)end end))end +function ai.Stop(al)al:_disconnectAll()for am,an in al.keyDown do al.keyDown[am]=false end local am,an=ak()if an then an +.AutoRotate=true an:ChangeState(Enum.HumanoidStateType.Running)end if am then al:_setNoclip(am.Parent,false)am. +AssemblyLinearVelocity=Vector3.zero end end return ai end)()end,[17]=function()local aa,ab,ac=a(17)local ad return( +function(...)local ae,af,ag,ah,ai=game:GetService'Players',game:GetService'RunService',game:GetService'Workspace', +getgenv and getgenv()or _G,{}ai.__index=ai local aj={Enabled=false}local function ak()if typeof(ah)~='table'then return +nil end local al=ah.NoclipModelName if typeof(al)=='string'and al~=''then local am=ag:FindFirstChild(al)if am and am:IsA +'Model'then return am end local an=ag:FindFirstChild(al,true)if an and an:IsA'Model'then return an end end local am=ah. +NoclipModelPath if typeof(am)=='string'and am~=''then local an=ag for ao,ap in ipairs(am:split'.')do if ap~=''then an=an +:FindFirstChild(ap)if not an then return nil end end end if an and an:IsA'Model'then return an end end return nil end +local function al()local am=ae.LocalPlayer if not am then return nil end if am.Character then return am.Character end +local an=ak()if an then return an end local ao=ag:FindFirstChild(am.Name,true)if ao and ao:IsA'Model'then return ao end +return nil end function ai.new()local am=setmetatable({},ai)am.config=table.clone(aj)am.connections={}am.cachedCollision +={}return am end function ai.UpdateConfig(am,an)for ao,ap in an do am.config[ao]=ap end end function ai._disconnectAll( +am)for an,ao in am.connections do if ao and ao.Connected then ao:Disconnect()end end table.clear(am.connections)end +function ai._apply(am,an,ao)for ap,aq in an:GetDescendants()do if aq:IsA'BasePart'then if ao then if am.cachedCollision[ +aq]==nil then am.cachedCollision[aq]={CanCollide=aq.CanCollide,CanTouch=aq.CanTouch,CanQuery=aq.CanQuery}end aq. +CanCollide=false aq.CanTouch=false aq.CanQuery=false else local ar=am.cachedCollision[aq]if ar~=nil then aq.CanCollide= +ar.CanCollide aq.CanTouch=ar.CanTouch aq.CanQuery=ar.CanQuery am.cachedCollision[aq]=nil end end end end if ao then +local ap=ae.LocalPlayer local aq=ak()or(ap and(ag:FindFirstChild(ap.Name)or ag:FindFirstChild(ap.Name,true)))if aq then +for ar,as in aq:GetDescendants()do if as:IsA'BasePart'then as.CanCollide=false as.CanTouch=false as.CanQuery=false end +end end end end function ai.Start(am)am:Stop()table.insert(am.connections,ae.LocalPlayer.CharacterAdded:Connect(function +()table.clear(am.cachedCollision)end))table.insert(am.connections,af.Stepped:Connect(function()local an=al()if not an +then return end am:_apply(an,am.config.Enabled)end))end function ai.Stop(am)am:_disconnectAll()local an=al()if an then +am:_apply(an,false)end table.clear(am.cachedCollision)end return ai end)()end,[19]=function()local aa,ab,ac=a(19)local +ad return(function(...)local ae,af,ag,ah=game:GetService'Players',game:GetService'RunService',game:GetService'Workspace' +,{}function ah.build(ai,aj)local ak,al,am,an=false,false,100,0.1 local function ao()local ap,aq=ae.LocalPlayer,ag. +CurrentCamera if not aq then return nil end local ar,as,at=ap:GetMouse(),am for au,av in ae:GetPlayers()do if av==ap or +not av.Character then continue end local aw=av.Character:FindFirstChild'HumanoidRootPart'if not aw then continue end +local ax,ay=aq:WorldToViewportPoint(aw.Position)if not ay then continue end local az=(Vector2.new(ax.X,ax.Y)-Vector2. +new(ar.X,ar.Y)).Magnitude if az0 then local aw,ax,ay=math.huge,(ae.LocalPlayer)if ax and ax. +Character and ax.Character:FindFirstChild'HumanoidRootPart'then local az=ax.Character.HumanoidRootPart.Position for aA, +aB in av do if aB:IsA'BasePart'then local aC=(aB.Position-az).Magnitude if aCan then aq(ay.Position)end end end end)else if as then as:Disconnect()as=nil end aj:Notify{Title='Auto Farm', +Description='Auto Farm deaktiviert.',Time=2}end end})ar:AddToggle('AutoCollectEnabled',{Text='Auto Collect',Default= +false,Callback=function(au)am=au if au then aj:Notify{Title='Auto Collect',Description='Auto Collect aktiviert.',Time=2} +at=af.Heartbeat:Connect(function()local av,aw=ap(),ae.LocalPlayer if aw and aw.Character then for ax,ay in av do if ay: +IsA'BasePart'and(ay.Position-aw.Character.HumanoidRootPart.Position).Magnitude120 then aN. +AssemblyLinearVelocity=Vector3.zero end if aP.Magnitude>120 then aN.AssemblyAngularVelocity=Vector3.zero end end end)am: +Notify{Title='Anti Fling',Description='Anti Fling aktiviert.',Time=2}else if aJ then aJ:Disconnect()aJ=nil end am:Notify +{Title='Anti Fling',Description='Anti Fling deaktiviert.',Time=2}end end})aI:AddToggle('ClickTeleport',{Text= +'Click Teleport (Rechtsklick)',Default=false,Callback=function(aK)at=aK if aK then am:Notify{Title='Click Teleport', +Description='Rechtsklick zum Teleportieren aktiviert.',Time=2}else am:Notify{Title='Click Teleport',Description= +'Click Teleport deaktiviert.',Time=2}end end})aI:AddToggle('Fling',{Text='Self-Fling',Default=false,Callback=function(aK +)au=aK local aL=ae.LocalPlayer if aL and aL.Character and aL.Character:FindFirstChild'HumanoidRootPart'then if aK then +local aM=Instance.new'BodyVelocity'aM.Velocity=Vector3.new(0,100,0)aM.MaxForce=Vector3.new(4000,4000,4000)aM.Parent=aL. +Character.HumanoidRootPart wait(0.5)aM:Destroy()am:Notify{Title='Fling',Description='Self-Fling ausgef\u{fc}hrt.',Time=2 +}else am:Notify{Title='Fling',Description='Fling bereit.',Time=2}end else am:Notify{Title='Fling',Description= +'Kein Character gefunden.',Time=2}end end})aI:AddToggle('HipHeight',{Text='High Hip Height',Default=false,Callback= +function(aK)av=aK local aL=ak()if aL then if aK then aL.HipHeight=50 am:Notify{Title='Hip Height',Description= +'H\u{fc}fth\u{f6}he auf 50 erh\u{f6}ht.',Time=2}else aL.HipHeight=0 am:Notify{Title='Hip Height',Description= +'H\u{fc}fth\u{f6}he zur\u{fc}ckgesetzt.',Time=2}end else am:Notify{Title='Hip Height',Description= +'Kein Humanoid gefunden.',Time=2}end end})aI:AddToggle('StareLock',{Text='Stare Lock',Default=false,Callback=function(aK +)aw=aK if aK then am:Notify{Title='Stare Lock',Description='Stare Lock aktiviert.',Time=2}else am:Notify{Title= +'Stare Lock',Description='Stare Lock deaktiviert.',Time=2}end end})aI:AddToggle('CustomFOVToggle',{Text='Custom FOV', +Default=false,Callback=function(aK)ax=aK if aK then ai.CurrentCamera.FieldOfView=70 am:Notify{Title='Custom FOV', +Description='Custom FOV aktiviert.',Time=2}else ai.CurrentCamera.FieldOfView=70 am:Notify{Title='Custom FOV',Description +='Custom FOV deaktiviert.',Time=2}end end})local aK=an.Player:AddRightGroupbox('Movement & Camera', +'rbxassetid://118473315376201')aK:AddSlider('LocalWalkSpeed',{Text='WalkSpeed',Default=ao.WalkSpeed,Min=8,Max=80, +Rounding=0,Callback=function(aL)ao.WalkSpeed=aL end})aK:AddSlider('LocalJumpPower',{Text='JumpPower',Default=ao. +JumpPower,Min=25,Max=120,Rounding=0,Callback=function(aL)ao.JumpPower=aL ao.JumpHeight=aL/7 end})aK:AddSlider( +'CustomFOV',{Text='Custom FOV',Default=70,Min=50,Max=120,Rounding=0,Callback=function(aL)if ax then ai.CurrentCamera. +FieldOfView=aL end end})aK:AddToggle('CameraModes',{Text='Camera Modes',Default=false,Callback=function(aL)ay=aL local +aM,aN=ai.CurrentCamera,ae.LocalPlayer if aL then if aN and aN.Character and aN.Character:FindFirstChild +'HumanoidRootPart'then local aO=aN.Character.HumanoidRootPart aM.CameraType=Enum.CameraType.Scriptable local aP,aR=aO. +Position+Vector3.new(0,50,0),aO.Position aM.CFrame=CFrame.new(aP,aR)am:Notify{Title='Camera Mode',Description= +'Top-Down Kamera aktiviert.',Time=2}else am:Notify{Title='Camera Mode',Description='Kein Character gefunden.',Time=2}end +else aM.CameraType=Enum.CameraType.Custom am:Notify{Title='Camera Mode',Description='Standard Kamera wiederhergestellt.' +,Time=2}end end})aK:AddToggle('PostEffects',{Text='Post Effects (Night Vision)',Default=false,Callback=function(aL)az=aL +if aL then local aM=Instance.new'ColorCorrectionEffect'aM.TintColor=Color3.fromRGB(0,255,0)aM.Saturation=-0.5 aM.Parent= +ag local aN=Instance.new'BloomEffect'aN.Intensity=1 aN.Size=24 aN.Threshold=0.8 aN.Parent=ag ag.Brightness=3 am:Notify{ +Title='Post Effects',Description='Night Vision aktiviert.',Time=2}else for aM,aN in ag:GetChildren()do if aN:IsA +'ColorCorrectionEffect'or aN:IsA'BloomEffect'or aN:IsA'BlurEffect'then aN:Destroy()end end ag.Brightness=1 am:Notify{ +Title='Post Effects',Description='Effekte entfernt.',Time=2}end end})aK:AddToggle('FirstPersonLock',{Text= +'First Person Lock',Default=false,Callback=function(aL)aA=aL local aM=ae.LocalPlayer if aM then if aL then aM.CameraMode +=Enum.CameraMode.LockFirstPerson af.MouseBehavior=Enum.MouseBehavior.LockCenter local aN=ak()if aN then aN.CameraOffset= +Vector3.new(0,0,0)end am:Notify{Title='Camera Lock',Description='First Person aktiviert.',Time=2}else aM.CameraMode=Enum +.CameraMode.Classic af.MouseBehavior=Enum.MouseBehavior.Default local aN=ak()if aN then aN.CameraOffset=Vector3.new(0,0, +0)end am:Notify{Title='Camera Lock',Description='Standard Kamera aktiviert.',Time=2}end end end})aK:AddToggle( +'Hitmarker',{Text='Hitmarker/Damage Indicator',Default=false,Callback=function(aL)aB=aL local aM=ak()if aM then if aL +then local aN=aM.HealthChanged:Connect(function(aN)local aO=aM:GetAttribute'LastHealth'or aM.MaxHealth if aN#aM then aP=1 end local aR=aM[aP]if aR~=ae.LocalPlayer then ae.LocalPlayer:SetAttribute('SpectatorTarget',aR)am: +Notify{Title='Spectator',Description='Folge nun '..aR.Name,Time=2}end end end else am:Notify{Title='Spectator', +Description='Aktiviere Spectator Mode zuerst.',Time=2}end end}aL:AddToggle('MacroRecorder',{Text='Macro Recorder', +Default=false,Callback=function(aM)aE=aM if aM then ae.LocalPlayer:SetAttribute('MacroRecording',true)ae.LocalPlayer: +SetAttribute('MacroInputs',{})am:Notify{Title='Macro',Description= +'Aufnahme gestartet. Dr\u{fc}cke Eingaben f\u{fc}r 5 Sekunden.',Time=3}wait(5)local aN=ae.LocalPlayer:GetAttribute +'MacroInputs'or{}ae.LocalPlayer:SetAttribute('RecordedMacro',aN)ae.LocalPlayer:SetAttribute('MacroRecording',false)am: +Notify{Title='Macro',Description=#aN..' Eingaben aufgezeichnet.',Time=2}else ae.LocalPlayer:SetAttribute( +'MacroRecording',false)am:Notify{Title='Macro',Description='Aufnahme gestoppt.',Time=2}end end})aL:AddButton{Text= +'Play Macro',Func=function()local aM=ae.LocalPlayer:GetAttribute'RecordedMacro'if aM and#aM>0 then am:Notify{Title= +'Macro',Description='Spiele Macro ab...',Time=2}for aN,aO in ipairs(aM)do if aO.UserInputType==Enum.UserInputType. +Keyboard then print('[MACRO] Key: '..aO.KeyCode.Name)elseif aO.UserInputType==Enum.UserInputType.MouseButton1 then print +'[MACRO] Mouse Click'end wait(0.1)end am:Notify{Title='Macro',Description='Macro abgespielt.',Time=2}else am:Notify{ +Title='Macro',Description='Kein Macro aufgezeichnet.',Time=2}end end}local aM,aN,aO ah.RenderStepped:Connect(function() +if ap then local aP=ak()if aP then local aR=af:IsKeyDown(Enum.KeyCode.LeftShift)or af:IsKeyDown(Enum.KeyCode.RightShift) +aP.WalkSpeed=aR and 100 or ao.WalkSpeed end end if aw then local aP,aR=ae.LocalPlayer,ai.CurrentCamera if aP and aP. +Character and aP.Character:FindFirstChild'HumanoidRootPart'then local aS,aT=100 for aU,aV in ae:GetPlayers()do if aV~=aP +and aV.Character and aV.Character:FindFirstChild'HumanoidRootPart'then local aW=(aV.Character.HumanoidRootPart.Position- +aP.Character.HumanoidRootPart.Position).Magnitude if aW=1 then local az=math.floor(ax/(ay-aw))ax=0 aw=ay if as then as:SetText('FPS: '.. +tostring(az))end end end)else if ar then ar:Disconnect()ar=nil end if as then as:SetText'FPS: ...'end end end})au: +AddSlider('QuickWalkSpeed',{Text='WalkSpeed',Default=am,Min=8,Max=80,Rounding=0,Callback=function(av)am=av local aw=ae. +LocalPlayer local ax=aw and aw.Character and aw.Character:FindFirstChildOfClass'Humanoid'if ax then ax.WalkSpeed=am end +end})au:AddSlider('QuickJumpPower',{Text='JumpPower',Default=an,Min=25,Max=120,Rounding=0,Callback=function(av)an=av +local aw=ae.LocalPlayer local ax=aw and aw.Character and aw.Character:FindFirstChildOfClass'Humanoid'if ax then if ax. +UseJumpPower~=nil then ax.UseJumpPower=true end ax.JumpPower=an end end})print'[DEBUG] Utils tab built successfully'end +return aj end)()end,[29]=function()local aa,ab,ac=a(29)local ad return(function(...)local ae,af,ag=game:GetService +'Players',game:GetService'Lighting',{}function ag.build(ah,ai)local aj,ak,al,am,an,ao,ap=20,5,2,Color3.new(1,1,1),2, +100000,ai.Visual:AddLeftGroupbox('Crosshair Settings','rbxassetid://6031071569')ap:AddToggle('CustomCrosshair',{Text= +'Custom Crosshair',Default=false,Callback=function(aq)if aq then local ar,as=Instance.new'ScreenGui',Instance.new'Frame' +as.Name='CrosshairFrame'as.Size=UDim2.fromOffset(aj,aj)as.Position=UDim2.fromScale(0.5,0.5)as.AnchorPoint=Vector2.new( +0.5,0.5)as.BackgroundTransparency=1 local at=Instance.new'Frame'at.Name='VerticalLine'at.Size=UDim2.new(0,al,0,aj/2-ak) +at.Position=UDim2.fromScale(0.5,0.5)at.AnchorPoint=Vector2.new(0.5,0.5)at.BackgroundColor3=am at.Parent=as local au= +Instance.new'Frame'au.Name='HorizontalLine'au.Size=UDim2.new(0,aj/2-ak,0,al)au.Position=UDim2.fromScale(0.5,0.5)au. +AnchorPoint=Vector2.new(0.5,0.5)au.BackgroundColor3=am au.Parent=as ar.Parent=ae.LocalPlayer:WaitForChild'PlayerGui'ae. +LocalPlayer:SetAttribute('CrosshairGUI',ar)ah:Notify{Title='Crosshair',Description='Custom Crosshair aktiviert.',Time=2} +else local ar=ae.LocalPlayer:GetAttribute'CrosshairGUI'if ar then ar:Destroy()ae.LocalPlayer:SetAttribute('CrosshairGUI' +,nil)end ah:Notify{Title='Crosshair',Description='Custom Crosshair deaktiviert.',Time=2}end end})ap:AddSlider( +'CrosshairSize',{Text='Crosshair Size',Default=aj,Min=5,Max=50,Rounding=0,Callback=function(aq)aj=aq local ar=ae. +LocalPlayer:GetAttribute'CrosshairGUI'if ar then local as=ar:FindFirstChild'CrosshairFrame'if as then as.Size=UDim2. +fromOffset(aj,aj)local at,au=as:FindFirstChild'VerticalLine',as:FindFirstChild'HorizontalLine'if at then at.Size=UDim2. +new(0,al,0,aj/2-ak)end if au then au.Size=UDim2.new(0,aj/2-ak,0,al)end end end end})ap:AddSlider('CrosshairGap',{Text= +'Crosshair Gap',Default=ak,Min=0,Max=20,Rounding=0,Callback=function(aq)ak=aq local ar=ae.LocalPlayer:GetAttribute +'CrosshairGUI'if ar then local as=ar:FindFirstChild'CrosshairFrame'if as then local at,au=as:FindFirstChild +'VerticalLine',as:FindFirstChild'HorizontalLine'if at then at.Size=UDim2.new(0,al,0,aj/2-ak)end if au then au.Size=UDim2 +.new(0,aj/2-ak,0,al)end end end end})ap:AddSlider('CrosshairThickness',{Text='Crosshair Thickness',Default=al,Min=1,Max= +10,Rounding=0,Callback=function(aq)al=aq local ar=ae.LocalPlayer:GetAttribute'CrosshairGUI'if ar then local as=ar: +FindFirstChild'CrosshairFrame'if as then local at,au=as:FindFirstChild'VerticalLine',as:FindFirstChild'HorizontalLine'if +at then at.Size=UDim2.new(0,al,0,aj/2-ak)end if au then au.Size=UDim2.new(0,aj/2-ak,0,al)end end end end})ap:AddLabel +'Crosshair Color'ap:AddColorPicker('CrosshairColor',{Default=am,Callback=function(aq)am=aq local ar=ae.LocalPlayer: +GetAttribute'CrosshairGUI'if ar then local as=ar:FindFirstChild'CrosshairFrame'if as then for at,au in as:GetChildren() +do if au:IsA'Frame'then au.BackgroundColor3=am end end end end end})local aq=ai.Visual:AddRightGroupbox( +'Environment Settings','rbxassetid://6031071569')aq:AddSlider('EnvBrightness',{Text='Brightness',Default=an,Min=0,Max=5, +Rounding=1,Callback=function(ar)an=ar if ae.LocalPlayer:GetAttribute'EnvTweaksEnabled'then af.Brightness=an end end})aq: +AddSlider('EnvFogEnd',{Text='Fog Distance',Default=ao,Min=100,Max=1000000,Rounding=0,Callback=function(ar)ao=ar if ae. +LocalPlayer:GetAttribute'EnvTweaksEnabled'then af.FogEnd=ao end end})aq:AddToggle('EnvTweaks',{Text= +'Apply Environment Tweaks',Default=false,Callback=function(ar)ae.LocalPlayer:SetAttribute('EnvTweaksEnabled',ar)if ar +then af.Brightness=an af.FogEnd=ao ah:Notify{Title='Env Tweaks',Description='Environment Tweaks aktiviert.',Time=2}else +af.Brightness=1 af.FogEnd=1000 ah:Notify{Title='Env Tweaks',Description='Environment zur\u{fc}ckgesetzt.',Time=2}end end +})aq:AddToggle('PostEffects',{Text='Night Vision',Default=false,Callback=function(ar)ae.LocalPlayer:SetAttribute( +'PostEffectsEnabled',ar)if ar then local as=Instance.new'ColorCorrectionEffect'as.TintColor=Color3.fromRGB(0,255,0)as. +Saturation=-0.5 as.Parent=af local at=Instance.new'BloomEffect'at.Intensity=1 at.Size=24 at.Threshold=0.8 at.Parent=af +af.Brightness=3 ah:Notify{Title='Night Vision',Description='Night Vision aktiviert.',Time=2}else for as,at in af: +GetChildren()do if at:IsA'ColorCorrectionEffect'or at:IsA'BloomEffect'or at:IsA'BlurEffect'then at:Destroy()end end af. +Brightness=1 ah:Notify{Title='Night Vision',Description='Effekte entfernt.',Time=2}end end})end return ag end)()end,[31] +=function()local aa,ab,ac=a(31)local ad return(function(...)local ae,af={['lucide-air-vent']= +'rbxassetid://113088244245544',['lucide-a-arrow-down']='rbxassetid://120414505628310',['lucide-airplay']= +'rbxassetid://84819241115336',['lucide-activity']='rbxassetid://95440027512297',['lucide-a-arrow-up']= +'rbxassetid://96834340832343',['lucide-alarm-clock-check']='rbxassetid://98975592700921',['lucide-a-large-small']= +'rbxassetid://107161607517892',['lucide-accessibility']='rbxassetid://89312644787341',['lucide-alarm-clock-minus']= +'rbxassetid://82130050165851',['lucide-alarm-smoke']='rbxassetid://73760741091094',['lucide-alarm-clock-plus']= +'rbxassetid://107534211370017',['lucide-alarm-clock']='rbxassetid://98565867866733',['lucide-album']= +'rbxassetid://81701758864352',['lucide-align-center-horizontal']='rbxassetid://90152735878239',[ +'lucide-align-center-vertical']='rbxassetid://137580719499796',['lucide-alarm-clock-off']='rbxassetid://82479038323456', +['lucide-align-horizontal-distribute-end']='rbxassetid://130288633910138',['lucide-align-end-vertical']= +'rbxassetid://79375195184015',['lucide-align-horizontal-distribute-start']='rbxassetid://115759685434358',[ +'lucide-align-horizontal-justify-end']='rbxassetid://132086487303478',['lucide-align-horizontal-distribute-center']= +'rbxassetid://101218054531765',['lucide-align-end-horizontal']='rbxassetid://130647352184453',[ +'lucide-align-horizontal-justify-start']='rbxassetid://123061644053286',['lucide-align-horizontal-justify-center']= +'rbxassetid://130462992510518',['lucide-align-start-vertical']='rbxassetid://75467192558846',[ +'lucide-align-vertical-distribute-end']='rbxassetid://70663488913005',['lucide-align-vertical-distribute-start']= +'rbxassetid://93076316561590',['lucide-align-vertical-distribute-center']='rbxassetid://112680826860842',[ +'lucide-align-horizontal-space-around']='rbxassetid://135300504827397',['lucide-align-horizontal-space-between']= +'rbxassetid://101539620584007',['lucide-align-vertical-justify-center']='rbxassetid://108023935392097',[ +'lucide-align-start-horizontal']='rbxassetid://75045942856873',['lucide-align-vertical-space-around']= +'rbxassetid://91561844813295',['lucide-align-vertical-justify-end']='rbxassetid://82519435764532',[ +'lucide-align-vertical-space-between']='rbxassetid://130004655159352',['lucide-align-vertical-justify-start']= +'rbxassetid://131206149699386',['lucide-ambulance']='rbxassetid://106769645430045',['lucide-ampersands']= +'rbxassetid://93939543590778',['lucide-amphora']='rbxassetid://114809125365665',['lucide-ampersand']= +'rbxassetid://132582081191428',['lucide-annoyed']='rbxassetid://129313977435040',['lucide-anchor']= +'rbxassetid://134444532304744',['lucide-angry']='rbxassetid://103432430359962',['lucide-antenna']= +'rbxassetid://85182227753391',['lucide-arrow-up-0-1']='rbxassetid://90304809894863',['lucide-arrow-right']= +'rbxassetid://77716250995685',['lucide-arrow-up-down']='rbxassetid://116007484352857',['lucide-arrow-right-to-line']= +'rbxassetid://130302853811067',['lucide-arrow-up-from-dot']='rbxassetid://77075818203314',['lucide-arrow-up-1-0']= +'rbxassetid://82920579849338',['lucide-arrow-up-a-z']='rbxassetid://98736822641557',['lucide-arrow-up-from-line']= +'rbxassetid://79511043291321',['lucide-arrow-up-left']='rbxassetid://101219738563532',['lucide-arrow-up-to-line']= +'rbxassetid://80522631977965',['lucide-arrow-up']='rbxassetid://98979600473533',['lucide-arrow-up-wide-narrow']= +'rbxassetid://128135935592172',['lucide-arrow-up-z-a']='rbxassetid://80259664662816',['lucide-arrow-up-narrow-wide']= +'rbxassetid://114413647002523',['lucide-arrows-up-from-line']='rbxassetid://85448327430869',['lucide-arrow-up-right']= +'rbxassetid://85768846153053',['lucide-asterisk']='rbxassetid://79613632867728',['lucide-at-sign']= +'rbxassetid://132050649903695',['lucide-audio-waveform']='rbxassetid://105657332422535',['lucide-atom']= +'rbxassetid://119903768232341',['lucide-audio-lines']='rbxassetid://102485709988523',['lucide-award']= +'rbxassetid://109642232951251',['lucide-axe']='rbxassetid://137270702075192',['lucide-axis-3d']= +'rbxassetid://95186769537241',['lucide-baby']='rbxassetid://80466052275228',['lucide-badge-dollar-sign']= +'rbxassetid://72214133963083',['lucide-badge-check']='rbxassetid://75706152439533',['lucide-backpack']= +'rbxassetid://126071485947627',['lucide-badge-alert']='rbxassetid://81414335979300',['lucide-badge-cent']= +'rbxassetid://76850285035350',['lucide-badge-indian-rupee']='rbxassetid://103682477938619',['lucide-badge-euro']= +'rbxassetid://85552724808775',['lucide-badge-plus']='rbxassetid://104455648105353',['lucide-badge-info']= +'rbxassetid://98380410122482',['lucide-badge-percent']='rbxassetid://70488566289726',['lucide-badge-question-mark']= +'rbxassetid://102240877066011',['lucide-badge-minus']='rbxassetid://101315554345083',['lucide-badge-japanese-yen']= +'rbxassetid://113045284352658',['lucide-badge-pound-sterling']='rbxassetid://98935044155029',[ +'lucide-badge-russian-ruble']='rbxassetid://112275627279902',['lucide-badge-x']='rbxassetid://101243395319925',[ +'lucide-badge-turkish-lira']='rbxassetid://101434263132943',['lucide-badge-swiss-franc']='rbxassetid://78642697556686',[ +'lucide-ban']='rbxassetid://101518975242759',['lucide-baggage-claim']='rbxassetid://140431745519415',['lucide-banana']= +'rbxassetid://86734447359422',['lucide-badge']='rbxassetid://94978560489891',['lucide-bandage']= +'rbxassetid://78234939423601',['lucide-banknote-arrow-down']='rbxassetid://134457083065515',['lucide-banknote-arrow-up'] +='rbxassetid://77764025685875',['lucide-barcode']='rbxassetid://121608699969250',['lucide-banknote']= +'rbxassetid://102066585318630',['lucide-baseline']='rbxassetid://128247774141861',['lucide-banknote-x']= +'rbxassetid://118738923534676',['lucide-barrel']='rbxassetid://116612716986134',['lucide-bath']= +'rbxassetid://101067851305042',['lucide-battery']='rbxassetid://78118317085253',['lucide-battery-charging']= +'rbxassetid://98180549695204',['lucide-battery-low']='rbxassetid://88294799598630',['lucide-battery-full']= +'rbxassetid://125340133800865',['lucide-battery-warning']='rbxassetid://120288517373566',['lucide-battery-plus']= +'rbxassetid://106711223904991',['lucide-battery-medium']='rbxassetid://73715347041489',['lucide-beaker']= +'rbxassetid://73110467757578',['lucide-bean']='rbxassetid://72912374193199',['lucide-bed-single']= +'rbxassetid://105005085469178',['lucide-bed-double']='rbxassetid://87256665828685',['lucide-bed']= +'rbxassetid://123966478228386',['lucide-beef']='rbxassetid://107606626961304',['lucide-bean-off']= +'rbxassetid://128820952943018',['lucide-beer-off']='rbxassetid://112815418189732',['lucide-beer']= +'rbxassetid://132755047015747',['lucide-bell-dot']='rbxassetid://92844550428675',['lucide-bell-off']= +'rbxassetid://82850239154074',['lucide-bell-minus']='rbxassetid://119315335306046',['lucide-bell-plus']= +'rbxassetid://95786634636936',['lucide-bell-ring']='rbxassetid://108990608140289',['lucide-between-horizontal-end']= +'rbxassetid://78170749508107',['lucide-bell-electric']='rbxassetid://106606348469124',['lucide-bell']= +'rbxassetid://92986018789671',['lucide-between-horizontal-start']='rbxassetid://73392709295543',['lucide-biceps-flexed'] +='rbxassetid://129098746499387',['lucide-bike']='rbxassetid://86948678675242',['lucide-between-vertical-start']= +'rbxassetid://90527894877833',['lucide-between-vertical-end']='rbxassetid://92678977822333',['lucide-binary']= +'rbxassetid://98571973201255',['lucide-binoculars']='rbxassetid://123282186340151',['lucide-biohazard']= +'rbxassetid://106659899610477',['lucide-birdhouse']='rbxassetid://89873652934066',['lucide-bird']= +'rbxassetid://128051070767918',['lucide-blinds']='rbxassetid://118851224898282',['lucide-bitcoin']= +'rbxassetid://133789665523083',['lucide-blend']='rbxassetid://115800779463786',['lucide-blocks']= +'rbxassetid://102716213912912',['lucide-bluetooth-connected']='rbxassetid://101031220149152',['lucide-bluetooth-off']= +'rbxassetid://88650866432234',['lucide-bluetooth-searching']='rbxassetid://90389994706536',['lucide-bluetooth']= +'rbxassetid://104154761844829',['lucide-bold']='rbxassetid://111520769173402',['lucide-bolt']= +'rbxassetid://100119987131796',['lucide-bomb']='rbxassetid://93241930182003',['lucide-bone']= +'rbxassetid://79800390446261',['lucide-book-a']='rbxassetid://137104343428455',['lucide-book-alert']= +'rbxassetid://91488851625933',['lucide-book-check']='rbxassetid://121069401172336',['lucide-book-audio']= +'rbxassetid://92694694813663',['lucide-book-copy']='rbxassetid://70771353229611',['lucide-book-dashed']= +'rbxassetid://135248639794134',['lucide-book-headphones']='rbxassetid://124546088059614',['lucide-book-image']= +'rbxassetid://104183725295808',['lucide-book-down']='rbxassetid://107990586598244',['lucide-book-heart']= +'rbxassetid://117316245973630',['lucide-book-key']='rbxassetid://85786219507047',['lucide-book-lock']= +'rbxassetid://114707451339109',['lucide-book-marked']='rbxassetid://87495016304285',['lucide-book-minus']= +'rbxassetid://125338544034101',['lucide-book-open-text']='rbxassetid://126539006156634',['lucide-book-open-check']= +'rbxassetid://126176385003423',['lucide-book-open']='rbxassetid://90912587435986',['lucide-book-plus']= +'rbxassetid://106800842279251',['lucide-book-type']='rbxassetid://112713438928681',['lucide-book-text']= +'rbxassetid://110858035175756',['lucide-book-up-2']='rbxassetid://140644523318440',['lucide-book-up']= +'rbxassetid://82634423935348',['lucide-book-x']='rbxassetid://75519368428679',['lucide-book-user']= +'rbxassetid://115260150286267',['lucide-book']='rbxassetid://122723818641136',['lucide-bookmark-check']= +'rbxassetid://100305287679595',['lucide-bookmark-minus']='rbxassetid://89339472182643',['lucide-bookmark-plus']= +'rbxassetid://121629455703261',['lucide-bookmark-x']='rbxassetid://95199400082726',['lucide-bookmark']= +'rbxassetid://79402714274099',['lucide-boom-box']='rbxassetid://79278219767666',['lucide-bot-message-square']= +'rbxassetid://140005134976316',['lucide-bot-off']='rbxassetid://108232370142862',['lucide-bot']= +'rbxassetid://140736083325394',['lucide-bow-arrow']='rbxassetid://120505014624085',['lucide-bottle-wine']= +'rbxassetid://83525579067279',['lucide-box']='rbxassetid://124463062989036',['lucide-boxes']= +'rbxassetid://80428483999163',['lucide-braces']='rbxassetid://134464413061657',['lucide-brain-circuit']= +'rbxassetid://140345789749626',['lucide-brain-cog']='rbxassetid://112334082333372',['lucide-brackets']= +'rbxassetid://82255555018168',['lucide-brick-wall-fire']='rbxassetid://113638535614716',['lucide-brain']= +'rbxassetid://117595464594048',['lucide-brick-wall-shield']='rbxassetid://130727573120968',['lucide-brick-wall']= +'rbxassetid://72678001347999',['lucide-briefcase-business']='rbxassetid://130776517324525',[ +'lucide-briefcase-conveyor-belt']='rbxassetid://129801966448976',['lucide-briefcase-medical']= +'rbxassetid://139347477504625',['lucide-briefcase']='rbxassetid://82757538374728',['lucide-bring-to-front']= +'rbxassetid://98158815328542',['lucide-brush-cleaning']='rbxassetid://114865910576575',['lucide-brush']= +'rbxassetid://104804660794508',['lucide-bubbles']='rbxassetid://74043669293391',['lucide-bug-off']= +'rbxassetid://70750253825664',['lucide-bug']='rbxassetid://133217899175868',['lucide-bug-play']= +'rbxassetid://101255792432435',['lucide-building-2']='rbxassetid://90211404869801',['lucide-building']= +'rbxassetid://94142196417142',['lucide-bus-front']='rbxassetid://114061367083086',['lucide-bus']= +'rbxassetid://103533775544693',['lucide-cable']='rbxassetid://123971108968315',['lucide-cake']= +'rbxassetid://78809026942881',['lucide-calculator']='rbxassetid://111319996351107',['lucide-cable-car']= +'rbxassetid://100990843310986',['lucide-cake-slice']='rbxassetid://77017796632392',['lucide-calendar-1']= +'rbxassetid://97520920737467',['lucide-calendar-arrow-down']='rbxassetid://91064263011603',['lucide-calendar-arrow-up']= +'rbxassetid://99637106996581',['lucide-calendar-check-2']='rbxassetid://114125132570695',['lucide-calendar-check']= +'rbxassetid://116253684302599',['lucide-calendar-clock']='rbxassetid://136384122630507',['lucide-calendar-cog']= +'rbxassetid://108707456136692',['lucide-calendar-days']='rbxassetid://116053302884403',['lucide-calendar-fold']= +'rbxassetid://78499415876043',['lucide-calendar-heart']='rbxassetid://129045890791373',['lucide-calendar-minus-2']= +'rbxassetid://92914082775319',['lucide-calendar-minus']='rbxassetid://98794994270597',['lucide-calendar-off']= +'rbxassetid://129310823272421',['lucide-calendar-plus-2']='rbxassetid://85285860422019',['lucide-calendar-plus']= +'rbxassetid://100688207800828',['lucide-calendar-range']='rbxassetid://111810913033024',['lucide-calendar-sync']= +'rbxassetid://133220655127088',['lucide-calendar-search']='rbxassetid://114039715128216',['lucide-calendar-x-2']= +'rbxassetid://97240797436634',['lucide-calendar-x']='rbxassetid://128431845692537',['lucide-calendar']= +'rbxassetid://122212681541035',['lucide-camera-off']='rbxassetid://133932005072215',['lucide-camera']= +'rbxassetid://103581066098430',['lucide-candy-cane']='rbxassetid://94939985265229',['lucide-candy-off']= +'rbxassetid://88990479901694',['lucide-candy']='rbxassetid://74395895317493',['lucide-cannabis']= +'rbxassetid://75289534442544',['lucide-captions-off']='rbxassetid://99426968303211',['lucide-car-front']= +'rbxassetid://99974862129908',['lucide-captions']='rbxassetid://81276942849544',['lucide-car-taxi-front']= +'rbxassetid://75835068120509',['lucide-car']='rbxassetid://82812587709594',['lucide-caravan']= +'rbxassetid://116439873777523',['lucide-card-sim']='rbxassetid://85439953191353',['lucide-carrot']= +'rbxassetid://123662079147516',['lucide-case-lower']='rbxassetid://132422866744394',['lucide-case-upper']= +'rbxassetid://139433939295333',['lucide-case-sensitive']='rbxassetid://95136793964342',['lucide-cassette-tape']= +'rbxassetid://75499923724913',['lucide-cast']='rbxassetid://128033542394208',['lucide-castle']= +'rbxassetid://74342594680492',['lucide-cat']='rbxassetid://123889736680476',['lucide-cctv']= +'rbxassetid://82683346848440',['lucide-chart-area']='rbxassetid://118262958526826',['lucide-chart-bar-big']= +'rbxassetid://82562770849927',['lucide-chart-bar-decreasing']='rbxassetid://96375771294561',[ +'lucide-chart-bar-increasing']='rbxassetid://110809152432047',['lucide-chart-bar-stacked']='rbxassetid://82174193159719' +,['lucide-chart-bar']='rbxassetid://103995825613537',['lucide-chart-candlestick']='rbxassetid://112748651353579',[ +'lucide-chart-column-big']='rbxassetid://90681415263457',['lucide-chart-column-decreasing']= +'rbxassetid://95111949611377',['lucide-chart-column-increasing']='rbxassetid://112854116621325',[ +'lucide-chart-column-stacked']='rbxassetid://130815119774342',['lucide-chart-column']='rbxassetid://113570673491876',[ +'lucide-chart-gantt']='rbxassetid://105536255199936',['lucide-chart-network']='rbxassetid://79520870122240',[ +'lucide-chart-line']='rbxassetid://131046231337699',['lucide-chart-no-axes-column-decreasing']= +'rbxassetid://126343881898808',['lucide-chart-no-axes-column-increasing']='rbxassetid://99281337487173',[ +'lucide-chart-no-axes-combined']='rbxassetid://108729618602768',['lucide-chart-no-axes-gantt']= +'rbxassetid://124799685645328',['lucide-chart-pie']='rbxassetid://96106407745361',['lucide-chart-scatter']= +'rbxassetid://129693290375415',['lucide-chart-spline']='rbxassetid://133038781937336',['lucide-check-check']= +'rbxassetid://82008427041187',['lucide-check-line']='rbxassetid://87594411605293',['lucide-check']= +'rbxassetid://87094841427580',['lucide-cherry']='rbxassetid://80140793814176',['lucide-chef-hat']= +'rbxassetid://76995841204351',['lucide-chess-bishop']='rbxassetid://134317427411066',['lucide-chess-king']= +'rbxassetid://125706376827705',['lucide-chess-pawn']='rbxassetid://103120686818215',['lucide-chess-knight']= +'rbxassetid://126712097152759',['lucide-chess-queen']='rbxassetid://88518024426987',['lucide-chess-rook']= +'rbxassetid://118683442753293',['lucide-chevron-first']='rbxassetid://121886420549566',['lucide-chevron-down']= +'rbxassetid://103223387937319',['lucide-chevron-last']='rbxassetid://110016827907126',['lucide-chevron-left']= +'rbxassetid://94181145808233',['lucide-chevron-up']='rbxassetid://129408335757027',['lucide-chevron-right']= +'rbxassetid://104874753130630',['lucide-chevrons-down-up']='rbxassetid://79293562088887',['lucide-chevrons-down']= +'rbxassetid://120950821242934',['lucide-chevrons-left-right-ellipsis']='rbxassetid://84983020575513',[ +'lucide-chevrons-left-right']='rbxassetid://75769819897403',['lucide-chevrons-left']='rbxassetid://125809177615447',[ +'lucide-chevrons-right-left']='rbxassetid://137573153592233',['lucide-chevrons-right']='rbxassetid://107104911377550',[ +'lucide-chevrons-up-down']='rbxassetid://82924571843667',['lucide-chevrons-up']='rbxassetid://107154820316297',[ +'lucide-chromium']='rbxassetid://135518195940817',['lucide-cigarette-off']='rbxassetid://108894229209554',[ +'lucide-church']='rbxassetid://106317033319260',['lucide-cigarette']='rbxassetid://132115894045225',[ +'lucide-circle-alert']='rbxassetid://107514968688735',['lucide-circle-arrow-down']='rbxassetid://84529918944346',[ +'lucide-circle-arrow-left']='rbxassetid://88991329949001',['lucide-circle-arrow-out-down-left']= +'rbxassetid://132564871193338',['lucide-circle-arrow-out-down-right']='rbxassetid://125571968216970',[ +'lucide-circle-arrow-out-up-left']='rbxassetid://123299086652800',['lucide-circle-arrow-right']= +'rbxassetid://85317839380029',['lucide-circle-check-big']='rbxassetid://113030214027267',['lucide-circle-arrow-up']= +'rbxassetid://89466164270861',['lucide-circle-check']='rbxassetid://138722225919600',['lucide-circle-chevron-right']= +'rbxassetid://135660060313721',['lucide-circle-chevron-down']='rbxassetid://102007457949013',['lucide-circle-chevron-up' +]='rbxassetid://85036267451789',['lucide-circle-chevron-left']='rbxassetid://124384902180726',['lucide-circle-dashed']= +'rbxassetid://84342901022097',['lucide-circle-divide']='rbxassetid://88295424429169',['lucide-circle-arrow-out-up-right' +]='rbxassetid://84631329515480',['lucide-circle-dot-dashed']='rbxassetid://104267974984791',['lucide-circle-dollar-sign' +]='rbxassetid://131850032806063',['lucide-circle-dot']='rbxassetid://88018780936807',['lucide-circle-ellipsis']= +'rbxassetid://98452861805576',['lucide-circle-equal']='rbxassetid://115567608354532',['lucide-circle-fading-arrow-up']= +'rbxassetid://136248854954252',['lucide-circle-fading-plus']='rbxassetid://109146422378799',['lucide-circle-gauge']= +'rbxassetid://118873788439098',['lucide-circle-minus']='rbxassetid://94451483271759',['lucide-circle-off']= +'rbxassetid://103851042045774',['lucide-circle-parking-off']='rbxassetid://81011530136572',['lucide-circle-parking']= +'rbxassetid://111444708821861',['lucide-circle-pause']='rbxassetid://115909305286891',['lucide-circle-percent']= +'rbxassetid://108345882434902',['lucide-circle-play']='rbxassetid://102297279653970',['lucide-circle-plus']= +'rbxassetid://119568567947937',['lucide-circle-pound-sterling']='rbxassetid://134660977089510',['lucide-circle-power']= +'rbxassetid://125238902438636',['lucide-circle-question-mark']='rbxassetid://85169507614755',['lucide-circle-slash-2']= +'rbxassetid://86810307205966',['lucide-circle-slash']='rbxassetid://111994989162803',['lucide-circle-small']= +'rbxassetid://96386484116204',['lucide-circle-star']='rbxassetid://131963629948566',['lucide-circle-stop']= +'rbxassetid://101880983726386',['lucide-circle-user-round']='rbxassetid://70980270104566',['lucide-circle-x']= +'rbxassetid://78733624425654',['lucide-circle']='rbxassetid://130206663687965',['lucide-circuit-board']= +'rbxassetid://131162320590629',['lucide-citrus']='rbxassetid://133914484046351',['lucide-clapperboard']= +'rbxassetid://87994290469459',['lucide-clipboard-check']='rbxassetid://117382012272220',['lucide-circle-user']= +'rbxassetid://71619064953472',['lucide-clipboard-clock']='rbxassetid://124441263777250',['lucide-clipboard-copy']= +'rbxassetid://100403352598119',['lucide-clipboard-list']='rbxassetid://123821058500206',['lucide-clipboard-minus']= +'rbxassetid://131504614214997',['lucide-clipboard-paste']='rbxassetid://80182306978235',['lucide-clipboard-pen-line']= +'rbxassetid://123860301063934',['lucide-clipboard-pen']='rbxassetid://93320544956716',['lucide-clipboard-plus']= +'rbxassetid://77662757035255',['lucide-clipboard-type']='rbxassetid://138196914632931',['lucide-clipboard-x']= +'rbxassetid://93366806355520',['lucide-clipboard']='rbxassetid://113663117976023',['lucide-clock-1']= +'rbxassetid://113454898752373',['lucide-clock-11']='rbxassetid://137246905548889',['lucide-clock-12']= +'rbxassetid://138293101540822',['lucide-clock-2']='rbxassetid://138441442475093',['lucide-clock-3']= +'rbxassetid://115343663198256',['lucide-clock-10']='rbxassetid://120387560227337',['lucide-clock-4']= +'rbxassetid://97771013312549',['lucide-clock-5']='rbxassetid://73888387072203',['lucide-clock-6']= +'rbxassetid://83784677808341',['lucide-clock-7']='rbxassetid://76118988452703',['lucide-clock-8']= +'rbxassetid://123266581784685',['lucide-clock-9']='rbxassetid://78708548463132',['lucide-clock-alert']= +'rbxassetid://93063264012489',['lucide-clock-arrow-down']='rbxassetid://127543269177042',['lucide-clock-arrow-up']= +'rbxassetid://76821217588234',['lucide-clock-check']='rbxassetid://109732547038762',['lucide-clock-fading']= +'rbxassetid://114819314915942',['lucide-clock-plus']='rbxassetid://93925110724700',['lucide-clock']= +'rbxassetid://139851423696667',['lucide-closed-caption']='rbxassetid://118738254580900',['lucide-cloud-alert']= +'rbxassetid://89478949399625',['lucide-cloud-check']='rbxassetid://132881979830173',['lucide-cloud-cog']= +'rbxassetid://122417099827577',['lucide-cloud-download']='rbxassetid://72478173326379',['lucide-cloud-fog']= +'rbxassetid://124079870744890',['lucide-cloud-hail']='rbxassetid://91192738645993',['lucide-cloud-lightning']= +'rbxassetid://137833039705770',['lucide-cloud-drizzle']='rbxassetid://121557270237341',['lucide-cloud-moon-rain']= +'rbxassetid://112788800748992',['lucide-cloud-moon']='rbxassetid://129642273666664',['lucide-cloud-off']= +'rbxassetid://107155061269103',['lucide-cloud-rain-wind']='rbxassetid://121245475277579',['lucide-cloud-rain']= +'rbxassetid://121649697528447',['lucide-cloud-snow']='rbxassetid://126439117825655',['lucide-cloud-sun-rain']= +'rbxassetid://138950924654720',['lucide-cloud-sun']='rbxassetid://105178531268580',['lucide-cloud-upload']= +'rbxassetid://100734555816059',['lucide-cloud']='rbxassetid://137231318826123',['lucide-cloudy']= +'rbxassetid://73249767001654',['lucide-clover']='rbxassetid://114845709519789',['lucide-club']= +'rbxassetid://138300983997218',['lucide-code-xml']='rbxassetid://101748661956945',['lucide-code']= +'rbxassetid://72069146538086',['lucide-codesandbox']='rbxassetid://133284865067332',['lucide-codepen']= +'rbxassetid://101438025548085',['lucide-coffee']='rbxassetid://100395382589803',['lucide-cog']= +'rbxassetid://88736731606398',['lucide-coins']='rbxassetid://132443494570075',['lucide-columns-2']= +'rbxassetid://108264027883109',['lucide-columns-3-cog']='rbxassetid://78745140374932',['lucide-columns-3']= +'rbxassetid://85373797690931',['lucide-columns-4']='rbxassetid://75940935311015',['lucide-combine']= +'rbxassetid://97815463468029',['lucide-command']='rbxassetid://82080879408046',['lucide-compass']= +'rbxassetid://97564727838415',['lucide-component']='rbxassetid://134144485641331',['lucide-computer']= +'rbxassetid://81032027435945',['lucide-concierge-bell']='rbxassetid://81777157339711',['lucide-cone']= +'rbxassetid://115432394754761',['lucide-construction']='rbxassetid://119522917188644',['lucide-contact-round']= +'rbxassetid://95708741521812',['lucide-contact']='rbxassetid://116220461276828',['lucide-container']= +'rbxassetid://88550572218063',['lucide-contrast']='rbxassetid://132967737461639',['lucide-cookie']= +'rbxassetid://122159915499706',['lucide-cooking-pot']='rbxassetid://105005758283498',['lucide-copy-check']= +'rbxassetid://98232166540454',['lucide-copy-plus']='rbxassetid://104981459015752',['lucide-copy-minus']= +'rbxassetid://113996515346735',['lucide-copy-x']='rbxassetid://133499460929346',['lucide-copy-slash']= +'rbxassetid://91220337906231',['lucide-copyleft']='rbxassetid://136562303540665',['lucide-copyright']= +'rbxassetid://76322901353742',['lucide-corner-down-left']='rbxassetid://96677272730579',['lucide-corner-down-right']= +'rbxassetid://134667109074827',['lucide-corner-left-down']='rbxassetid://72470587971918',['lucide-corner-left-up']= +'rbxassetid://73953954863215',['lucide-corner-right-down']='rbxassetid://84941025228999',['lucide-copy']= +'rbxassetid://128463727794542',['lucide-corner-right-up']='rbxassetid://79801870040113',['lucide-corner-up-left']= +'rbxassetid://123514297443736',['lucide-corner-up-right']='rbxassetid://84241960900564',['lucide-cpu']= +'rbxassetid://122936516042287',['lucide-creative-commons']='rbxassetid://71466571846572',['lucide-credit-card']= +'rbxassetid://133360811635727',['lucide-croissant']='rbxassetid://98280325891641',['lucide-crop']= +'rbxassetid://76055472302483',['lucide-cross']='rbxassetid://75100956787938',['lucide-crosshair']= +'rbxassetid://119124184549056',['lucide-crown']='rbxassetid://136122001401017',['lucide-cuboid']= +'rbxassetid://95082826412885',['lucide-currency']='rbxassetid://73671572489615',['lucide-cup-soda']= +'rbxassetid://124008454793344',['lucide-cylinder']='rbxassetid://111253761238108',['lucide-dam']= +'rbxassetid://87881824702178',['lucide-database-backup']='rbxassetid://75311650224117',['lucide-database']= +'rbxassetid://119299664310591',['lucide-database-zap']='rbxassetid://108584033443039',['lucide-decimals-arrow-left']= +'rbxassetid://106742398028170',['lucide-delete']='rbxassetid://129223837108610',['lucide-dessert']= +'rbxassetid://113562954276962',['lucide-decimals-arrow-right']='rbxassetid://135916529001991',['lucide-diameter']= +'rbxassetid://106024440049223',['lucide-diamond-minus']='rbxassetid://94944912113536',['lucide-diamond-percent']= +'rbxassetid://115734739111887',['lucide-diamond-plus']='rbxassetid://123686365574625',['lucide-diamond']= +'rbxassetid://91344995267499',['lucide-dice-2']='rbxassetid://111293771714862',['lucide-dice-1']= +'rbxassetid://99201818629880',['lucide-dice-3']='rbxassetid://140385478470416',['lucide-dice-4']= +'rbxassetid://121522450870676',['lucide-dice-5']='rbxassetid://123629316296933',['lucide-dice-6']= +'rbxassetid://87042080881970',['lucide-dices']='rbxassetid://95089680619494',['lucide-diff']= +'rbxassetid://80112085374614',['lucide-disc-2']='rbxassetid://121078777317372',['lucide-disc-3']= +'rbxassetid://94384652290056',['lucide-disc-album']='rbxassetid://86341639226387',['lucide-disc']= +'rbxassetid://109431817995341',['lucide-divide']='rbxassetid://124908211519684',['lucide-dna-off']= +'rbxassetid://84260545543694',['lucide-dna']='rbxassetid://82925188897386',['lucide-dock']= +'rbxassetid://130432548288501',['lucide-dog']='rbxassetid://135737866848801',['lucide-dollar-sign']= +'rbxassetid://72619464046558',['lucide-donut']='rbxassetid://122654366921014',['lucide-door-closed']= +'rbxassetid://114150080075522',['lucide-door-closed-locked']='rbxassetid://125126374811533',['lucide-door-open']= +'rbxassetid://123778216631047',['lucide-dot']='rbxassetid://136673888685240',['lucide-download']= +'rbxassetid://100820322908093',['lucide-drafting-compass']='rbxassetid://85336386803408',['lucide-drama']= +'rbxassetid://90011340110072',['lucide-dribbble']='rbxassetid://83826963617748',['lucide-drill']= +'rbxassetid://125341078941381',['lucide-drone']='rbxassetid://80273660110899',['lucide-droplet-off']= +'rbxassetid://120009591467366',['lucide-droplet']='rbxassetid://120745643292261',['lucide-droplets']= +'rbxassetid://121681742993337',['lucide-drum']='rbxassetid://124152150067768',['lucide-drumstick']= +'rbxassetid://80983300653310',['lucide-dumbbell']='rbxassetid://138245019812319',['lucide-ear']= +'rbxassetid://124953202931671',['lucide-ear-off']='rbxassetid://106457179918226',['lucide-earth-lock']= +'rbxassetid://77630277353747',['lucide-earth']='rbxassetid://99567852560587',['lucide-eclipse']= +'rbxassetid://120170549207328',['lucide-egg-fried']='rbxassetid://107696247511912',['lucide-egg-off']= +'rbxassetid://71865222834020',['lucide-egg']='rbxassetid://74077828249299',['lucide-ellipsis']= +'rbxassetid://78449915318917',['lucide-ellipsis-vertical']='rbxassetid://130645731741151',['lucide-equal-approximately'] +='rbxassetid://123996847137772',['lucide-equal-not']='rbxassetid://108053548732555',['lucide-equal']= +'rbxassetid://97680214480216',['lucide-eraser']='rbxassetid://100652041684396',['lucide-ethernet-port']= +'rbxassetid://83059942598586',['lucide-euro']='rbxassetid://133717180614905',['lucide-expand']= +'rbxassetid://138020628831868',['lucide-ev-charger']='rbxassetid://129061580743760',['lucide-external-link']= +'rbxassetid://108766284581078',['lucide-eye-closed']='rbxassetid://94679378452708',['lucide-eye-off']= +'rbxassetid://71078373482627',['lucide-eye']='rbxassetid://84586229544223',['lucide-facebook']= +'rbxassetid://71385196703457',['lucide-factory']='rbxassetid://132999616234981',['lucide-fast-forward']= +'rbxassetid://118513526984000',['lucide-fan']='rbxassetid://117386414979086',['lucide-feather']= +'rbxassetid://123769058034984',['lucide-fence']='rbxassetid://88818973066412',['lucide-ferris-wheel']= +'rbxassetid://133128632263942',['lucide-figma']='rbxassetid://120705462239526',['lucide-file-archive']= +'rbxassetid://94339146764953',['lucide-file-axis-3d']='rbxassetid://110188053750644',['lucide-file-badge']= +'rbxassetid://111037832298396',['lucide-file-box']='rbxassetid://86680241427851',['lucide-file-braces-corner']= +'rbxassetid://131946856612247',['lucide-file-braces']='rbxassetid://84427132110312',[ +'lucide-file-chart-column-increasing']='rbxassetid://87515411829113',['lucide-file-chart-column']= +'rbxassetid://80108292403787',['lucide-file-chart-line']='rbxassetid://118005825824629',['lucide-file-chart-pie']= +'rbxassetid://107639383851167',['lucide-file-check-corner']='rbxassetid://129978795373472',['lucide-file-check']= +'rbxassetid://108618371356640',['lucide-file-clock']='rbxassetid://139643888311815',['lucide-file-code-corner']= +'rbxassetid://133387515339792',['lucide-file-code']='rbxassetid://115281703183663',['lucide-file-cog']= +'rbxassetid://85942694904587',['lucide-file-diff']='rbxassetid://94870713921565',['lucide-file-digit']= +'rbxassetid://85958556237660',['lucide-file-down']='rbxassetid://135257456757735',['lucide-file-exclamation-point']= +'rbxassetid://91750055723378',['lucide-file-headphone']='rbxassetid://108763383896474',['lucide-file-heart']= +'rbxassetid://129966799800008',['lucide-file-image']='rbxassetid://104274766178160',['lucide-file-input']= +'rbxassetid://90646074183163',['lucide-file-key']='rbxassetid://92440256929652',['lucide-file-lock']= +'rbxassetid://76980156391910',['lucide-file-minus-corner']='rbxassetid://120966114846559',['lucide-file-minus']= +'rbxassetid://119106212477183',['lucide-file-music']='rbxassetid://136136876922410',['lucide-file-output']= +'rbxassetid://128552508259693',['lucide-file-pen-line']='rbxassetid://83518561169870',['lucide-file-pen']= +'rbxassetid://95425438458747',['lucide-file-play']='rbxassetid://100763826634694',['lucide-file-plus-corner']= +'rbxassetid://78517434084413',['lucide-file-plus']='rbxassetid://118438263178788',['lucide-file-question-mark']= +'rbxassetid://131885651218637',['lucide-file-scan']='rbxassetid://102713455869698',['lucide-file-search-corner']= +'rbxassetid://83816859916634',['lucide-file-search']='rbxassetid://130659571527880',['lucide-file-signal']= +'rbxassetid://75545722651039',['lucide-file-sliders']='rbxassetid://71903238418061',['lucide-file-spreadsheet']= +'rbxassetid://90200363634013',['lucide-file-stack']='rbxassetid://80727374771864',['lucide-file-symlink']= +'rbxassetid://116471238173611',['lucide-file-terminal']='rbxassetid://133083862330487',['lucide-file-text']= +'rbxassetid://115284332253825',['lucide-file-type-corner']='rbxassetid://117445859705507',['lucide-file-type']= +'rbxassetid://108904497138686',['lucide-file-up']='rbxassetid://70528395015940',['lucide-file-user']= +'rbxassetid://120216706412554',['lucide-file-video-camera']='rbxassetid://105983947710503',['lucide-file-volume']= +'rbxassetid://80573298141215',['lucide-file-x-corner']='rbxassetid://105551647199014',['lucide-file-x']= +'rbxassetid://126193753613258',['lucide-file']='rbxassetid://87255401659870',['lucide-film']= +'rbxassetid://105347963847094',['lucide-files']='rbxassetid://102391076620192',['lucide-fingerprint']= +'rbxassetid://116393223079983',['lucide-fire-extinguisher']='rbxassetid://98055077209529',['lucide-fish-off']= +'rbxassetid://122847512230931',['lucide-fish-symbol']='rbxassetid://123118629335632',['lucide-fish']= +'rbxassetid://82592705493804',['lucide-flag-off']='rbxassetid://121562927612543',['lucide-flag-triangle-left']= +'rbxassetid://75395548540594',['lucide-flag-triangle-right']='rbxassetid://131344001192872',['lucide-flag']= +'rbxassetid://90315583265113',['lucide-flame']='rbxassetid://88573180774976',['lucide-flame-kindling']= +'rbxassetid://93852253183041',['lucide-flashlight-off']='rbxassetid://121575632549357',['lucide-flashlight']= +'rbxassetid://127237270232350',['lucide-flask-conical-off']='rbxassetid://74215918311243',['lucide-flask-conical']= +'rbxassetid://92363223751618',['lucide-flask-round']='rbxassetid://137860883688107',['lucide-flip-horizontal-2']= +'rbxassetid://126220971987740',['lucide-flip-vertical-2']='rbxassetid://120054095852694',['lucide-flip-horizontal']= +'rbxassetid://96623693441271',['lucide-flip-vertical']='rbxassetid://90077372315899',['lucide-flower-2']= +'rbxassetid://108507068937434',['lucide-flower']='rbxassetid://128883084271859',['lucide-focus']= +'rbxassetid://75001591953071',['lucide-fold-horizontal']='rbxassetid://111086196755758',['lucide-fold-vertical']= +'rbxassetid://116627357412632',['lucide-folder-archive']='rbxassetid://77750425007186',['lucide-folder-clock']= +'rbxassetid://75266409782876',['lucide-folder-check']='rbxassetid://128166080923864',['lucide-folder-closed']= +'rbxassetid://96084215893251',['lucide-folder-code']='rbxassetid://111114572127754',['lucide-folder-cog']= +'rbxassetid://92435026944010',['lucide-folder-dot']='rbxassetid://127079206879087',['lucide-folder-down']= +'rbxassetid://122774694127191',['lucide-folder-git-2']='rbxassetid://137882529004198',['lucide-folder-git']= +'rbxassetid://113495028414841',['lucide-folder-heart']='rbxassetid://100812946130537',['lucide-folder-input']= +'rbxassetid://84199859130367',['lucide-folder-kanban']='rbxassetid://90845210247037',['lucide-folder-key']= +'rbxassetid://94247827470011',['lucide-folder-lock']='rbxassetid://129631598904132',['lucide-folder-minus']= +'rbxassetid://85854915193371',['lucide-folder-open-dot']='rbxassetid://125348097394400',['lucide-folder-open']= +'rbxassetid://77744859901309',['lucide-folder-output']='rbxassetid://135285574919155',['lucide-folder-pen']= +'rbxassetid://78587158368364',['lucide-folder-plus']='rbxassetid://93057308721557',['lucide-folder-root']= +'rbxassetid://95224160750678',['lucide-folder-search-2']='rbxassetid://86860614307543',['lucide-folder-search']= +'rbxassetid://131127787857999',['lucide-folder-symlink']='rbxassetid://138650370214952',['lucide-folder-sync']= +'rbxassetid://104408248199533',['lucide-folder-tree']='rbxassetid://86379991475354',['lucide-folder-up']= +'rbxassetid://87980648385612',['lucide-folder-x']='rbxassetid://139720728298750',['lucide-folder']= +'rbxassetid://107268726142323',['lucide-folders']='rbxassetid://96663097513322',['lucide-footprints']= +'rbxassetid://122362549360138',['lucide-forklift']='rbxassetid://71380229503176',['lucide-forward']= +'rbxassetid://132706238679461',['lucide-frame']='rbxassetid://94739752532338',['lucide-framer']= +'rbxassetid://112760292091022',['lucide-frown']='rbxassetid://108168379708837',['lucide-fuel']= +'rbxassetid://98485592959003',['lucide-funnel-plus']='rbxassetid://136496409730859',['lucide-fullscreen']= +'rbxassetid://140029490334827',['lucide-funnel-x']='rbxassetid://92865725363630',['lucide-funnel']= +'rbxassetid://121007436886647',['lucide-gallery-horizontal-end']='rbxassetid://71725977830225',[ +'lucide-gallery-horizontal']='rbxassetid://111883023568480',['lucide-gallery-thumbnails']='rbxassetid://99454573206257', +['lucide-gallery-vertical-end']='rbxassetid://96978046171892',['lucide-gallery-vertical']='rbxassetid://135930145074448' +,['lucide-gamepad-2']='rbxassetid://136497971865501',['lucide-gamepad-directional']='rbxassetid://133672138400476',[ +'lucide-gauge']='rbxassetid://127095088175101',['lucide-gamepad']='rbxassetid://92764835721066',['lucide-gavel']= +'rbxassetid://104614994868142',['lucide-gem']='rbxassetid://126079406603750',['lucide-georgian-lari']= +'rbxassetid://82868863303787',['lucide-ghost']='rbxassetid://86463660178859',['lucide-gift']= +'rbxassetid://108519120439558',['lucide-git-branch-minus']='rbxassetid://80187999120050',['lucide-git-branch-plus']= +'rbxassetid://100845415440135',['lucide-git-branch']='rbxassetid://98752498655713',['lucide-git-commit-horizontal']= +'rbxassetid://81428079977402',['lucide-git-commit-vertical']='rbxassetid://123084084972444',['lucide-git-compare-arrows' +]='rbxassetid://73447329960275',['lucide-git-compare']='rbxassetid://117915732831013',['lucide-git-fork']= +'rbxassetid://77861673332481',['lucide-git-graph']='rbxassetid://133037283157703',['lucide-git-pull-request-arrow']= +'rbxassetid://127804022642477',['lucide-git-merge']='rbxassetid://108100105720002',['lucide-git-pull-request-closed']= +'rbxassetid://103795784782702',['lucide-git-pull-request-create-arrow']='rbxassetid://110035480366791',[ +'lucide-git-pull-request-draft']='rbxassetid://101849838844965',['lucide-git-pull-request-create']= +'rbxassetid://73922009651251',['lucide-git-pull-request']='rbxassetid://134890863887177',['lucide-github']= +'rbxassetid://90442344355717',['lucide-glass-water']='rbxassetid://73852985217447',['lucide-gitlab']= +'rbxassetid://74847303617405',['lucide-glasses']='rbxassetid://138327635108330',['lucide-globe-lock']= +'rbxassetid://124777534934695',['lucide-globe']='rbxassetid://121892495315737',['lucide-goal']= +'rbxassetid://139525313616846',['lucide-gpu']='rbxassetid://86310200329550',['lucide-graduation-cap']= +'rbxassetid://108143073004000',['lucide-grape']='rbxassetid://94212913547728',['lucide-grid-2x2-check']= +'rbxassetid://107778683629728',['lucide-grid-2x2-plus']='rbxassetid://93494065607655',['lucide-grid-2x2-x']= +'rbxassetid://116918270075168',['lucide-grid-2x2']='rbxassetid://74972285132812',['lucide-grid-3x2']= +'rbxassetid://127237607313372',['lucide-grid-3x3']='rbxassetid://130624828845334',['lucide-grip-horizontal']= +'rbxassetid://107452070161871',['lucide-grip-vertical']='rbxassetid://111342175169212',['lucide-grip']= +'rbxassetid://98224060867469',['lucide-group']='rbxassetid://100115796502836',['lucide-guitar']= +'rbxassetid://70634289338498',['lucide-ham']='rbxassetid://103218847878805',['lucide-hammer']= +'rbxassetid://129162084211991',['lucide-hamburger']='rbxassetid://117800720477645',['lucide-hand-coins']= +'rbxassetid://137135612943122',['lucide-hand-grab']='rbxassetid://124852578247982',['lucide-hand-fist']= +'rbxassetid://92264285937687',['lucide-hand-heart']='rbxassetid://107922963485284',['lucide-hand-helping']= +'rbxassetid://105776129286384',['lucide-hand-metal']='rbxassetid://110306157796579',['lucide-hand-platter']= +'rbxassetid://77025962869908',['lucide-hand']='rbxassetid://138061943524463',['lucide-handbag']= +'rbxassetid://126458080699645',['lucide-hard-drive-download']='rbxassetid://101148109842994',['lucide-handshake']= +'rbxassetid://125245507632077',['lucide-hard-drive-upload']='rbxassetid://136949962752918',['lucide-hard-drive']= +'rbxassetid://105496479593334',['lucide-hard-hat']='rbxassetid://107921625644712',['lucide-hash']= +'rbxassetid://138551571043823',['lucide-hat-glasses']='rbxassetid://106151343087559',['lucide-haze']= +'rbxassetid://77593629089346',['lucide-hdmi-port']='rbxassetid://72909074290661',['lucide-heading-1']= +'rbxassetid://108366837595310',['lucide-heading-2']='rbxassetid://108399864495071',['lucide-heading-3']= +'rbxassetid://93187427004275',['lucide-heading-4']='rbxassetid://87490226969795',['lucide-heading-5']= +'rbxassetid://100474818435383',['lucide-heading-6']='rbxassetid://86348102132031',['lucide-heading']= +'rbxassetid://100225229640075',['lucide-headphone-off']='rbxassetid://135565162427522',['lucide-headphones']= +'rbxassetid://130980031990503',['lucide-headset']='rbxassetid://94421619082158',['lucide-heart-crack']= +'rbxassetid://97910916371765',['lucide-heart-handshake']='rbxassetid://83992765024844',['lucide-heart-minus']= +'rbxassetid://106522754548211',['lucide-heart-off']='rbxassetid://84018392298422',['lucide-heart-plus']= +'rbxassetid://140560450564568',['lucide-heart']='rbxassetid://116548733348165',['lucide-helicopter']= +'rbxassetid://80026702359428',['lucide-hexagon']='rbxassetid://77153485156642',['lucide-heart-pulse']= +'rbxassetid://125140331309496',['lucide-highlighter']='rbxassetid://100662309160112',['lucide-history']= +'rbxassetid://78323145134041',['lucide-hop-off']='rbxassetid://99626935397106',['lucide-hop']= +'rbxassetid://99595753034903',['lucide-hospital']='rbxassetid://89780900885543',['lucide-hotel']= +'rbxassetid://129456013028421',['lucide-hourglass']='rbxassetid://107428588046119',['lucide-house-heart']= +'rbxassetid://136128528520278',['lucide-house-plug']='rbxassetid://106231180268417',['lucide-heater']= +'rbxassetid://71620219616184',['lucide-house-plus']='rbxassetid://117387354681806',['lucide-house-wifi']= +'rbxassetid://133543673676580',['lucide-house']='rbxassetid://117158858229715',['lucide-ice-cream-bowl']= +'rbxassetid://116430452211676',['lucide-ice-cream-cone']='rbxassetid://121476220426559',['lucide-id-card-lanyard']= +'rbxassetid://84192683486474',['lucide-image-down']='rbxassetid://103895009628951',['lucide-id-card']= +'rbxassetid://123429919193564',['lucide-image-minus']='rbxassetid://115615448533062',['lucide-image-off']= +'rbxassetid://81334185205824',['lucide-image-play']='rbxassetid://98187451863926',['lucide-image-plus']= +'rbxassetid://119072611707161',['lucide-image-up']='rbxassetid://125952357146523',['lucide-image-upscale']= +'rbxassetid://140597686328401',['lucide-image']='rbxassetid://104728449791983',['lucide-images']= +'rbxassetid://96196781495845',['lucide-import']='rbxassetid://129043146935452',['lucide-inbox']= +'rbxassetid://119132055764026',['lucide-indian-rupee']='rbxassetid://75170758596788',['lucide-infinity']= +'rbxassetid://72806696637649',['lucide-info']='rbxassetid://88068430669656',['lucide-inspection-panel']= +'rbxassetid://137247676785488',['lucide-iteration-ccw']='rbxassetid://73772216441614',['lucide-instagram']= +'rbxassetid://133619240052748',['lucide-japanese-yen']='rbxassetid://87809669933668',['lucide-iteration-cw']= +'rbxassetid://102769450820257',['lucide-italic']='rbxassetid://79356424569147',['lucide-kanban']= +'rbxassetid://106685923834692',['lucide-joystick']='rbxassetid://107172845243539',['lucide-kayak']= +'rbxassetid://126957119651542',['lucide-key-round']='rbxassetid://71121298158320',['lucide-key-square']= +'rbxassetid://120013278174541',['lucide-key']='rbxassetid://136504216693355',['lucide-keyboard-music']= +'rbxassetid://134292800800399',['lucide-keyboard-off']='rbxassetid://83190375371761',['lucide-keyboard']= +'rbxassetid://77247338408610',['lucide-lamp-ceiling']='rbxassetid://73422649706087',['lucide-lamp-desk']= +'rbxassetid://123046250917145',['lucide-lamp-floor']='rbxassetid://140111294843982',['lucide-lamp-wall-down']= +'rbxassetid://133914995491360',['lucide-lamp-wall-up']='rbxassetid://123858651364894',['lucide-lamp']= +'rbxassetid://102144334060895',['lucide-land-plot']='rbxassetid://83920406156963',['lucide-languages']= +'rbxassetid://96791960375235',['lucide-landmark']='rbxassetid://117708186520366',['lucide-laptop-minimal-check']= +'rbxassetid://102433170114071',['lucide-laptop-minimal']='rbxassetid://78632367101590',['lucide-laptop']= +'rbxassetid://76559677350820',['lucide-lasso-select']='rbxassetid://84736713428476',['lucide-lasso']= +'rbxassetid://114131172927866',['lucide-laugh']='rbxassetid://134622393946154',['lucide-layers-2']= +'rbxassetid://116144650165277',['lucide-layers']='rbxassetid://129313475515456',['lucide-layout-dashboard']= +'rbxassetid://85565639978932',['lucide-layout-grid']='rbxassetid://119103903159248',['lucide-layout-list']= +'rbxassetid://81899347699850',['lucide-layout-panel-left']='rbxassetid://74332229491684',['lucide-layout-panel-top']= +'rbxassetid://136612509327033',['lucide-layout-template']='rbxassetid://102401436212569',['lucide-leaf']= +'rbxassetid://118236369495965',['lucide-leafy-green']='rbxassetid://72618576349476',['lucide-lectern']= +'rbxassetid://131890588380254',['lucide-library-big']='rbxassetid://129065535946415',['lucide-library']= +'rbxassetid://119154800743972',['lucide-life-buoy']='rbxassetid://72179775264820',['lucide-ligature']= +'rbxassetid://82539978143925',['lucide-lightbulb-off']='rbxassetid://117986652001052',['lucide-line-squiggle']= +'rbxassetid://80131863470506',['lucide-lightbulb']='rbxassetid://137831108095518',['lucide-link-2-off']= +'rbxassetid://115547392134183',['lucide-link-2']='rbxassetid://78096404862526',['lucide-link']= +'rbxassetid://94869749114315',['lucide-linkedin']='rbxassetid://82447398060669',['lucide-list-check']= +'rbxassetid://133323763781799',['lucide-list-checks']='rbxassetid://110535231838184',['lucide-list-chevrons-up-down']= +'rbxassetid://116491324644612',['lucide-list-chevrons-down-up']='rbxassetid://125986889234147',['lucide-list-collapse']= +'rbxassetid://84084117411967',['lucide-list-end']='rbxassetid://115742538988344',['lucide-list-filter-plus']= +'rbxassetid://131373357759520',['lucide-list-filter']='rbxassetid://131678371413521',['lucide-list-indent-increase']= +'rbxassetid://71190512441232',['lucide-list-indent-decrease']='rbxassetid://91718966727755',['lucide-list-minus']= +'rbxassetid://139486752443311',['lucide-list-music']='rbxassetid://107269645613734',['lucide-list-ordered']= +'rbxassetid://76961664030330',['lucide-list-plus']='rbxassetid://134041752185482',['lucide-list-start']= +'rbxassetid://104083889285543',['lucide-list-todo']='rbxassetid://76548760686802',['lucide-list-tree']= +'rbxassetid://110021838422331',['lucide-list-restart']='rbxassetid://118007916922156',['lucide-list-video']= +'rbxassetid://126776596723007',['lucide-list-x']='rbxassetid://116967934200594',['lucide-list']= +'rbxassetid://101979889191306',['lucide-loader-circle']='rbxassetid://92630967969808',['lucide-loader']= +'rbxassetid://135387269563108',['lucide-loader-pinwheel']='rbxassetid://96229486477236',['lucide-locate-fixed']= +'rbxassetid://92665266803055',['lucide-locate-off']='rbxassetid://132116489352952',['lucide-locate']= +'rbxassetid://114038997508013',['lucide-lock-keyhole-open']='rbxassetid://121620135081253',['lucide-lock-keyhole']= +'rbxassetid://93479983696082',['lucide-lock-open']='rbxassetid://136955323515981',['lucide-log-in']= +'rbxassetid://80731799029478',['lucide-lock']='rbxassetid://90921773104239',['lucide-log-out']= +'rbxassetid://87452029891656',['lucide-logs']='rbxassetid://115342957193649',['lucide-lollipop']= +'rbxassetid://96086436728073',['lucide-luggage']='rbxassetid://102475073472771',['lucide-magnet']= +'rbxassetid://115800338178361',['lucide-mail-check']='rbxassetid://130866366241101',['lucide-mail-minus']= +'rbxassetid://90357440084572',['lucide-mail-open']='rbxassetid://120912370020238',['lucide-mail-plus']= +'rbxassetid://105453437540305',['lucide-mail-search']='rbxassetid://138611539125594',['lucide-mail-warning']= +'rbxassetid://108324270986237',['lucide-mail-x']='rbxassetid://131567019093955',['lucide-mail']= +'rbxassetid://102210422931497',['lucide-mail-question-mark']='rbxassetid://83635124879033',['lucide-mailbox']= +'rbxassetid://136502315559793',['lucide-map-minus']='rbxassetid://79548303981195',['lucide-mails']= +'rbxassetid://95259554750782',['lucide-map-pin-check-inside']='rbxassetid://118855942766023',['lucide-map-pin-check']= +'rbxassetid://75463730278213',['lucide-map-pin-house']='rbxassetid://136620156501660',['lucide-map-pin-minus-inside']= +'rbxassetid://138025408823855',['lucide-map-pin-minus']='rbxassetid://115682143831777',['lucide-map-pin-off']= +'rbxassetid://122175289904916',['lucide-map-pin-plus-inside']='rbxassetid://110959469718100',['lucide-map-pin-pen']= +'rbxassetid://140426111268524',['lucide-map-pin-plus']='rbxassetid://104618035407972',['lucide-map-pin-x-inside']= +'rbxassetid://118077224812868',['lucide-map-pin-x']='rbxassetid://130231979784395',['lucide-map-pin']= +'rbxassetid://111215190487808',['lucide-map-pinned']='rbxassetid://83372619239425',['lucide-map']= +'rbxassetid://77244185329274',['lucide-map-plus']='rbxassetid://81706013346909',['lucide-mars-stroke']= +'rbxassetid://75636090662077',['lucide-mars']='rbxassetid://130238707430444',['lucide-martini']= +'rbxassetid://111385959473534',['lucide-maximize-2']='rbxassetid://84017481744159',['lucide-maximize']= +'rbxassetid://106863270920996',['lucide-medal']='rbxassetid://118342639273903',['lucide-megaphone-off']= +'rbxassetid://98137888897576',['lucide-megaphone']='rbxassetid://140438880308430',['lucide-meh']= +'rbxassetid://71376399314302',['lucide-memory-stick']='rbxassetid://106240521273005',['lucide-menu']= +'rbxassetid://97830048654884',['lucide-merge']='rbxassetid://105469716392923',['lucide-message-circle-code']= +'rbxassetid://87064808045859',['lucide-message-circle-dashed']='rbxassetid://120007143767284',[ +'lucide-message-circle-more']='rbxassetid://78585034415216',['lucide-message-circle-off']='rbxassetid://105171695148515' +,['lucide-message-circle-heart']='rbxassetid://123298805854963',['lucide-message-circle-plus']= +'rbxassetid://112808826830629',['lucide-message-circle-question-mark']='rbxassetid://120498335753248',[ +'lucide-message-circle-reply']='rbxassetid://123994602133920',['lucide-message-circle-warning']= +'rbxassetid://88791055333891',['lucide-message-square-code']='rbxassetid://127578766801912',[ +'lucide-message-square-dashed']='rbxassetid://97339682672545',['lucide-message-circle']='rbxassetid://87724350439979',[ +'lucide-message-square-diff']='rbxassetid://104853535561407',['lucide-message-circle-x']='rbxassetid://109185323471410', +['lucide-message-square-dot']='rbxassetid://115155407038598',['lucide-message-square-lock']= +'rbxassetid://74043521317438',['lucide-message-square-heart']='rbxassetid://124866570858282',[ +'lucide-message-square-off']='rbxassetid://103392259390261',['lucide-message-square-more']='rbxassetid://74100750389312' +,['lucide-message-square-plus']='rbxassetid://73461125274422',['lucide-message-square-quote']= +'rbxassetid://99789701045701',['lucide-message-square-reply']='rbxassetid://124431495504076',[ +'lucide-message-square-share']='rbxassetid://75022422761144',['lucide-message-square-text']= +'rbxassetid://98558503107273',['lucide-message-square-warning']='rbxassetid://114233969982788',[ +'lucide-message-square-x']='rbxassetid://114480131577614',['lucide-messages-square']='rbxassetid://88487722728357',[ +'lucide-message-square']='rbxassetid://103004885271396',['lucide-mic-off']='rbxassetid://130636196289557',[ +'lucide-mic-vocal']='rbxassetid://85452517674120',['lucide-mic']='rbxassetid://113829618217637',['lucide-microchip']= +'rbxassetid://113884581061578',['lucide-microscope']='rbxassetid://105131306622747',['lucide-microwave']= +'rbxassetid://118058013794656',['lucide-milk-off']='rbxassetid://127828908535164',['lucide-milestone']= +'rbxassetid://101221463054316',['lucide-minimize-2']='rbxassetid://73226205274756',['lucide-minimize']= +'rbxassetid://87451643914409',['lucide-milk']='rbxassetid://75221608717275',['lucide-minus']= +'rbxassetid://104589564683158',['lucide-monitor-check']='rbxassetid://79895590653224',['lucide-monitor-cloud']= +'rbxassetid://103436009465276',['lucide-monitor-cog']='rbxassetid://83533301821185',['lucide-monitor-dot']= +'rbxassetid://130058782649938',['lucide-monitor-down']='rbxassetid://92405649947808',['lucide-monitor-off']= +'rbxassetid://86849782824176',['lucide-monitor-pause']='rbxassetid://70451209237229',['lucide-monitor-play']= +'rbxassetid://77299203844191',['lucide-monitor-smartphone']='rbxassetid://136330942918429',['lucide-monitor-speaker']= +'rbxassetid://132422868586647',['lucide-monitor-up']='rbxassetid://131473896147720',['lucide-monitor-stop']= +'rbxassetid://95146484920513',['lucide-monitor']='rbxassetid://139353277780920',['lucide-monitor-x']= +'rbxassetid://139256949689830',['lucide-moon']='rbxassetid://114821576742195',['lucide-moon-star']= +'rbxassetid://86009289158283',['lucide-motorbike']='rbxassetid://124472585034102',['lucide-mountain-snow']= +'rbxassetid://118586013024411',['lucide-mountain']='rbxassetid://112090145410019',['lucide-mouse-off']= +'rbxassetid://111776590515670',['lucide-mouse-pointer-2-off']='rbxassetid://93737676023776',['lucide-mouse-pointer-2']= +'rbxassetid://94380218532701',['lucide-mouse-pointer-ban']='rbxassetid://132810447109064',['lucide-mouse-pointer-click'] +='rbxassetid://100974925049833',['lucide-mouse-pointer']='rbxassetid://101670551854156',['lucide-move-3d']= +'rbxassetid://136916458255997',['lucide-mouse']='rbxassetid://86593802299475',['lucide-move-diagonal-2']= +'rbxassetid://113910105805300',['lucide-move-down-left']='rbxassetid://109903174474640',['lucide-move-diagonal']= +'rbxassetid://132396580711279',['lucide-move-down-right']='rbxassetid://74529237705395',['lucide-move-down']= +'rbxassetid://107144619813971',['lucide-move-horizontal']='rbxassetid://115560592546233',['lucide-move-left']= +'rbxassetid://80545322525492',['lucide-move-right']='rbxassetid://131278988329492',['lucide-move-up-left']= +'rbxassetid://95325907649986',['lucide-move-up']='rbxassetid://136239030275514',['lucide-move-up-right']= +'rbxassetid://135754994001652',['lucide-move-vertical']='rbxassetid://95753406408439',['lucide-move']= +'rbxassetid://118949779309780',['lucide-music-2']='rbxassetid://124912153067390',['lucide-music-3']= +'rbxassetid://135975429715794',['lucide-music']='rbxassetid://121735471098353',['lucide-navigation-2-off']= +'rbxassetid://79358410038434',['lucide-navigation-2']='rbxassetid://135794129207799',['lucide-music-4']= +'rbxassetid://86415335147670',['lucide-navigation-off']='rbxassetid://98161080839193',['lucide-network']= +'rbxassetid://124786341443739',['lucide-newspaper']='rbxassetid://124862294983379',['lucide-nfc']= +'rbxassetid://138712621054579',['lucide-navigation']='rbxassetid://121792465392585',['lucide-non-binary']= +'rbxassetid://75354421731746',['lucide-notebook-pen']='rbxassetid://133062962478390',['lucide-notebook-tabs']= +'rbxassetid://115564390577716',['lucide-notebook-text']='rbxassetid://134088135763596',['lucide-notebook']= +'rbxassetid://126255905540075',['lucide-notepad-text-dashed']='rbxassetid://73126859884821',['lucide-notepad-text']= +'rbxassetid://91911619971147',['lucide-nut-off']='rbxassetid://100784148710505',['lucide-nut']= +'rbxassetid://131703004915852',['lucide-octagon-alert']='rbxassetid://136499554527588',['lucide-octagon-pause']= +'rbxassetid://98781271756246',['lucide-octagon-x']='rbxassetid://78831958052419',['lucide-octagon']= +'rbxassetid://136544294572577',['lucide-octagon-minus']='rbxassetid://130368971764103',['lucide-omega']= +'rbxassetid://71963171494289',['lucide-origami']='rbxassetid://122921120807855',['lucide-orbit']= +'rbxassetid://85243485505722',['lucide-package-2']='rbxassetid://72763311044692',['lucide-option']= +'rbxassetid://89689942785813',['lucide-package-open']='rbxassetid://104777964816713',['lucide-package-minus']= +'rbxassetid://111488655185859',['lucide-package-check']='rbxassetid://108722801845888',['lucide-package-plus']= +'rbxassetid://86505458342241',['lucide-package-search']='rbxassetid://90506724414429',['lucide-package-x']= +'rbxassetid://98384048231969',['lucide-package']='rbxassetid://122372419510477',['lucide-paintbrush-vertical']= +'rbxassetid://119919088195374',['lucide-paint-bucket']='rbxassetid://103570577531565',['lucide-paintbrush']= +'rbxassetid://75935012051533',['lucide-paint-roller']='rbxassetid://97134283403504',['lucide-palette']= +'rbxassetid://74054293084301',['lucide-panda']='rbxassetid://88610893340444',['lucide-panel-bottom-close']= +'rbxassetid://73284675013407',['lucide-panel-bottom-dashed']='rbxassetid://114492361603553',['lucide-panel-left-close']= +'rbxassetid://117070029525699',['lucide-panel-bottom-open']='rbxassetid://97397234433778',['lucide-panel-bottom']= +'rbxassetid://110021301688704',['lucide-panel-left-open']='rbxassetid://96678557411248',[ +'lucide-panel-left-right-dashed']='rbxassetid://90595885833553',['lucide-panel-left']='rbxassetid://102723108416008',[ +'lucide-panel-right-close']='rbxassetid://86731946227423',['lucide-panel-right-open']='rbxassetid://110977219495295',[ +'lucide-panel-right-dashed']='rbxassetid://137643530050459',['lucide-panel-right']='rbxassetid://74602496003700',[ +'lucide-panel-top-bottom-dashed']='rbxassetid://117786090845649',['lucide-panel-top-close']= +'rbxassetid://87210445949859',['lucide-panel-top-dashed']='rbxassetid://121589066591901',['lucide-panel-top-open']= +'rbxassetid://99893228311049',['lucide-panel-top']='rbxassetid://102271099347923',['lucide-panels-left-bottom']= +'rbxassetid://138265563184579',['lucide-panels-right-bottom']='rbxassetid://76948986785063',['lucide-panels-top-left']= +'rbxassetid://76084228366793',['lucide-panel-left-dashed']='rbxassetid://98002654816384',['lucide-parking-meter']= +'rbxassetid://78386671113020',['lucide-parentheses']='rbxassetid://130294727580309',['lucide-paperclip']= +'rbxassetid://136520131296164',['lucide-pause']='rbxassetid://135513904768640',['lucide-paw-print']= +'rbxassetid://132551318749155',['lucide-party-popper']='rbxassetid://104696324409492',['lucide-pc-case']= +'rbxassetid://72338632594869',['lucide-pen-line']='rbxassetid://79207750112559',['lucide-pen']= +'rbxassetid://108132003351690',['lucide-pen-tool']='rbxassetid://118752548699308',['lucide-pen-off']= +'rbxassetid://126506632784090',['lucide-pencil-off']='rbxassetid://122680978487316',['lucide-pencil-ruler']= +'rbxassetid://134708462236812',['lucide-pencil']='rbxassetid://128681444833298',['lucide-pentagon']= +'rbxassetid://124288658991504',['lucide-pencil-line']='rbxassetid://76780160546129',['lucide-person-standing']= +'rbxassetid://79071083762909',['lucide-philippine-peso']='rbxassetid://136024924825071',['lucide-percent']= +'rbxassetid://92322872773463',['lucide-phone-call']='rbxassetid://130029094319460',['lucide-phone-incoming']= +'rbxassetid://92323292229716',['lucide-phone-missed']='rbxassetid://84934792448995',['lucide-phone-off']= +'rbxassetid://82713668933334',['lucide-phone-forwarded']='rbxassetid://81644719426306',['lucide-phone']= +'rbxassetid://88795801994591',['lucide-phone-outgoing']='rbxassetid://80483489270012',['lucide-pi']= +'rbxassetid://88826660835267',['lucide-piano']='rbxassetid://104768610992067',['lucide-pickaxe']= +'rbxassetid://106477259189320',['lucide-picture-in-picture-2']='rbxassetid://140011529979167',[ +'lucide-picture-in-picture']='rbxassetid://78771030814366',['lucide-piggy-bank']='rbxassetid://119782782846245',[ +'lucide-pilcrow-left']='rbxassetid://93819104639121',['lucide-pilcrow-right']='rbxassetid://105016372949848',[ +'lucide-pilcrow']='rbxassetid://135220007830017',['lucide-pill-bottle']='rbxassetid://111777180996851',['lucide-pill']= +'rbxassetid://112378084142171',['lucide-pin-off']='rbxassetid://117093995106477',['lucide-pin']= +'rbxassetid://79993056003648',['lucide-pipette']='rbxassetid://102027497504842',['lucide-plane-landing']= +'rbxassetid://136071263309262',['lucide-plane-takeoff']='rbxassetid://119652661623788',['lucide-pizza']= +'rbxassetid://139869394551363',['lucide-plane']='rbxassetid://128234826267374',['lucide-play']= +'rbxassetid://71128824073086',['lucide-plug-2']='rbxassetid://78974653313877',['lucide-plug']= +'rbxassetid://88904922802858',['lucide-plus']='rbxassetid://75233805311004',['lucide-pocket-knife']= +'rbxassetid://92514589576221',['lucide-pocket']='rbxassetid://99282467067071',['lucide-plug-zap']= +'rbxassetid://118214863811873',['lucide-podcast']='rbxassetid://70427336185824',['lucide-pointer-off']= +'rbxassetid://98643391791340',['lucide-pointer']='rbxassetid://76371100850914',['lucide-popcorn']= +'rbxassetid://100891489333645',['lucide-popsicle']='rbxassetid://79937060342363',['lucide-pound-sterling']= +'rbxassetid://92307367709333',['lucide-power']='rbxassetid://116019387019283',['lucide-power-off']= +'rbxassetid://134906220166355',['lucide-presentation']='rbxassetid://93292385196782',['lucide-printer-check']= +'rbxassetid://124221840975232',['lucide-printer']='rbxassetid://91501117575989',['lucide-projector']= +'rbxassetid://100820227428181',['lucide-proportions']='rbxassetid://80079739485337',['lucide-pyramid']= +'rbxassetid://73997319071288',['lucide-puzzle']='rbxassetid://137712773156741',['lucide-qr-code']= +'rbxassetid://88778289816383',['lucide-quote']='rbxassetid://125778393758705',['lucide-rabbit']= +'rbxassetid://107924029731870',['lucide-radar']='rbxassetid://85516936572279',['lucide-radical']= +'rbxassetid://103771445404955',['lucide-radiation']='rbxassetid://122393434351904',['lucide-radio-receiver']= +'rbxassetid://87012857291080',['lucide-radio']='rbxassetid://96540597021578',['lucide-radio-tower']= +'rbxassetid://112644587643078',['lucide-radius']='rbxassetid://75933157953988',['lucide-rail-symbol']= +'rbxassetid://107744548277124',['lucide-rainbow']='rbxassetid://98877879692251',['lucide-rat']= +'rbxassetid://85204187886671',['lucide-ratio']='rbxassetid://114690865457229',['lucide-receipt-cent']= +'rbxassetid://75887317556001',['lucide-receipt-indian-rupee']='rbxassetid://73989996512185',['lucide-receipt-euro']= +'rbxassetid://124720883690153',['lucide-receipt-japanese-yen']='rbxassetid://140284274607046',[ +'lucide-receipt-pound-sterling']='rbxassetid://73919748127578',['lucide-receipt-russian-ruble']= +'rbxassetid://91232975416657',['lucide-receipt-swiss-franc']='rbxassetid://94699297534923',['lucide-receipt-text']= +'rbxassetid://139174223200610',['lucide-receipt-turkish-lira']='rbxassetid://114032403602770',['lucide-receipt']= +'rbxassetid://85337922519679',['lucide-rectangle-circle']='rbxassetid://133076048892874',['lucide-rectangle-ellipsis']= +'rbxassetid://77019937342882',['lucide-rectangle-goggles']='rbxassetid://99521469654830',['lucide-rectangle-horizontal'] +='rbxassetid://70750730929777',['lucide-rectangle-vertical']='rbxassetid://89190528967757',['lucide-recycle']= +'rbxassetid://115665057166963',['lucide-redo-2']='rbxassetid://71651974526455',['lucide-redo-dot']= +'rbxassetid://116365842250701',['lucide-redo']='rbxassetid://93928516180926',['lucide-refresh-ccw-dot']= +'rbxassetid://94309554761997',['lucide-refresh-ccw']='rbxassetid://72522507799666',['lucide-refrigerator']= +'rbxassetid://84727184083995',['lucide-refresh-cw']='rbxassetid://113439063293937',['lucide-refresh-cw-off']= +'rbxassetid://119525641640082',['lucide-regex']='rbxassetid://103803468407262',['lucide-remove-formatting']= +'rbxassetid://89578946912066',['lucide-repeat-1']='rbxassetid://88991549510352',['lucide-repeat-2']= +'rbxassetid://73881787850755',['lucide-repeat']='rbxassetid://80969231189660',['lucide-replace-all']= +'rbxassetid://122535922581628',['lucide-reply-all']='rbxassetid://84987507334398',['lucide-replace']= +'rbxassetid://75814507796370',['lucide-reply']='rbxassetid://108388454668509',['lucide-rewind']= +'rbxassetid://83281479437771',['lucide-ribbon']='rbxassetid://89420089684387',['lucide-rocket']= +'rbxassetid://131788466321954',['lucide-rocking-chair']='rbxassetid://137226760912391',['lucide-rose']= +'rbxassetid://92966935256408',['lucide-roller-coaster']='rbxassetid://87531906222362',['lucide-rotate-3d']= +'rbxassetid://107753252955247',['lucide-rotate-ccw-key']='rbxassetid://124547655089619',['lucide-rotate-ccw-square']= +'rbxassetid://87327058509015',['lucide-rotate-ccw']='rbxassetid://101095599141126',['lucide-rotate-cw-square']= +'rbxassetid://132762140856972',['lucide-rotate-cw']='rbxassetid://100235881273355',['lucide-router']= +'rbxassetid://113510588602895',['lucide-route-off']='rbxassetid://131664016749121',['lucide-route']= +'rbxassetid://85559969651576',['lucide-rows-2']='rbxassetid://113562699653253',['lucide-rows-3']= +'rbxassetid://120332056704542',['lucide-rows-4']='rbxassetid://128933363625820',['lucide-rss']= +'rbxassetid://80649234465619',['lucide-ruler-dimension-line']='rbxassetid://78145988801476',['lucide-ruler']= +'rbxassetid://130027725508939',['lucide-sailboat']='rbxassetid://83683803317575',['lucide-russian-ruble']= +'rbxassetid://106072219675786',['lucide-sandwich']='rbxassetid://140292983569448',['lucide-salad']= +'rbxassetid://116091784915518',['lucide-satellite-dish']='rbxassetid://96177411240810',['lucide-satellite']= +'rbxassetid://77948711641962',['lucide-saudi-riyal']='rbxassetid://73465796556265',['lucide-save-all']= +'rbxassetid://129297987134404',['lucide-save-off']='rbxassetid://110896442853119',['lucide-save']= +'rbxassetid://105897098129184',['lucide-scale']='rbxassetid://78905247749838',['lucide-scale-3d']= +'rbxassetid://125497725117093',['lucide-scaling']='rbxassetid://96994034300108',['lucide-scan-barcode']= +'rbxassetid://73347823484851',['lucide-scan-eye']='rbxassetid://85302441084977',['lucide-scan-face']= +'rbxassetid://131586936133619',['lucide-scan-heart']='rbxassetid://94578578934099',['lucide-scan-line']= +'rbxassetid://71147185268435',['lucide-scan-search']='rbxassetid://107063460056091',['lucide-scan-qr-code']= +'rbxassetid://124392877969987',['lucide-scan-text']='rbxassetid://122179388652143',['lucide-scan']= +'rbxassetid://89218537518607',['lucide-school']='rbxassetid://70499927042660',['lucide-scissors-line-dashed']= +'rbxassetid://139522161251225',['lucide-scissors']='rbxassetid://127225501780663',['lucide-screen-share-off']= +'rbxassetid://112024126206141',['lucide-scroll-text']='rbxassetid://115816594733071',['lucide-screen-share']= +'rbxassetid://77476054564343',['lucide-scroll']='rbxassetid://87829447785627',['lucide-search-check']= +'rbxassetid://103334000418768',['lucide-search-code']='rbxassetid://107061802958601',['lucide-search-slash']= +'rbxassetid://117134211229124',['lucide-search']='rbxassetid://87773460790106',['lucide-search-x']= +'rbxassetid://115390690193877',['lucide-section']='rbxassetid://129318031718496',['lucide-send-horizontal']= +'rbxassetid://101299199046262',['lucide-send-to-back']='rbxassetid://91946303092254',['lucide-send']= +'rbxassetid://103227678696712',['lucide-separator-horizontal']='rbxassetid://83153412585635',[ +'lucide-separator-vertical']='rbxassetid://89920753188449',['lucide-server-cog']='rbxassetid://90433595069435',[ +'lucide-server-crash']='rbxassetid://82979483303823',['lucide-server-off']='rbxassetid://84983374225435',[ +'lucide-server']='rbxassetid://118576905995405',['lucide-settings-2']='rbxassetid://78026012600197',['lucide-settings']= +'rbxassetid://78969686563882',['lucide-shapes']='rbxassetid://104199457318082',['lucide-share']= +'rbxassetid://71244133411900',['lucide-sheet']='rbxassetid://105018203702082',['lucide-shield-alert']= +'rbxassetid://83766235946011',['lucide-shell']='rbxassetid://74808424964483',['lucide-share-2']= +'rbxassetid://87914396702491',['lucide-shield-ban']='rbxassetid://107123141574787',['lucide-shield-check']= +'rbxassetid://104368293929283',['lucide-shield-ellipsis']='rbxassetid://88776952092891',['lucide-shield-minus']= +'rbxassetid://79543120092330',['lucide-shield-half']='rbxassetid://83220624861868',['lucide-shield-off']= +'rbxassetid://129035809248931',['lucide-shield-plus']='rbxassetid://82042477661228',['lucide-shield-question-mark']= +'rbxassetid://132519964651604',['lucide-shield-x']='rbxassetid://132237746795947',['lucide-shield-user']= +'rbxassetid://99843165596934',['lucide-shield']='rbxassetid://85396477857239',['lucide-ship-wheel']= +'rbxassetid://84033407514485',['lucide-ship']='rbxassetid://72375037563525',['lucide-shirt']= +'rbxassetid://107562094208033',['lucide-shopping-bag']='rbxassetid://126537311627645',['lucide-shovel']= +'rbxassetid://135187483599507',['lucide-shopping-basket']='rbxassetid://93759741286879',['lucide-shopping-cart']= +'rbxassetid://137304016272182',['lucide-shower-head']='rbxassetid://102655704410096',['lucide-shredder']= +'rbxassetid://91011927352410',['lucide-shrimp']='rbxassetid://72178430949754',['lucide-shrink']= +'rbxassetid://135757301572032',['lucide-shrub']='rbxassetid://105996642982844',['lucide-shuffle']= +'rbxassetid://119474657247324',['lucide-sigma']='rbxassetid://84632332859432',['lucide-signal-high']= +'rbxassetid://75386493947511',['lucide-signal-low']='rbxassetid://81021409006913',['lucide-signal-medium']= +'rbxassetid://121005469545532',['lucide-signal-zero']='rbxassetid://108153009041314',['lucide-signal']= +'rbxassetid://90685413345324',['lucide-signature']='rbxassetid://100862084654093',['lucide-signpost-big']= +'rbxassetid://112070272930379',['lucide-signpost']='rbxassetid://139408172805267',['lucide-siren']= +'rbxassetid://73212486961741',['lucide-skip-back']='rbxassetid://119198036213678',['lucide-skip-forward']= +'rbxassetid://125244517825680',['lucide-skull']='rbxassetid://77573759887203',['lucide-slack']= +'rbxassetid://127245457408509',['lucide-slash']='rbxassetid://98291711549338',['lucide-slice']= +'rbxassetid://72221382143123',['lucide-sliders-horizontal']='rbxassetid://108956055047682',['lucide-sliders-vertical']= +'rbxassetid://113868595081871',['lucide-smartphone-charging']='rbxassetid://93008390926008',['lucide-smartphone-nfc']= +'rbxassetid://79891244079734',['lucide-smartphone']='rbxassetid://101291940767279',['lucide-smile-plus']= +'rbxassetid://107339849810997',['lucide-smile']='rbxassetid://137761704777819',['lucide-snail']= +'rbxassetid://113498987138706',['lucide-snowflake']='rbxassetid://85686475568714',['lucide-soap-dispenser-droplet']= +'rbxassetid://70801280907574',['lucide-sofa']='rbxassetid://93406168462550',['lucide-solar-panel']= +'rbxassetid://80763909537842',['lucide-soup']='rbxassetid://120184724037658',['lucide-space']= +'rbxassetid://73594882947464',['lucide-spade']='rbxassetid://77338459579855',['lucide-sparkle']= +'rbxassetid://128840054863612',['lucide-sparkles']='rbxassetid://126437119963884',['lucide-speaker']= +'rbxassetid://88534016222141',['lucide-speech']='rbxassetid://99870374037472',['lucide-spell-check-2']= +'rbxassetid://135009332642597',['lucide-spell-check']='rbxassetid://90613896380250',['lucide-spline-pointer']= +'rbxassetid://87798935475023',['lucide-spline']='rbxassetid://75989831308167',['lucide-split']= +'rbxassetid://102240173978641',['lucide-spool']='rbxassetid://130318165820765',['lucide-spotlight']= +'rbxassetid://88335457473579',['lucide-spray-can']='rbxassetid://118623637967969',['lucide-sprout']= +'rbxassetid://127934599821694',['lucide-square-activity']='rbxassetid://77343432103780',['lucide-square-arrow-down-left' +]='rbxassetid://128882841263198',['lucide-square-arrow-down-right']='rbxassetid://121646359336676',[ +'lucide-square-arrow-down']='rbxassetid://73895362698649',['lucide-square-arrow-left']='rbxassetid://135536084637118',[ +'lucide-square-arrow-out-down-left']='rbxassetid://116028711241071',['lucide-square-arrow-out-down-right']= +'rbxassetid://89908422077315',['lucide-square-arrow-out-up-left']='rbxassetid://88084491602593',[ +'lucide-square-arrow-out-up-right']='rbxassetid://76428700975595',['lucide-square-arrow-up-left']= +'rbxassetid://128870810619600',['lucide-square-arrow-up-right']='rbxassetid://114119578696704',['lucide-square-arrow-up' +]='rbxassetid://103734190367828',['lucide-square-asterisk']='rbxassetid://100644113924389',['lucide-square-arrow-right'] +='rbxassetid://71160338332426',['lucide-square-bottom-dashed-scissors']='rbxassetid://86059074427494',[ +'lucide-square-chart-gantt']='rbxassetid://133774544536563',['lucide-square-check-big']='rbxassetid://90215010800954',[ +'lucide-square-check']='rbxassetid://72633199492029',['lucide-square-chevron-down']='rbxassetid://96761990426374',[ +'lucide-square-chevron-left']='rbxassetid://125332104115114',['lucide-square-chevron-right']= +'rbxassetid://115550970530608',['lucide-square-chevron-up']='rbxassetid://134343214185815',[ +'lucide-square-dashed-bottom-code']='rbxassetid://96406385039434',['lucide-square-code']='rbxassetid://84183972073466',[ +'lucide-square-dashed-bottom']='rbxassetid://127975598530174',['lucide-square-dashed-kanban']= +'rbxassetid://132318505319707',['lucide-square-dashed-mouse-pointer']='rbxassetid://112809486489040',[ +'lucide-square-dashed-top-solid']='rbxassetid://123755801389199',['lucide-square-dashed']='rbxassetid://99084006927645', +['lucide-square-divide']='rbxassetid://119247396998137',['lucide-square-equal']='rbxassetid://110347545439522',[ +'lucide-square-function']='rbxassetid://70952744716838',['lucide-square-dot']='rbxassetid://138432453107615',[ +'lucide-square-kanban']='rbxassetid://115572128864502',['lucide-square-library']='rbxassetid://85801068256635',[ +'lucide-square-menu']='rbxassetid://82736655112279',['lucide-square-m']='rbxassetid://70435625084901',[ +'lucide-square-minus']='rbxassetid://90379781579196',['lucide-square-parking']='rbxassetid://117256761239596',[ +'lucide-square-mouse-pointer']='rbxassetid://116964284079569',['lucide-square-parking-off']= +'rbxassetid://85324044172091',['lucide-square-pause']='rbxassetid://116471856834832',['lucide-square-pen']= +'rbxassetid://127378512890782',['lucide-square-pi']='rbxassetid://134751514418506',['lucide-square-percent']= +'rbxassetid://136410823956661',['lucide-square-pilcrow']='rbxassetid://91941848089002',['lucide-square-play']= +'rbxassetid://84160763073727',['lucide-square-plus']='rbxassetid://121674592300105',['lucide-square-power']= +'rbxassetid://73776919289064',['lucide-square-radical']='rbxassetid://78427251625452',['lucide-square-round-corner']= +'rbxassetid://108303481153969',['lucide-square-scissors']='rbxassetid://117282369401047',['lucide-square-sigma']= +'rbxassetid://80124721167205',['lucide-square-slash']='rbxassetid://82906531943020',['lucide-square-split-horizontal']= +'rbxassetid://122046079262273',['lucide-square-split-vertical']='rbxassetid://84387613179489',['lucide-square-square']= +'rbxassetid://108906396828729',['lucide-square-stack']='rbxassetid://139805692512368',['lucide-square-star']= +'rbxassetid://105404945337605',['lucide-square-stop']='rbxassetid://113401039188802',['lucide-square-terminal']= +'rbxassetid://124407348708938',['lucide-square-user-round']='rbxassetid://134689923506315',['lucide-square-x']= +'rbxassetid://100995274570976',['lucide-square']='rbxassetid://100083523975161',['lucide-squares-exclude']= +'rbxassetid://116299821924243',['lucide-squares-intersect']='rbxassetid://106060022534961',['lucide-squares-subtract']= +'rbxassetid://99779230617579',['lucide-squares-unite']='rbxassetid://115226990407111',['lucide-square-user']= +'rbxassetid://71220376528705',['lucide-squircle-dashed']='rbxassetid://84876353045665',['lucide-squircle']= +'rbxassetid://99727143850471',['lucide-squirrel']='rbxassetid://96154475290601',['lucide-stamp']= +'rbxassetid://131862041640736',['lucide-star-half']='rbxassetid://114885266751435',['lucide-star-off']= +'rbxassetid://129927419904098',['lucide-star']='rbxassetid://138472016819607',['lucide-step-back']= +'rbxassetid://82198016885064',['lucide-step-forward']='rbxassetid://78128169561221',['lucide-stethoscope']= +'rbxassetid://133097907321954',['lucide-sticker']='rbxassetid://133878644046104',['lucide-sticky-note']= +'rbxassetid://84825610793394',['lucide-store']='rbxassetid://114109092613272',['lucide-stretch-horizontal']= +'rbxassetid://110639094168105',['lucide-stretch-vertical']='rbxassetid://77687299125223',['lucide-strikethrough']= +'rbxassetid://81834063789665',['lucide-subscript']='rbxassetid://78635685349190',['lucide-sun-dim']= +'rbxassetid://115132407887818',['lucide-sun-medium']='rbxassetid://85685421189424',['lucide-sun-moon']= +'rbxassetid://123998354034796',['lucide-sun-snow']='rbxassetid://101326819655480',['lucide-sun']= +'rbxassetid://122702753843672',['lucide-sunrise']='rbxassetid://104305108039542',['lucide-sunset']= +'rbxassetid://97546838540350',['lucide-superscript']='rbxassetid://88196232787474',['lucide-swiss-franc']= +'rbxassetid://92457377041953',['lucide-switch-camera']='rbxassetid://82483412011752',['lucide-sword']= +'rbxassetid://137759336314865',['lucide-swatch-book']='rbxassetid://100880381738403',['lucide-swords']= +'rbxassetid://93678586917184',['lucide-syringe']='rbxassetid://91452837778553',['lucide-table-2']= +'rbxassetid://119550965037579',['lucide-table-cells-merge']='rbxassetid://101295546072939',['lucide-table-cells-split']= +'rbxassetid://101546699198963',['lucide-table-columns-split']='rbxassetid://98130522842357',['lucide-table-of-contents'] +='rbxassetid://124075017766604',['lucide-table-properties']='rbxassetid://96481011896160',['lucide-table']= +'rbxassetid://96874492394332',['lucide-table-rows-split']='rbxassetid://123510754600607',['lucide-tablet-smartphone']= +'rbxassetid://101893214435696',['lucide-tablet']='rbxassetid://79711365524474',['lucide-tablets']= +'rbxassetid://80640579149604',['lucide-tag']='rbxassetid://86760445169142',['lucide-tags']= +'rbxassetid://117108855162841',['lucide-tally-1']='rbxassetid://104986417224831',['lucide-tally-2']= +'rbxassetid://104087559764939',['lucide-tally-3']='rbxassetid://107468906939750',['lucide-tally-4']= +'rbxassetid://103565365665146',['lucide-tally-5']='rbxassetid://89788650221744',['lucide-tangent']= +'rbxassetid://117433122688937',['lucide-target']='rbxassetid://110420827043048',['lucide-telescope']= +'rbxassetid://115116166309298',['lucide-tent']='rbxassetid://90958212648338',['lucide-tent-tree']= +'rbxassetid://73775828583688',['lucide-terminal']='rbxassetid://97374315863655',['lucide-test-tube-diagonal']= +'rbxassetid://85649956026368',['lucide-test-tubes']='rbxassetid://112870217768596',['lucide-text-align-center']= +'rbxassetid://131684392974793',['lucide-text-align-end']='rbxassetid://88824152645125',['lucide-test-tube']= +'rbxassetid://96247517588931',['lucide-text-align-start']='rbxassetid://125368952549429',['lucide-text-align-justify']= +'rbxassetid://128847420024946',['lucide-text-cursor-input']='rbxassetid://119081971768105',['lucide-text-cursor']= +'rbxassetid://103518397713606',['lucide-text-initial']='rbxassetid://85100268827690',['lucide-text-quote']= +'rbxassetid://121207029295158',['lucide-text-select']='rbxassetid://120724470218946',['lucide-theater']= +'rbxassetid://130504036256601',['lucide-text-wrap']='rbxassetid://75588925341713',['lucide-thermometer-snowflake']= +'rbxassetid://112009096262160',['lucide-thermometer-sun']='rbxassetid://125170926734633',['lucide-text-search']= +'rbxassetid://84185821853759',['lucide-thermometer']='rbxassetid://113977315513722',['lucide-thumbs-down']= +'rbxassetid://132770860391509',['lucide-thumbs-up']='rbxassetid://126182753052597',['lucide-ticket-check']= +'rbxassetid://128628476988956',['lucide-ticket-minus']='rbxassetid://132065209072956',['lucide-ticket-percent']= +'rbxassetid://91390289993875',['lucide-ticket-plus']='rbxassetid://101372123976656',['lucide-ticket-x']= +'rbxassetid://116688775069470',['lucide-ticket']='rbxassetid://96674465148169',['lucide-ticket-slash']= +'rbxassetid://71682935003573',['lucide-tickets-plane']='rbxassetid://90385077135944',['lucide-timer-off']= +'rbxassetid://112549762598535',['lucide-tickets']='rbxassetid://80716936657775',['lucide-timer-reset']= +'rbxassetid://77747985854116',['lucide-timer']='rbxassetid://83213933612047',['lucide-toggle-left']= +'rbxassetid://86640936259402',['lucide-toggle-right']='rbxassetid://72757888162800',['lucide-touchpad-off']= +'rbxassetid://107253829673902',['lucide-toilet']='rbxassetid://114819166189430',['lucide-tool-case']= +'rbxassetid://100116237648472',['lucide-torus']='rbxassetid://115373403041424',['lucide-tornado']= +'rbxassetid://76373307014972',['lucide-touchpad']='rbxassetid://91900889086796',['lucide-tower-control']= +'rbxassetid://114113858469166',['lucide-toy-brick']='rbxassetid://129631599857851',['lucide-tractor']= +'rbxassetid://126199115090114',['lucide-train-front-tunnel']='rbxassetid://83194044542605',['lucide-train-front']= +'rbxassetid://93463368859380',['lucide-traffic-cone']='rbxassetid://85075037079197',['lucide-train-track']= +'rbxassetid://128961125198436',['lucide-tram-front']='rbxassetid://76760768039681',['lucide-transgender']= +'rbxassetid://110281558647755',['lucide-trash-2']='rbxassetid://82430852390974',['lucide-trash']= +'rbxassetid://88192090804752',['lucide-tree-palm']='rbxassetid://91638729812789',['lucide-tree-pine']= +'rbxassetid://119135971786446',['lucide-trees']='rbxassetid://100052971940700',['lucide-trello']= +'rbxassetid://111339332890176',['lucide-tree-deciduous']='rbxassetid://88530284712113',['lucide-trending-down']= +'rbxassetid://133305384317439',['lucide-trending-up-down']='rbxassetid://121144453068449',['lucide-trending-up']= +'rbxassetid://79276764011620',['lucide-triangle-alert']='rbxassetid://82094603330968',['lucide-triangle-dashed']= +'rbxassetid://83267032457272',['lucide-triangle-right']='rbxassetid://115367459935008',['lucide-triangle']= +'rbxassetid://132419586859734',['lucide-trophy']='rbxassetid://99605947659852',['lucide-truck-electric']= +'rbxassetid://96200084281099',['lucide-truck']='rbxassetid://72418803525911',['lucide-turkish-lira']= +'rbxassetid://111349646591354',['lucide-turntable']='rbxassetid://105301812889365',['lucide-turtle']= +'rbxassetid://124465596631468',['lucide-tv-minimal-play']='rbxassetid://110289795808224',['lucide-tv-minimal']= +'rbxassetid://109954649614047',['lucide-tv']='rbxassetid://75715857915361',['lucide-twitch']= +'rbxassetid://136587344877168',['lucide-twitter']='rbxassetid://110779789219733',['lucide-type-outline']= +'rbxassetid://99301459264736',['lucide-umbrella-off']='rbxassetid://122875354983478',['lucide-type']= +'rbxassetid://139888359287918',['lucide-umbrella']='rbxassetid://120069237833091',['lucide-underline']= +'rbxassetid://130351503549384',['lucide-undo-2']='rbxassetid://135619844622527',['lucide-undo-dot']= +'rbxassetid://103498133000426',['lucide-undo']='rbxassetid://73324648180952',['lucide-unfold-horizontal']= +'rbxassetid://90809805084640',['lucide-unfold-vertical']='rbxassetid://98925955593115',['lucide-ungroup']= +'rbxassetid://96125012617932',['lucide-university']='rbxassetid://71297320674621',['lucide-unlink-2']= +'rbxassetid://132928128576894',['lucide-unlink']='rbxassetid://127929148856574',['lucide-unplug']= +'rbxassetid://77389791351554',['lucide-upload']='rbxassetid://112384273395852',['lucide-usb']= +'rbxassetid://110615576584508',['lucide-user-check']='rbxassetid://83733831617881',['lucide-user-cog']= +'rbxassetid://73849430413885',['lucide-user-lock']='rbxassetid://100767406112271',['lucide-user-minus']= +'rbxassetid://121199767957523',['lucide-user-pen']='rbxassetid://105163865487460',['lucide-user-plus']= +'rbxassetid://126096571523601',['lucide-user-round-check']='rbxassetid://91598234136274',['lucide-user-round-cog']= +'rbxassetid://92618616577913',['lucide-user-round-minus']='rbxassetid://136065875920885',['lucide-user-round-plus']= +'rbxassetid://110896680175557',['lucide-user-round-pen']='rbxassetid://132512706049372',['lucide-user-round-search']= +'rbxassetid://127405499354686',['lucide-user-round-x']='rbxassetid://117388680433660',['lucide-user-round']= +'rbxassetid://131091716091360',['lucide-user-search']='rbxassetid://75980990439194',['lucide-user-star']= +'rbxassetid://71839304465616',['lucide-user-x']='rbxassetid://108408333226063',['lucide-user']= +'rbxassetid://91474334345243',['lucide-users-round']='rbxassetid://93648694836382',['lucide-users']= +'rbxassetid://109799724386715',['lucide-utensils-crossed']='rbxassetid://94229321631994',['lucide-utensils']= +'rbxassetid://95619070214928',['lucide-utility-pole']='rbxassetid://91190201836678',['lucide-variable']= +'rbxassetid://118069142188827',['lucide-vault']='rbxassetid://112922195109981',['lucide-vector-square']= +'rbxassetid://134525953599385',['lucide-vegan']='rbxassetid://100415093068607',['lucide-venetian-mask']= +'rbxassetid://105811310088940',['lucide-venus-and-mars']='rbxassetid://127359436177296',['lucide-venus']= +'rbxassetid://89999677941853',['lucide-vibrate-off']='rbxassetid://71809838958365',['lucide-vibrate']= +'rbxassetid://125579090406882',['lucide-videotape']='rbxassetid://87329154872260',['lucide-video-off']= +'rbxassetid://128119085782619',['lucide-video']='rbxassetid://96663284364714',['lucide-view']= +'rbxassetid://80193127066722',['lucide-voicemail']='rbxassetid://84433629601724',['lucide-volleyball']= +'rbxassetid://120378261012726',['lucide-volume-1']='rbxassetid://74043360622064',['lucide-volume-2']= +'rbxassetid://90671599972181',['lucide-volume']='rbxassetid://130428943191110',['lucide-vote']= +'rbxassetid://115636316927430',['lucide-volume-off']='rbxassetid://111487376160259',['lucide-volume-x']= +'rbxassetid://77114006716121',['lucide-wallet-cards']='rbxassetid://131959632494049',['lucide-wallet-minimal']= +'rbxassetid://120364156802380',['lucide-wallet']='rbxassetid://88581287221473',['lucide-wallpaper']= +'rbxassetid://131854523371906',['lucide-warehouse']='rbxassetid://123773625545694',['lucide-wand']= +'rbxassetid://105735253992261',['lucide-washing-machine']='rbxassetid://95864892079235',['lucide-wand-sparkles']= +'rbxassetid://108161736734904',['lucide-watch']='rbxassetid://109986400252427',['lucide-waves-ladder']= +'rbxassetid://78838138897144',['lucide-waves']='rbxassetid://114431788291236',['lucide-waypoints']= +'rbxassetid://115456597740575',['lucide-webcam']='rbxassetid://110869261105928',['lucide-webhook-off']= +'rbxassetid://107985831275010',['lucide-webhook']='rbxassetid://115707249192058',['lucide-weight']= +'rbxassetid://80221503960114',['lucide-wheat-off']='rbxassetid://100814520858646',['lucide-wheat']= +'rbxassetid://93689899667052',['lucide-whole-word']='rbxassetid://104653567455214',['lucide-wifi-cog']= +'rbxassetid://114915943367394',['lucide-wifi-high']='rbxassetid://75232149276299',['lucide-wifi-pen']= +'rbxassetid://120601606968871',['lucide-wifi-off']='rbxassetid://109227564316116',['lucide-wifi-low']= +'rbxassetid://80514656704846',['lucide-wifi-sync']='rbxassetid://127729169747586',['lucide-wifi-zero']= +'rbxassetid://80366162994847',['lucide-wifi']='rbxassetid://87518356403818',['lucide-wind-arrow-down']= +'rbxassetid://80552076618251',['lucide-wind']='rbxassetid://140475550761298',['lucide-wine']= +'rbxassetid://111070648545230',['lucide-workflow']='rbxassetid://82829283435740',['lucide-wine-off']= +'rbxassetid://91744421611723',['lucide-worm']='rbxassetid://109189317185920',['lucide-x']='rbxassetid://116998807311805' +,['lucide-wrench']='rbxassetid://126123914381064',['lucide-youtube']='rbxassetid://114818083741535',['lucide-zap-off']= +'rbxassetid://82827541702053',['lucide-zoom-out']='rbxassetid://88164586813836',['lucide-zoom-in']= +'rbxassetid://132505805888775',['lucide-zap']='rbxassetid://139528609101647',['lucide-anvil']= +'rbxassetid://134603584329702',['lucide-app-window']='rbxassetid://98905551433370',['lucide-archive-restore']= +'rbxassetid://120934819638726',['lucide-archive']='rbxassetid://126173454813577',['lucide-app-window-mac']= +'rbxassetid://84460436594082',['lucide-aperture']='rbxassetid://124245394850399',['lucide-apple']= +'rbxassetid://108359623175773',['lucide-arrow-big-down-dash']='rbxassetid://125733643439021',[ +'lucide-arrow-big-right-dash']='rbxassetid://135306817546748',['lucide-arrow-big-left']='rbxassetid://80668451409611',[ +'lucide-arrow-big-left-dash']='rbxassetid://79097495230729',['lucide-armchair']='rbxassetid://98287222826442',[ +'lucide-arrow-big-down']='rbxassetid://81217019746795',['lucide-arrow-big-right']='rbxassetid://112783778650170',[ +'lucide-arrow-big-up-dash']='rbxassetid://139499221221421',['lucide-arrow-big-up']='rbxassetid://80868892014936',[ +'lucide-arrow-down-1-0']='rbxassetid://110003672883161',['lucide-arrow-down-0-1']='rbxassetid://120418661696671',[ +'lucide-arrow-down-from-line']='rbxassetid://104581855260712',['lucide-arrow-down-left']='rbxassetid://103505233541752', +['lucide-arrow-down-a-z']='rbxassetid://81157659900485',['lucide-arrow-down-narrow-wide']='rbxassetid://87097530659688', +['lucide-arrow-down-right']='rbxassetid://84156144906396',['lucide-arrow-down-wide-narrow']= +'rbxassetid://95668665826995',['lucide-arrow-down-to-line']='rbxassetid://89978220173827',['lucide-arrow-down-up']= +'rbxassetid://108632631078657',['lucide-arrow-down-to-dot']='rbxassetid://94264146936668',['lucide-arrow-down']= +'rbxassetid://121138744416131',['lucide-arrow-down-z-a']='rbxassetid://128586087695065',['lucide-arrow-left-right']= +'rbxassetid://121197368097623',['lucide-arrow-left-from-line']='rbxassetid://92907415444853',['lucide-arrow-left']= +'rbxassetid://76468390144997',['lucide-arrow-right-left']='rbxassetid://98920092617667',['lucide-arrow-right-from-line'] +='rbxassetid://118130042636840',['lucide-arrow-left-to-line']='rbxassetid://122880152766242'},{Icons={}}for ag,ah in ae +do table.insert(af.Icons,ag)end function af.GetAsset(ag)local ah=tostring(ag):lower()local ai,aj=ah,ah if not ah:match +'^lucide%-'then ai='lucide-'..ah else aj=ah:gsub('^lucide%-','')end local ak=ae[ah]or ae[ai]or ae[aj]if ak==nil then +return nil end return{Url=ak,ImageRectOffset=Vector2.zero,ImageRectSize=Vector2.zero,Custom=false}end return af end)() +end},{{1,1,{'waxbundle'},{{2,4,{'BundleEntry'}},{3,2,{'Init'},{{5,2,{'ObsidianLibrary'}},{4,2,{'ObsidianLibrary.d'}}}},{ +9,2,{'ObsidianLibrary.d'}},{6,2,{'Loader'}},{8,2,{'ObsidianLibrary'}},{7,2,{'MainModule'}},{10,1,{'ObsidianUI'},{{12,2,{ +'FallbackIcons'}},{30,1,{'utils'},{{31,2,{'icons'}}}},{13,2,{'UIConfig'}},{18,1,{'tabs'},{{28,2,{'UtilsTab'}},{19,2,{ +'AimbotTab'}},{23,2,{'ItemSpawnerTab'}},{26,2,{'NoclipTab'}},{22,2,{'FlyTab'}},{25,2,{'MainTab'}},{29,2,{'VisualTab'}},{ +21,2,{'ESPTab'}},{24,2,{'LocalTab'}},{27,2,{'UISettingsTab'}},{20,2,{'AutoFarmTab'}}}},{14,1,{'scripts'},{{16,2,{ +'FlyController'}},{15,2,{'CustomESP'}},{17,2,{'NoclipController'}}}},{11,2,{'Bootstrap'}}}}}}},'0.4.2','WaxRuntime', +string,task,setmetatable,error,next,table,unpack,coroutine,script,type,require,pcall,tostring,tonumber,_VERSION local au +,av,aw,ax,ay,az,aA=aj.insert,aj.remove,aj.freeze or function(au)return au end,al.wrap,ae.sub,ae.match,ae.gmatch if as +and ay(as,1,4)=='Lune'then local aB,aC=ap(ao,'@lune/task')if aB and aC then af=aC end end local aB=af and af.defer local +aC,aD,aE,aF,aG,aH,aI,aJ,aK=aB or function(aC,...)ax(aC)(...)end,{[1]='Folder',[2]='ModuleScript',[3]='Script',[4]= +'LocalScript',[5]='StringValue'},{},{},{},{},{},{},{}local aL,aM={GetFullName={{},function(aL)local aM,aN=aL.Name,aL. +Parent while aN do aM=aN.Name..'.'..aM aN=aN.Parent end return aM end},GetChildren={{},function(aL)local aM={}for aN in +ai,aK[aL]do au(aM,aN)end return aM end},GetDescendants={{},function(aL)local aM={}for aN in ai,aK[aL]do au(aM,aN)for aO, +aP in ai,aN:GetDescendants()do au(aM,aP)end end return aM end},FindFirstChild={{'string','boolean?'},function(aL,aM,aN) +local aO=aK[aL]for aP in ai,aO do if aP.Name==aM then return aP end end if aN then for aP in ai,aO do return aP: +FindFirstChild(aM,true)end end end},FindFirstAncestor={{'string'},function(aL,aM)local aN=aL.Parent while aN do if aN. +Name==aM then return aN end aN=aN.Parent end end},WaitForChild={{'string','number?'},function(aL,aM)return aL: +FindFirstChild(aM)end}},{}for aN,aO in ai,aL do local aP,aR,aS=aO[1],aO[2],{}for aT,aU in ai,aP do local aV,aW=az(aU, +'^([^%?]+)(%??)')aS[aT]={aV,aW}end aM[aN]=function(aT,...)if not aK[aT]then ah( +"Expected ':' not '.' calling member function "..aN,2)end local aU={...}for aV,aW in ai,aS do local aX=aU[aV]local aY,aZ +,a_=an(aX),aW[1],aW[2]if aX==nil and not a_ then ah('Argument '..aX..' missing or nil',3)end if aZ~='any'and aY~=aZ and +not(aY=='nil'and a_)then ah('Argument '..aV..' expects type "'..aZ..'", got "'..aY..'"',2)end end return aR(aT,...)end +end local function aN(aO,aP,aR)local aS,aT=(ag({},{__mode='k'}))local function aU(aV)ah(aV.. +' is not a valid (virtual) member of '..aO..' "'..aP..'"',3)end local function aV(aW)ah( +'Unable to assign (virtual) property '..aW..'. Property is read only',3)end local aW,aX={},{}aX.__metatable=false aX. +__index=function(aY,aZ)if aZ=='ClassName'then return aO elseif aZ=='Name'then return aP elseif aZ=='Parent'then return +aR elseif aO=='StringValue'and aZ=='Value'then return aT else local a_=aM[aZ]if a_ then return a_ end end for a_ in ai, +aS do if a_.Name==aZ then return a_ end end aU(aZ)end aX.__newindex=function(aY,aZ,a_)if aZ=='ClassName'then aV(aZ) +elseif aZ=='Name'then aP=a_ elseif aZ=='Parent'then if a_==aW then return end if aR~=nil then aK[aR][aW]=nil end aR=a_ +if a_~=nil then aK[a_][aW]=true end elseif aO=='StringValue'and aZ=='Value'then aT=a_ else aU(aZ)end end aX.__tostring= +function()return aP end ag(aW,aX)aK[aW]=aS if aR~=nil then aK[aR][aW]=true end return aW end local function aO(aP,aR) +local aS,aT,aU,aV=aP[1],aP[2],aP[3],aP[4]local aW=aD[aT]local aX=aU and av(aU,1)or aW local aY=aN(aW,aX,aR)aE[aS]=aY if +aU then for aZ,a_ in ai,aU do aY[aZ]=a_ end end if aV then for aZ,a_ in ai,aV do aO(a_,aY)end end return aY end local aP +=aN('Folder','['..ad..']')for aR,aS in ai,ab do aO(aS,aP)end for aR,aS in ai,aa do local aT=aE[aR]aF[aT]=aS aG[aT]=aR +local aU=aT.ClassName if aU=='LocalScript'or aU=='Script'then au(aI,aT)end end local function aR(aS)local aT,aU=aS. +ClassName,aH[aS]if aU and aT=='ModuleScript'then return ak(aU)end local aV=aF[aS]local function aW(aX)aX=aq(aX)local aY, +aZ,a_=aS:GetFullName(),az(aX,'[^:]+:(%d+): (.+)')if not aZ or not at then return aY..':*: '..(a_ or aX)end aZ=ar(aZ) +local a0=aG[aS]local a1=at[a0]local a2=aZ-a1+1 if a2<0 then a2='?'end return aY..':'..a2..': '..a_ end if aT== +'LocalScript'or aT=='Script'then local aX,aY=ap(aV)if not aX then ah(aW(aY),0)end else local aX={ap(aV)}local aY=av(aX,1 +)if not aY then local aZ=av(aX,1)ah(aW(aZ),0)end aH[aS]=aX return ak(aX)end end function a(aS)local aT=aE[aS] +local function aU(aV,...)local aW={ap(aV,...)}local aX=av(aW,1)if not aX then ah(aW[1],3)end return ak(aW)end local aV= +aw(ag({},{__index=aJ,__newindex=function(aV,aW,aX)aJ[aW]=aX end,__len=function()return#aJ end,__iter=function()return ai +,aJ end}))local aW,aX=aw{version=ac,envname=ad,shared=aV,script=am,require=ao},aT local function aY(aZ,...)local a_,a0, +a1=an(aZ),'Attempted to call require with a non-ModuleScript','Attempted to call require with self'if a_=='table'and aK[ +aZ]then if aZ.ClassName~='ModuleScript'then ah(a0,2)elseif aZ==aT then ah(a1,2)end return aR(aZ)elseif a_=='string'and +ay(aZ,1,1)~='@'then if#aZ==0 then ah('Attempted to call require with empty string',2)end local a2=aT if ay(aZ,1,1)=='/' +then a2=aP elseif ay(aZ,1,2)=='./'then aZ=ay(aZ,3)end local a3 for a4 in aA(aZ,'([^/]*)/?')do local a5=a4 if a4=='..' +then a5='Parent'end if a5~=''then local a6=a2:FindFirstChild(a5)if not a6 then local a7=a2.Parent if a7 then a6=a7: +FindFirstChild(a5)end end if a6 then a2=a6 elseif a4~=a3 and a4~='init'and a4~='init.server'and a4~='init.client'then +ah('Virtual script path "'..aZ..'" not found',2)end end a3=a4 end if a2.ClassName~='ModuleScript'then ah(a0,2)elseif a2 +==aT then ah(a1,2)end return aR(a2)end return aU(ao,aZ,...)end return aW,aX,aY end for aS,aT in ai,aI do aC(aR,aT)end \ No newline at end of file