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

function configureAnimationSetOld(name, fileList)
	if animTable[name] ~= nil then
		for _, connection in pairs(animTable[name].connections) do
			connection:disconnect()
		end
	end
	animTable[name] = {}
	animTable[name].count = 0
	animTable[name].totalWeight = 0	
	animTable[name].connections = {}

	local allowCustomAnimations = true
	local AllowDisableCustomAnimsUserFlag = false

	local success, msg = pcall(function()
		AllowDisableCustomAnimsUserFlag = UserSettings():IsUserFeatureEnabled("UserAllowDisableCustomAnims2")
	end)

	if AllowDisableCustomAnimsUserFlag then
		local success, msg = pcall(function() allowCustomAnimations = game:GetService("StarterPlayer").AllowCustomAnimations end)
		if not success then
			allowCustomAnimations = true
		end
	end

	-- check for config values
	local config = script:FindFirstChild(name)
	if (allowCustomAnimations and config ~= nil) then
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
		local idx = 1
		for _, childPart in pairs(config:GetChildren()) do
			if childPart:IsA("Animation") then
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
				animTable[name][idx] = {}
				animTable[name][idx].anim = childPart
				local weightObject = childPart:FindFirstChild("Weight")
				if weightObject == nil then
					animTable[name][idx].weight = 1
				else
					animTable[name][idx].weight = weightObject.Value
				end
				animTable[name].count = animTable[name].count + 1
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
				idx = idx + 1
			end
		end
	end

	-- fallback to defaults
	if animTable[name].count <= 0 then
		for idx, anim in pairs(fileList) do
			animTable[name][idx] = {}
			animTable[name][idx].anim = Instance.new("Animation")
			animTable[name][idx].anim.Name = name
			animTable[name][idx].anim.AnimationId = anim.id
			animTable[name][idx].weight = anim.weight
			animTable[name].count = animTable[name].count + 1
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
			-- print(name .. " [" .. idx .. "] " .. anim.id .. " (" .. anim.weight .. ")")
		end
	end
	
	-- preload anims
	if PreloadAnimsUserFlag then
		for i, animType in pairs(animTable) do
			for idx = 1, animType.count, 1 do 
				Humanoid:LoadAnimation(animType[idx].anim)
			end
		end
	end
end
--[[while wait(2) do
	local t = tick()
	script.Parent.PingRemote:InvokeServer()
	local ping = ((tick() - t) / 2) * 1000 -- time it takes in milliseconds
	local txt = string.format("Ping : %dms", ping)
	if ping > 130 then
		txt = string.format("%s (Warning high ping)",txt)
	end
	txt = string.format("%s Server location: %s",txt, script.Parent.PingLocation.Value)
	script.Parent.Text = txt
end]]

while wait(2) do
	local t = tick()
	script.Parent.PingRemote:InvokeServer()
	local ping = ((tick() - t) / 2) * 1000 -- time it takes in milliseconds
	local txt = string.format("%d ms", ping * 2)
	script.Parent.Text = txt
end
-- Main enemy loop
function Enemy:start()
	coroutine.wrap(function()
		self._active = true
		while(self._active) do
			self:_update()
			wait(UPDATE_TIME_INTERVAL)
		end
	end)()
end

function Enemy:stop()
	self._active = false
	self._model.Humanoid.WalkSpeed = 0
end

function Enemy:_destroy()
	self._model:Destroy()
end

function Enemy:_onTouch(otherPart)
	if self._active and CollectionService:HasTag(otherPart, "Platform") then
		hitPlatformEvent:Fire()
		self:stop()
		self:_destroy()
	end
end

