Roblox/luau_corpus huggingface dataset:
--------------------------------------------------------------------------

local _WHEELTUNE = {
																		--[[	
			SS6 Presets
	[Eco]		
		WearSpeed = 1,
		TargetFriction = .7,
		MinFriction = .1,
	[Road]		
		WearSpeed = 2,
		TargetFriction = .7,
		MinFriction = .1,
	[Sport]		
		WearSpeed = 3,
		TargetFriction = .79,
		MinFriction = .1,											]]

	TireWearOn 		= true	,
	
	--Friction and Wear
	FWearSpeed		= .3	,
	FTargetFriction	= 0.7	,
	FMinFriction 	= .5	,
	
	RWearSpeed		= .3	,
	RTargetFriction	= 0.7	,
	RMinFriction	= .5	,
	
	--Tire Slip
	TCSOffRatio		= 1	,
	WheelLockRatio	= 1/2	,	--SS6 Default = 1/4
	WheelspinRatio	= 1/1.1	,	--SS6 Default = 1/1.2
	
	--Wheel Properties
	FFrictionWeight	= 1		,	--SS6 Default = 1
	RFrictionWeight	= 1		,	--SS6 Default = 1
	FLgcyFrWeight	= 10	,
	RLgcyFrWeight	= 10	,
	
	FElasticity		= 0		,	--SS6 Default = .5
	RElasticity		= 0		,	--SS6 Default = .5
	FLgcyElasticity	= 0		,
	RLgcyElasticity	= 0		,
	
	FElastWeight	= 1		,	--SS6 Default = 1
	RElastWeight	= 1		,	--SS6 Default = 1
	FLgcyElWeight	= 10	,
	RLgcyElWeight	= 10	,
	
	--Wear Regen
	RegenSpeed		= 3.6		--SS6 Default = 3.6
}
--remove any of the following parts that say "(parts[i].className == [className])" if you want to exclude that particular className type from the Weld
	if ((parts[i].className == "Part") or (parts[i].className == "SpawnLocation") or (parts[i].className == "Seat") or (parts[i].className == "TrussPart") or (parts[i].className == "VehicleSeat")) then
		if (prev ~= nil) then
			local weld = Instance.new("Weld")
			weld.Part0 = prev
			weld.Part1 = parts[i]
			weld.C0 = prev.CFrame:inverse()
			weld.C1 = parts[i].CFrame:inverse()
			weld.Parent = prev
			parts[i].Anchored = false
		end
		prev = parts[i]
	end
end
wait(3)
--// Scripted by Trackplayer
--// Do not edit the code if you don't know what are you doing.

local TweenService = game:GetService("TweenService")
local Info = TweenInfo.new(0.7, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, 0, false, 0)

local openSound = script.Parent.Open
local closeSound = script.Parent.Close

local click = script.Parent.ClickDetector

local center = script.Parent.Parent.Center
local origin = script.Parent.Parent.Parent.Door2Origin
local toGo = script.Parent.Parent.Parent.Door2ToGo

local isOpen = false
local isMoving = false

