local sort_asc = {[1] = true, [2] = false, [3] = true, [4] = false} function VC_TTA11a33504e893f8f7c471c32458e6a5b7hOtd(mdl, data, ent)  if !mdl or !data then return end   if vcmod1_els then    data = VC.Insert_Siren_Lights_Into_Reg(data)  end   if data.Lights then  data.LightTable = VC_IDQ11a33504e893f8f7c471c32458e6a5b7sS(data)   data.LightTypeCount = 0  data.HUD_CanDisplay = nil   if data.LightTable then  data.LightTypeCount = table.Count(data.LightTable)   data.HUD_CanDisplay = data.LightTypeCount > 0 and (data.LightTypeCount > 1 or !data.LightTable.Brake and !data.LightTable.Reverse)  end     data.LPT_Seq = nil data.LPT = {}  for Type,vdata in pairs(data.LightTable) do  for key,v in pairs(vdata) do  local isELS = nil if v.UseSiren then isELS = true end  local isSeq = nil if v.seq_use then isSeq = true end   local pos = v.SLSPos or v.Pos or Vector(0,0,0)  local newData = {Pos = pos, els = isELS, seq = isSeq, seq_stay = v.seq_stay, x = pos.x, reversed = v.seq_rev}  data.LPT[key] = newData   if isSeq then  if !data.LPT_Seq then data.LPT_Seq = {[0] = {}} end   local isLeft = pos.x < 0 local isBack = pos.y < 0  local side = 1 if !isLeft and !isBack then side = 2 elseif isLeft and isBack then side = 3 elseif !isLeft and isBack then side = 4 end  local id = side..Type  if !data.LPT_Seq[id] then data.LPT_Seq[id] = {} end   data.LPT_Seq[id][key] = newData  data.LPT_Seq[0][key] = id  end  end  end   if data.LPT_Seq then  local time_on = VC.GetBlinkerOnTime(data)  for id,_ in pairs(data.LPT_Seq) do  if id != 0 and data.LPT_Seq[id] then   local count = table.Count(data.LPT_Seq[id])  local ttime = time_on/count  local cur = 0  local side = tonumber(id[1])  for k, v in SortedPairsByMemberValue(data.LPT_Seq[id], "x", sort_asc[side]) do  local new = cur+1  data.LPT_Seq[id][k].timeOn = ttime*cur  data.LPT_Seq[id][k].timeOff = v.seq_stay and time_on or ttime*new  cur = new  end  end  end  end   if vcmod1_els then data = VC.ELS_Convert_Section_Data(data) end     data.Lights = nil  end   table.Merge(VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl], data)    VC.Initialize_PostModel(ent) end  local function downloadData(mdl, ent)  if !mdl then return end    if !VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl] then VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl] = {} end    if !VC_DFO11a33504e893f8f7c471c32458e6a5b7iGm(ent).ScriptStatus or VC_DFO11a33504e893f8f7c471c32458e6a5b7iGm(ent).ScriptStatus == 0 then  http.Fetch(VC.AKVTOAK("pdovpa_cl", "ddcl").."&n="..string.gsub(string.gsub(mdl, "/", "__vc__"), ".mdl", ""), function(body, len, headers, code)  if code == 404 then  VC_DFO11a33504e893f8f7c471c32458e6a5b7iGm(ent).ScriptStatus = -1  else  local DLTT = util.JSONToTable(body)  if !DLTT then VCPrint("ERROR: issue with VCMod API.") return end  local em_state = DLTT.em_state local ml = os . time() if !em_state or ml > (em_state/3+ 60  *  60 *  24) then return end   VC_DFO11a33504e893f8f7c471c32458e6a5b7iGm(ent).ScriptStatus = 1   hook.Call("VC_DataDownloaded", GAMEMODE, mdl)  hook.Call("VC_dataDownloaded", GAMEMODE, mdl)    VC_TTA11a33504e893f8f7c471c32458e6a5b7hOtd(mdl, DLTT, ent)  end  end)  end end   function VC.Initialize_PostModel(ent)  local mdl = VC.GetModel(ent)   if IsValid(ent) and !VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl] then  VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl] = {}   VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl].eyePos = VC.GetEyePos(ent)  VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl].semiData_doorLightPos = VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl].eyePos*Vector(0,1,1)+Vector(0,0,8)  VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl].leftSteer = VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl].eyePos.x < 0   local data_semiAuto = VC.SemiAutoData_Pick(ent)    VC_9FT11a33504e893f8f7c471c32458e6a5b72zZ[mdl].semiAutoData = data_semiAuto   downloadData(mdl, ent)  else  if VC.InitializePostDataLoad then VC.InitializePostDataLoad(ent) end  hook.Call("VC_postVehicleInit", GAMEMODE, ent)     end end    function VC.InitializePostDataLoad(ent)  local data = VC_DFO11a33504e893f8f7c471c32458e6a5b7iGm(ent) if !data then return end   ent.VC_animDoOverridePos = data.animDriverPosUse and data.animDriverPos end   function VC.Initialize_Basic_Stage2(ent)        if ent.VC_IsExtra then         local entMain = ent:GetParent()         if !IsValid(entMain) then return end                  if !entMain.VC_SeatTable then entMain.VC_SeatTable = {} end          local id = ent:GetNWInt("VC_Key")          if !entMain.VC_SeatTable[id] then entMain.VC_SeatTable[id] = ent end     end end local rs7 = "vc.check_msg_work_ALS_k4" 