return Enemy
-- Hi, its Avi8or! 
l:SetMinutesAfterMidnight(l:GetMinutesAfterMidnight()+.02) 
wait(.1)
end
-- << COMMANDS >>
local module = {
	
	-----------------------------------
	{
	Name = "votekick";
	Aliases	= {};
	Prefixes = {settings.Prefix};
	Rank = 2;
	RankLock = false;
	Loopable = false;
	Tags = {};
	Description = "votekick players! ";
	Contributors = {};
	--
	Args = {};
	Function = function(speaker, args)
		
	end;
	UnFunction = function(speaker, args)
		
	end;
	--
	};
	
	
	
	
	-----------------------------------
	{
	Name = "";
	Aliases	= {};
	Prefixes = {settings.Prefix};
	Rank = 1;
	RankLock = false;
	Loopable = false;
	Tags = {};
	Description = "";
	Contributors = {};
	--
	Args = {};
	--[[
	ClientCommand = true;
	FireAllClients = true;
	BlockWhenPunished = true;
	PreFunction = function(speaker, args)
		
	end;
	Function = function(speaker, args)
		wait(1)
	end;
	--]]
	--
	};
	
	
	
	
	-----------------------------------
	
};



return module
--------END CREW--------
end

script.Parent.ClickDetector.MouseClick:connect(onClicked)
--// Damage Settings	
	BaseDamage = 13; -- Torso Damage
	LimbDamage = 10; -- Arms and Legs
	ArmorDamage = 10; -- How much damage is dealt against armor (Name the armor "Armor")
	HeadDamage = 18; -- If you set this to 100, there's a chance the player won't die because of the heal script
--							else print("Didn't hit Target")
							end
							if makeRays then
								makeRay(CFrame.new(origPos, position)
									* CFrame.new(0, 0, -distance/2), Vector3.new(0.2, 0.2, distance))
							end
						end
					end
				end
			end
		end
		round:remove()
		break
	end
	wait()
end
if round then
	round:remove()
end
script:remove()
-- Members --
	elseif (itemType == 'Property') then
		table.insert(Classes[item.Class].Properties, item)
	elseif (itemType == 'Function') then
		table.insert(Classes[item.Class].Functions, item)
	elseif (itemType == 'YieldFunction') then
		table.insert(Classes[item.Class].YieldFunctions, item)
	elseif (itemType == 'Event') then
		table.insert(Classes[item.Class].Events, item)
	elseif (itemType == 'Callback') then
		table.insert(Classes[item.Class].Callbacks, item)