click.MouseClick:Connect(function()
	if isOpen == false and isMoving == false then
		isMoving = true
		isOpen = true
		
		TweenService:Create(center, Info, {CFrame = toGo.CFrame}):Play()
		openSound:Play()
		
		wait(0.7)
		isMoving = false
	elseif isOpen == true and isMoving == false then
		isMoving = true
		isOpen = false
		
		TweenService:Create(center, Info, {CFrame = origin.CFrame}):Play()
		
		wait(0.5)
		closeSound:Play()
		
		wait(0.2)
		isMoving = false
	end
end)
--Update Camera Pos after Phys Update
RS.Heartbeat:Connect(function()
	if Mode == 1 then
		if UIS.MouseBehavior ~= Enum.MouseBehavior.Default and Camera.CameraType ~= Enum.CameraType.Custom then
			UIS.MouseBehavior = Enum.MouseBehavior.Default
			Camera.CameraType = Enum.CameraType.Custom
		end
	elseif Mode == 2 then
		UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
		Camera.CameraType = Enum.CameraType.Scriptable
		local LookDelta = UIS:GetMouseDelta()
		local X = Look.X - LookDelta.Y*Sensitivity
		Look = Vector2.new((X >= MaxLook and MaxLook) or (X <= -MaxLook and -MaxLook) or X,
			(Look.Y - LookDelta.X*Sensitivity) % 360)
		
		Camera.CFrame = CFrame.new(HRP.Position + CamOffset)
			* CFrame.Angles(0,math.rad(Look.Y),0)
			* CFrame.Angles(math.rad(Look.X),0,0)
	elseif Mode == 3 then
		UIS.MouseBehavior = Enum.MouseBehavior.Default
		Camera.CameraType = Enum.CameraType.Scriptable

		Camera.CFrame = CFrame.new(HRP.Position + CamOffset)
			* CFrame.Angles(0,math.rad(Look.Y),0)
			* CFrame.Angles(math.rad(Look.X),0,0)
	end
end)

SetSettings.OnClientEvent:Connect(function(camMode)
	if camMode then
		HidePlayer()
		Mode = 2
	else
		ShowPlayer()
		Mode = 1
	end
end)

UIS.InputBegan:Connect(function(input)
	--Swap Between First and Third Person and Lock the Mouse
	if input.KeyCode == FPSLock then
		if Mode == 2 then Mode = 3
		elseif Mode == 3 then Mode = 2 end
	end
end)

Player.CharacterAdded:Connect(CharacterRespawn)
--[[Steering]]
	Tune.SteerInner		= 39		-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 38		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= .3		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= .3		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 320		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 10		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1			-- Mouse steering exponential degree
	
	--Steer Gyro Tuning
	Tune.SteerD			= 1000		-- Steering Dampening
	Tune.SteerMaxTorque	= 50000		-- Steering Force
	Tune.SteerP			= 100000	-- Steering Aggressiveness
--local NOT_A_PROMISE = "Invalid argument #1 to 'Janitor:AddPromise' (Promise expected, got %s (%s))"

local Janitor = {
	ClassName = "Janitor";
	__index = {
		CurrentlyCleaning = true;
		[IndicesReference] = nil;
	};
}

local TypeDefaults = {
	["function"] = true;
	RBXScriptConnection = "Disconnect";
}
--[=[
	@class InsertServiceUtils
]=]

local require = require(script.Parent.loader).load(script)

local InsertService = game:GetService("InsertService")

local Promise = require("Promise")

local InsertServiceUtils = {}
--[[
	Like andThen, but the value passed into the handler is also the
	value returned from the handler.
]]
function Promise.prototype:tap(tapCallback)
	assert(type(tapCallback) == "function", string.format(ERROR_NON_FUNCTION, "Promise:tap"))
	return self:_andThen(debug.traceback(nil, 2), function(...)
		local callbackReturn = tapCallback(...)

		if Promise.is(callbackReturn) then
			local length, values = pack(...)
			return callbackReturn:andThen(function()
				return unpack(values, 1, length)
			end)
		end

		return ...
	end)
end
--Determine Wheel Size
local wDia = 0 for i,v in pairs(Drive) do if v.Size.x>wDia then wDia = v.Size.x end end
--[[ Services ]]--
local PlayersService = game:GetService("Players")
local VRService = game:GetService("VRService")
-- events

REMOTES.Grind.OnServerEvent:connect(function(player, grinding)
	if player.Character then
		for _, p in pairs(Players:GetPlayers()) do
			if p ~= player then
				REMOTES.Effect:FireClient(p, "Grind", player.Character, grinding)
			end
		end
	end
end)

