VE Lua Documentation

Press F to search!

init

Definition


-- @/lua/vehicle/sounds.lua:1045

local function init()
  if not v.data.nodes then
    return
  end
  obj:deleteSFXSources()
  local cameraNode = 0
  if v.data.camerasInternal ~= nil then
    local _, c = next(v.data.camerasInternal)
    if c ~= nil then
      cameraNode = c.camNodeID
    end
  end

  --replace constants
  local maxrpm = 1
  M.refNode = 0
  M.engineNode = 0
  if v.data.refNodes and v.data.refNodes[0] then
    M.refNode = v.data.refNodes[0].ref or v.data.refNodes[0].leftCorner
    M.engineNode = v.data.refNodes[0].ref or v.data.refNodes[0].leftCorner
  end

  if #powertrain.engineData > 0 then
    for _, v in pairs(powertrain.engineData) do
      maxrpm = max(maxrpm, v.maxSoundRPM or 1)
    end

    -- Try to get a node on the engine. There is currently a libbeamng bug that
    -- causes sound sources at the camera to cause problems for multichannel
    -- setups, as small variations in position can cause sound to dither back
    -- and forth between the channels when in cockpit view.
    if powertrain.engineData[1].torqueReactionNodes then
      local t = powertrain.engineData[1].torqueReactionNodes
      if #t > 0 and v.data.nodes[t[1]] ~= nil then
        M.engineNode = t[1]
      end
    end
  end

  if not v.data.vehicleDirectory then
    return
  end

  local loadedFolder = v.data.vehicleDirectory .. "sounds/"

  --load sbeam files
  local sounds = loadSoundFiles(loadedFolder)
  M.usesOldCustomSounds = not tableIsEmpty(sounds)

  --no sbeam files on current vehicle, load defaults
  if not sounds then
    loadedFolder = "vehicles/common/sounds/"
    sounds = loadSoundFiles(loadedFolder)
  end

  if sounds then
    --store in module
    soundBank = sounds
    if usingNewEngineSounds then
      soundBank.sounds = {}
    end

    -- build node name index
    local nodeNameIdx = {}
    for _, node in pairs(v.data.nodes) do
      if node.name then
        nodeNameIdx[node.name] = node.cid
      end
    end

    --check and postprocess them
    for skey, s in pairs(soundBank.sounds) do
      -- set default values
      if s.volumeModifiers == nil then
        s.volumeModifiers = {}
      end
      if s.pitchModifiers == nil then
        s.pitchModifiers = {}
      end
      if s.profile == nil then
        s.profile = "AudioDefaultLoop3D"
      end

      -- create the sfxprofiles dynamically when filename and profile are specified
      if not s.sfxProfile and s.filename and s.profile then
        -- figure out if the filename was specified relative to the current folder
        s.filename = checkLocalFile(loadedFolder, s.filename)

        -- create the SFXProfile on the T3D - at least the supposed SFXprofilename
        s.sfxProfile = getNextProfile()
        s.waitforloading = 1 -- wait one frame before trying to load the sfxprofile
        s.autocreatedSFXProfile = true
      end

      --try to find our node, default to camera
      s.node = nodeNameIdx[s.nodeName]
      if s.nodeName == "CAMERA" then
        s.node = cameraNode
      end
      if s.nodeName == "ENGINE" then
        s.node = M.engineNode
      end
      s.node = s.node or cameraNode -- fall back to camera node

      s.clip = createSoundObj(s.filename, s.profile, s.sfxProfile, s.node)
      --log('D', 'sounds.update', 'createSFXSource('..s.sfxProfile..','..s.node..') = '..tostring(s.clip))
      if not s.clip then
        log("W", "sounds.update", "unable to create sound, removing it: " .. s.sfxProfile)
        soundBank.sounds[skey] = nil
      end
    end

    for _, snd in pairs(soundBank.sounds) do
      for k2, v2 in pairs(snd) do
        if v2 == "MAXRPM" then
          snd[k2] = maxrpm
        end
      end
    end

    --initialize groups
    local soundGroup = v.data.engine and v.data.engine.soundGroup
    for _, vl in pairs(soundBank.sounds) do
      vl.active = (vl.group == "default" or vl.group == soundGroup)
    end

    beamResetTimer = 0

    --initialize per beam suspension sounds
    if v.data.beams then
      for _, bm in pairs(v.data.beams) do
        if bm.soundFile ~= nil then
          local soundTable = {}

          --loop
          local soundProfileType = "AudioDefaultLoop3D"

          --setup our table
          local soundFile = checkLocalFile(v.data.vehicleDirectory, bm.soundFile)
          soundTable.soundType = bm.soundType
          soundTable.sfxProfile = getNextProfile()
          soundTable.clip = createSoundObj(soundFile, soundProfileType, soundTable.sfxProfile, bm.id1)
          if soundTable.clip then
            soundTable.volumeFactor = bm.volumeFactor or 1
            soundTable.pitchFactor = bm.pitchFactor or 0
            soundTable.maxStress = bm.maxStress or 35000
            soundTable.colorFactor = bm.colorFactor or 0.5

            soundTable.beam = bm.cid

            local attackFactor = bm.attackFactor or 10
            local decayFactor = bm.decayFactor or 10

            soundTable.smoothing = newTemporalSmoothingNonLinear(decayFactor, attackFactor) --first value = decay smoothing, second value = attack smoothing. The smaller the number, the more the smoothing

            soundTable.resonance = 0
            soundTable.clip:setVolumePitch(0, 0)
            soundTable.noiseFactor = bm.noiseFactor or 0
            soundTable.noiseTrail = 0

            -- Audio debug - display the current suspension setup from jbeam
            -- print (string.format("Suspension : %s color=%.2f  attack=%.0f  volume=%.2f  decay=%.0f  pitch=%.2f  maxStress=%.0f", bm.soundFile, bm.colorFactor, bm.attackFactor, bm.volumeFactor, bm.decayFactor, bm.pitchFactor, bm.maxStress))
            -- print (string.format("Suspension : %s color=%s  attack=%s  volume=%s  decay=%s  pitch=%s  maxStress=%s", dumps(bm.soundFile), dumps(bm.colorFactor), dumps(bm.attackFactor), dumps(bm.volumeFactor), dumps(bm.decayFactor), dumps(bm.pitchFactor), dumps(bm.maxStress)))

            -- finally, insert it for graphing
            table.insert(beamSounds, soundTable)
          else
            log("E", "sounds.init", "unable to load sound: " .. tostring(soundFile))
          end
        end
      end
    else
      log("E", "sounds.init", "unable to load any sound bank (*.sbeam), that is quite bad :/")
    end
  end

  cabinFilterCoef = 1
  windSoundEventNode = getSoundscapeNode("horn") or M.refNode or 0
  if v.data.sounds then
    --impacts
    impactGenericEvent = v.data.sounds.impactGeneric == nil and impactGenericEvent or v.data.sounds.impactGeneric
    impactMetalEvent = v.data.sounds.impactMetal == nil and impactMetalEvent or v.data.sounds.impactMetal
    impactPlasticEvent = v.data.sounds.impactPlastic == nil and impactPlasticEvent or v.data.sounds.impactPlastic
    impactSoundVolumeCoef = v.data.sounds.impactSoundVolumeCoef == nil and impactSoundVolumeCoef or v.data.sounds.impactSoundVolumeCoef
    --break
    breakGenericEvent = v.data.sounds.breakGeneric == nil and breakGenericEvent or v.data.sounds.breakGeneric
    --aero
    windSoundEvent = v.data.sounds.wind == nil and windSoundEvent or v.data.sounds.wind
    windSoundEventNode = (v.data.sounds.windNode and beamstate.nodeNameMap[v.data.sounds.windNode]) or windSoundEventNode
    --scrapes
    scrapeMap[2] = v.data.sounds.scrapeMetal == nil and scrapeMap[2] or v.data.sounds.scrapeMetal
    scrapeMap[3] = v.data.sounds.scrapePlastic == nil and scrapeMap[3] or v.data.sounds.scrapePlastic

    cabinFilterCoef = v.data.sounds.cabinFilterCoef == nil and 1 or v.data.sounds.cabinFilterCoef
  end

  for matId, event in pairs(scrapeMap) do
    if type(event) == "string" then --this can be nil (if nothing exists for a given material) or a boolean/false (if disabled via jbeam)
      if scrapeSounds[event] == nil then
        scrapeSounds[event] = obj:createSFXSource(event, "AudioDefaultLoop3D", "Scrape", -2)
      end
      scrapeMap[matId] = scrapeSounds[event]
    end
  end

  if wheelsSounds == nil then
    wheelsSounds = {}

    for wi, wd in pairs(wheels.wheels) do
      addWheelSounds(wi, wd)
    end
  end

  local soundscapes = v.data.soundscape
  if soundscapes then
    for name, soundscape in pairs(soundscapes) do
      bdebug.setNodeDebugText("Soundscape", type(soundscape.node) == "number" and soundscape.node or M.refNode, name .. ": " .. soundscape.src)
    end
  end

  M.updateObjType()
end

Callers

@/gameplay/missionTypes/aiRace/editor.lua

function C:init()
  ---- mandatory settings ----
@/lua/vehicle/controller/tech/GPS.lua
-- Initialises this GPS sensor instance.
local function init(data)
    sensorId = data.sensorId
@/lua/ge/extensions/editor/missionEditor/progressSetup.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/states/transitionStack.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/gameplay/traffic/roles/empty.lua

function C:init()
  self.actions = {}
@/lua/vehicle/controller/tirePressureControl.lua

local function init(jbeamData)
end
@/lua/vehicle/input.lua

local function init()
  --inRate (towards the center), outRate (away from the center), autoCenterRate, startingValue
@/lua/vehicle/controller.lua
      c.typeName = fileName
      c.init(data)
      c.manualOrder = data.manualOrder

local function init()
  loadedControllers = {}

        controller.init(data)
        controller.manualOrder = data.manualOrder
      loadedControllers[dummyName] = controller
      controller.init()
      controller.name = dummyName
    if not v.reset then
      v.init(controllerJbeamData[v.name])
    end
@/gameplay/missionTypes/delivery/editor.lua

function C:init()
  self:addString("Intro Message", "introMessage", "", 10000, {isTranslation = true})
@/lua/vehicle/controller/tech/recorders.lua

local function init()
  if not nodeCache then
@/lua/ge/extensions/flowgraph/nodes/scene/getPlayerVehicle.lua

function C:init()
end
@/lua/ge/extensions/gameplay/sites/customFields.lua

function C:init()
  self.names = {}
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/drivingDynamics/supervisors/components/brakeControl.lua

local function init(jbeamData)
  M.isActingAsTC = false
@/gameplay/missionTypes/cannon/customNodes/cannonBallTouchdownNode.lua

function C:init()
@/lua/vehicle/fire.lua

local function init()
  if fireBurnSoundObj then
@/lua/ge/extensions/editor/util/transformUtil.lua
-- initializes stuff for the helper.
function C:init(editName, objectName)
  self.id = getNextUniqueIdentifier()
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/couplings/kingpin.lua

local function init(jbeamData)
  local kingpinNodeName = jbeamData.kingpinNode
@/lua/ge/extensions/editor/rallyEditor/pacenotes.lua

function C:init(rallyEditor)
  self.rallyEditor = rallyEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/environment/planet.lua
C.gConst = 6.6742 * math.pow(10, -11) --(m3,s-2,kg-1)
function C:init()
  --self.data.clearPlanets = true
@/lua/vehicle/backwardsCompatibility.lua

local function init()
  checkOldESC() --convert hardcoded ESC to controller
@/lua/ge/extensions/scenario/finishRaceGoal.lua

local function init(scenario)
  M.instances = {}
@/lua/ge/extensions/flowgraph/nodes/vehicle/getPowertrainData.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/flowgraph/nodes/career/onMissionRunstateChanged.lua

function C:init()
  self.flags = {}
@/lua/ge/ge_utils.lua

  -- GBitmap:init( uint width, uint heigt )
    -- create a RGBA image of widthXheight dimension
    -- create a RGBA image of widthXheight dimension
  bitmap:init(16, 16)
  -- test size
@/lua/ge/extensions/flowgraph/nodes/debug/debugPrism.lua

function C:init()
end
@/gameplay/missionTypes/drift/editor.lua

function C:init()
  driftType = self:addDropdown("Drift mission type", "driftType", {"Gymkhana", "A to B", "A to B with stunt zones"}, "Gymkhana")
@/lua/ge/extensions/gameplay/rally/cutCapture.lua

function C:init(vehicle, missionDir)
  log('I', logTag, 'initializing cutCapture for vehicle='..vehicle:getId())
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/ui/imgui/elemental/imCheckbox.lua

function C:init()
  self.data.startState = false
@/lua/vehicle/protocols/outgauge.lua
local hasShiftLights = false
local function init()
  local shiftLightControllers = controller.getControllersByType("shiftLights")
@/lua/ge/extensions/editor/raceEditor/testing.lua

function C:init(raceEditor)
  self.raceEditor = raceEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/rallyEditor/missionSettings.lua

function C:init(rallyEditor)
  self.rallyEditor = rallyEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/sitesEditor/locations.lua

function C:init(sitesEditor, key)
  self.sitesEditor = sitesEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/util/project.lua

function C:init(mgr)
  self.clearOutPinsOnStart = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/filePath.lua

function C:init(mgr, ...)
  self.path = nil
@/lua/ge/extensions/flowgraph/nodes/scene/spawnPrefab.lua

function C:init(mgr, ...)
  self.objects = {}
@/lua/ge/extensions/flowgraph/nodes/career/onGarageEvent.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/editor/crawlEditor/waypoints.lua

function C:init(crawlEditorParam)
  self.crawlEditor = crawlEditorParam
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/logic/wait.lua

function C:init(mgr, ...)
  self.timer = 0
@/lua/ge/extensions/gameplay/race/pacenote.lua

function C:init(path, name, forceId)
  self.path = path
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/flowgraph/variables.lua
local scale = 1
function C:init()
  self.target = nil
@/lua/ge/extensions/core/cameraModes/predictor.lua

function C:init(dtFuture)
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/util/popActionMap.lua

function C:init(mgr, ...)
  self:_executionStopped()
@/lua/common/utils/httpJsonServer.lua
local bindHost = 'localhost'
httpJsonServer.init(bindHost, port, handleServerRequest)

local function init(_bindhost, _bindport, _callback)
    bindhost = _bindhost
@/lua/vehicle/controller/sound/linearMovement.lua

local function init(jbeamData)
  --used when the sound has a segment sound in addition to the base noise
@/lua/vehicle/controller/drivingDynamics/actuators/activeDiffLock.lua

local function init(jbeamData)
  M.isActing = false
@/lua/ge/extensions/editor/flowgraph/garbageDebug.lua

function C:init()
  editor.registerWindow(self.windowName, im.ImVec2(150,300), nil, false)