--Precalculated paths
local t,f,n=true,false,{}
local r={
[58]={{36,37,35,39,41,30,56,58},t},
[49]={{36,33,32,31,29,28,44,45,49},t},
[16]={n,f},
[19]={{36,37,35,39,41,30,56,58,20,19},t},
[59]={{36,37,35,39,41,59},t},
[63]={{36,37,35,39,41,30,56,58,23,62,63},t},
[34]={{36,37,35,34},t},
[21]={{36,37,35,39,41,30,56,58,20,21},t},
[48]={{36,33,32,31,29,28,44,45,49,48},t},
[27]={{36,33,32,31,29,28,27},t},
[14]={n,f},
[31]={{36,33,32,31},t},
[56]={{36,37,35,39,41,30,56},t},
[29]={{36,33,32,31,29},t},
[13]={n,f},
[47]={{36,33,32,31,29,28,44,45,49,48,47},t},
[12]={n,f},
[45]={{36,33,32,31,29,28,44,45},t},
[57]={{36,37,35,39,41,30,56,57},t},
[36]={{36},t},
[25]={{36,33,32,31,29,28,27,26,25},t},
[71]={{36,37,35,39,41,59,61,71},t},
[20]={{36,37,35,39,41,30,56,58,20},t},
[60]={{36,37,35,39,41,60},t},
[8]={n,f},
[4]={n,f},
[75]={{36,37,35,39,41,59,61,71,72,76,73,75},t},
[22]={{36,37,35,39,41,30,56,58,20,21,22},t},
[74]={{36,37,35,39,41,59,61,71,72,76,73,74},t},
[62]={{36,37,35,39,41,30,56,58,23,62},t},
[1]={n,f},
[6]={n,f},
[11]={n,f},
[15]={n,f},
[37]={{36,37},t},
[2]={n,f},
[35]={{36,37,35},t},
[53]={{36,33,32,31,29,28,44,45,49,48,47,52,53},t},
[73]={{36,37,35,39,41,59,61,71,72,76,73},t},
[72]={{36,37,35,39,41,59,61,71,72},t},
[33]={{36,33},t},
[69]={{36,37,35,39,41,60,69},t},
[65]={{36,37,35,39,41,30,56,58,20,19,66,64,65},t},
[26]={{36,33,32,31,29,28,27,26},t},
[68]={{36,37,35,39,41,30,56,58,20,19,66,64,67,68},t},
[76]={{36,37,35,39,41,59,61,71,72,76},t},
[50]={{36,33,32,31,29,28,44,45,49,48,47,50},t},
[66]={{36,37,35,39,41,30,56,58,20,19,66},t},
[10]={n,f},
[24]={{36,33,32,31,29,28,27,26,25,24},t},
[23]={{36,37,35,39,41,30,56,58,23},t},
[44]={{36,33,32,31,29,28,44},t},
[39]={{36,37,35,39},t},
[32]={{36,33,32},t},
[3]={n,f},
[30]={{36,37,35,39,41,30},t},
[51]={{36,33,32,31,29,28,44,45,49,48,47,50,51},t},
[18]={n,f},
[67]={{36,37,35,39,41,30,56,58,20,19,66,64,67},t},
[61]={{36,37,35,39,41,59,61},t},
[55]={{36,33,32,31,29,28,44,45,49,48,47,52,53,54,55},t},
[46]={{36,33,32,31,29,28,44,45,49,48,47,46},t},
[42]={{36,37,35,38,42},t},
[40]={{36,37,35,40},t},
[52]={{36,33,32,31,29,28,44,45,49,48,47,52},t},
[54]={{36,33,32,31,29,28,44,45,49,48,47,52,53,54},t},
[43]={n,f},
[7]={n,f},
[9]={n,f},
[41]={{36,37,35,39,41},t},
[17]={n,f},
[38]={{36,37,35,38},t},
[28]={{36,33,32,31,29,28},t},
[5]={n,f},
[64]={{36,37,35,39,41,30,56,58,20,19,66,64},t},
}
return r
--[[

   _____ _                 _                  _           _       
  / ____(_)               | |        /\      | |         (_)      
 | (___  _ _ __ ___  _ __ | | ___   /  \   __| |_ __ ___  _ _ __  
  \___ \| | '_ ` _ \| '_ \| |/ _ \ / /\ \ / _` | '_ ` _ \| | '_ \ 
  ____) | | | | | | | |_) | |  __// ____ \ (_| | | | | | | | | | |
 |_____/|_|_| |_| |_| .__/|_|\___/_/    \_\__,_|_| |_| |_|_|_| |_|
                    | |                                           
                    |_|                                           

--]]

local Config = {
	DebugMode = false; -- Loads the MainModule (parented to the Loader) rather than the live asset.
	Asset = 5300444087;
	Settings = require(script.Parent.Parent:WaitForChild("Settings"))
}

if not _G.SimpleAdminLoaded then
	script.Parent.Parent.Parent = game:GetService("ServerScriptService")
	
	_G.SimpleAdmin = script.Parent.Parent
	local Start = tick()
	local Module = require((Config.DebugMode) and script:WaitForChild("MainModule") or Config.Asset)
	
	if Module(Config.Settings) then
		_G.SimpleAdminLoaded = true;
		warn("SimpleAdmin Loaded! (" .. tick() - Start .. " seconds)")
	else
		warn("Something went wrong while loading SimpleAdmin.")	
	end
else
	local Model = script.Parent.Parent.Parent.Parent
	if Model:IsA("Model") and Model.Name == "SimpleAdmin" then
		Model:Destroy()
	end