REMOTES.Dash.OnServerEvent:connect(function(player, mode, direction)
	if player.Character then
		local rootPart	= player.Character:FindFirstChild("HumanoidRootPart")
		
		if rootPart then
			for _, p in pairs(Players:GetPlayers()) do
				if p ~= player then
					REMOTES.Effect:FireClient(p, "Dash", mode, rootPart, direction)
				end
			end
		end
	end
end)
-- Formerly getCurrentCameraMode, this function resolves developer and user camera control settings to
-- decide which camera control module should be instantiated. The old method of converting redundant enum types
function CameraModule:GetCameraControlChoice()
	local player = Players.LocalPlayer

	if player then
		if self.lastInputType == Enum.UserInputType.Touch or UserInputService.TouchEnabled then
			-- Touch
			if player.DevTouchCameraMode == Enum.DevTouchCameraMovementMode.UserChoice then
				return CameraUtils.ConvertCameraModeEnumToStandard( UserGameSettings.TouchCameraMovementMode )
			else
				return CameraUtils.ConvertCameraModeEnumToStandard( player.DevTouchCameraMode )
			end
		else
			-- Computer
			if player.DevComputerCameraMode == Enum.DevComputerCameraMovementMode.UserChoice then
				local computerMovementMode = CameraUtils.ConvertCameraModeEnumToStandard(UserGameSettings.ComputerCameraMovementMode)
				return CameraUtils.ConvertCameraModeEnumToStandard(computerMovementMode)
			else
				return CameraUtils.ConvertCameraModeEnumToStandard(player.DevComputerCameraMode)
			end
		end
	end
end

function CameraModule:OnCharacterAdded(char, player)
	if self.activeOcclusionModule then
		self.activeOcclusionModule:CharacterAdded(char, player)
	end
end

function CameraModule:OnCharacterRemoving(char, player)
	if self.activeOcclusionModule then
		self.activeOcclusionModule:CharacterRemoving(char, player)
	end
end

function CameraModule:OnPlayerAdded(player)
	player.CharacterAdded:Connect(function(char)
		self:OnCharacterAdded(char, player)
	end)
	player.CharacterRemoving:Connect(function(char)
		self:OnCharacterRemoving(char, player)
	end)
end

function CameraModule:OnMouseLockToggled()
	if self.activeMouseLockController then
		local mouseLocked = self.activeMouseLockController:GetIsMouseLocked()
		local mouseLockOffset = self.activeMouseLockController:GetMouseLockOffset()
		if self.activeCameraController then
			self.activeCameraController:SetIsMouseLocked(mouseLocked)
			self.activeCameraController:SetMouseLockOffset(mouseLockOffset)
		end
	end
end

local cameraModuleObject = CameraModule.new()
local cameraApi = {}

return cameraModuleObject
--[[
	Player state. Upon entering state Finished, will try and switch to spectating shortly after. Also destroys associated player vehicle upon leav.
]]
local PlayerFinished = {}
-- Function to call on the render step
local function onRenderStep()
	-- Check if the player's character exists and if that character'script
	-- HumanoidRootPart exists
	local character = player.Character
	if character then
		humanoidRootPart = character:FindFirstChild("HumanoidRootPart", true)
		if humanoidRootPart then
			-- Update the position of the camera
			local camRotation = GetCameraRotation(humanoidRootPart)
			local camPosition = humanoidRootPart.CFrame
			camera.CoordinateFrame = GetViewCFrame(camPosition, camRotation)
 
			-- Update the focus of the camera to follow the character
			camera.Focus = humanoidRootPart.CFrame
		end
	end
end -- onRenderStep()
--	====================
--	SHOTGUN
--	Enable the gun to fire multiple bullet in one shot
--	====================

		ShotgunEnabled = true;
		BulletPerShot = 8;
		
		ShotgunReload = false; --Make user reloading like Shotgun, which user clipin shell one by one
		ShotgunClipinAnimationID = nil; --Set to "nil" if you don't want to animate
		ShotgunClipinAnimationSpeed = 1;
		ShellClipinSpeed = 0.5; --In second
--!strict
local LuauPolyfill = script.Parent.Parent
local None = require(LuauPolyfill.Object.None)
local types = require(LuauPolyfill.types)
type Array<T> = types.Array<T>
type Comparable = (any, any) -> number
local defaultSort = function<T>(a: T, b: T): boolean
	return type(a) .. tostring(a) < type(b) .. tostring(b)