@/lua/ge/extensions/editor/missionEditor/prefabs.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/api/valueInspector.lua

function C:init()
  self.inputTextShortStringMaxSize = inputTextShortStringMaxSize
  C.__index = C
  o:init()
  return o
@/lua/ge/extensions/editor/util/vehicleFilterUtil.lua

function C:init(element)
  self.element = element
  C.__index = C
  o:init(element)
  return o
@/lua/ge/extensions/flowgraph/nodes/activity/aggregateAttempt.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/startScreenDial.lua

function C:init()
  self.panel = {
@/lua/vehicle/controller/hydraulics/orbitrolSteering.lua

local function init(jbeamData)
  steeringPID = newPIDParallel(jbeamData.steeringPIDKp or 0.5, jbeamData.steeringPIDKi or 0.3, jbeamData.steeringPIDKd or 0.01, -1, 1, 1000, 1000, -1, 1, 0.002)
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleOOBB.lua

function C:init(mgr, ...)
end
@/lua/ge/extensions/flowgraph/nodes/vehicle/customPartsConfigProvider.lua

function C:init()
  self.models = {}
@/lua/ge/extensions/flowgraph/nodes/ui/vehicleSelector.lua

function C:init()
  self.open = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalPath.lua

function C:init()
end
@/lua/ge/extensions/flowgraph/nodes/ui/missionPopup.lua

function C:init()
  self.open = false
@/lua/ge/extensions/flowgraph/nodes/logic/once.lua

function C:init(mgr, ...)
  self.ready = true
@/lua/ge/extensions/flowgraph/nodes/scene/storeStatics.lua

function C:init(mgr, ...)
  self.objects = {}
@/lua/ge/extensions/flowgraph/nodes/util/pushActionMap.lua

function C:init(mgr, ...)
  self:_executionStopped()
@/lua/ge/extensions/flowgraph/nodes/states/transition.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/stop.lua

function C:init()
  self.complete = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/getCrawlData.lua

function C:init(mgr)
  self.bridge = require('ge/extensions/gameplay/crawl/flowgraphBridge')
@/lua/ge/extensions/flowgraph/nodes/gameplay/crash/onCrashDetected.lua

function C:init()
  self:reset()
@/lua/ge/extensions/flowgraph/nodes/career/getLinearTutorialStep.lua

function C:init()
@/lua/ge/extensions/flowgraph/builder.lua

function C:init()
  self.CurrentNodeId = 0 -- NodeId
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/environment/setFogDensity.lua

function C:init(mgr)
  self.data.restoreTod = true
@/lua/vehicle/controller/powertrainControl/antiLag.lua

local function init(jbeamData)
  local engineName = jbeamData.controlledEngine or "mainEngine"
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/stopCrawl.lua

function C:init(mgr)
  self.bridge = require('ge/extensions/gameplay/crawl/flowgraphBridge')
@/lua/ge/extensions/flowgraph/nodes/vehicle/toShowroom.lua

function C:init() end
@/lua/ge/extensions/flowgraph/nodes/gameplay/countdown.lua

function C:init(mgr, ...)
  self.data.useImgui = false
@/lua/ge/extensions/gameplay/rally/rallyManager.lua

function C:init(missionDir, missionId)
  if gameplay_rally and gameplay_rally.getDebugLogging() then log('D', logTag, '<<<<< RallyManager init >>>>>') end
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/timetrials/onRaceRestarted.lua

function C:init(mgr, ...)
  self.restart = false
@/lua/ge/extensions/scenario/raceGoals.lua
  for _, goal in pairs(goals) do
    goal.init(scenario)
  end
@/lua/ge/extensions/tech/capturePlayer.lua
  local bitmap = GBitmap()
  bitmap:init(size[1], size[2], true)
  bitmap:fromBuffer(data)
@/lua/ge/extensions/flowgraph/nodes/ui/rtMessage.lua

function C:init()
@/lua/ge/extensions/gameplay/markers/zoneMarker.lua

function C:init() end
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/core/cameraModes/pacenoteOrbit.lua

function C:init()
  -- print('pacenoteOrbit cam init')
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/locationByName.lua

function C:init(mgr, ...)
@/lua/vehicle/controller/gauges/customModules/electricMotorData.lua

local function init(jbeamData)
end
@/lua/vehicle/controller/powertrainControl/combustionEngineGovenor.lua

local function init(jbeamData)
  local controlledEngineName = jbeamData.controlledEngineName or "mainEngine"
@/lua/vehicle/controller/braking/adaptiveBrakeLights.lua

local function init(jbeamData)
  electricsName = jbeamData.electricsName or "brakelights"
@/lua/ge/extensions/flowgraph/nodes/scene/idByName.lua

function C:init()
  self.data.name = ""
@/lua/ge/extensions/flowgraph/nodes/types/getVariable.lua
C.hidden = true
function C:init()
  self.varName = nil
@/lua/ge/extensions/editor/rallyEditor/static.lua

function C:init(rallyEditor)
  self.rallyEditor = rallyEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/mission/UpdateDisplayDragRace.lua

function C:init()
  self.pinOut.flow.value = false
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veStaticRenderView.lua
-- Load renderviews data in memory (not actually creating renderviews)
local function init()
  local viewsSerialized = jsonReadFile(settingsPath)
local function onEditorInitialized()
  init()
@/lua/ge/extensions/flowgraph/nodes/gameplay/multiseat.lua

function C:init(mgr, ...)
  self.activated = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/imRaceTimes.lua

function C:init(mgr, ...)
  self.data.detailed = false
@/lua/ge/extensions/flowgraph/nodes/scene/pointOnDecalroad.lua
C.tags = {}
function C:init()
  self.point = vec3(0,0,0)
@/ui/ui-vue/src/services/uiNavFocus.js

function init() {
  if (inited) return
  // init if not done that yet
  if (!inited) init()
  // modify or create
@/gameplay/missionTypes/dragStripRace/editor.lua

function C:init()
@/gameplay/missions/gridmap_v2/delivery/004-obstaclecourse/script.lua
  if o.init then
    o:init(...)
  end
@/lua/ge/extensions/flowgraph/nodes/vehicle/setIgnition.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/ui/imgui/elemental/imSeparator.lua

function C:init()
  self.data.aboveSpacing = 5
@/lua/ge/extensions/editor/raceEditor/pathnodes.lua

function C:init(raceEditor)
  self.raceEditor = raceEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/rallyEditor/pacenotes/pacenoteForm.lua

function C:init(pacenoteToolsWindow)
  self.pacenoteToolsWindow = pacenoteToolsWindow
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/parkingParams.lua

function C:init()
  self.vars = {}
@/lua/ge/extensions/editor/raceEditor/startPositions.lua

function C:init(raceEditor)
  self.raceEditor = raceEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/graph.lua

function C:init(mgr, name, forceId)
  self.mgr = mgr
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/hydraulics/hydraulicsCombustionEngineControl.lua

local function init(jbeamData)
  local mode = jbeamData.mode
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/endScreenTimeSlip.lua

function C:init()
  self.panel = {
@/gameplay/missionTypes/dragStripAPM/editor.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/activity/autoStarGoals.lua

function C:init()
end
@/lua/ge/extensions/gameplay/rally/notebook/missionSettings.lua

function C:init(missionDir)
  self.missionDir = missionDir
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/math/accumulator.lua

function C:init()
  self.data.currentSum = 0
@/lua/ge/extensions/editor/missionEditor/issues.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/scenario/raceMarkers/crawlMarker.lua

function C:init(id)
  self.id = id
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/vehicle/getGearboxMode.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/flowgraph/nodes/activity/starsActive.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/gameplay/drift/stuntZones/nearPole.lua

function C:init(data)
  self.data = data
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/drivingDynamics/actuators/adaptiveTorsionBars.lua

local function init(jbeamData)
  local torsionBarNames = jbeamData.torsionBarNames or {}
@/lua/ge/extensions/editor/raceEditor/trackLayout.lua

function C:init(raceEditor)
  self.raceEditor = raceEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/getCrawlResults.lua

function C:init(mgr)
  self.bridge = require('ge/extensions/gameplay/crawl/flowgraphBridge')
@/lua/vehicle/controller/drivingDynamics/actuators/electronicSplitShaftLock.lua

local function init(jbeamData)
  M.isActing = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficSpawnGroup.lua

function C:init()
  self:resetState()
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/raceHighscoresComplete.lua

function C:init()
  self.markers = nil
@/lua/ge/extensions/ui/ambientSound.lua
]]
local function init(json)
  if not FS:fileExists(json) then
@/lua/ge/extensions/editor/crawlEditor/startingPositions.lua

function C:init()
  self.startingPosition = nil
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/rally/tools/rallyToolbox.lua

function C:init()
  -- self.drivelineMode = RallyEnums.drivelineMode.route
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/ui/setUILayout.lua

function C:init()
  self.useFreeroamMenuWhenUnrestricted = true
@/lua/vehicle/controller/drivingDynamics/supervisors/components/diffControl.lua

local function init(jbeamData)
  M.isActingAsTC = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/raceEndScreen.lua

function C:init()
  self.open = false
@/lua/vehicle/controller/esc.lua

local function init(jbeamData)
  configData = jbeamData
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleWheels.lua

function C:init(mgr, ...)
end
@/lua/common/utils/pixellib.lua

function LuaPixelBuffer:init(width, height)
  self.width = math.floor(width)
  local bitmap = GBitmap()
  bitmap:init(width, height, true)
  local pb = create()
  pb:init(250, 250)
  print(tostring(pb))
@/lua/ge/extensions/editor/flowgraph/examples.lua

function C:init()
  editor.registerWindow(self.windowName, im.ImVec2(150,300), nil, false)
@/gameplay/missionTypes/simpleLapconfigScenario/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/events/onMissionEnded.lua

function C:init(mgr, ...)
end
@/gameplay/missionTypes/rallyRoadSection/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/vehicle/setLicensePlate.lua

function C:init(mgr, ...)
  self.ready = true
@/lua/ge/extensions/flowgraph/nodes/vehicle/touchingStatic.lua

function C:init()
  self:reset()
@/lua/ge/extensions/gameplay/util/sortedList.lua
-- This creates objects.
function C:init(name, parent, objectConstructor)
  self.objectConstructor = objectConstructor
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/tech/powertrainSensor.lua
-- Initialises this powertrain sensor instance.
local function init(data)
  sensorId = data.sensorId
@/lua/ge/extensions/editor/util/editorElementHelper.lua
  if o.init then
    o:init()
  end
@/lua/vehicle/controller/vehicleController/shiftLogic/sequentialGearbox.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/getDynamicObjects.lua

function C:init(mgr)
  self.bridge = require('ge/extensions/gameplay/crawl/flowgraphBridge')
@/lua/ge/extensions/gameplay/garageMode.lua
    camData.orbit:setSkipFovModifier(false)
    camData.orbit:init()
  end
@/lua/ge/extensions/core/cameraModes/observer.lua

function C:init()
  self.isGlobal = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/controller/driveModes.lua

local function init(jbeamData)
  uiName = jbeamData.uiName
@/gameplay/missionTypes/dragStripAPM/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/gameplay/rally/transcripts/vehicleSnapshot.lua

function C:init(path, name, forceId)
  self.path = path
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/scenario/positionGoal.lua

local function init(scenario)
  M.instances = {}
@/gameplay/missionTypes/aiRace/constructor.lua

function C:init()
  self.supportsReplay = true
@/lua/ge/extensions/editor/flowgraph/main.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/simpleFollowDecalroad.lua

function C:init()
  self.path = nil
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/locationsByTag.lua

function C:init(mgr, ...)
  self.count = 1
@/lua/ge/extensions/flowgraph/nodes/macro/integrated.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/sequenceByName.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/scenario/raceMarkers/noneMarker.lua
-- called when this object is created. initialize variables here (but dont spawn objects)
function C:init(id)
end
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/drift/stuntZones/driftThrough.lua

function C:init(data)
  self.data = data
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/util/ghost.lua

function C:init()
  self.formerNodeType = "NOT GHOST"
@/lua/ge/extensions/flowgraph/nodes/vehicle/onVehicleSpawned.lua

function C:init(mgr, ...)
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/loop/rallyClock.lua

function C:init(mgr, ...)
  -- Cache for scheduled event time lookup
@/lua/ge/extensions/gameplay/markers/crawlMarker.lua
local screenObjTemp = nil
function C:init()
  self.visible = true
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/gen/exp_solidflex.lua
--        W.test()
        W.init()
    else
    else
        W.init()
    end
        aa = {0}
        W.init()
    elseif k == 'visc_in' then
    if true then
        W.init()
--[[
@/lua/vehicle/energyStorage.lua

local function init()
  M.updateGFX = nop
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/parkingTrackVehicle.lua

function C:init()
  self:reset()
@/gameplay/missionTypes/precisionParking/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/editor/rallyEditor/drivelineTab.lua

function C:init(rallyEditor)
  self.path = nil
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/recovery.lua

local function init(path)
  M.updateGFX = updateGFXRecord
@/lua/ge/extensions/gameplay/rally/tools/loopToolbox.lua

function C:init()
  self.missionDropdownItems = {""}
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/tech/getUltrasonicReadings.lua

function C:init()
@/lua/ge/extensions/editor/rallyEditor/recceTab.lua

function C:init(rallyEditor)
  self.path = nil
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/vehicle/getElectricsValue.lua

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/editor/missionEditor/startTrigger.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/types/transform.lua

function C:init()
  local cameraPosition = core_camera.getPosition()
@/lua/ge/extensions/gameplay/rally/notebook/path.lua

function C:init(name)
  self._uid = 0
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/vehicle/flipUpright.lua

function C:init()
  --self.data.useWheelCenter = false
@/gameplay/missionTypes/knockAway/editor.lua

function C:init()
@/lua/vehicle/controller/controllerTemplate.lua

local function init(jbeamData)
end
@/lua/vehicle/controller/gauges/customModules/dynamicRedlineData.lua

local function init(jbeamData)
  minOutput = jbeamData.minOutput or 0
@/lua/vehicle/controller/braking/transbrake.lua

local function init(jbeamData)
  local gearboxName = jbeamData.gearboxName or "gearbox"
@/lua/ge/extensions/core/cameraModes/smooth.lua

function C:init(spring, damp, pos)
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/editor/util/plotHelperUtil.lua
-- params.catmullromCurveLines = x or nil (x > 200 preferably)
function C:init(params)
  params = params or {
  idCounter = idCounter + 1
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/vehicleStoppedNearPlane.lua

function C:init(mgr, ...)
  self.timer = 0
@/lua/ge/extensions/util/terrainGenerator.lua

function C:init(data)
  data = data or {}
      local b = GBitmap()
      b:init(self.terrainWidth, self.terrainWidth)
      b:fillColor(ColorI(n, n, n, 255))
  C.__index = C
  o:init(data)
  return o
@/lua/vehicle/controller/gauges/customModules/tireData.lua

local function init(jbeamData)
end
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veAdjustableTechCarTuner.lua

local function init()
  local vehData = core_vehicle_manager.getPlayerVehicleData()
    if not initFlag then
      init()
      initFlag = true
@/lua/ge/extensions/flowgraph/nodes/vehicle/fire/fire.lua

function C:init()
  self.functions = {
@/gameplay/missionTypes/aiRace/customNodes/activateRaceNode.lua

function C:init(mgr, ...)
  self.started = false
@/lua/vehicle/controller/drivingDynamics/CMU.lua

local function init(jbeamData)
  isUDPConnected = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/fileSites.lua

function C:init(mgr, ...)
  self.sites = nil
@/lua/ge/extensions/flowgraph/nodes/util/loadLevel.lua

function C:init()
  self.state = 1
@/lua/ge/extensions/flowgraph/nodes/util/loadProject.lua

function C:init(mgr, ...)
  self.data.destroyTargetOnStop = true
@/ui/ui-vue/src/services/settings.js
  constructor(eventBus = undefined, lua = undefined) {
    if (eventBus && lua) this.init(eventBus, lua)
  }

  init(eventBus = undefined, lua = undefined) {
    if (this.inited || this.loaded) return
export function useSettings() {
  settings.init()
  return settings
export async function useSettingsAsync() {
  settings.init()
  await settings.waitForData()
@/lua/ge/extensions/flowgraph/nodes/career/onVehicleShoppingEvent.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/flowgraph/nodes/vehicle/special/customVlua_string.lua

function C:init()
  self.data.func = self.pinIn.customLUAString.value
@/lua/ge/extensions/flowgraph/nodes/types/bool.lua

function C:init()
  self.data.value = true
@/lua/ge/extensions/flowgraph/nodes/util/file/saveData.lua

function C:init(mgr)
  self.savePins = true
@/gameplay/missionTypes/targetjump/editor.lua

function C:init()
@/gameplay/missionTypes/evade/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/vehicle/hydros.lua

local function init()
  if v.data.input and v.data.input.FFBcoef ~= nil then
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/parkingspotByName.lua

function C:init(mgr, ...)
@/lua/ge/extensions/flowgraph/modules/driftModule.lua

function C:init()
  self:resetModule()
@/lua/ge/extensions/editor/tech/roadArchitect/terraform.lua
  local bmp = GBitmap()
  bmp:init(xSize, ySize)
  bmp:allocateBitmap(xSize, ySize, false, "GFXFormatR16")
@/lua/ge/extensions/editor/flowgraph/stateView.lua

function C:init()
  self.filter = im.ImGuiTextFilterPtr()
@/lua/vehicle/controller/etkGauges.lua

local function init(jbeamData)
  log("E", "etkGauges", "This controller is deprecated and shall not be used. It might be removed without further notice in the future! Please switch to the 'genericGauges' controller instead.")
@/lua/ge/extensions/flowgraph/nodes/scene/camera/cameraPath.lua

function C:init()
end
@/gameplay/missions/italy/flowgraph/001-Gravity/constructor.lua

function C:init()
  self.defaultAggregateValues = {
return function()
  C:init()
  return C
@/lua/ge/extensions/flowgraph/nodes/math/vector/merge.lua

function C:init()
end
@/lua/ge/extensions/flowgraph/nodes/ui/multiDescription.lua

function C:init()
  self.count = 1
@/lua/ge/extensions/flowgraph/nodes/util/file/loadData.lua

function C:init(mgr)
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/ui/fadeToBlack.lua

function C:init()
  self:setDurationState('inactive')
@/lua/ge/extensions/flowgraph/nodes/logic/compare.lua

function C:init()
  local mySortFunct = function (a,b)
@/lua/ge/extensions/scenario/raceMarkers/singleHologramMarker.lua

function C:init(id)
  self.id = id
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/mission/selectGarage2GarageVehicle.lua

function C:init()
  self.selectedModel = nil
@/lua/ge/extensions/flowgraph/nodes/ui/selectButtons.lua

function C:init()
  self.open = false
@/lua/ge/extensions/flowgraph/nodes/career/garageComputerUtil.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/flowgraph/nodes/career/onRefueling.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/gameplay/rally/notebook/pacenoteWaypoint.lua

function C:init(pacenote, name, pos, forceId)
  self.pacenote = pacenote
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/gauges/customModules/environmentData.lua

local function init(jbeamData)
end
@/lua/ge/extensions/gameplay/race/path.lua
local prefabFields = {"prefabs","forwardPrefabs","reversePrefabs"}
function C:init(name)
  self._uid = 0
  local path = self
  path:init("New Race")
  local nodeToId = {}
  local path = self
  path:init("New Race")
  local nodeToId = {}
  local path = self
  path:init("New Race")
  path.hideMission = trackInfo.hideMission or false
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/dragRace/generateDragOpponents.lua

function C:init()
  self.selectedOpponents = {}
@/lua/ge/extensions/flowgraph/nodes/timetrials/onRaceStart.lua

function C:init(mgr, ...)
  self.started = false
@/ui/ui-vue/src/modules/liveryEditor/stores/decalSelectorStore.js

  async function init() {
    categories.value = await EDITOR_RESOURCES_LUA.getTextureCategories()
@/lua/vehicle/powertrain/combustionEngineThermals.lua

local function init(engine, engineJbeamData)
  parentEngine = engine
@/lua/ge/extensions/flowgraph/nodes/recording/recordReplay.lua

function C:init()
  self.state = "none"
@/lua/ge/extensions/core/cameraModes/external.lua

function C:init()
  self.disabledByDefault = true
  self.noise = noise()
  self.noise:init(0.14)
  self.smooth = smooth()
  self.smooth = smooth()
  self.smooth:init(20, 2.0)
  self.handheld = handheld()
    if self.isFanMode then
      self.autozoom:init(newTemporalSmoothing(15, 15))
      self.autozoom.steps = { {  0, z*70}, {1.5, z*60}, {  3, z*40}, {  6, z*30}, { 10, z*25}, { 40, z*15}, { 90, z*15}, {150, z*15} }
    else
      self.autozoom:init(newTemporalSpring(15, 10))
      self.autozoom.steps = { {  0, z*70}, {1.5, z*60}, {  3, z*60}, {  8, z*60}, { 20, z*40}, { 50, z*30}, {125, z* 20}, {200, z* 15} }
    if carStopped then
      self.handheld:init(20, 5, 2)
      self.noise:init(0.02)
      self.handheld:init(20, 5, 2)
      self.noise:init(0.02)
    else
    else
      self.handheld:init(40, 9, dzRandom(0.25, 0.7))
      self.noise:init(0.04)
      self.handheld:init(40, 9, dzRandom(0.25, 0.7))
      self.noise:init(0.04)
    end
  else
    self.handheld:init(80, 15, 0.05)
    self.predictor.future = dzRandom(0.05,0.35)
  end
  self.smooth:init(nil, nil, self.camPos)
  self:applyOffset(nx, ny, nz, findRandomAttachedNodePosition(veh), openxrSessionRunning) -- distance to current vehicle center
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/gameplay/traffic/vehicle.lua

function C:init(id, role)
  id = id or 0
  C.__index = C
  o:init(o.id)
  return o.model and o -- returns nil if invalid object
@/lua/ge/extensions/flowgraph/nodes/util/time.lua

function C:init(mgr, ...)
end
@/lua/ge/extensions/editor/flowgraph/execution.lua

function C:init()
  self.contextMenuElement = nil
@/lua/ge/extensions/core/cameraModes/relative.lua

function C:init()
  self.resetCameraOnVehicleReset = false
  self.rot = slot.rot
  self.manualzoom:init(slot.fov)
  return true
function C:setFOV(fov)
  self.manualzoom:init(fov)
end
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/controller/playerController.lua

local function init(jbeamData)
  isCrouching = false
@/lua/ge/extensions/flowgraph/modules/aiRecordingModule.lua

function C:init()
  -- Initialize AI recording state
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/startCrawl.lua

function C:init(mgr)
  self.bridge = require('ge/extensions/gameplay/crawl/flowgraphBridge')
@/lua/ge/extensions/flowgraph/nodes/gameplay/blacklistWalking.lua
C.dependencies = {'gameplay_walk'}
function C:init(mgr, ...)
end
@/lua/ge/extensions/flowgraph/nodes/ui/monologue.lua

function C:init()
  self.count = 1
@/lua/ge/extensions/gameplay/rally/transcripts/entry.lua

function C:init(path, name, forceId)
  self.path = path
  C.__index = C
  o:init(...)
  return o
@/gameplay/missionTypes/timeTrial/constructor.lua

function C:init()
  self.supportsReplay = true
@/lua/ge/extensions/core/camera.lua
      cam:update(camData)
      if not validateData(camData) and cam.init then cam:init() end -- if present, clean up NaN/infs in camera state, by re-initting it
    else
@/lua/ge/extensions/flowgraph/nodes/scene/keepPrefab.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalLine.lua

function C:init()
  self.data.snapToTerrain = false
@/lua/ge/extensions/flowgraph/nodes/activity/getProgress.lua
C.allowCustomOutPins = true
function C:init()
  self.savePins = true
@/lua/ge/extensions/editor/missionEditor/additionalAttributes.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/scene/particleEmitter.lua

function C:init(mgr, ...)
  self.position = {}
@/lua/ge/extensions/flowgraph/nodes/environment/setTimeOfDay.lua

function C:init(mgr)
  self.data.restoreTod = true
@/lua/ge/extensions/flowgraph/nodes/career/setFuelLevel.lua

function C:init()
  self:onNodeReset()
@/gameplay/missionTypes/crawl/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/input/blacklistAction.lua

function C:init()
  self.list = {}
@/lua/ge/extensions/flowgraph/nodes/string/match.lua

function C:init()
  self.data.pattern = "%d"
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/setupParkedCars.lua

function C:init()
  self:onNodeReset()
@/lua/vehicle/controller/4wd.lua

local function init(jbeamData)
  shaft = powertrain.getDevice(jbeamData.shaftName)
@/lua/ge/extensions/flowgraph/nodes/states/stateExit.lua
-- This gets called when the node has been created for the first time. Init field here
function C:init(mgr)
  self.autoStart = false
@/lua/vehicle/controller/braking/hydraulicPumpBrake.lua

local function init(jbeamData)
  local relevantEngineName = jbeamData.relevantEngineName or "mainEngine"
@/lua/ge/extensions/gameplay/traffic/roles/standard.lua

function C:init()
  self.personalityModifiers = {}
@/lua/ge/extensions/flowgraph/nodes/macro/io.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficParams.lua

function C:init()
  self.vars = {}
@/gameplay/missions/gridmap_v2/collection/002-blenderbowl/script.lua
  if o.init then
    o:init(...)
  end
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/scriptAI/playRecording.lua

function C:init()
  self.recording = nil
@/lua/ge/extensions/flowgraph/nodes/vehicle/keep.lua

function C:init()
@/lua/vehicle/powertrain/combustionEngine.lua
  device.thermals = rerequire(thermalsFileName)
  device.thermals.init(device, jbeamData)
    device.turbocharger = rerequire(turbochargerFileName)
    device.turbocharger.init(device, v.data[jbeamData.turbocharger])
  else
    device.supercharger = rerequire(superchargerFileName)
    device.supercharger.init(device, v.data[jbeamData.supercharger])
  else
    device.nitrousOxideInjection = rerequire(nitrousOxideFileName)
    device.nitrousOxideInjection.init(device, v.data[jbeamData.nitrousOxideInjection])
  else
@/lua/vehicle/extensions/api.lua
        log('E', "default.init", "INIT WEBSERVER TO PORT "..port)
        httpJsonServer.init(bindHost, port, handleServerRequest)
        inited = true
@/lua/vehicle/controller/wendoverGauges.lua

local function init(jbeamData)
  log("E", "wendoverGauges", "This controller is deprecated and shall not be used. It might be removed without further notice in the future! Please switch to the 'genericGauges' controller instead.")
@/lua/ge/extensions/gameplay/missions/missionTypes/baseMission.lua
-- This is called when a mission of this type is being created. Load files, initialize variables etc
function C:init()
  self.missionTypeLabel = "bigMap.missionLabels."..self.missionType
  C.__index = C
  o:init()
  for k, v in pairs(derivedClass) do
  end
  local init = o:init()
  return o, init
@/lua/ge/extensions/flowgraph/nodes/vehicle/onVehicleDestroyed.lua

function C:init(mgr, ...)
@/ui/ui-vue/src/services/dirty.js

  function init(val) {
    const type = typeof val

  init(valueRef.value)
    const unwatch = watch(valueRef, newVal => {
      init(newVal)
      if (hasInitValue) unwatch()
@/lua/ge/extensions/gameplay/markers/invisibleTrigger.lua
-- called when this object is created. initialize variables here (but dont spawn objects)
function C:init() end
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/api/guiInstancer.lua

function C:init()
  self.instances = {} -- the instances for this gui window
  C.__index = C
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/types/string.lua

function C:init()
  self.string = "Hello World"
@/lua/ge/extensions/flowgraph/modules/foreachModule.lua

function C:init()
  self:clear()
@/lua/ge/extensions/flowgraph/nodes/career/onTestDriveChanged.lua

function C:init()
  self.flags = {}
@/lua/ge/extensions/flowgraph/modules/vehicleModule.lua
C.hooks = {'onCouplerAttached', 'onCouplerDetached','onBusUpdate', 'onVehicleResetted'}
function C:init()
  self.vehicles = {}
@/lua/ge/extensions/gameplay/sites/location.lua

function C:init(sites, name, forceId)
  self.sites = sites
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/drift/stuntZones/hitPole.lua

function C:init(data)
  self.data = data
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/route/route.lua

function C:init()
  self.path = {}
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/environment/directionalGravity.lua
C.gConst = 6.6742 * math.pow(10, -11) --(m3,s-2,kg-1)
function C:init()
  --self.data.clearPlanets = true
@/lua/ge/extensions/core/cameraModes/chase.lua

function C:init()
  self.disabledByDefault = true
  self.collision = collision()
  self.collision:init()
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/controller/axleLift.lua

local function init(jbeamData)
  velocityThresholdDisable = jbeamData.velocityThresholdDisable or 14
@/lua/vehicle/controller/propAnimation/dualAxisLever.lua

local function init(jbeamData)
  targetModeQueue = dequeue.new()
@/lua/ge/extensions/editor/api/preferencesRegistry.lua

function C:init()
  self:clear()
  C.__index = C
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/instanceByName.lua

function C:init()
  self:onNodeReset()
@/lua/vehicle/controller/powertrainControl/activeCenterDiff.lua

local function init(jbeamData)
  biasOversteerVsTraction = jbeamData.biasOversteerVsTraction or 0.5
@/lua/vehicle/controller/vehicleController/vehicleController.lua
  if controlLogicModule then
    controlLogicModule.init(jbeamData, sharedFunctions)
    controlLogicModule.gearboxHandling = gearboxHandling

local function init(jbeamData)
  M.throttle = 0

  controlLogicModule.init(jbeamData, sharedFunctions)
  controlLogicModule.gearboxHandling = gearboxHandling
  --drivingStrategy.core = require(drivingStrategyCoreModulePath)
  --drivingStrategy.core.init(M)
  --  drivingStrategy[v] = require(drivingStrategyModuleDirectory .. v)
  --  drivingStrategy[v].init(M)
  --end
@/lua/ge/extensions/gameplay/drift/general.lua

local function init()
  setContext("inFreeroam")
  if not firstUpdateFlag then
    init()
    firstUpdateFlag = true
@/ui/lib/int/utilities.js
          // otherwise we would never be able to apply new data that was available only after compilation
          function init () {
            if (scope.visibleItems.length === 0) {
            scope.allData = val || []
            init()
          })
          window.onresize = function () {
            init()
          }
@/lua/vehicle/controller/propAnimation/hPattern.lua

local function init(jbeamData)
  local gearCoordinateTable = tableFromHeaderTable(jbeamData.gearCoordinates or {})
@/lua/ge/extensions/flowgraph/nodes/logic/and.lua

function C:init()
  self.count = 2
@/lua/vehicle/controller/propAnimation/sequentialLever.lua

local function init(jbeamData)
  electricsNameYAxis = jbeamData.electricsNameYAxis or "sequentialLeverY"
@/lua/ge/extensions/flowgraph/nodes/ui/updatedUI/endScreenResults.lua

function C:init()
end
@/lua/vehicle/controller/tech/roadsSensor.lua
-- Initialises this roads sensor instance.
local function init(data)
  sensorId = data.sensorId
@/lua/ge/extensions/editor/missionEditor/general.lua
local noTranslation = "No Translation found!"
function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/core/vehicles.lua
      veh:createUITexture(textureTagPrefix, designData.data.generator, designData.data.size.x, designData.data.size.y, UI_TEXTURE_USAGE_AUTOMATIC, 1) --UI_TEXTURE_USAGE_MANUAL
      veh:queueJSUITexture(textureTagPrefix, 'init("diffuse","' .. txt .. '", '.. jsonEncode(designData) .. ');')
      veh:createUITexture(textureTagPrefix.."-normal", designData.data.generator, designData.data.size.x, designData.data.size.y, UI_TEXTURE_USAGE_AUTOMATIC, 1)
      veh:queueJSUITexture(textureTagPrefix.."-normal", 'init("bump","' .. txt .. '", '.. jsonEncode(designData) .. ');')
      veh:createUITexture(textureTagPrefix.."-specular", designData.data.generator, designData.data.size.x, designData.data.size.y, UI_TEXTURE_USAGE_AUTOMATIC, 1)
      veh:queueJSUITexture(textureTagPrefix.."-specular", 'init("specular","' .. txt .. '", '.. jsonEncode(designData) .. ');')
@/lua/ge/extensions/flowgraph/nodes/events/onBeamNGTrigger.lua

function C:init(mgr, ...)
  self.data.filterName = ""
@/lua/ge/extensions/flowgraph/nodes/string/subString.lua

function C:init()
  self.data.from = 0
@/gameplay/missionTypes/longjump/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/gameplay/rally/recceSettings.lua

function C:init()
  self.fname = rallyUtil.rallySettingsRoot..'/recce.json'
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/manager.lua

function C:init(parent)
  self.graphs = {}
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/vehicleController/shiftLogic/dctGearbox.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/ge/extensions/scenario/nomoveGoal.lua

local function init(scenario)
  M.instances = {}
@/lua/ge/extensions/flowgraph/nodes/career/customTowAction.lua

function C:init()
  self.flags = {}
@/lua/vehicle/controller/tech/MQTToutput.lua

local function init(jbeamData)
  for wheelId, wheel in pairs(wheels.wheels) do
@/lua/ge/extensions/core/cameraModes/bigMap.lua

function C:init()
  self.fovMin = 25 -- This will be overwritten in bigMapMode.lua based on map size
  self.manualzoom = manualzoom()
  self.manualzoom:init(self.fovMax, self.fovMin, self.fovMax)
  self:reset()
function C:setLevelProperties()
  self:init()
end
  self.firstUpdate = true
  self.manualzoom:init(self.fovMax, self.fovMin, self.fovMax)
end
function C:onDeserialized()
  self:init()
  if self.mapBoundaries then
  setmetatable(o, C)
  o:init()
  return o
@/gameplay/missionTypes/garageToGarage/editor.lua

function C:init()
@/lua/ge/extensions/gameplay/rally/loop/rallyEventLog.lua

function C:init()
  -- Array of all logged items, ordered by timestamp
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/freeroam/dragRace.lua

local function init()
  started = false
    displayOverview(true, true)
    init()
  end
    if data.event == "enter" then
      init()
      opponentVehicle:queueLuaCommand('ai.setSpeed(5)')
local function selectOpponent(selection)
  init()
  resetDisplays()
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/scriptAI/followPath.lua

function C:init()
  self.started = false
@/lua/ge/extensions/core/cameraModes/orbit.lua

function C:init()
  self.target = false
  self.collision = collision()
  self.collision:init()
    self.cameraResetted = 3
    self.collision:init()
  end
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/controller/drivingDynamics/supervisors/yawControl.lua

local function init(jbeamData)
  controlParameters = {isEnabled = true}
@/lua/ge/extensions/flowgraph/nodes/audio/fadeIn.lua

function C:init()
  self.timer = 0
@/gameplay/missionTypes/collection/customNodes/collectionNode.lua

function C:init(mgr)
  self.currentRecovery = nil
@/lua/ge/extensions/gameplay/rally/loop/rallyLoopManager.lua

function C:init(missionId, missionDir)
  if gameplay_rallyLoop and gameplay_rallyLoop.getDebugLogging() then log('D', logTag, '<<<<< RallyLoopManager init >>>>>') end
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/environment/setScatterSky.lua

function C:init(mgr)
  self.data.restoreScatterSky = true
@/lua/ge/extensions/editor/dynamicDecals/textures.lua

-- reference to the editor tool, set in init()
local tool = nil
@/ui/lib/ext/angular/angular-animate.js

    return function init(element, initialOptions) {
      // all of the animation functions should create
@/lua/ge/extensions/flowgraph/nodes/vehicle/beamstate/couple.lua

function C:init(mgr, ...)
  self.data.mode = "activate"
@/lua/ge/extensions/gameplay/route/raceRoute.lua

function C:init(removeFirst, useMapPathfinding, closeDistSquared, logTag)
  logTag = logTag or ''
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/core/cameraModes/onboard.lua

function C:init()
  self.manualzoom = manualzoom()
  self.manualzoom = manualzoom()
  self.manualzoom:init(self.fov)
  self:onVehicleCameraConfigChanged()
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalCircle.lua

function C:init()
  self.data.snapToTerrain = true
@/lua/ge/extensions/flowgraph/nodes/thread/loadProject.lua

function C:init(mgr, ...)
  self.targetId = nil
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/getAIMode.lua

function C:init()
@/gameplay/missionTypes/evade/editor.lua

function C:init()
  ---- main settings ----
@/lua/ge/extensions/flowgraph/nodes/logic/booleanExpression.lua

function C:init()
  self.data.safeMode = true
@/lua/ge/extensions/gameplay/markers/bigmapMarker.lua
-- called when this object is created. initialize variables here (but dont spawn objects)
function C:init()
  self.id = idCounter
    C.__index = C
    o:init(...)
    return o
@/lua/ge/extensions/editor/missionEditor/dev.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/events/controlsAction.lua

function C:init(mgr, ...)
  self.reset = false
@/lua/ge/extensions/flowgraph/modules/timerModule.lua

function C:init()
  self.variables = require('/lua/ge/extensions/flowgraph/variableStorage')(self.mgr)
@/lua/ge/extensions/scenario/waypointAction.lua

local function init(scenario)
  M.instances = {}
@/lua/ge/extensions/core/cameraModes/shake.lua

function C:init()
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/logic/switchcase.lua

function C:init()
  self.count = 1
@/lua/ge/extensions/core/cameraModes/driver.lua

function C:init()
  self.saveTimeout = nil
  self.lookAheadSmoothness = settings.getValue("cameraDriverLookAheadSmoothness") / 100
  self.manualzoom:init(settings.getValue('cameraDriverFov'), nil, nil, "ui.camera.fovDriver")
  self.openXRsnapTurnDriver = settings.getValue('openXRsnapTurnDriver')
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/editor/crawlEditor/paths.lua

function C:init(crawlEditorParam)
  self.crawlEditor = crawlEditorParam
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/vehiclePool/createPool.lua

function C:init()
  self:onNodeReset()
@/lua/vehicle/controller/drivingDynamics/actuators/activeCenterDiffLock.lua

local function init(jbeamData)
  M.isActing = false
@/lua/ge/extensions/gameplay/rally/loop/roadSectionPenaltyKeeper.lua

function C:init(manager)
  self.manager = manager
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/crawlEditor/trails.lua

function C:init()
  self.currentTab = "paths"
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/rally/vehicleCapture.lua

function C:init(vehicle, missionDir) --, cornerAngles, selectedCornerAnglesName)
  log('I', logTag, 'initializing vehicleCapture for vehicle='..vehicle:getId())
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/career/setTutorialFlag.lua

function C:init()
@/lua/vehicle/controller/tech/tyreBarrier.lua
-- Initialisation callback (called once when this controller is instantiated).
local function init(data)
  isPreamble = true
@/lua/ge/extensions/scenario/scenarios.lua

    raceMarker.init()
    if scenario_raceUI then
@/lua/ge/extensions/flowgraph/nodes/ui/imgui/elemental/imNumbers.lua

function C:init()
  self.modes = {
@/lua/ge/extensions/flowgraph/nodes/mission/goToStartLine.lua

function C:init()
  self.vehicle = nil
@/lua/ge/extensions/flowgraph/nodes/vehicle/randomConfigProvider.lua

function C:init()
  self.models = {}
@/lua/ge/extensions/flowgraph/nodes/gfx/dof.lua

function C:init(mgr, ...)
  self:reset()
@/gameplay/missionTypes/timeTrial/editor.lua

function C:init()
  self:addDecoHeader("Mission Settings",'orange')
@/lua/vehicle/controller/sound/AVAS.lua

local function init(jbeamData)
end
@/lua/ge/extensions/flowgraph/nodes/vehicle/setLights.lua

function C:init()
@/lua/ge/extensions/editor/raceEditor/tools.lua

function C:init(raceEditor)
  self.raceEditor = raceEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/tech/terrainImporter.lua
  local bmp = GBitmap()
  bmp:init(bmpSize, bmpSize)
  bmp:allocateBitmap(bmpSize, bmpSize, false, "GFXFormatR16")
@/gameplay/missionTypes/rallyRoadSection/editor.lua

function C:init()
  -- self:addDecoHeader("Mission Screen Text",'orange')
@/gameplay/missionTypes/cannon/customNodes/cannonBallInfoNode.lua

function C:init()
@/lua/ge/extensions/scenario/raceMarkers/sideMarker.lua
-- called when this object is created. initialize variables here (but dont spawn objects)
function C:init(id)
  self.id = id
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/editor/missionEditor/progressMulti.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/ui/buttons/simpleMultipleButtons.lua

function C:init()
  self.count = 1
@/lua/vehicle/controller/braking/brakedDifferentialSteering.lua

local function init(jbeamData)
  steeringPlay = jbeamData.steeringPlay or 0
@/lua/vehicle/controller/drivingDynamics/actuators/electronicDiffLock.lua

local function init(jbeamData)
  M.isActing = false
@/lua/vehicle/controller/sound/reverseWarn.lua

local function init(jbeamData)
  electricsName = jbeamData.electricsName or "reverse"
@/lua/ge/extensions/flowgraph/nodes/vehicle/onVehicleReset.lua

function C:init(mgr, ...)
@/ui/lib/ext/angular-material/angular-material.min.js
A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff",contrastDefaultColor:"light",contrastDarkColors:"100 200 300 400 A100",contrastStrongLightColors:"500 600 700 A200 A400 A700"},"light-blue":{50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900 A700",contrastStrongLightColors:"500 600 700 800 A700"},cyan:{50:"#e0f7fa",100:"#b2ebf2",200:"#80deea",300:"#4dd0e1",400:"#26c6da",500:"#00bcd4",600:"#00acc1",700:"#0097a7",800:"#00838f",900:"#006064",A100:"#84ffff",A200:"#18ffff",A400:"#00e5ff",A700:"#00b8d4",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700 800"},teal:{50:"#e0f2f1",100:"#b2dfdb",200:"#80cbc4",300:"#4db6ac",400:"#26a69a",500:"#009688",600:"#00897b",700:"#00796b",800:"#00695c",900:"#004d40",A100:"#a7ffeb",A200:"#64ffda",A400:"#1de9b6",A700:"#00bfa5",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},green:{50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853",contrastDefaultColor:"dark",contrastLightColors:"500 600 700 800 900",contrastStrongLightColors:"500 600 700"},"light-green":{50:"#f1f8e9",100:"#dcedc8",200:"#c5e1a5",300:"#aed581",400:"#9ccc65",500:"#8bc34a",600:"#7cb342",700:"#689f38",800:"#558b2f",900:"#33691e",A100:"#ccff90",A200:"#b2ff59",A400:"#76ff03",A700:"#64dd17",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},lime:{50:"#f9fbe7",100:"#f0f4c3",200:"#e6ee9c",300:"#dce775",400:"#d4e157",500:"#cddc39",600:"#c0ca33",700:"#afb42b",800:"#9e9d24",900:"#827717",A100:"#f4ff81",A200:"#eeff41",A400:"#c6ff00",A700:"#aeea00",contrastDefaultColor:"dark",contrastLightColors:"900",contrastStrongLightColors:"900"},yellow:{50:"#fffde7",100:"#fff9c4",200:"#fff59d",300:"#fff176",400:"#ffee58",500:"#ffeb3b",600:"#fdd835",700:"#fbc02d",800:"#f9a825",900:"#f57f17",A100:"#ffff8d",A200:"#ffff00",A400:"#ffea00",A700:"#ffd600",contrastDefaultColor:"dark"},amber:{50:"#fff8e1",100:"#ffecb3",200:"#ffe082",300:"#ffd54f",400:"#ffca28",500:"#ffc107",600:"#ffb300",700:"#ffa000",800:"#ff8f00",900:"#ff6f00",A100:"#ffe57f",A200:"#ffd740",A400:"#ffc400",A700:"#ffab00",contrastDefaultColor:"dark"},orange:{50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00",contrastDefaultColor:"dark",contrastLightColors:"800 900",contrastStrongLightColors:"800 900"},"deep-orange":{50:"#fbe9e7",100:"#ffccbc",200:"#ffab91",300:"#ff8a65",400:"#ff7043",500:"#ff5722",600:"#f4511e",700:"#e64a19",800:"#d84315",900:"#bf360c",A100:"#ff9e80",A200:"#ff6e40",A400:"#ff3d00",A700:"#dd2c00",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300 400 A100 A200",contrastStrongLightColors:"500 600 700 800 900 A400 A700"},brown:{50:"#efebe9",100:"#d7ccc8",200:"#bcaaa4",300:"#a1887f",400:"#8d6e63",500:"#795548",600:"#6d4c41",700:"#5d4037",800:"#4e342e",900:"#3e2723",A100:"#d7ccc8",A200:"#bcaaa4",A400:"#8d6e63",A700:"#5d4037",contrastDefaultColor:"light",contrastDarkColors:"50 100 200",contrastStrongLightColors:"300 400"},grey:{50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",1000:"#000000",A100:"#ffffff",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161",contrastDefaultColor:"dark",contrastLightColors:"600 700 800 900"},"blue-grey":{50:"#eceff1",100:"#cfd8dc",200:"#b0bec5",300:"#90a4ae",400:"#78909c",500:"#607d8b",600:"#546e7a",700:"#455a64",800:"#37474f",900:"#263238",A100:"#cfd8dc",A200:"#b0bec5",A400:"#78909c",A700:"#455a64",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 300",contrastStrongLightColors:"400 500"}})}(),function(){function e(e){function o(e,t){return t=t||{},m[e]=a(e,t),g}function r(e,n){return a(e,t.extend({},m[e]||{},n))}function a(e,t){var n=C.filter(function(e){return!t[e]});if(n.length)throw new Error("Missing colors %1 in palette %2!".replace("%1",n.join(", ")).replace("%2",e));return t}function d(e,n){if(s[e])return s[e];n=n||"default";var o="string"==typeof n?s[n]:n,r=new c(e);return o&&t.forEach(o.colors,function(e,n){r.colors[n]={name:e.name,hues:t.extend({},e.hues)}}),s[e]=r,r}function c(e){function n(e){if(e=0===arguments.length?!0:!!e,e!==o.isDark){o.isDark=e,o.foregroundPalette=o.isDark?f:p,o.foregroundShadow=o.isDark?h:b;var n=o.isDark?T:A,r=o.isDark?A:T;return t.forEach(n,function(e,t){var n=o.colors[t],i=r[t];if(n)for(var a in n.hues)n.hues[a]===i[a]&&(n.hues[a]=e[a])}),o}}var o=this;o.name=e,o.colors={},o.dark=n,n(!1),M.forEach(function(e){var n=(o.isDark?T:A)[e];o[e+"Palette"]=function(r,i){var a=o.colors[e]={name:r,hues:t.extend({},n,i)};return Object.keys(a.hues).forEach(function(e){if(!n[e])throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1",e).replace("%2",o.name).replace("%3",r).replace("%4",Object.keys(n).join(", ")))}),Object.keys(a.hues).map(function(e){return a.hues[e]}).forEach(function(t){if(-1==C.indexOf(t))throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1",t).replace("%2",o.name).replace("%3",e).replace("%4",r).replace("%5",C.join(", ")))}),o},o[e+"Color"]=function(){var t=Array.prototype.slice.call(arguments);return console.warn("$mdThemingProviderTheme."+e+"Color() has been deprecated. Use $mdThemingProviderTheme."+e+"Palette() instead."),o[e+"Palette"].apply(o,t)}})}function u(e,o){function r(e){return e===n||""===e?!0:i.THEMES[e]!==n}function i(t,o){o===n&&(o=t,t=n),t===n&&(t=e),i.inherit(o,o)}return i.inherit=function(n,i){function a(e){r(e)||o.warn("Attempted to use unregistered theme '"+e+"'. Register it with $mdThemingProvider.theme().");var t=n.data("$mdThemeName");t&&n.removeClass("md-"+t+"-theme"),n.addClass("md-"+e+"-theme"),n.data("$mdThemeName",e),d&&n.data("$mdThemeController",d)}var d=i.controller("mdTheme"),c=n.attr("md-theme-watch");if((v||t.isDefined(c))&&"false"!=c){var l=e.$watch(function(){return d&&d.$mdTheme||E},a);n.on("$destroy",l)}else{var m=d&&d.$mdTheme||E;a(m)}},i.THEMES=t.extend({},s),i.defaultTheme=function(){return E},i.registered=r,i}m={},s={};var g,E="default",v=!1;return t.extend(m,e),u.$inject=["$rootScope","$log"],g={definePalette:o,extendPalette:r,theme:d,setDefaultTheme:function(e){E=e},alwaysWatchTheme:function(e){v=e},$get:u,_LIGHT_DEFAULT_HUES:A,_DARK_DEFAULT_HUES:T,_PALETTES:m,_THEMES:s,_parseRules:i,_rgba:l}}function o(e,t,n){return{priority:100,link:{pre:function(o,r,i){var a={$setTheme:function(t){e.registered(t)||n.warn("attempted to use unregistered theme '"+t+"'"),a.$mdTheme=t}};r.data("$mdThemeController",a),a.$setTheme(t(i.mdTheme)(o)),i.$observe("mdTheme",a.$setTheme)}}}}function r(e){return e}function i(e,n,o){d(e,n),o=o.replace(/THEME_NAME/g,e.name);var r=[],i=e.colors[n],a=new RegExp(".md-"+e.name+"-theme","g"),c=new RegExp("('|\")?{{\\s*("+n+")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?","g"),s=/'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow)-?(\d\.?\d*)?\s*\}\}'?"?/g,u=m[i.name];return o=o.replace(s,function(t,n,o,r){return"foreground"===n?"shadow"==o?e.foregroundShadow:e.foregroundPalette[o]||e.foregroundPalette[1]:(0===o.indexOf("hue")&&(o=e.colors[n].hues[o]),l((m[e.colors[n].name][o]||"").value,r))}),t.forEach(i.hues,function(t,n){var i=o.replace(c,function(e,n,o,r,i){return l(u[t]["color"===r?"value":"contrast"],i)});"default"!==n&&(i=i.replace(a,".md-"+e.name+"-theme.md-"+n)),"default"==e.name&&(i=i.replace(/\.md-default-theme/g,"")),r.push(i)}),r}function a(e){function n(e){var n=e.contrastDefaultColor,o=e.contrastLightColors||[],r=e.contrastStrongLightColors||[],i=e.contrastDarkColors||[];"string"==typeof o&&(o=o.split(" ")),"string"==typeof r&&(r=r.split(" ")),"string"==typeof i&&(i=i.split(" ")),delete e.contrastDefaultColor,delete e.contrastLightColors,delete e.contrastStrongLightColors,delete e.contrastDarkColors,t.forEach(e,function(a,d){function l(){return"light"===n?i.indexOf(d)>-1?g:r.indexOf(d)>-1?v:E:o.indexOf(d)>-1?r.indexOf(d)>-1?v:E:g}if(!t.isObject(a)){var m=c(a);if(!m)throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1",a).replace("%2",e.name).replace("%3",d));e[d]={value:m,contrast:l()}}})}var o=document.getElementsByTagName("head")[0],r=o?o.firstElementChild:null,a=e.has("$MD_THEME_CSS")?e.get("$MD_THEME_CSS"):"";if(r&&0!==a.length){t.forEach(m,n);var d={},l=a.split(/\}(?!(\}|'|"|;))/).filter(function(e){return e&&e.length}).map(function(e){return e.trim()+"}"}),p=new RegExp("md-("+M.join("|")+")","g");M.forEach(function(e){d[e]=""}),l.forEach(function(e){for(var t,n=(e.match(p),0);t=M[n];n++)if(e.indexOf(".md-"+t)>-1)return d[t]+=e;for(n=0;t=M[n];n++)if(e.indexOf(t)>-1)return d[t]+=e;return d[$]+=e}),t.forEach(s,function(e){u[e.name]||(M.forEach(function(t){for(var n=i(e,t,d[t]);n.length;){var a=document.createElement("style");a.setAttribute("type","text/css"),a.appendChild(document.createTextNode(n.shift())),o.insertBefore(a,r)}}),e.colors.primary.name==e.colors.accent.name&&console.warn("$mdThemingProvider: Using the same palette for primary and accent. This violates the material design spec."),u[e.name]=!0)})}}function d(e,t){if(!m[(e.colors[t]||{}).name])throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1",e.name).replace("%2",t).replace("%3",Object.keys(m).join(", ")))}function c(e){if(t.isArray(e)&&3==e.length)return e;if(/^rgb/.test(e))return e.replace(/(^\s*rgba?\(|\)\s*$)/g,"").split(",").map(function(e,t){return 3==t?parseFloat(e,10):parseInt(e,10)});if("#"==e.charAt(0)&&(e=e.substring(1)),/^([a-fA-F0-9]{3}){1,2}$/g.test(e)){var n=e.length/3,o=e.substr(0,n),r=e.substr(n,n),i=e.substr(2*n);return 1===n&&(o+=o,r+=r,i+=i),[parseInt(o,16),parseInt(r,16),parseInt(i,16)]}}function l(e,n){return e?(4==e.length&&(e=t.copy(e),n?e.pop():n=e.pop()),n&&("number"==typeof n||"string"==typeof n&&n.length)?"rgba("+e.join(",")+","+n+")":"rgb("+e.join(",")+")"):"rgb('0,0,0')"}t.module("material.core.theming",["material.core.theming.palette"]).directive("mdTheme",o).directive("mdThemable",r).provider("$mdTheming",e).run(a);var m,s,u={},p={name:"dark",1:"rgba(0,0,0,0.87)",2:"rgba(0,0,0,0.54)",3:"rgba(0,0,0,0.26)",4:"rgba(0,0,0,0.12)"},f={name:"light",1:"rgba(255,255,255,1.0)",2:"rgba(255,255,255,0.7)",3:"rgba(255,255,255,0.3)",4:"rgba(255,255,255,0.12)"},h="1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",b="",g=c("rgba(0,0,0,0.87)"),E=c("rgba(255,255,255,0.87"),v=c("rgb(255,255,255)"),M=["primary","accent","warn","background"],$="primary",A={accent:{"default":"A200","hue-1":"A100","hue-2":"A400","hue-3":"A700"},background:{"default":"A100","hue-1":"300","hue-2":"800","hue-3":"900"}},T={background:{"default":"800","hue-1":"300","hue-2":"600","hue-3":"900"}};M.forEach(function(e){var t={"default":"500","hue-1":"300","hue-2":"800","hue-3":"A100"};A[e]||(A[e]=t),T[e]||(T[e]=t)});var C=["50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700"];e.$inject=["$mdColorPalette"],o.$inject=["$mdTheming","$interpolate","$log"],r.$inject=["$mdTheming"],a.$inject=["$injector"]}(),function(){t.module("material.components.autocomplete",["material.core","material.components.icon"])}(),function(){function e(){return{restrict:"E"}}function n(e){function n(e,n,i,a,d,c,l){function m(o,r,l){r=i.extractElementByName(r,"md-bottom-sheet"),p=i.createBackdrop(o,"md-bottom-sheet-backdrop md-opaque"),p.on("click",function(){i.nextTick(d.cancel,!0)}),a.inherit(p,l.parent),e.enter(p,l.parent,null);var m=new u(r,l.parent);return l.bottomSheet=m,l.targetEvent&&t.element(l.targetEvent.target).blur(),a.inherit(m.element,l.parent),l.disableParentScroll&&(l.lastOverflow=l.parent.css("overflow"),l.parent.css("overflow","hidden")),e.enter(m.element,l.parent).then(function(){var e=t.element(r[0].querySelector("button")||r[0].querySelector("a")||r[0].querySelector("[ng-click]"));e.focus(),l.escapeToClose&&(l.rootElementKeyupCallback=function(e){e.keyCode===n.KEY_CODE.ESCAPE&&i.nextTick(d.cancel,!0)},c.on("keyup",l.rootElementKeyupCallback))})}function s(n,o,r){var i=r.bottomSheet;return e.leave(p),e.leave(i.element).then(function(){r.disableParentScroll&&(r.parent.css("overflow",r.lastOverflow),delete r.lastOverflow),i.cleanup(),r.targetEvent&&t.element(r.targetEvent.target).focus()})}function u(e,t){function a(t){e.css(n.CSS.TRANSITION_DURATION,"0ms")}function c(t){var o=t.pointer.distanceY;5>o&&(o=Math.max(-r,o/2)),e.css(n.CSS.TRANSFORM,"translate3d(0,"+(r+o)+"px,0)")}function m(t){if(t.pointer.distanceY>0&&(t.pointer.distanceY>20||Math.abs(t.pointer.velocityY)>o)){var r=e.prop("offsetHeight")-t.pointer.distanceY,a=Math.min(r/t.pointer.velocityY*.75,500);e.css(n.CSS.TRANSITION_DURATION,a+"ms"),i.nextTick(d.cancel,!0)}else e.css(n.CSS.TRANSITION_DURATION,""),e.css(n.CSS.TRANSFORM,"")}var s=l.register(t,"drag",{horizontal:!1});return t.on("$md.dragstart",a).on("$md.drag",c).on("$md.dragend",m),{element:e,cleanup:function(){s(),t.off("$md.dragstart",a).off("$md.drag",c).off("$md.dragend",m)}}}var p;return{themable:!0,targetEvent:null,onShow:m,onRemove:s,escapeToClose:!0,disableParentScroll:!0}}var o=.5,r=80;return n.$inject=["$animate","$mdConstant","$mdUtil","$mdTheming","$mdBottomSheet","$rootElement","$mdGesture"],e("$mdBottomSheet").setDefaults({methods:["disableParentScroll","escapeToClose","targetEvent"],options:n})}t.module("material.components.bottomSheet",["material.core","material.components.backdrop"]).directive("mdBottomSheet",e).provider("$mdBottomSheet",n),n.$inject=["$$interimElementProvider"]}(),function(){t.module("material.components.backdrop",["material.core"]).directive("mdBackdrop",["$mdTheming","$animate","$rootElement","$window","$log","$$rAF","$document",function(e,t,n,o,r,i,a){function d(d,l,m){var s=o.getComputedStyle(a[0].body);if("fixed"==s.position){var u=parseInt(s.height,10)+Math.abs(parseInt(s.top,10));l.css({height:u+"px"})}t.pin&&t.pin(l,n),i(function(){var t=l.parent()[0];if(t){var n=o.getComputedStyle(t);"static"==n.position&&r.warn(c)}e.inherit(l,l.parent())})}var c=" may not work properly in a scrolled, static-positioned parent container.";return{restrict:"E",link:d}}])}(),function(){function e(e){return{restrict:"E",link:function(t,n,o){e(n)}}}t.module("material.components.card",["material.core"]).directive("mdCard",e),e.$inject=["$mdTheming"]}(),function(){function e(e,n,o,r,i,a,d){function c(n,c){return c.type="checkbox",c.tabindex=c.tabindex||"0",n.attr("role",c.type),function(n,c,m,s){function u(e,t,o){m[e]&&n.$watch(m[e],function(e){o[e]&&c.attr(t,o[e])})}function p(e){var t=e.which||e.keyCode;(t===r.KEY_CODE.SPACE||t===r.KEY_CODE.ENTER)&&(e.preventDefault(),c.hasClass("md-focused")||c.addClass("md-focused"),f(e))}function f(e){c[0].hasAttribute("disabled")||n.$apply(function(){var t=m.ngChecked?m.checked:!s.$viewValue;s.$setViewValue(t,e&&e.type),s.$render()})}function h(){s.$viewValue?c.addClass(l):c.removeClass(l)}s=s||a.fakeNgModel(),i(c),m.ngChecked&&n.$watch(n.$eval.bind(n,m.ngChecked),s.$setViewValue.bind(s)),u("ngDisabled","tabindex",{"true":"-1","false":m.tabindex}),o.expectWithText(c,"aria-label"),e.link.pre(n,{on:t.noop,0:{}},m,[s]),n.mouseActive=!1,c.on("click",f).on("keypress",p).on("mousedown",function(){n.mouseActive=!0,d(function(){n.mouseActive=!1},100)}).on("focus",function(){n.mouseActive===!1&&c.addClass("md-focused")}).on("blur",function(){c.removeClass("md-focused")}),s.$render=h}}e=e[0];var l="md-checked";return{restrict:"E",transclude:!0,require:"?ngModel",priority:210,template:'
',compile:c}}t.module("material.components.checkbox",["material.core"]).directive("mdCheckbox",e),e.$inject=["inputDirective","$mdInkRipple","$mdAria","$mdConstant","$mdTheming","$mdUtil","$timeout"]}(),function(){function e(e){function t(e,t){this.$scope=e,this.$element=t}return{restrict:"E",controller:["$scope","$element",t],link:function(t,o,r){o[0];e(o),t.$broadcast("$mdContentLoaded",o),n(o[0])}}}function n(e){t.element(e).on("$md.pressdown",function(t){"t"===t.pointer.type&&(t.$materialScrollFixed||(t.$materialScrollFixed=!0,0===e.scrollTop?e.scrollTop=1:e.scrollHeight===e.scrollTop+e.offsetHeight&&(e.scrollTop-=1)))})}t.module("material.components.content",["material.core"]).directive("mdContent",e),e.$inject=["$mdTheming"]}(),function(){function e(e,n,o,r){function i(e){return t.isDefined(e.href)||t.isDefined(e.ngHref)||t.isDefined(e.ngLink)||t.isDefined(e.uiSref)}function a(e,t){return i(t)?'':''}function d(a,d,c){var l=d[0];n(d),e.attach(a,d);var m=l.textContent.trim();m||o.expect(d,"aria-label"),i(c)&&t.isDefined(c.ngDisabled)&&a.$watch(c.ngDisabled,function(e){d.attr("tabindex",e?-1:0)}),d.on("click",function(e){c.disabled===!0&&(e.preventDefault(),e.stopImmediatePropagation())}),a.mouseActive=!1,d.on("mousedown",function(){a.mouseActive=!0,r(function(){a.mouseActive=!1},100)}).on("focus",function(){a.mouseActive===!1&&d.addClass("md-focused")}).on("blur",function(){d.removeClass("md-focused")})}return{restrict:"EA",replace:!0,transclude:!0,template:a,link:d}}t.module("material.components.button",["material.core"]).directive("mdButton",e),e.$inject=["$mdButtonInkRipple","$mdTheming","$mdAria","$timeout"]}(),function(){function e(e){return{restrict:"E",link:e}}t.module("material.components.divider",["material.core"]).directive("mdDivider",e),e.$inject=["$mdTheming"]}(),function(){t.module("material.components.chips",["material.core","material.components.autocomplete"])}(),function(){function e(e,n){return{restrict:"E",link:function(o,r,i){n(r),e(function(){function e(){r.toggleClass("md-content-overflow",o.scrollHeight>o.clientHeight)}var n,o=r[0].querySelector("md-dialog-content");o&&(n=o.getElementsByTagName("img"),e(),t.element(n).on("load",e))})}}}function n(e){function n(e,t){return{template:['',' ','

{{ dialog.title }}

',"

{{ dialog.content }}

","
",'
',' '," {{ dialog.cancel }}"," ",' '," {{ dialog.ok }}"," ","
","
"].join("").replace(/\s\s+/g,""),controller:function(){this.hide=function(){e.hide(!0)},this.abort=function(){e.cancel()}},controllerAs:"dialog",bindToController:!0,theme:t.defaultTheme()}}function o(e,n,o,r,i,a,d,c){function l(e,n,r){function i(){function e(){var e=n[0].querySelector(".dialog-close");if(!e){var o=n[0].querySelectorAll(".md-actions button");e=o[o.length-1]}return t.element(e)}if(r.focusOnOpen){var o="alert"===r.$type?n.find("md-dialog-content"):e();o.focus()}}return n=o.extractElementByName(n,"md-dialog"),t.element(a[0].body).addClass("md-dialog-is-showing"),s(n,r),f(n.find("md-dialog"),r),p(e,n,r),g(n,r).then(function(){u(n,r),h(n,r),i()})}function m(e,n,o){return o.deactivateListeners(),o.unlockScreenReader(),o.hideBackdrop(),E(n,o)["finally"](function(){t.element(a[0].body).removeClass("md-dialog-is-showing"),n.remove(),o.origin.focus()})}function s(e,n){var r={element:null,bounds:null,focus:t.noop};n.origin=t.extend({},r,n.origin||{});var i=t.element((n.targetEvent||{}).target);i&&i.length&&(n.origin.element=i,n.origin.bounds=i[0].getBoundingClientRect(),n.origin.focus=function(){i.focus()}),n.parent=t.element(n.parent||c),n.disableParentScroll&&(n.restoreScroll=o.disableScrollAround(e,n.parent))}function u(t,n){var i=[],a=function(){var t="alert"==n.$type?e.hide:e.cancel;o.nextTick(t,!0)};if(n.escapeToClose){var d=n.parent,c=function(e){e.keyCode===r.KEY_CODE.ESCAPE&&(e.stopPropagation(),e.preventDefault(),a())};t.on("keyup",c),d.on("keyup",c),i.push(function(){t.off("keyup",c),d.off("keyup",c)})}if(n.clickOutsideToClose){var d=t,l=function(e){e.target===d[0]&&(e.stopPropagation(),e.preventDefault(),a())};d.on("click",l),i.push(function(){d.off("click",l)})}n.deactivateListeners=function(){i.forEach(function(e){e()}),n.deactivateListeners=null}}function p(e,t,n){n.hasBackdrop&&(n.backdrop=o.createBackdrop(e,"md-dialog-backdrop md-opaque"),i.enter(n.backdrop,n.parent)),n.hideBackdrop=function(){n.backdrop&&i.leave(n.backdrop),n.disableParentScroll&&n.restoreScroll(),n.hideBackdrop=null}}function f(e,t){var r="alert"===t.$type?"alertdialog":"dialog",i=e.find("md-dialog-content"),a=e.attr("id")||"dialog_"+o.nextUid();e.attr({role:r,tabIndex:"-1"}),0===i.length&&(i=e),i.attr("id",a),e.attr("aria-describedby",a),t.ariaLabel?n.expect(e,"aria-label",t.ariaLabel):n.expectAsync(e,"aria-label",function(){var e=i.text().split(/\s+/);return e.length>3&&(e=e.slice(0,3).concat("...")),e.join(" ")})}function h(e,t){function n(e){for(;e.parentNode;){if(e===document.body)return;for(var t=e.parentNode.children,r=0;r'+e+"
"}}}return n.$inject=["$mdDialog","$mdTheming"],o.$inject=["$mdDialog","$mdAria","$mdUtil","$mdConstant","$animate","$document","$window","$rootElement"],e("$mdDialog").setDefaults({methods:["disableParentScroll","hasBackdrop","clickOutsideToClose","escapeToClose","targetEvent","parent"],options:o}).addPreset("alert",{methods:["title","content","ariaLabel","ok","theme"],options:n}).addPreset("confirm",{methods:["title","content","ariaLabel","ok","cancel","theme"],options:n})}t.module("material.components.dialog",["material.core","material.components.backdrop"]).directive("mdDialog",e).provider("$mdDialog",n),e.$inject=["$$rAF","$mdTheming"],n.$inject=["$$interimElementProvider"]}(),function(){!function(){function e(){function e(e,t){t.prepend('
')}function t(e,t,n,o){function r(){d.direction=d.direction||"down",d.isOpen=d.isOpen||!1}function i(){t.on("mouseenter",d.mouseenter),t.on("mouseleave",d.mouseleave)}function a(){e.$watch("vm.direction",function(e,o){n.removeClass(t,"md-"+o),n.addClass(t,"md-"+e)}),e.$watch("vm.isOpen",function(e){var o=e?"md-is-open":"",r=e?"":"md-is-open";n.setClass(t,o,r)})}var d=this;d.open=function(){e.$evalAsync("vm.isOpen = true")},d.close=function(){!d.moused&&e.$evalAsync("vm.isOpen = false")},d.mouseenter=function(){d.moused=!0,d.open()},d.mouseleave=function(){d.moused=!1,d.close()},r(),i(),a(),o.nextTick(function(){n.addClass(t,"md-noop")})}return t.$inject=["$scope","$element","$animate","$mdUtil"],{restrict:"E",scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:t,controllerAs:"vm",link:e}}function n(){function e(e){var n=e[0],o=e.controller("mdFabSpeedDial"),r=n.querySelectorAll(".md-fab-action-item"),i=n.querySelector(".md-css-variables"),a=i.style.zIndex;t.forEach(r,function(e,t){var n=e.style;n.transform=n.webkitTransform="",n.transitionDelay="",n.opacity=1,n.zIndex=r.length-t+a}),o.isOpen||t.forEach(r,function(e,t){var n,r,i=e.style;switch(o.direction){case"up":n=e.scrollHeight*(t+1),r="Y";break;case"down":n=-e.scrollHeight*(t+1),r="Y";break;case"left":n=e.scrollWidth*(t+1),r="X";break;case"right":n=-e.scrollWidth*(t+1),r="X"}var a="translate"+r+"("+n+"px)";i.transform=i.webkitTransform=a})}return{addClass:function(t,n,o){t.hasClass("md-fling")&&(e(t),o())},removeClass:function(t,n,o){e(t),o()}}}function o(){function e(e){var o=e[0],r=e.controller("mdFabSpeedDial"),i=o.querySelectorAll(".md-fab-action-item");t.forEach(i,function(e,t){var o=e.style,a=t*n;o.opacity=r.isOpen?1:0,o.transform=o.webkitTransform=r.isOpen?"scale(1)":"scale(0)",o.transitionDelay=(r.isOpen?a:i.length-a)+"ms"})}var n=65;return{addClass:function(t,n,o){e(t),o()},removeClass:function(t,n,o){e(t),o()}}}t.module("material.components.fabSpeedDial",["material.core","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabSpeedDial",e).animation(".md-fling",n).animation(".md-scale",o).service("mdFabSpeedDialFlingAnimation",n).service("mdFabSpeedDialScaleAnimation",o)}()}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"],compile:function(e,n){var o=e.children();return o.attr("ng-repeat")?o.addClass("md-fab-action-item"):o.wrap('
'),function(e,n,o,r){var i=r[0]||r[1];i&&t.forEach(n.children(),function(e){e=t.element(e).children()[0],t.element(e).on("focus",i.open),t.element(e).on("blur",i.close)})}}}}t.module("material.components.fabActions",["material.core"]).directive("mdFabActions",e)}()}(),function(){!function(){function n(){function e(e,t,n){var o=this;o.isOpen=o.isOpen||!1,o.open=function(){o.isOpen=!0,e.$apply()},o.close=function(){o.isOpen=!1,e.$apply()},t.addClass("md-fab-toolbar"),t.on("mouseenter",o.open),t.on("mouseleave",o.close),e.$watch("vm.isOpen",function(e){var o=e?"md-is-open":"",r=e?"":"md-is-open";n.setClass(t,o,r)})}function t(e,t,n){t.find("md-fab-trigger").find("button").attr("tabindex","-1"),t.find("md-fab-trigger").find("button").prepend('
')}return e.$inject=["$scope","$element","$animate"],{restrict:"E",transclude:!0,template:'
',scope:{isOpen:"=?mdOpen"},bindToController:!0,controller:e,controllerAs:"vm",link:t}}function o(){function n(n,o,r){var i=n[0],a=n.controller("mdFabToolbar"),d=i.querySelector(".md-fab-toolbar-background"),c=i.querySelector("md-fab-trigger button"),l=i.querySelector("md-fab-trigger button md-icon"),m=n.find("md-fab-actions").children();if(c&&d){var s=e.getComputedStyle(c).getPropertyValue("background-color"),u=i.offsetWidth,p=(i.offsetHeight,2*u);d.style.backgroundColor=s,d.style.borderRadius=u+"px",a.isOpen?(d.style.width=p+"px",d.style.height=p+"px",d.style.top=-(p/2)+"px",n.hasClass("md-left")&&(d.style.left=-(p/2)+"px",d.style.right=null),n.hasClass("md-right")&&(d.style.right=-(p/2)+"px",d.style.left=null),d.style.transitionDelay="0ms",l&&(l.style.transitionDelay=".3s"),t.forEach(m,function(e,t){e.style.transitionDelay=25*(m.length-t)+"ms"})):(d.style.width=c.offsetWidth+"px",d.style.height=c.offsetHeight+"px",d.style.top="0px",n.hasClass("md-left")&&(d.style.left="0px",d.style.right=null),n.hasClass("md-right")&&(d.style.right="0px",d.style.left=null),d.style.transitionDelay="200ms",l&&(l.style.transitionDelay="0ms"),t.forEach(m,function(e,t){e.style.transitionDelay=25*t+"ms"}))}}return{addClass:function(e,t,o){n(e,t,o),o()},removeClass:function(e,t,o){n(e,t,o),o()}}}t.module("material.components.fabToolbar",["material.core","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabToolbar",n).animation(".md-fab-toolbar",o).service("mdFabToolbarAnimation",o)}()}(),function(){!function(){function e(){return{restrict:"E",require:["^?mdFabSpeedDial","^?mdFabToolbar"],link:function(e,n,o,r){var i=r[0]||r[1];i&&t.forEach(n.children(),function(e){t.element(e).on("focus",i.open),t.element(e).on("blur",i.close)})}}}t.module("material.components.fabTrigger",["material.core"]).directive("mdFabTrigger",e)}()}(),function(){function e(e,o,r,i){function a(n,a,d,c){function l(){for(var e in o.MEDIA)i(e),i.getQuery(o.MEDIA[e]).addListener(T);return i.watchResponsiveAttributes(["md-cols","md-row-height"],d,s)}function m(){c.layoutDelegate=t.noop,C();for(var e in o.MEDIA)i.getQuery(o.MEDIA[e]).removeListener(T)}function s(e){null==e?c.invalidateLayout():i(e)&&c.invalidateLayout()}function u(e){var o=b(),i={tileSpans:g(o),colCount:E(),rowMode:$(),rowHeight:M(),gutter:v()};if(e||!t.equals(i,y)){var d=r(i.colCount,i.tileSpans,o).map(function(e,n){return{grid:{element:a,style:h(i.colCount,n,i.gutter,i.rowMode,i.rowHeight)},tiles:e.map(function(e,n){return{element:t.element(o[n]),style:f(e.position,e.spans,i.colCount,i.rowCount,i.gutter,i.rowMode,i.rowHeight)}})}}).reflow().performance();n.mdOnLayout({$event:{performance:d}}),y=i}}function p(e){return w+e+k}function f(e,t,n,o,r,i,a){var d=1/n*100,c=(n-1)/n,l=x({share:d,gutterShare:c,gutter:r}),m={left:N({unit:l,offset:e.col,gutter:r}),width:_({unit:l,span:t.col,gutter:r}),paddingTop:"",marginTop:"",top:"",height:""};switch(i){case"fixed":m.top=N({unit:a,offset:e.row,gutter:r}),m.height=_({unit:a,span:t.row,gutter:r});break;case"ratio":var s=d/a,u=x({share:s,gutterShare:c,gutter:r});m.paddingTop=_({unit:u,span:t.row,gutter:r}),m.marginTop=N({unit:u,offset:e.row,gutter:r});break;case"fit":var p=(o-1)/o,s=1/o*100,u=x({share:s,gutterShare:p,gutter:r});m.top=N({unit:u,offset:e.row,gutter:r}),m.height=_({unit:u,span:t.row,gutter:r})}return m}function h(e,t,n,o,r){var i={height:"",paddingBottom:""};switch(o){case"fixed":i.height=_({unit:r,span:t,gutter:n});break;case"ratio":var a=1===e?0:(e-1)/e,d=1/e*100,c=d*(1/r),l=x({share:c,gutterShare:a,gutter:n});i.paddingBottom=_({unit:l,span:t,gutter:n});break;case"fit":}return i}function b(){return[].filter.call(a.children(),function(e){return"MD-GRID-TILE"==e.tagName})}function g(e){return[].map.call(e,function(e){var n=t.element(e).controller("mdGridTile");return{row:parseInt(i.getResponsiveAttribute(n.$attrs,"md-rowspan"),10)||1,col:parseInt(i.getResponsiveAttribute(n.$attrs,"md-colspan"),10)||1}})}function E(){var e=parseInt(i.getResponsiveAttribute(d,"md-cols"),10);if(isNaN(e))throw"md-grid-list: md-cols attribute was not found, or contained a non-numeric value";return e}function v(){return A(i.getResponsiveAttribute(d,"md-gutter")||1)}function M(){var e=i.getResponsiveAttribute(d,"md-row-height");switch($()){case"fixed":return A(e);case"ratio":var t=e.split(":");return parseFloat(t[0])/parseFloat(t[1]);case"fit":return 0}}function $(){var e=i.getResponsiveAttribute(d,"md-row-height");return"fit"==e?"fit":-1!==e.indexOf(":")?"ratio":"fixed"}function A(e){return/\D$/.test(e)?e:e+"px"}a.attr("role","list"),c.layoutDelegate=u;var T=t.bind(c,c.invalidateLayout),C=l();n.$on("$destroy",m);var y,w=e.startSymbol(),k=e.endSymbol(),x=e(p("share")+"% - ("+p("gutter")+" * "+p("gutterShare")+")"),N=e("calc(("+p("unit")+" + "+p("gutter")+") * "+p("offset")+")"),_=e("calc(("+p("unit")+") * "+p("span")+" + ("+p("span")+" - 1) * "+p("gutter")+")")}return{restrict:"E",controller:n, scope:{mdOnLayout:"&"},link:a}}function n(e){this.layoutInvalidated=!1,this.tilesInvalidated=!1,this.$timeout_=e.nextTick,this.layoutDelegate=t.noop}function o(e){function n(t,n){var o,a,d,c,l,m;return c=e.time(function(){a=r(t,n)}),o={layoutInfo:function(){return a},map:function(t){return l=e.time(function(){var e=o.layoutInfo();d=t(e.positioning,e.rowCount)}),o},reflow:function(t){return m=e.time(function(){var e=t||i;e(d.grid,d.tiles)}),o},performance:function(){return{tileCount:n.length,layoutTime:c,mapTime:l,reflowTime:m,totalTime:c+l+m}}}}function o(e,t){e.element.css(e.style),t.forEach(function(e){e.element.css(e.style)})}function r(e,t){function n(t,n){if(t.col>e)throw"md-grid-list: Tile at position "+n+" has a colspan ("+t.col+") that exceeds the column count ("+e+")";for(var a=0,m=0;m-a=e?o():(a=l.indexOf(0,d),-1!==a&&-1!==(m=i(a+1))?d=m+1:(a=m=0,o()));return r(a,t.col,t.row),d=a+t.col,{col:a,row:c}}function o(){d=0,c++,r(0,e,-1)}function r(e,t,n){for(var o=e;e+t>o;o++)l[o]=Math.max(l[o]+n,0)}function i(e){var t;for(t=e;tn;n++)t.push(0);return t}var d=0,c=0,l=a();return{positioning:t.map(function(e,t){return{spans:e,position:n(e,t)}}),rowCount:c+Math.max.apply(Math,l)}}var i=o;return n.animateWith=function(e){i=t.isFunction(e)?e:o},n}function r(e){function n(n,o,r,i){o.attr("role","listitem");var a=e.watchResponsiveAttributes(["md-colspan","md-rowspan"],r,t.bind(i,i.invalidateLayout));i.invalidateTiles(),n.$on("$destroy",function(){a(),i.invalidateLayout()}),t.isDefined(n.$parent.$index)&&n.$watch(function(){return n.$parent.$index},function(e,t){e!==t&&i.invalidateTiles()})}return{restrict:"E",require:"^mdGridList",template:"
",transclude:!0,scope:{},controller:["$attrs",function(e){this.$attrs=e}],link:n}}function i(){return{template:"
",transclude:!0}}t.module("material.components.gridList",["material.core"]).directive("mdGridList",e).directive("mdGridTile",r).directive("mdGridTileFooter",i).directive("mdGridTileHeader",i).factory("$mdGridLayout",o),e.$inject=["$interpolate","$mdConstant","$mdGridLayout","$mdMedia"],n.$inject=["$mdUtil"],n.prototype={invalidateTiles:function(){this.tilesInvalidated=!0,this.invalidateLayout()},invalidateLayout:function(){this.layoutInvalidated||(this.layoutInvalidated=!0,this.$timeout_(t.bind(this,this.layout)))},layout:function(){try{this.layoutDelegate(this.tilesInvalidated)}finally{this.layoutInvalidated=!1,this.tilesInvalidated=!1}}},o.$inject=["$mdUtil"],r.$inject=["$mdMedia"]}(),function(){function e(e,t,n){function o(o,r,i){function a(){var e=r.parent();return e.attr("aria-label")||e.text()?!0:e.parent().attr("aria-label")||e.parent().text()?!0:!1}function d(){function t(){return!o.fontIcon&&!o.fontSet&&!i.hasOwnProperty("class")}o.svgIcon||o.svgSrc||(o.fontIcon&&r.addClass("md-font "+o.fontIcon),o.fontSet&&r.addClass(e.fontSet(o.fontSet)),t()&&r.addClass(e.fontSet()))}t(r),d();var c=i.alt||o.fontIcon||o.svgIcon||r.text(),l=i.$normalize(i.$attr.mdSvgIcon||i.$attr.mdSvgSrc||"");i["aria-label"]||(""==c||a()?r.text()||n.expect(r,"aria-hidden","true"):(n.expect(r,"aria-label",c),n.expect(r,"role","img"))),l&&i.$observe(l,function(t){r.empty(),t&&e(t).then(function(e){r.append(e)})})}return{scope:{fontSet:"@mdFontSet",fontIcon:"@mdFontIcon",svgIcon:"@mdSvgIcon",svgSrc:"@mdSvgSrc"},restrict:"E",link:o}}t.module("material.components.icon",["material.core"]).directive("mdIcon",e),e.$inject=["$mdIcon","$mdTheming","$mdAria"]}(),function(){function e(){}function n(e,t){this.url=e,this.viewBoxSize=t||r.defaultViewBoxSize}function o(e,n,o,r,i){function a(e){return e=e||"",E[e]?o.when(E[e].clone()):v.test(e)?s(e).then(c(e)):(-1==e.indexOf(":")&&(e="$default:"+e),l(e)["catch"](m)["catch"](u)["catch"](p).then(c(e)))}function d(n){var o=t.isUndefined(n)||!(n&&n.length);if(o)return e.defaultFontSet;var r=n;return t.forEach(e.fontSets,function(e){e.alias==n&&(r=e.fontSet||r)}),r}function c(t){return function(n){return E[t]=f(n)?n:new h(n,e[t]),E[t].clone()}}function l(t){var n=e[t];return n?s(n.url).then(function(e){return new h(e,n)}):o.reject(t)}function m(t){function n(e){var n=t.slice(t.lastIndexOf(":")+1),r=e.querySelector("#"+n);return r?new h(r,i):o.reject(t)}var r=t.substring(0,t.lastIndexOf(":"))||"$default",i=e[r];return i?s(i.url).then(n):o.reject(t)}function s(e){return n.get(e,{cache:i}).then(function(e){return t.element("
").append(e.data).find("svg")[0]})}function u(e){var n;return t.isString(e)&&(n="icon "+e+" not found",r.warn(n)),o.reject(n||e)}function p(e){var n=t.isString(e)?e:e.message||e.data||e.statusText;return r.warn(n),o.reject(n)}function f(e){return t.isDefined(e.element)&&t.isDefined(e.config)}function h(e,n){"svg"!=e.tagName&&(e=t.element('').append(e)[0]),e.getAttribute("xmlns")||e.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.element=e,this.config=n,this.prepare()}function b(){var n=this.config?this.config.viewBoxSize:e.defaultViewBoxSize;t.forEach({fit:"",height:"100%",width:"100%",preserveAspectRatio:"xMidYMid meet",viewBox:this.element.getAttribute("viewBox")||"0 0 "+n+" "+n},function(e,t){this.element.setAttribute(t,e)},this),t.forEach({"pointer-events":"none",display:"block"},function(e,t){this.element.style[t]=e},this)}function g(){return this.element.cloneNode(!0)}var E={},v=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i;return h.prototype={clone:g,prepare:b},a.fontSet=d,a}t.module("material.components.icon").provider("$mdIcon",e);var r={defaultViewBoxSize:24,defaultFontSet:"material-icons",fontSets:[]};e.prototype={icon:function(e,t,o){return-1==e.indexOf(":")&&(e="$default:"+e),r[e]=new n(t,o),this},iconSet:function(e,t,o){return r[e]=new n(t,o),this},defaultIconSet:function(e,t){var o="$default";return r[o]||(r[o]=new n(e,t)),r[o].viewBoxSize=t||r.defaultViewBoxSize,this},defaultViewBoxSize:function(e){return r.defaultViewBoxSize=e,this},fontSet:function(e,t){return r.fontSets.push({alias:e,fontSet:t||e}),this},defaultFontSet:function(e){return r.defaultFontSet=e?e:"",this},defaultIconSize:function(e){return r.defaultIconSize=e,this},preloadIcons:function(e){var t=this,n=[{id:"md-tabs-arrow",url:"md-tabs-arrow.svg",svg:''},{id:"md-close",url:"md-close.svg",svg:''},{id:"md-cancel",url:"md-cancel.svg",svg:''},{id:"md-menu",url:"md-menu.svg",svg:''},{id:"md-toggle-arrow",url:"md-toggle-arrow-svg",svg:''}];n.forEach(function(n){t.icon(n.id,n.url),e.put(n.url,n.svg)})},$get:["$http","$q","$log","$templateCache",function(e,t,n,i){return this.preloadIcons(i),o(r,e,t,n,i)}]}}(),function(){function e(e,t){function n(t,n,o){e(n)}function o(e,n,o){var r=this;r.isErrorGetter=o.mdIsError&&t(o.mdIsError),r.delegateClick=function(){r.input.focus()},r.element=n,r.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},r.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},r.setInvalid=function(e){n.toggleClass("md-input-invalid",!!e)},e.$watch(function(){return r.label&&r.input},function(e){e&&!r.label.attr("for")&&r.label.attr("for",r.input.attr("id"))})}return o.$inject=["$scope","$element","$attrs"],{restrict:"E",link:n,controller:o}}function n(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,o){o&&!n.mdNoFloat&&(o.label=t,e.$on("$destroy",function(){o.label=null}))}}}function o(e,n,o){function r(r,i,a,d){function c(e){return s.setHasValue(!u.$isEmpty(e)),e}function l(){s.setHasValue(i.val().length>0||(i[0].validity||{}).badInput)}function m(){function o(e){return h(),e}function a(){if(m.style.height=m.offsetHeight+"px",i.addClass("md-no-flex"),isNaN(p)){l.style.height="auto",l.scrollTop=0;var e=d();e&&(l.style.height=e+"px")}else{l.setAttribute("rows",1),f||(l.style.minHeight="0",f=i.prop("clientHeight"),l.style.minHeight=null);var t=Math.max(p,Math.round(l.scrollHeight/f));l.setAttribute("rows",t)}i.removeClass("md-no-flex"),m.style.height="auto"}function d(){var e=l.scrollHeight-l.offsetHeight;return l.offsetHeight+(e>0?e:0)}function c(e){l.scrollTop=0;var t=l.scrollHeight-l.offsetHeight,n=l.offsetHeight+t;l.style.height=n+"px"}if(!t.isDefined(i.attr("md-no-autogrow"))){var l=i[0],m=s.element[0],p=0/0,f=null;l.hasAttribute("rows")&&(p=parseInt(l.getAttribute("rows")));var h=e.debounce(a,1);u?(u.$formatters.push(o),u.$viewChangeListeners.push(o)):h(),i.on("keydown input",h),isNaN(p)&&(i.attr("rows","1"),i.on("scroll",c)),t.element(n).on("resize",h),r.$on("$destroy",function(){t.element(n).off("resize",h)})}}var s=d[0],u=d[1]||e.fakeNgModel(),p=t.isDefined(a.readonly);if(s){if(s.input)throw new Error(" can only have *one*
');r.$set("ngTrim","false"),l.element.append(m),c.$formatters.push(a),c.$viewChangeListeners.push(a),o.on("input keydown",function(){a()}),n.$watch(r.mdMaxlength,function(n){d=n,t.isNumber(n)&&n>0?(m.parent().length||e.enter(m,l.element,t.element(l.element[0].lastElementChild)),a()):e.leave(m)}),c.$validators["md-maxlength"]=function(e,n){return!t.isNumber(d)||0>d?!0:(e||o.val()||n||"").length<=d}}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:n}}function i(e){function n(n,o,r,i){if(i&&!t.isDefined(i.element.attr("md-no-float"))){var a=r.placeholder;if(o.removeAttr("placeholder"),0==i.element.find("label").length){if(i.input&&"MD-SELECT"!=i.input[0].nodeName){var d='";i.element.addClass("md-icon-float"),i.element.prepend(d)}}else"MD-SELECT"!=o[0].nodeName&&e.warn("The placeholder='"+a+"' will be ignored since this md-input-container has a child label element.")}}return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}t.module("material.components.input",["material.core"]).directive("mdInputContainer",e).directive("label",n).directive("input",o).directive("textarea",o).directive("mdMaxlength",r).directive("placeholder",i),e.$inject=["$mdTheming","$parse"],o.$inject=["$mdUtil","$window","$mdAria"],r.$inject=["$animate"],i.$inject=["$log"]}(),function(){function e(e){return{restrict:"E",compile:function(t){return t[0].setAttribute("role","list"),e}}}function n(e,n,o){var r=["md-checkbox","md-switch"];return{restrict:"E",controller:"MdListController",compile:function(i,a){function d(){for(var e,t,n=["md-switch","md-checkbox"],o=0;t=n[o];++o)if((e=i.find(t)[0])&&!e.hasAttribute("aria-label")){var r=i.find("p")[0];if(!r)return;e.setAttribute("aria-label","Toggle "+r.textContent)}}function c(n){var o;if("div"==n)o=t.element('
'),o.append(i.contents()),i.addClass("md-proxy-focus");else{o=t.element('
');var r=["ng-click","aria-label","ng-disabled"];t.forEach(r,function(e){i[0].hasAttribute(e)&&(o[0].setAttribute(e,i[0].getAttribute(e)),i[0].removeAttribute(e))}),o.children().eq(0).append(i.contents())}if(i[0].setAttribute("tabindex","-1"),i.append(o),p&&p.hasAttribute("ng-click")){e.expect(p,"aria-label");var d=t.element('');d.attr("ng-click",p.getAttribute("ng-click")),p.removeAttribute("ng-click"),p.setAttribute("tabindex","-1"),p.classList.remove("md-secondary"),d.append(p),p=d[0]}p&&(p.hasAttribute("ng-click")||a.ngClick&&l(p))&&(i.addClass("md-with-secondary"),i.append(p))}function l(e){return-1!=r.indexOf(e.nodeName.toLowerCase())}function m(e,i,a,d){function c(){var e=i.children();e.length&&!e[0].hasAttribute("ng-click")&&t.forEach(r,function(e){t.forEach(s.querySelectorAll(e),function(e){m.push(e)})})}function l(){(m.length||u)&&(i.addClass("md-clickable"),d.attachRipple(e,t.element(i[0].querySelector(".md-no-style"))))}var m=[],s=i[0].firstElementChild,u=s&&s.hasAttribute("ng-click");c(),l(),i.hasClass("md-proxy-focus")&&m.length&&t.forEach(m,function(n){n=t.element(n),e.mouseActive=!1,n.on("mousedown",function(){e.mouseActive=!0,o(function(){e.mouseActive=!1},100)}).on("focus",function(){e.mouseActive===!1&&i.addClass("md-focused"),n.on("blur",function t(){i.removeClass("md-focused"),n.off("blur",t)})})}),u||m.length||s&&s.addEventListener("keypress",function(e){if("INPUT"!=e.target.nodeName&&"TEXTAREA"!=e.target.nodeName){var t=e.which||e.keyCode;t==n.KEY_CODE.SPACE&&s&&(s.click(),e.preventDefault(),e.stopPropagation())}}),i.off("click"),i.off("keypress"),m.length&&s&&i.children().eq(0).on("click",function(e){s.contains(e.target)&&t.forEach(m,function(n){e.target===n||n.contains(e.target)||t.element(n).triggerHandler("click")})})}var s,u,p=i[0].querySelector(".md-secondary");if(i[0].setAttribute("role","listitem"),a.ngClick)c("button");else{for(var f,h=0;f=r[h];++h)if(u=i[0].querySelector(f)){s=!0;break}s?c("div"):i[0].querySelector("md-button")||i.addClass("md-no-proxy")}return d(),m}}}function o(e,t,n){function o(e,t){var o={};n.attach(e,t,o)}var r=this;r.attachRipple=o}t.module("material.components.list",["material.core"]).controller("MdListController",o).directive("mdList",e).directive("mdListItem",n),e.$inject=["$mdTheming"],n.$inject=["$mdAria","$mdConstant","$timeout"],o.$inject=["$scope","$element","$mdListInkRipple"]}(),function(){function e(e){function n(e){e.addClass("md-menu");var t=e.children()[0];if(t.hasAttribute("ng-click")||(t=t.querySelector("[ng-click]")),t&&t.setAttribute("aria-haspopup","true"),2!=e.children().length)throw Error("Invalid HTML for md-menu. Expected two children elements.");return o}function o(e,n,o,r){var i=t.element('
'),a=n.children()[1];i.append(a),r.init(i),e.$on("$destroy",function(){i.remove(),r.close()})}return{restrict:"E",require:"mdMenu",controller:"mdMenuCtrl",scope:!0,compile:n}}function n(e,t,n,o){var r,i,a=this;this.init=function(e){r=e,i=n[0].querySelector("[ng-click]")},this.open=function(t){t&&t.stopPropagation(),a.isOpen=!0,i.setAttribute("aria-expanded","true"),e.show({scope:o,mdMenuCtrl:a,element:r,target:n[0]})},o.$mdOpenMenu=this.open,this.close=function(t){a.isOpen&&(a.isOpen=!1,i.setAttribute("aria-expanded","false"),e.hide(),t||n.children()[0].focus())},this.positionMode=function(){var e=(t.mdPositionMode||"target").split(" ");return 1==e.length&&e.push(e[0]),{left:e[0],top:e[1]}},this.offsets=function(){var e=(t.mdOffset||"0 0").split(" ").map(parseFloat);if(2==e.length)return{left:e[0],top:e[1]};if(1==e.length)return{top:e[0],left:e[0]};throw Error("Invalid offsets specified. Please follow format or ")}}t.module("material.components.menu",["material.core","material.components.backdrop"]).directive("mdMenu",e).controller("mdMenuCtrl",n),e.$inject=["$mdMenu"],n.$inject=["$mdMenu","$attrs","$element","$scope"]}(),function(){function o(o){function r(o,r,a,d,c,l){function m(e,n,i){function l(){if(!i.target)throw Error("$mdMenu.show() expected a target to animate from in options.target");t.extend(i,{alreadyOpen:!1,isRemoved:!1,target:t.element(i.target),parent:t.element(i.parent),menuContentEl:t.element(n[0].querySelector("md-menu-content")),backdrop:i.hasBackdrop&&a.createBackdrop(e,"md-menu-backdrop md-click-catcher")})}function m(){i.resizeFn=function(){f(n,i)},t.element(r).on("resize",i.resizeFn),t.element(r).on("orientationchange",i.resizeFn)}function u(){i.parent.append(n),n.removeClass("md-leave"),o(function(){o(function(){f(n,i),o(function(){n.addClass("md-active"),i.alreadyOpen=!0,n[0].style[c.CSS.TRANSFORM]=""})})})}function p(){n.addClass("md-clickable"),i.backdrop&&i.backdrop.on("click",function(t){t.preventDefault(),t.stopPropagation(),e.$apply(function(){i.mdMenuCtrl.close(!0)})}),i.menuContentEl.on("keydown",function(t){e.$apply(function(){switch(t.keyCode){case c.KEY_CODE.ESCAPE:i.mdMenuCtrl.close();break;case c.KEY_CODE.UP_ARROW:s(t,i.menuContentEl,i,-1);break;case c.KEY_CODE.DOWN_ARROW:s(t,i.menuContentEl,i,1)}})});var t=function(t){function n(){e.$apply(function(){i.mdMenuCtrl.close()})}function o(e,t){if(!e)return!1;for(var n,o=0;n=t[o];++o)for(var r,i=[n,"data-"+n,"x-"+n],a=0;r=i[a];++a)if(e.hasAttribute(r))return!0;return!1}var r=t.target;do{if(r==i.menuContentEl[0])return;if(o(r,["ng-click","ng-href","ui-sref"])){r.hasAttribute("disabled")||n();break}}while(r=r.parentNode)};i.menuContentEl[0].addEventListener("click",t,!0);var o=i.menuContentEl[0].querySelector("[md-menu-focus-target]");return o||(o=i.menuContentEl[0].firstElementChild.firstElementChild),o.focus(),function(){n.removeClass("md-clickable"),i.backdrop.off("click"),i.menuContentEl.off("keydown"),i.menuContentEl[0].removeEventListener("click",t,!0)}}return l(i),d.inherit(i.menuContentEl,i.target),m(),i.disableParentScroll&&(i.restoreScroll=a.disableScrollAround(i.element)),i.backdrop&&(d.inherit(i.backdrop,i.parent),i.parent.append(i.backdrop)),u(),h.waitTransitionEnd(n,{timeout:370})["finally"](function(e){return i.cleanupInteraction=p(),e})}function s(e,t,n,o){for(var r=a.getClosest(e.target,"MD-MENU-ITEM"),i=a.nodesToArray(t[0].children),d=i.indexOf(r),c=d+o;c>=0&&c
',compile:n}}t.module("material.components.progressCircular",["material.core"]).directive("mdProgressCircular",e),e.$inject=["$mdConstant","$mdTheming"]}(),function(){function e(e,o,r){function i(e,t,n){return e.attr("aria-valuemin",0),e.attr("aria-valuemax",100),e.attr("role","progressbar"),a}function a(i,a,c){r(a);var l=a[0].querySelector(".md-bar1").style,m=a[0].querySelector(".md-bar2").style,s=t.element(a[0].querySelector(".md-container"));c.$observe("value",function(e){if("query"!=c.mdMode){var t=d(e);a.attr("aria-valuenow",t),m[o.CSS.TRANSFORM]=n[t]}}),c.$observe("mdBufferValue",function(e){l[o.CSS.TRANSFORM]=n[d(e)]}),e(function(){s.addClass("md-ready")})}function d(e){return e>100?100:0>e?0:Math.ceil(e||0)}return{restrict:"E",template:'
',compile:i}}t.module("material.components.progressLinear",["material.core"]).directive("mdProgressLinear",e),e.$inject=["$$rAF","$mdConstant","$mdTheming"];var n=function(){function e(e){var t=e/100,n=(e-100)/2;return"translateX("+n.toString()+"%) scale("+t.toString()+", 1)"}for(var t=new Array(101),n=0;101>n;n++)t[n]=e(n);return t}()}(),function(){function e(e,n,o,r){function i(i,a,d,c){function l(){a.hasClass("md-focused")||a.addClass("md-focused")}function m(o){var r=o.which||o.keyCode;switch(r){case n.KEY_CODE.LEFT_ARROW:case n.KEY_CODE.UP_ARROW:o.preventDefault(),s.selectPrevious(),l();break;case n.KEY_CODE.RIGHT_ARROW:case n.KEY_CODE.DOWN_ARROW:o.preventDefault(),s.selectNext(),l();break;case n.KEY_CODE.ENTER:var i=t.element(e.getClosest(a[0],"form"));i.length>0&&i.triggerHandler("submit")}}o(a);var s=c[0],u=c[1]||e.fakeNgModel();s.init(u),i.mouseActive=!1,a.attr({role:"radiogroup",tabIndex:a.attr("tabindex")||"0"}).on("keydown",m).on("mousedown",function(e){i.mouseActive=!0,r(function(){i.mouseActive=!1},100)}).on("focus",function(){i.mouseActive===!1&&s.$element.addClass("md-focused")}).on("blur",function(){s.$element.removeClass("md-focused")})}function a(e){this._radioButtonRenderFns=[],this.$element=e}function d(){return{init:function(e){this._ngModelCtrl=e,this._ngModelCtrl.$render=t.bind(this,this.render)},add:function(e){this._radioButtonRenderFns.push(e)},remove:function(e){var t=this._radioButtonRenderFns.indexOf(e);-1!==t&&this._radioButtonRenderFns.splice(t,1)},render:function(){this._radioButtonRenderFns.forEach(function(e){e()})},setViewValue:function(e,t){this._ngModelCtrl.$setViewValue(e,t),this.render()},getViewValue:function(){return this._ngModelCtrl.$viewValue},selectNext:function(){return c(this.$element,1)},selectPrevious:function(){return c(this.$element,-1)},setActiveDescendant:function(e){this.$element.attr("aria-activedescendant",e)}}}function c(n,o){var r=e.iterator(n[0].querySelectorAll("md-radio-button"),!0);if(r.count()){var i=function(e){return!t.element(e).attr("disabled")},a=n[0].querySelector("md-radio-button.md-checked"),d=r[0>o?"previous":"next"](a,i)||r.first();t.element(d).triggerHandler("click")}}return a.prototype=d(),{restrict:"E",controller:["$element",a],require:["mdRadioGroup","?ngModel"],link:{pre:i}}}function n(e,t,n){function o(o,i,a,d){function c(e){i[0].hasAttribute("disabled")||o.$apply(function(){d.setViewValue(a.value,e&&e.type)})}function l(){var e=d.getViewValue()==a.value;e!==s&&(s=e,i.attr("aria-checked",e),e?(i.addClass(r),d.setActiveDescendant(i.attr("id"))):i.removeClass(r))}function m(n,o){function r(){return a.id||"radio_"+t.nextUid()}o.ariaId=r(),n.attr({id:o.ariaId,role:"radio","aria-checked":"false"}),e.expectWithText(n,"aria-label")}var s;n(i),m(i,o),d.add(l),a.$observe("value",l),i.on("click",c).on("$destroy",function(){d.remove(l)})}var r="md-checked";return{restrict:"E",require:"^mdRadioGroup",transclude:!0,template:'
',link:o}}t.module("material.components.radioButton",["material.core"]).directive("mdRadioGroup",e).directive("mdRadioButton",n),e.$inject=["$mdUtil","$mdConstant","$mdTheming","$timeout"],n.$inject=["$mdAria","$mdUtil","$mdTheming"]}(),function(){function e(e,o,r,i,a,d,c){function l(a,l){var m=t.element("");if(m.append(''),m.addClass("md-select-value"),m[0].hasAttribute("id")||m.attr("id","select_value_label_"+o.nextUid()),a.find("md-content").length||a.append(t.element("").append(a.contents())),l.mdOnOpen&&a.find("md-content").prepend(t.element("").attr("md-mode","indeterminate").attr("ng-hide","$$loadingAsyncDone").wrap("
").parent()),l.name){var s=t.element(',