end
--[[
    Turns brake lights on or off depending on the status
]]
function VehicleLightsComponent:updateStatus(statusesChanged)
	if statusesChanged.Braking ~= nil then
		local brakeLightsOn = statusesChanged.Braking
		if brakeLightsOn ~= self.state.brakeLights then
			self.state.brakeLights = brakeLightsOn
			self:toggleLights(self.brakeLights, brakeLightsOn)
		end
	end
end

return VehicleLightsComponent
--	HUB.Default:TweenPosition(UDim2.new(0, 0, mode,3),Enum.EasingDirection.Out,Enum.EasingStyle.Quad,.4,true)
end

swap()
 
mouse.KeyDown:connect(function (key)
    key = string.lower(key)
	if key == "k" then --Camera controls
        if cam == ("car") then
			Camera.CameraSubject = player.Character.Humanoid
			Camera.CameraType = ("Custom")
			cam = ("freeplr")
			Camera.FieldOfView = 70
		elseif cam == ("freeplr") then
			Camera.CameraSubject = player.Character.Humanoid
			Camera.CameraType = ("Attach")
			cam = ("lockplr")
        elseif cam == ("lockplr") then
			Camera.CameraSubject = carSeat
			Camera.CameraType = ("Custom")
			cam = ("car")
			Camera.FieldOfView = 70
        end
--[=[
	Taps into the observable and executes the onFire/onError/onComplete
	commands.

	https://rxjs-dev.firebaseapp.com/api/operators/tap

	@param onFire function?
	@param onError function?
	@param onComplete function?
	@return (source: Observable<T>) -> Observable<T>
]=]
function Rx.tap(onFire, onError, onComplete)
	assert(type(onFire) == "function" or onFire == nil, "Bad onFire")
	assert(type(onError) == "function" or onError == nil, "Bad onError")
	assert(type(onComplete) == "function" or onComplete == nil, "Bad onComplete")

	return function(source)
		assert(Observable.isObservable(source), "Bad observable")

		return Observable.new(function(sub)
			return source:Subscribe(
				function(...)
					if onFire then
						onFire(...)
					end
					if sub:IsPending() then
						sub:Fire(...)
					end
				end,
				function(...)
					if onError then
						onError(...)
					end
					sub:Error(...)
				end,
				function(...)
					if onComplete then
						onComplete(...)
					end
					sub:Complete(...)
				end)
		end)
	end
end
--[[**
	ensures value is an integer

	@param value The value to check against

	@returns True iff the condition is satisfied, false otherwise
**--]]
function t.integer(value)
	local success = t.number(value)
	if not success then
		return false
	end

	if value % 1 == 0 then
		return true
	else
		return false
	end
end
-- Decompiled with the Synapse X Luau decompiler.

script.Parent.Visible = true;
script.Parent.Parent.Background.Visible = true;
wait(2);
for v1 = 1, 10 do
	wait();
	script.Parent.Text1.TextTransparency = script.Parent.Text1.TextTransparency - 0.1;
end;
wait(1);
script.Parent.Names.Visible = true;
wait();
script.Parent.Names.Frame:TweenPosition(UDim2.new(0, 0, -0.925, 0), "In", "Quint", 5);
wait(7.5);
script.Parent.Parent:Destroy();
--// # key, meme
mouse.KeyDown:connect(function(key)
	if key=="k" then 
		if veh.Lightbar.middle.meme.IsPlaying == true then
		veh.Lightbar.middle.Wail:Stop()
		veh.Lightbar.middle.meme:Stop()
		veh.Lightbar.middle.Priority:Stop()
		script.Parent.Parent.Sirens.meme.BackgroundColor3 = Color3.fromRGB(62, 62, 62)
		else
		veh.Lightbar.middle.Wail:Stop()
		veh.Lightbar.middle.meme:Play()
		veh.Lightbar.middle.Priority:Stop()
		script.Parent.Parent.Sirens.meme.BackgroundColor3 = Color3.fromRGB(215, 135, 110)
		script.Parent.Parent.Sirens.Wail.BackgroundColor3 = Color3.fromRGB(62, 62, 62)
		script.Parent.Parent.Sirens.Priority.BackgroundColor3 = Color3.fromRGB(62, 62, 62)
		end
	end
end)
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 

runService.RenderStepped:connect(function()
	 
	if running then
		updatechar()
		
		CamPos = CamPos + (TargetCamPos - CamPos) *0.28 
		AngleX = AngleX + (TargetAngleX - AngleX) *0.35 
		local dist = TargetAngleY - AngleY 
		dist = math.abs(dist) > 180 and dist - (dist / math.abs(dist)) * 360 or dist 
		AngleY = (AngleY + dist *0.35) %360
		cam.CameraType = Enum.CameraType.Scriptable
		
		cam.CoordinateFrame = CFrame.new(head.Position) 
		* CFrame.Angles(0,math.rad(AngleY),0) 
		* CFrame.Angles(math.rad(AngleX),0,0)
		* CFrame.new(0,0.8,0) -- offset
		
		humanoidpart.CFrame=CFrame.new(humanoidpart.Position)*CFrame.Angles(0,math.rad(AngleY),0)
		character.Humanoid.AutoRotate = false
		else game:GetService("UserInputService").MouseBehavior = Enum.MouseBehavior.Default; character.Humanoid.AutoRotate = true
	end

	if (cam.Focus.p-cam.CoordinateFrame.p).magnitude < 1 then
		running = false
	else
		running = true
		if freemouse == true then
			game:GetService("UserInputService").MouseBehavior = Enum.MouseBehavior.Default
		else
			game:GetService("UserInputService").MouseBehavior = Enum.MouseBehavior.LockCenter
		end
	end
	
	if not CanToggleMouse.allowed then
		freemouse = false
	end
	
	cam.FieldOfView = FieldOfView

end)
--!strict
-- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
return 9007199254740991
--[[Susupension]]
	Tune.SusEnabled		= true		-- works only in with PGSPhysicsSolverEnabled, defaults to false when PGS is disabled
	
	--Front Suspension
	Tune.FSusDamping	= 500		-- Spring Dampening
	Tune.FSusStiffness	= 7500		-- Spring Force
	Tune.FSusLength		= 2			-- Suspension length (in studs)
	Tune.FSusMaxExt		= .3		-- Max Extension Travel (in studs)
	Tune.FSusMaxComp	= .1		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward
	
	--Rear Suspension
	Tune.RSusDamping	= 500		-- Spring Dampening
	Tune.RSusStiffness	= 7500		-- Spring Force
	Tune.RSusLength		= 2			-- Suspension length (in studs)
	Tune.RSusMaxExt		= .3		-- Max Extension Travel (in studs)
	Tune.RSusMaxComp	= .1		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics	
	Tune.SusVisible		= true			-- Spring Visible
	Tune.WsBVisible		= false			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Really black"	-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness
-- AUTOOPEN EGGS

AutoOpenEggsButton.MouseEnter:Connect(function()
	AutoOpenEggsButton.Text = "419 R$"
	AutoOpenEggsButton.TextColor3 = Color3.fromRGB(0, 255, 0)
end)

AutoOpenEggsButton.MouseLeave:Connect(function()
	AutoOpenEggsButton.Text = "BUY"
	AutoOpenEggsButton.TextColor3 = Color3.fromRGB(255, 255, 255)
end)
--s.Pitch = 0.7
while s.Pitch<0.65 do
s.Pitch=s.Pitch+0.009
s:Play()
if s.Pitch>1 then
	s.Pitch=1
end
wait(0.001)
end

while s.Pitch<0.97 do
s.Pitch=s.Pitch+0.003
s:Play()
if s.Pitch>0.97 then
	s.Pitch=0.97
end
wait(0.001)
end
--[[ The Module ]]--
local BaseOcclusion = require(script.Parent:WaitForChild("BaseOcclusion"))
local Poppercam = setmetatable({}, BaseOcclusion)
Poppercam.__index = Poppercam

function Poppercam.new()
	local self = setmetatable(BaseOcclusion.new(), Poppercam)
	
	self.camera = nil
	self.cameraSubjectChangeConn = nil
	
	self.subjectPart = nil
	
	self.playerCharacters = {} 	-- For ignoring in raycasts
	self.vehicleParts = {} 		-- Also just for ignoring
	
	self.lastPopAmount = 0
	self.lastZoomLevel = 0
	self.popperEnabled = false
	
	return self
end

function Poppercam:GetOcclusionMode()
	return Enum.DevCameraOcclusionMode.Zoom
end

function Poppercam:Enable(enable)
	
end
-- ================================================================================
-- Settings
-- ================================================================================

local Settings = {}

Settings.DefaultSpeed = 150		-- Speed when not boosted [Studs/second, Range 50-300]
Settings.BoostSpeed = 200		-- Speed when boosted [Studs/second, Maximum: 400]
Settings.BoostAmount = 10		-- Duration of boost in seconds
Settings.Steering = 5			-- How quickly the speeder turns [Range: 1-10]
--[[Engine (Avxnturador)]]

	-- Everything below can be illustrated and tuned with the graph below.
	-- https://www.desmos.com/calculator/oishj9m1tq
	-- This includes everything, from the engines, to boost, to electric.
	
	-- To import engines prior to AC6C V1.3, consult the README.
	
	-- Naturally Aspirated Engine
	Tune.Engine 		= true		
		
		Tune.Horsepower		= 970
		Tune.IdleRPM		= 750
		Tune.PeakRPM		= 6800
		Tune.Redline		= 8000
		Tune.EqPoint		= 5252
		Tune.PeakSharpness	= 10
		Tune.CurveMult		= 0.4
	
	-- Electric Engine
	Tune.Electric		= true
		
		Tune.E_Redline	= 12700
		Tune.E_Trans1	= 4000
		Tune.E_Trans2	= 7000
		-- Horsepower
		Tune.E_Horsepower	= 223
		Tune.EH_FrontMult	= 0.15
		Tune.EH_EndMult		= 2.9
		Tune.EH_EndPercent	= 7
		-- Torque
		Tune.E_Torque		= 286
		Tune.ET_EndMult		= 1.505
		Tune.ET_EndPercent	= 27.5
		
	-- Turbocharger
	Tune.Turbochargers	= 2				-- Number of turbochargers in the engine
										-- Set to 0 for no turbochargers
		Tune.T_Boost		= 25
		Tune.T_Efficiency	= 8.5
		
		Tune.T_Size			= 80		-- Turbo Size; Bigger size = more turbo lag
		
	-- Supercharger
	Tune.Superchargers	= 0				-- Number of superchargers in the engine
										-- Set to 0 for no superchargers
		Tune.S_Boost		= 7
		Tune.S_Efficiency	= 8.5
		
		Tune.S_Sensitivity	= 0.05		-- Supercharger responsiveness/sensitivity, applied per tick (recommended values between 0.05 to 0.1)
		
	--Misc
	Tune.ThrotAccel		= .05		-- Throttle acceleration, applied per tick (recommended values between 0.05 to 0.1)
	Tune.ThrotDecel		= .2		-- Throttle deceleration, applied per tick (recommended values between 0.1 to 0.3)
	
	Tune.BrakeAccel		= .2		-- Brake acceleration, applied per tick
	Tune.BrakeDecel		= .5		-- Brake deceleration, applied per tick
	
	Tune.RevAccel		= 250		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.Flywheel		= 500		-- Flywheel weight (higher = faster response, lower = more stable RPM)
	
	Tune.InclineComp	= 1			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
--[[[Default Controls]]
	--Peripheral Deadzones
	Tune.Peripherals = {
		MSteerWidth				= 67		,	-- Mouse steering control width	(0 - 100% of screen width)
		MSteerDZone				= 10		,	-- Mouse steering deadzone (0 - 100%)
		
		ControlLDZone			= 5			,	-- Controller steering L-deadzone (0 - 100%)
		ControlRDZone			= 5			,	-- Controller steering R-deadzone (0 - 100%)
	}
	
	--Control Mapping
	Tune.Controls = {
		
	--Keyboard Controls
		--Mode Toggles
		ToggleABS				= Enum.KeyCode.Y					,
		ToggleTransMode			= Enum.KeyCode.Q					,
		--Primary Controls
		Throttle				= Enum.KeyCode.Up					,
		Brake					= Enum.KeyCode.Down					,
		SteerLeft				= Enum.KeyCode.Left					,
		SteerRight				= Enum.KeyCode.Right				,
		
		--Secondary Controls
		Throttle2				= Enum.KeyCode.W					,
		Brake2					= Enum.KeyCode.S					,
		SteerLeft2				= Enum.KeyCode.A					,
		SteerRight2				= Enum.KeyCode.D					,
		
		--Manual Transmission
		ShiftUp					= Enum.KeyCode.E					,
		ShiftDown				= Enum.KeyCode.Q					,
		Clutch					= Enum.KeyCode.LeftShift			,
		
		--Handbrake
		PBrake					= Enum.KeyCode.P					,
		
	--Mouse Controls
		MouseThrottle			= Enum.UserInputType.MouseButton1	,
		MouseBrake				= Enum.UserInputType.MouseButton2	,
		MouseClutch				= Enum.KeyCode.W					,
		MouseShiftUp			= Enum.KeyCode.E					,
		MouseShiftDown			= Enum.KeyCode.Q					,
		MousePBrake				= Enum.KeyCode.LeftShift			,
		
	--Controller Mapping
		ContlrThrottle			= Enum.KeyCode.ButtonR2				,
		ContlrBrake				= Enum.KeyCode.ButtonL2				,
		ContlrSteer				= Enum.KeyCode.Thumbstick1			,
		ContlrShiftUp			= Enum.KeyCode.ButtonY				,
		ContlrShiftDown			= Enum.KeyCode.ButtonX				,
		ContlrClutch			= Enum.KeyCode.ButtonR1				,
		ContlrPBrake			= Enum.KeyCode.ButtonL1				,
		ContlrToggleTMode		= Enum.KeyCode.DPadUp				,
		ContlrToggleTCS			= Enum.KeyCode.DPadDown				,
		ContlrToggleABS			= Enum.KeyCode.DPadRight			,
	}
--[=[
	Creates a promise from a signal

	@param signal Signal<T>
	@return Promise<T>
]=]
function PromiseUtils.fromSignal(signal)
	local promise = Promise.new()
	local conn

	promise:Finally(function()
		conn:Disconnect()
		conn = nil
	end)

	conn = signal:Connect(function(...)
		promise:Resolve(...)
	end)

	return promise
end
--------------------------CHARACTER CONTROL-------------------------------
local CurrentIgnoreList

local function GetCharacter()
	return Player and Player.Character
end

local function GetTorso()
	local humanoid = findPlayerHumanoid(Player)
	return humanoid and humanoid.Torso
end

local function getIgnoreList()
	if CurrentIgnoreList then
		return CurrentIgnoreList
	end
	CurrentIgnoreList = {}
	table.insert(CurrentIgnoreList, GetCharacter())
	return CurrentIgnoreList
end
-- Only change the number below! --
local jumpCooldown = 2.0 -- Change this to the cooldown for every jump (decimals accepted)