end

return function<T>(array: Array<T>, compare: Comparable?): Array<T>
	-- wrapperCompare interprets compare return value to be compatible with Lua's table.sort
	local wrappedCompare = defaultSort
	if compare ~= nil and compare ~= None then
		if typeof(compare :: any) ~= "function" then
			error("invalid argument to Array.sort: compareFunction must be a function")
		end
		wrappedCompare = function<T>(a: T, b: T)
			local result = compare(a, b)
			if typeof(result) ~= "number" then
				-- deviation: throw an error because
				-- it's not clearly defined what is
				-- the behavior when the compare function
				-- does not return a number
				error(("invalid result from compare function, expected number but got %s"):format(typeof(result)))
			end
			return result < 0
		end
	end
	table.sort(array, wrappedCompare)
	return array
end
-- camera settings
player.CameraMaxZoomDistance = 0.5 -- force first person
camera.FieldOfView = 70
humanoid.CameraOffset = Vector3.new(0, 0, -0.45)
--Main Control------------------------------------------------------------------------
SignalLeft.Changed:Connect(function(On)
	for i, v in pairs(script.Parent.Left:GetDescendants()) do
		if v:IsA("BasePart") then
			v.Material = On and Enum.Material.Neon or Enum.Material.SmoothPlastic
		end
	end
end)

SignalRight.Changed:Connect(function(On)
	for i, v in pairs(script.Parent.Right:GetDescendants()) do
		if v:IsA("BasePart") then
			v.Material = On and Enum.Material.Neon or Enum.Material.SmoothPlastic
		end
	end
end)
--[=[
	@param name string
	@param priority number
	@param fn (dt: number) -> nil
	Calls `RunService:BindToRenderStep` and registers a function in the
	trove that will call `RunService:UnbindFromRenderStep` on cleanup.
	```lua
	trove:BindToRenderStep("Test", Enum.RenderPriority.Last.Value, function(dt)
		-- Do something
	end)
	```
]=]
function Trove:BindToRenderStep(name: string, priority: number, fn: (dt: number) -> nil)
	RunService:BindToRenderStep(name, priority, fn)
	self:Add(function()
		RunService:UnbindFromRenderStep(name)
	end)
end
-- this script makes keeping track of loaded animations easy; goes inside of humanoids

local loadedAnimations = {}
local module = {}

function module.StopAnimation(animationName)
	local animation = loadedAnimations[animationName]
	if animation then
		animation:Stop()
	end
end

function module.PlayAnimation(animationName)
	local animation = loadedAnimations[animationName]
	if animation then
		if animation.IsPlaying == false then
			animation:Play()
		end
	else
		animation = game:GetService("ReplicatedStorage"):WaitForChild("Animations"):FindFirstChild(animationName)
		if animation then
			animation = script.Parent:LoadAnimation(animation)
			animation:Play()
			loadedAnimations[animationName] = animation
		end
	end
end

return module
--local equalizingForce = 236 / 1.2 -- amount of force required to levitate a mass
local equalizingForce = 180 / 1.2 -- amount of force required to levitate a mass
local gravity = 1.05 -- things float at > 1

local height = nil
local maxRise =  10

function onTouched(part)

	local h = part.Parent:FindFirstChild("Humanoid")
	if h ~= nil then
		upAndAway = true
		Tool.Handle.Anchored = false
	end

end

function onEquipped()

	--Tool.Handle.Mesh.MeshId = "http://www.roblox.com/asset/?id=25498565"
	upAndAway = true
	upAndAwayForce.Parent = Tool.Handle
	Tool.GripPos = Vector3.new(0,-1.75,0)
	Tool.GripForward = Vector3.new(0,1,0)
	Tool.GripRight = Vector3.new(0,0,-1)
	Tool.GripUp = Vector3.new(0,2,0)
	height = Tool.Parent.HumanoidRootPart.Position.y
	local lift = recursiveGetLift(Tool.Parent)
	float(lift)
end

function onUnequipped()

	upAndAway = false
	Tool.GripForward = Vector3.new(1,0,0)
	Tool.GripRight = Vector3.new(0,0,1)
	Tool.GripUp = Vector3.new(0,1,0)
	Tool.Handle.Mesh.Scale = Vector3.new(0.02, 0.02, 0.02)

end

Tool.Unequipped:connect(onUnequipped)
Tool.Equipped:connect(onEquipped)
Tool.Handle.Touched:connect(onTouched)

function recursiveGetLift(node)
	local m = 0
	local c = node:GetChildren()
	if (node:FindFirstChild("Head") ~= nil) then head = node:FindFirstChild("Head") end -- nasty hack to detect when your parts get blown off

	for i=1,#c do
		if c[i].className == "Part" then	
			if (head ~= nil and (c[i].Position - head.Position).magnitude < 10) then -- GROSS
				if c[i].Name == "Handle" then
					m = m + (c[i]:GetMass() * equalizingForce * 1) -- hack that makes hats weightless, so different hats don't change your jump height
				else
					m = m + (c[i]:GetMass() * equalizingForce * gravity)
				end
			end
		end
		m = m + recursiveGetLift(c[i])
	end
	return m
end

function updateBalloonSize()

	local range = (height + maxRise) - Tool.Handle.Position.y

	print(range)
	
	if range > 100 then
		Tool.Handle.Mesh.Scale = Vector3.new(0.03, 0.03, 0.03)
	elseif range < 100 and range > 50 then
		Tool.Handle.Mesh.Scale = Vector3.new(0.025, 0.025, 0.025)
	elseif range < 50 then
		Tool.Handle.Mesh.Scale = Vector3.new(0.02, 0.02, 0.02)
	end

end


function float(lift)

	while upAndAway do

		upAndAwayForce.force = Vector3.new(0,lift * 0.98,0)
		upAndAwayForce.Parent = Tool.Handle
		wait(3)

		upAndAwayForce.force = Vector3.new(0,lift * 0.92,0)
		wait(2)

		if Tool.Handle.Position.y > height + maxRise then
			upAndAway = false
			Tool.Handle.Pop:Play()
			Tool.GripPos = Vector3.new(0,-0.4,0)
			--Tool.Handle.Mesh.MeshId = "http://www.roblox.com/asset/?id=26725510"
			upAndAwayForce.Parent = nil
		end

		updateBalloonSize()

	end
end
--local Screen = carSeat.Parent.AudioPlayerScreen.SurfaceGui <-- soon
local Song = script.Parent.AudioPlayerGui.Song
local Audio = carSeat.Audio

vol = 1

function changeSong()
	
	local effect = carSeat.Audio.EqualizerSoundEffect
	if effect.HighGain == 5 then
		effect.HighGain = -80
		effect.MidGain = -25
		onOff.Text = "IN"
	else
		effect.HighGain = 5
		effect.MidGain = 7
		onOff.Text = "OUT"
	end
	
end

function playSong()
	
	local id = player.PlayerGui.AudioPlayer.AudioPlayerGui.TextBox.Text
	Audio:Stop()
	Audio.SoundId = "http://www.roblox.com/asset/?id="..id
	Audio:Play()
	--Screen.Song.Text = game:GetService("MarketplaceService"):GetProductInfo(id).Name
	Song.Text = game:GetService("MarketplaceService"):GetProductInfo(id).Name
	--Screen.ID.Text = id

end

function stopSong()
	
	Audio:Stop()
	
end

function volUp()

	if vol + 0.1 <= 5 then
		vol = vol + 0.1
		Audio.Volume = vol	
		player.PlayerGui.AudioPlayer.AudioPlayerGui.Vol.Text = tostring(vol*100) .. "%"
		--Screen.Vol.Text = tostring(vol*100) .. "%"
	end
	
end

function volDown()
		
	if vol - 0.1 >= 0 then
		vol = vol - 0.1
		Audio.Volume = vol
		player.PlayerGui.AudioPlayer.AudioPlayerGui.Vol.Text = tostring(vol*100) .. "%"
		--Screen.Vol.Text = tostring(vol*100) .. "%"
	end
	
end

ChangeButton.MouseButton1Click:connect(function()
	
	changeSong()
	
end)

VolUpButton.MouseButton1Click:connect(function()
	
	volUp()
	
end)

VolDownButton.MouseButton1Click:connect(function()
	
	volDown()
	
end)

PlayButton.MouseButton1Click:connect(function()
	
	playSong()
	
end)

PauseButton.MouseButton1Click:connect(function()
	
	stopSong()
	
end)
--[[Transmission]]
	Tune.TransModes		= {"Semi", "Auto"}												--[[
	[Modes]
		"Auto"		: Automatic shifting
		"Semi"		: Clutchless manual shifting, dual clutch transmission
		"Manual"	: Manual shifting with clutch
		
		>Include within brackets
			eg: {"Semi"} or {"Auto", "Manual"}								
		>First mode is default mode													]]
	
	--Automatic Settings
	Tune.AutoShiftMode	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]	
	Tune.AutoUpThresh	= -200		--Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 1400		--Automatic downshift point (relative to peak RPM, positive = Under-rev)
	
	--Gear Ratios
	Tune.FinalDrive		= 3.97			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.42		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		3.75		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		2.10		,
		--[[ 3 ]]		1.40		,
		--[[ 4 ]]		1.00		,
		--[[ 5 ]]		0.71		,
		--[[ 6 ]]		0.61			,
		--[[ 7 ]]		0.51		,
	}
	Tune.FDMult			= 1			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)
--LIGHTING FUNCTIONS

script.Parent.OnServerEvent:connect(function(pl,n) if lt~=1 then pr = true else pr=false end lt=n
	if n == 0 then
		UpdateLt(1,white)
		UpdatePt(false,white)
		StopMt(pr)
	elseif (n == 1 or n == 2) then
		RefMt.DesiredAngle = RefMt.CurrentAngle%math.rad(360)
		RefMt.CurrentAngle = RefMt.CurrentAngle%math.rad(360)
		UpdateLt(.25,red)
		UpdatePt(true,red)
		UpdateMt(0,math.rad(225),4)
		wait(.75)
		repeat
			UpdateMt(0,math.rad(135),0)
			wait(.5)
			if lt~=1 and lt~=2 then break end
			UpdateMt(0,math.rad(225),0)
			wait(.5)
		until (lt~=1 and lt~= 2)
	elseif n == 3 then
		wait(.5)
		UpdateLt(.25,red)
		UpdatePt(true,red)
		UpdateMt(0,9e9,1)
	end
end)
--!nonstrict
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")

local LocalPlayer = Players.LocalPlayer
if not LocalPlayer then
	Players:GetPropertyChangedSignal("LocalPlayer"):Wait()
	LocalPlayer = Players.LocalPlayer
end

local function waitForChildOfClass(parent: Instance, class: string)
	local child = parent:FindFirstChildOfClass(class)
	while not child or child.ClassName ~= class do
		child = parent.ChildAdded:Wait()
	end
	return child
end

local PlayerGui = waitForChildOfClass(LocalPlayer, "PlayerGui")

local TOAST_OPEN_SIZE = UDim2.new(0, 326, 0, 58)
local TOAST_CLOSED_SIZE = UDim2.new(0, 80, 0, 58)
local TOAST_BACKGROUND_COLOR = Color3.fromRGB(32, 32, 32)
local TOAST_BACKGROUND_TRANS = 0.4
local TOAST_FOREGROUND_COLOR = Color3.fromRGB(200, 200, 200)
local TOAST_FOREGROUND_TRANS = 0
--SETTINGS
local TITLE1 = "Close Door"
local TITLE2 = "Open Door"
local IsOpen = false


click.Triggered:Connect(function()
	if IsOpen == false then
		IsOpen = true
		click.ActionText = TITLE1
		open_mus:Play()
		base2.Window.Transparency = 0.6
		base2.Visual.Transparency = 0
		base1.Window.Transparency = 1
		base1.Visual.Transparency = 1
		base2.CanCollide = true
		base1.CanCollide = false
	else
		IsOpen = false
		click.ActionText = TITLE2
		close_mus:Play()
		base2.Window.Transparency = 1
		base2.Visual.Transparency = 1
		base1.Window.Transparency = 0.6
		base1.Visual.Transparency = 0
		base2.CanCollide = false
		base1.CanCollide = true
	end
end)
-- Place script in StarterGui
local StarterGui = game:GetService('StarterGui')

StarterGui:SetCore("ResetButtonCallback", false)
-- Decompiled with the Synapse X Luau decompiler.

local v1 = {};
v1.__index = v1;
function v1.new()
	local v2 = {};
	setmetatable(v2, v1);
	v2.flag = 0;
	v2.lastTime = 0;
	return v2;
end;
function v1.check(p1, p2, p3)
	if os.clock() - p1.lastTime < (p3 and 1) then
		if p2 <= p1.flag then
			p1.lastTime = os.clock();
			return false;
		end;
		p1.flag = p1.flag + 1;
	else
		p1.flag = 0;
	end;
	p1.lastTime = os.clock();
	return true;
end;
function v1.destroy(p4)
	p4.flag = nil;
	p4.lastTime = nil;
end;
function v1.Destroy(p5)
	return p5:destroy();
end;
return v1;
-- Note: Overrides base class GetIsJumping with get-and-clear behavior to do a single jump
-- rather than sustained jumping. This is only to preserve the current behavior through the refactor.
function DynamicThumbstick:GetIsJumping()
	local wasJumping = self.isJumping
	self.isJumping = false
	return wasJumping
end

function DynamicThumbstick:EnableAutoJump(enable)
	local humanoid = Players.LocalPlayer.Character and Players.LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
	if humanoid then
		if enable then
			self.shouldRevertAutoJumpOnDisable = (humanoid.AutoJumpEnabled == false) and (Players.LocalPlayer.DevTouchMovementMode == Enum.DevTouchMovementMode.UserChoice)
			humanoid.AutoJumpEnabled = true
		elseif self.shouldRevertAutoJumpOnDisable then
			humanoid.AutoJumpEnabled = false
		end
	end
end

function DynamicThumbstick:Enable(enable, uiParentFrame)
	if enable == nil then return false end			-- If nil, return false (invalid argument)
	enable = enable and true or false				-- Force anything non-nil to boolean before comparison
	if self.enabled == enable then return true end	-- If no state change, return true indicating already in requested state

	if enable then
		-- Enable
		if not self.thumbstickFrame then
			self:Create(uiParentFrame)
		end

		self:BindContextActions()

		if Players.LocalPlayer.Character then
			self:OnCharacterAdded(Players.LocalPlayer.Character)
		else
			Players.LocalPlayer.CharacterAdded:Connect(function(char)
				self:OnCharacterAdded(char)
			end)
		end
	else
		ContextActionService:UnbindAction(DYNAMIC_THUMBSTICK_ACTION_NAME)
		-- Disable
		self:OnInputEnded() -- Cleanup
	end

	self.enabled = enable
	self.thumbstickFrame.Visible = enable
end

function DynamicThumbstick:OnCharacterAdded(char)

	for _, child in ipairs(char:GetChildren()) do
		if child:IsA("Tool") then
			self.toolEquipped = child
		end
	end

	char.ChildAdded:Connect(function(child)
		if child:IsA("Tool") then
			self.toolEquipped = child
		elseif child:IsA("Humanoid") then
			self:EnableAutoJump(true)
		end

	end)
	char.ChildRemoved:Connect(function(child)
		if child == self.toolEquipped then
			self.toolEquipped = nil
		end
	end)

	self.humanoid = char:FindFirstChildOfClass("Humanoid")
	if self.humanoid then
		self:EnableAutoJump(true)
	end
end