VE Lua Documentation

Press F to search!

init

Definition


-- @/lua/vehicle/powertrain.lua:412

local function init()
  M.update = nop

  M.cumulativeGearRatio = 0
  M.engineData = {}
  --warningState = {}

  orderedDevices = {}
  powertrainDevices = {}
  breakTriggerBeams = {}
  breakTriggerBeamLookup = {}

  deviceCount = 0
  dummyShaftCounter = 0
  engineSoundIDCounter = -1
  deviceFactories = {}

  M.currentGravity = obj:getGravity()
  M.invCurrentGravity = 1 / M.currentGravity
  M.currentEnvTemperature = obj:getEnvTemperature()
  M.invCurrentEnvTemperature = 1 / M.currentEnvTemperature
  M.currentEnvTemperatureCelsius = M.currentEnvTemperature - 273.15
  M.invCurrentEnvTemperatureCelsius = 1 / M.currentEnvTemperatureCelsius
  M.currentEnvPressure = obj:getEnvPressure()
  M.invCurrentEnvPressure = 1 / M.currentEnvPressure

  if not availableDeviceFactories then
    availableDeviceFactories = {}
    local globalDirectory = "lua/vehicle/powertrain"
    local vehicleDirectory = vehiclePath .. "lua/powertrain"
    local globalFiles = FS:findFiles(globalDirectory, "*.lua", -1, true, false)
    local vehicleFiles = FS:findFiles(vehicleDirectory, "*.lua", -1, true, false)
    local files = arrayConcat(globalFiles, vehicleFiles)

    if files then
      for _, filePath in ipairs(files) do
        local _, file, _ = path.split(filePath)
        local fileName = file:sub(1, -5)
        if not factoryBlackList[fileName] then
          local deviceFactoryPath = "powertrain/" .. fileName
          availableDeviceFactories[fileName] = deviceFactoryPath
        end
      end
    else
      log("E", "powertrain.init", "Can't load powertrain device factories, looking for directory: " .. tostring(globalDirectory))
    end
  end

  --TODO FIXME: This is a hack to get the combustionEngineMF working
  availableDeviceFactories["combustionEngineMF"] = "powertrain/combustionEngineMF/combustionEngineMF"

  --dump(availableDeviceFactories)

  M.wheels = {}
  for i = 0, wheels.wheelRotatorCount - 1 do
    local wheel = wheels.wheelRotators[i]
    M.wheels[wheel.name] = wheel
  end

  if v.data.powertrain then
    local count = tableSize(v.data.powertrain)
    if count <= 0 then
      log("W", "powertrain.init", "Found empty powertrain section. Aborting powertrain init!")
      return
    end

    local deviceLookup = {}
    deviceJbeamData = {}
    for _, jbeamData in pairs(deepcopy(v.data.powertrain)) do
      tableMergeRecursive(jbeamData, v.data[jbeamData.name] or {})

      --we need these during the tree building, so we need to init them right now
      jbeamData.gearRatio = jbeamData.gearRatio or 1
      jbeamData.cumulativeGearRatio = jbeamData.gearRatio
      --all devices start out as physically disconnected, when we walk through the tree later we can see which actually are connected
      jbeamData.isPhysicallyDisconnected = true

      if availableDeviceFactories[jbeamData.type] and not deviceFactories[jbeamData.type] then
        local deviceFactory = require(availableDeviceFactories[jbeamData.type])
        deviceFactories[jbeamData.type] = deviceFactory
      end

      --load our actual device via the device factory
      if deviceFactories[jbeamData.type] then
        local device = deviceFactories[jbeamData.type].new(jbeamData)
        device.uiName = jbeamData.uiName or device.name
        device.uiSimpleModeControl = jbeamData.uiSimpleModeControl == nil and true or jbeamData.uiSimpleModeControl
        if type(jbeamData.visualPositionRelativeParent) == "table" and tableSize(jbeamData.visualPositionRelativeParent) == 3 then
          device.visualPositionRelativeParent = {
            x = jbeamData.visualPositionRelativeParent[1],
            y = jbeamData.visualPositionRelativeParent[2],
            z = jbeamData.visualPositionRelativeParent[3]
          }
        end
        if type(jbeamData.visualPositionRelativeChildren) == "table" and tableSize(jbeamData.visualPositionRelativeChildren) > 0 then
          for _, childRelativePosition in pairs(jbeamData.visualPositionRelativeChildren) do
            device.visualPositionRelativeChildren = device.visualPositionRelativeChildren or {}
            local pos = {}
            if tableSize(childRelativePosition) == 3 then
              pos = {
                x = childRelativePosition[1],
                y = childRelativePosition[2],
                z = childRelativePosition[3]
              }
            end

            table.insert(device.visualPositionRelativeChildren, pos)
          end
        end
        deviceLookup[device.name] = device
        deviceJbeamData[device.name] = jbeamData
      else
        log("E", "powertrain.init", "Found unknown powertrain device type: " .. jbeamData.type)
        log("E", "powertrain.init", "Powertrain will not work!")
        return
      end
    end

    --dump(deviceFactories)
    local devicesSorted = tableKeysSorted(deviceLookup)

    for _, deviceName in ipairs(devicesSorted) do
      local device = deviceLookup[deviceName]
      if device.name == device.inputName then
        log("E", "powertrain.init", "You can't link a device to itself. Device name: " .. device.name)
        log("E", "powertrain.init", "Powertrain will not work!")
        return
      end
      if deviceLookup[device.inputName] then
        deviceLookup[device.inputName].children = deviceLookup[device.inputName].children or {}
        device.parent = deviceLookup[device.inputName]
        table.insert(deviceLookup[device.inputName].children, device)
      end
    end

    for _, device in pairs(deviceLookup) do
      if not device.parent then
        buildDeviceTree(device)
      end
    end

    deviceCount = tableSize(powertrainDevices)

    local beamTriggers = {}
    beamBrokenEvents = {}
    wheelPropulsionDevices = {}

    for _, device in pairs(powertrainDevices) do
      device.parent = device.parent or {isFake = true, outputTorque0 = 0, outputTorque1 = 0, outputTorque2 = 0, deviceCategories = {}}
      device.parentOutputAVName = "outputAV" .. tostring(device.inputIndex)
      device.parentOutputTorqueName = "outputTorque" .. tostring(device.inputIndex)
      device.visualShaftAVName = device.visualShaftAVName or "inputAV"

      if device.breakTriggerBeam then
        if type(device.breakTriggerBeam) ~= "table" then
          device.breakTriggerBeam = {device.breakTriggerBeam}
        end
        for _, name in ipairs(device.breakTriggerBeam) do
          beamTriggers[name] = beamTriggers[name] or {}
          table.insert(beamTriggers[name], device.name)
        end
      end

      if device.beamBroke then
        table.insert(beamBrokenEvents, device.name)
      end

      device.deformGroups = {}
      device.deformGroupDamages = {}
      device.deformGroupLastDamages = {}

      local deviceJbeamDataKeysSorted = tableKeysSorted(deviceJbeamData[device.name] or {})
      for _, k in ipairs(deviceJbeamDataKeysSorted) do
        local v = deviceJbeamData[device.name][k]
        if k:sub(1, 12) == "deformGroups" then --check for magic prefix
          local delim = "_" --underscore is used as the delim (eg "deformGroups_turbo")
          if string.byte(k, 13) == 58 then --backwards compat for using : instead of _ for the delim
            delim = ":"
          end
          local splits = split(k, delim)
          if type(v) == "table" then
            local groupType = splits[2] or "main" --if no groupType is specified, use "main", this means that these are equivalent: "deformGroups": [] and "deformGroups_main":[]
            table.insert(device.deformGroups, {groupType = groupType, groupNames = v})
            device.deformGroupDamages[groupType] = 0
            device.deformGroupLastDamages[groupType] = 0
          end
        end
      end

      if device.deviceCategories.engine then
        local attachedWheels = M.getChildWheels(device)
        for _, wheel in ipairs(attachedWheels) do
          wheelPropulsionDevices[wheel.name] = device
        end
      end
    end

    for i = 1, deviceCount do
      local device = orderedDevices[i]
      if device.visualPositionRelativeParent and device.parent and device.parent.visualPosition and not device.visualPosition then
        device.visualPosition = {
          x = device.parent.visualPosition.x + device.visualPositionRelativeParent.x,
          y = device.parent.visualPosition.y + device.visualPositionRelativeParent.y,
          z = device.parent.visualPosition.z + device.visualPositionRelativeParent.z
        }
      end
    end

    for i = deviceCount, 1, -1 do
      local device = orderedDevices[i]
      if device.visualPositionRelativeChildren then
        for childIndex, childRelativePosition in ipairs(device.visualPositionRelativeChildren) do
          if tableSize(childRelativePosition) == 3 and device.children[childIndex] and device.children[childIndex].visualPosition then
            device.visualPosition = {
              x = device.children[childIndex].visualPosition.x + childRelativePosition.x,
              y = device.children[childIndex].visualPosition.y + childRelativePosition.y,
              z = device.children[childIndex].visualPosition.z + childRelativePosition.z
            }
            break
          end
        end
      end
    end

    --    for _,device in pairs(powertrainDevices) do
    --      print(device.name)
    --    end

    beamBrokenEventCount = #beamBrokenEvents

    validatePowertrain()
    calculateTreeInertia()

    --dump(beamTriggers)
    --dump(beamBrokenEvents)
    --    for k,v in pairs(powertrainDevices) do
    --      print(v.name)
    --      print(dumpsDeviceData(v))
    --    end
    --dump(speedOrderedDevices)

    for _, v in pairs(v.data.beams) do
      if v.name and v.name ~= "" and beamTriggers[v.name] then
        breakTriggerBeams[v.cid] = beamTriggers[v.name]
        breakTriggerBeamLookup[v.name] = v.cid
      end
    end

    --dump(breakTriggerBeams)
    --dump(breakTriggerBeamLookup)

    hasPowertrain = true
    canResetDevices = true
    for _, device in pairs(powertrainDevices) do
      local hasReset = device.reset ~= nil
      local hasResetSounds = device.initSounds ~= nil and device.resetSounds ~= nil or true
      canResetDevices = canResetDevices and hasReset and hasResetSounds

      damageTracker.setDamage("powertrain", device.name, device.isBroken or false)
    end

    if not tableIsEmpty(previousDeviceModes) then
      for k, v in pairs(previousDeviceModes) do
        powertrainDevices[k]:setMode(v)
      end
    end

    M.update = update

    --extensions.load("performanceLogger")

    sendDeviceTree()
  end

  M.torqueReactionCoefs = {}
  torqueReactionCoefs2 = {}
  torsionReactorCount = 0
  torsionReactorIndexes = {}
  for _, rotator in pairs(wheels.wheelRotators) do
    if rotator.torsionReactor then
      if not torsionReactorIndexes[rotator.torsionReactor.name] then
        torsionReactorCount = torsionReactorCount + 1
        torsionReactorIndexes[rotator.torsionReactor.name] = torsionReactorCount
      end

      local trIdx = torsionReactorIndexes[rotator.torsionReactor.name]
      rotator.torsionReactorIdx = trIdx
      torsionReactorList[trIdx] = rotator.torsionReactor
      M.torqueReactionCoefs[trIdx] = 0
      torqueReactionCoefs2[trIdx] = 0
    end
  end
end

Callers

@/lua/ge/extensions/flowgraph/nodes/gameplay/decalCircle.lua

function C:init()
  self.data.snapToTerrain = true
@/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/gameplay/markers/missionMarker.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
@/gameplay/missionTypes/cannon/customNodes/cannonBallTouchdownNode.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/logic/sequencer.lua

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

function C:init(mgr, ...)
end
@/lua/vehicle/controller/tech/mesh.lua
-- Initialises this sensor instance.
local function init(data)
    sensorId = data.sensorId
@/lua/vehicle/controller/gauges/customModules/environmentData.lua

local function init(jbeamData)
end
@/lua/ge/extensions/ui/ambientSound.lua
]]
local function init(json)
  if not FS:fileExists(json) then
@/lua/vehicle/controller/tech/advancedIMU.lua
-- Initialises this sensor instance.
local function init(data)
  state.sensorId = data.sensorId -- The unique Id (integer) for this sensor instance.
@/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/vehicleController/shiftLogic/manualGearbox.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/ge/extensions/editor/tech/roadArchitect/terraform.lua
  local bmp = GBitmap()
  bmp:init(xSize, ySize)
  bmp:allocateBitmap(xSize, ySize, false, "GFXFormatR16")
@/lua/ge/extensions/flowgraph/modules/trafficModule.lua

function C:init()
  self.trafficActive = false
@/gameplay/missionTypes/cannon/constructor.lua

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

function C:init(mgr, ...)
@/lua/vehicle/controller/tech/vehicleSystemsCoupling.lua
-- The controller initialisation function. This is called once when the controller is loaded, and sets up the UDP sockets for all future communication.
local function init(jbeamData)
  debugFile = jbeamData.debugFile
@/lua/ge/extensions/flowgraph/graph.lua

function C:init(mgr, name, forceId)
  self.mgr = mgr
  C.__index = C
  o:init(...)
  return o
@/gameplay/missionTypes/longjump/editor.lua

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

function C:init()
  self.vehicle = nil
@/gameplay/missionTypes/chase/customNodes/suspectDistanceNode.lua

function C:init()
  self:reset()
@/lua/ge/extensions/editor/sitesEditor/tags.lua

function C:init(sitesEditor, key)
  self.sitesEditor = sitesEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/core/cameraModes/path.lua

function C:init()
  self.isGlobal = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/extensions/api.lua
        log('E', "default.init", "INIT WEBSERVER TO PORT "..port)
        httpJsonServer.init(bindHost, port, handleServerRequest)
        inited = true
@/ui/lib/ext/angular/angular-animate.js

    return function init(element, initialOptions) {
      // all of the animation functions should create
@/lua/vehicle/controller/vehicleController/shiftLogic/sequentialGearbox.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/ge/extensions/flowgraph/nodes/environment/setScatterSky.lua

function C:init(mgr)
  self.data.restoreScatterSky = true
@/lua/vehicle/controller/hydraulics/closedLoopLinearControl.lua

local function init(jbeamData)
  cylinderPID = newPIDParallel(jbeamData.cylinderPIDKp or 0.5, jbeamData.cylinderPIDKi or 0.3, jbeamData.cylinderPIDKd or 0.01, -1, 1, 1000, 10, nil, nil, 0.01)
@/lua/ge/extensions/gameplay/rally/notebook/pacenote.lua

function C:init(notebook, name, forceId)
  self.notebook = notebook
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/vehicleStoppedNearPlane.lua

function C:init(mgr, ...)
  self.timer = 0
@/gameplay/missionTypes/rallyLoop/constructor.lua

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

function C:init()
  editor.registerWindow(self.windowName, im.ImVec2(150, 300), nil, false)
@/lua/ge/extensions/tech/terrainImporter.lua
  local bmp = GBitmap()
  bmp:init(bmpSize, bmpSize)
  bmp:allocateBitmap(bmpSize, bmpSize, false, "GFXFormatR16")
@/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/util/firstElement.lua

function C:init(mgr)
end
@/lua/ge/extensions/flowgraph/nodes/logic/flowSwitch.lua

function C:init(mgr, ...)
  self.on = false
@/gameplay/missionTypes/dragStripAPM/constructor.lua

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

local function init()
  initWheels()
@/lua/ge/extensions/core/cameraModes/collision.lua

function C:init()
  lastDistance = nil
function C:onVehicleSwitched()
  self:init()
end
  setmetatable(o, C)
  o:init()
  return o
@/gameplay/missions/west_coast_usa/chase/001-Goliath/script.lua

function C:init(data)
  data = data or {}
  C.__index = C
  o:init(...)
  return o
@/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/vehicle/controller/tech/roadsSensor.lua
-- Initialises this roads sensor instance.
local function init(data)
  sensorId = data.sensorId
@/lua/ge/extensions/flowgraph/nodes/career/getTutorialFlag.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/controllerByName.lua

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

local function init(jbeamData)
  name = jbeamData.name
@/lua/ge/extensions/editor/api/history.lua

function C:init()
  self.maxUndoLevels = defaultMaxUndoLevels
  C.__index = C
  o:init()
  return o
@/lua/ge/extensions/gameplay/markers/inspectVehicleMarker.lua

function C:init()
  self.id = idCounter
  C.__index = C
  o:init(...)
  return o
@/ui/lib/ext/angular-material-paging.js
    $scope.$watch('wmpTotal', function() {
      vm_paging.init();
    });
@/lua/ge/extensions/flowgraph/nodes/util/closestRoad.lua

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

local function init(jbeamData)
end
@/lua/ge/extensions/flowgraph/nodes/career/careerVehicleSelect.lua

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

function C:init()
  self.data.currentSum = 0
@/lua/ge/extensions/gameplay/rally/notebook/structured/visualCompositor.lua

function C:init(textCompositor)
  self.textCompositor = textCompositor
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/airplaneSurfaces.lua

local function init(jbeamData)
  electrics.values.rudder = 0
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/pursuitParams.lua

function C:init()
  self.vars = {}
@/gameplay/missionTypes/drift/customNodes/extractWaypointsNode.lua

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

function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/scene/singleMarker.lua

function C:init(mgr, ...)
  self.position = {}
@/lua/ge/extensions/core/cameraModes/manualzoom.lua

function C:init(fovDefault, fovMin, fovMax, uiTxt)
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/types/number.lua

function C:init()
  self.data.value = 0
@/ui/ui-vue/src/common/directives/BngOcclusionWatcher.js

function init() {
  if (initialised) return
  mounted: (el, { value }) => { // value is delay in ms
    if (!initialised) init()
    // remove old for safety
@/lua/ge/extensions/flowgraph/nodes/career/onMissionPromptShown.lua

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

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

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

function C:init()
  self.models = {}
@/lua/ge/extensions/flowgraph/modules/buttonModule.lua

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

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

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

function C:init()
  self.options = { "accept", "decline" }
@/gameplay/missionTypes/generatedTimeTrial/editor.lua

function C:init()
  self:addDecoHeader("Creating a Time Trial")
@/lua/ge/extensions/flowgraph/nodes/scene/hide.lua

function C:init()
@/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/flowgraph/modules/levelModule.lua

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

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

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

function C:init()
  self.models = {}
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/raceCpLapChange.lua
      self.markers = require('scenario/race_marker')
      self.markers.init()
      local wps = {}
@/lua/ge/extensions/gameplay/drift/general.lua

local function init()
  setContext("inFreeroam")
  if not firstUpdateFlag then
    init()
    firstUpdateFlag = true
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleMapData.lua

function C:init(mgr, ...)
end
@/lua/vehicle/controller/drivingDynamics/actuators/activeDiffLock.lua

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

function C:init()
  self.hoverInstance = nil
@/lua/ge/extensions/flowgraph/modules/cameraModule.lua

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

function C:init()
@/lua/ge/extensions/flowgraph/nodes/events/controlsReset.lua

function C:init(mgr, ...)
  self.reset = false
@/lua/ge/extensions/flowgraph/nodes/util/hideLoadingScreen.lua

function C:init()
  self.clearOutPinsOnStart = false
@/gameplay/missionTypes/scatterPickup/constructor.lua

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

function C:init(mgr)
  self.mgr = mgr
  end
  self.variables[name].mergeFuns.init(self.variables[name])
  return true
    self.variables[name].mergeFuns.finalize(self.variables[name])
    self.variables[name].mergeFuns.init(self.variables[name])
  end
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/debug/debugSphere.lua

function C:init()
end
@/lua/ge/extensions/flowgraph/nodes/vehicle/special/customVlua_string.lua

function C:init()
  self.data.func = self.pinIn.customLUAString.value
@/lua/vehicle/controller/drivingDynamics/actuators/activeCenterDiffLock.lua

local function init(jbeamData)
  M.isActing = false
@/lua/ge/extensions/core/cameraModes/transition.lua

function C:init()
  self.isGlobal = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/scriptAI/pathStored.lua

function C:init()
  self.aiPath = {}
@/ui/ui-vue/src/services/uiNavFocus.js

function init() {
  if (inited) return
  // init if not done that yet
  if (!inited) init()
  // modify or create
@/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/builder.lua

function C:init()
  self.CurrentNodeId = 0 -- NodeId
  setmetatable(o, C)
  o:init()
  return o
@/gameplay/missionTypes/delivery/editor.lua

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

local function init()
  damageData = {}
@/lua/ge/extensions/career/modules/painting.lua
    camData.orbit:setDefaultRotation(previousDefaultRotation)
    camData.orbit:init()
  end
@/lua/vehicle/controller/propAnimation/sequentialLever.lua

local function init(jbeamData)
  electricsNameYAxis = jbeamData.electricsNameYAxis or "sequentialLeverY"
@/lua/ge/extensions/gameplay/drift/stuntZones/nearPole.lua

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

-- function C:init()
-- end
@/lua/ge/extensions/scenario/raceMarkers/crawlMarker.lua

function C:init(id)
  self.id = id
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/rally/vehicleTracker.lua

function C:init(damageThreshold)
  -- log('D', logTag, 'VehicleTracker init')
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/tech/capturePlayer.lua
  local bitmap = GBitmap()
  bitmap:init(size[1], size[2], true)
  bitmap:fromBuffer(data)
@/gameplay/missionTypes/precisionParking/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/racePacenoteReached.lua

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

function C:init(fname)
  self.fname = fname
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/sensors.lua

local function init()
  M.ffiSensors = obj:getSensorsFFI()
@/lua/ge/extensions/gameplay/rally/tools/devTools.lua

function C:init()
  -- self:_reset()
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/vehicle/bus/busControls.lua

function C:init()
  self.pinOut.isKneeling.value = false
@/lua/ge/extensions/editor/crawlEditor/trails.lua

function C:init()
  self.currentTab = "paths"
  C.__index = C
  o:init(...)
  return o
@/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/vehicle/touchingProps.lua

function C:init(mgr, ...)
@/lua/ge/extensions/core/cameraModes/autopoint.lua

function C:init()
  self.isFilter = true
  setmetatable(o, 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/flowgraph/nodes/vehicle/spawnVehicle.lua

function C:init()
  self.state = 1
@/lua/ge/extensions/gameplay/rally/loop/speedingDetector.lua

function C:init(manager)
  self.manager = manager
  C.__index = C
  o:init(...)
  return o
@/gameplay/missionTypes/collection/constructor.lua

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

function C:init()
  self.data.from = 0
@/lua/ge/extensions/flowgraph/nodes/ui/endScreen.lua

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

function C:init()
@/lua/vehicle/controller/drivingDynamics/supervisors/tractionControl.lua

local function init(jbeamData)
  slipProviders = {}
@/lua/ge/extensions/flowgraph/nodes/timetrials/onRaceCheckpoint.lua

function C:init(mgr, ...)
  self.enterFlag = false
@/lua/ge/extensions/flowgraph/nodes/vehicle/recoverInPlace.lua

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

function C:init()
  self.started = false
@/lua/vehicle/controller/pneumatics/actuators.lua

local function init(jbeamData)
  local airTankName = jbeamData.airTankName or "mainAirTank"
@/lua/ge/extensions/flowgraph/nodes/vehicle/playerUsable.lua
}
function C:init()
@/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/vehicle/beamstate/beamstate.lua

function C:init()
  self.functions = {
@/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/vehicle/controller/braking/compressionBrake.lua

local function init(jbeamData)
  local engineName = jbeamData.controlledEngine or "mainEngine"
@/lua/ge/extensions/scenario/raceMarkers/attention.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/flowgraph/nodes/ui/fadeFromBlack.lua

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

function C:init()
  self:onNodeReset()
@/lua/ge/extensions/flowgraph/nodes/gameplay/vehiclePool/createPool.lua

function C:init()
  self:onNodeReset()
@/lua/vehicle/protocols/outgauge.lua
local hasShiftLights = false
local function init()
  local shiftLightControllers = controller.getControllersByType("shiftLights")
@/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/ge/extensions/editor/crawlEditor/boundaries.lua

function C:init(crawlEditorParam)
  self.crawlEditor = crawlEditorParam
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/vehicleController/shiftLogic/cvtGearbox.lua

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

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

function C:init()
  self:reset()
@/lua/ge/extensions/flowgraph/modules/missionReplayModule.lua

function C:init()
  self.replayRecording = false
@/lua/ge/extensions/editor/rallyEditor/recceTab.lua

function C:init(rallyEditor)
  self.path = nil
  C.__index = C
  o:init(...)
  return o
@/gameplay/missionTypes/generatedTimeTrial/constructor.lua

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

function C:init()
  self.data.fun = functions[1].fun
@/gameplay/missionTypes/dragStripRace/editor.lua

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

function C:init()
  self:clear()
@/lua/ge/extensions/editor/toolUtilities/splineMaskExport.lua
  local bmp = GBitmap()
  bmp:init(xSize, ySize)
  bmp:allocateBitmap(xSize, ySize, false, "GFXFormatR16")
@/lua/vehicle/controller/powertrainControl/antiLag.lua

local function init(jbeamData)
  local engineName = jbeamData.controlledEngine or "mainEngine"
@/gameplay/missionTypes/cannon/editor.lua

function C:init()
  self:addDecoText("Only useful to draw the blue arrows during the start screen, to show the convoy's path")
@/lua/ge/extensions/flowgraph/nodes/debug/miniGraph.lua

function C:init()
  self.inputLabels = {}
@/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/flowgraph/nodes/util/getMapObjectsDynField.lua

function C:init(mgr)
@/lua/vehicle/powertrain.lua
    log("W", "powertrain.reset", "One or more powertrain devices do not support dedicated reset, using full init instead!")
    init()
    return
@/lua/ge/extensions/flowgraph/nodes/vehicle/flipUpright.lua

function C:init()
  --self.data.useWheelCenter = false
@/lua/ge/extensions/flowgraph/nodes/mission/UpdateDisplayDragRace.lua

function C:init()
  self.pinOut.flow.value = false
@/lua/ge/extensions/editor/raceEditor/segments.lua

function C:init(raceEditor)
  self.raceEditor = raceEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/gameplay/traffic/roles/police.lua

function C:init()
  self.class = 'emergency'
@/lua/ge/extensions/flowgraph/nodes/vehicle/touching.lua

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

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/gameplay/race/moveVehicleToStartposition.lua

function C:init(mgr, ...)
  self.path = nil
@/lua/ge/extensions/gameplay/rally/driveline/drivelineV3.lua

function C:init(missionDir)
  self.missionDir = missionDir
  C.__index = 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/ui/flashMessage.lua

function C:init()
  self.helper = require('scenario/scenariohelper')
@/lua/ge/extensions/gameplay/route/route.lua

function C:init()
  self.path = {}
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/core/cameraModes/smooth.lua

function C:init(spring, damp, pos)
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/ui/ui-vue/src/main.js
// initialise systemInfo service
SysInfo.init()
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/handleLapChange.lua

-- function C:init()
-- end
@/lua/ge/extensions/flowgraph/nodes/vehicle/boost.lua

function C:init()
  self.loaded = false
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/vehicleStoppedNearPos.lua

function C:init(mgr, ...)
  self.timer = 0
@/lua/ge/extensions/flowgraph/nodes/string/stringconcat.lua

function C:init()
  self.pinOut.value.value = ""
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/fileTrafficSignals.lua

function C:init()
  self.signalsData = nil
@/lua/ge/extensions/editor/assetBrowser.lua
    local bitmap = GBitmap()
    bitmap:init(var.meshPreviewCacheThumbnailSize,var.meshPreviewCacheThumbnailSize)
    shapePrev:copyToBmp(bitmap:getPtr())
    local bitmap = GBitmap()
    bitmap:init(var.meshPreviewCacheThumbnailSize,var.meshPreviewCacheThumbnailSize)
    shapePrev:copyToBmp(bitmap:getPtr())
@/lua/ge/extensions/flowgraph/nodes/math/smoothers/nonLinear.lua

function C:init()
  C.oldSet = 0
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/posInZone.lua

function C:init(mgr, ...)
end
@/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/ge/extensions/flowgraph/nodes/scene/camera/startCamPath.lua
C.icon = ui_flowgraph_editor.nodeIcons.camera
function C:init()
end
@/lua/ge/extensions/flowgraph/nodes/gameplay/crawl/getDynamicObjects.lua

function C:init(mgr)
  self.bridge = require('ge/extensions/gameplay/crawl/flowgraphBridge')
@/lua/ge/extensions/flowgraph/nodes/ui/imgui/elemental/imBegin.lua

function C:init()
  self.done = false
@/lua/ge/extensions/flowgraph/nodes/debug/debugPrism.lua

function C:init()
end
@/lua/ge/extensions/core/cameraModes/crash.lua

function C:init()
  self.camMode = 1
  setmetatable(o, C)
  o:init()
  return o
@/lua/vehicle/controller/vehicleController/shiftLogic/automaticGearbox.lua

local function init(jbeamData, sharedFunctionTable)
  sharedFunctions = sharedFunctionTable
@/lua/ge/extensions/editor/raceEditor/startPositions.lua

function C:init(raceEditor)
  self.raceEditor = raceEditor
  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/baseModule.lua

function C:init(mgr)
  self.mgr = mgr
  C.__index = C
  o:init(...)
  return o
  if o.init ~= baseInit then
    o:init()
  end
@/lua/common/luaProfiler.lua
-- constructor; title is only displayed in logs, can be used to differentiate between different profilers running at the same time
function C:init(title)
  self.title = title
  setmetatable(o, C)
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/controller.lua

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

function C:init(missionDir)
  self.missionDir = missionDir
  C.__index = C
  o:init(...)
  return o
@/gameplay/missionTypes/simpleLapconfigScenario/constructor.lua

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

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

local function init(jbeamData)
  M.isActing = false
@/lua/ge/extensions/flowgraph/nodes/career/addToInventory.lua

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

local function init(jbeamData)
end
@/lua/ge/extensions/flowgraph/nodes/logic/once.lua

function C:init(mgr, ...)
  self.ready = true
@/gameplay/missionTypes/aiRace/constructor.lua

function C:init()
  self.supportsReplay = true
@/lua/ge/extensions/flowgraph/nodes/scene/customLuaCommand.lua

function C:init()
  self.clearOutPinsOnStart = false
@/lua/ge/extensions/flowgraph/nodes/vehicle/isPlayerUsable.lua
}
function C:init()
@/ui/lib/int/colorpicker/color.js

      function init() {
        // console.log($scope.paintNumber)

      init()
    }
@/lua/vehicle/controller/braking/transbrake.lua

local function init(jbeamData)
  local gearboxName = jbeamData.gearboxName or "gearbox"
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficActivate.lua

function C:init()
  self:onNodeReset()
@/lua/vehicle/controller/tech/powertrainSensor.lua
-- Initialises this powertrain sensor instance.
local function init(data)
  sensorId = data.sensorId
@/lua/ge/extensions/flowgraph/nodes/vehicle/toShowroom.lua

function C:init() end
@/lua/ge/extensions/flowgraph/nodes/mission/getCustomVehicleData.lua

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

function C:init()
  self.mode = 'settings'
@/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/career/onRefueling.lua

function C:init()
  self.flags = {}
@/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/gameplay/traffic/roles/suspect.lua

function C:init()
  self.personalityModifiers = {
@/lua/ge/extensions/editor/missionEditor/progressMulti.lua

function C:init(missionEditor)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/powertrain/turbocharger.lua

local function init(device, jbeamData)
  turbo = deepcopy(jbeamData)
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/scriptAI/pathFromFile.lua

function C:init()
   self.files = FS:findFiles(trackFilePath, '*' .. trackFileExt, -1, true, false)
@/lua/ge/extensions/flowgraph/nodes/events/onUpdate.lua

function C:init(mgr, ...)
end
@/lua/ge/extensions/scenario/damageGoal.lua

local function init(scenario)
  M.instances = {}
@/lua/ge/extensions/flowgraph/nodes/types/getVariable.lua
C.hidden = true
function C:init()
  self.varName = nil
@/lua/vehicle/beamstate.lua

local function init()
  M.damage = 0
local function reset()
  init()
  M.lowpressure = false
@/lua/vehicle/controller/beamNavigator.lua

local function init(jbeamData)
  screenMaterialName = jbeamData.screenMaterialName or "@screen_gps"
@/lua/ge/extensions/gameplay/rally/driveline/drivelineRoute.lua

function C:init()
  -- callbacks. not all may be used.
  C.__index = C
  o:init(...)
  return o
@/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/getGearboxMode.lua

function C:init()
  self:onNodeReset()
@/gameplay/missions/industrial/flowgraph/001-King/constructor.lua

function C:init()
  self.defaultAggregateValues = {
return function()
  C:init()
  return C
@/gameplay/missionTypes/evade/customNodes/multiVehicleLuaNode.lua

function C:init()
  self.data.ignoreUndrivableVehicles = true
@/lua/ge/extensions/flowgraph/nodes/math/vector/split.lua

function C:init()
end
@/lua/ge/extensions/core/cameraModes/handheld.lua

function C:init(spring, damping, rotspring)
  self.isFilter = true
  setmetatable(o, C)
  o:init()
  return o
@/lua/ge/extensions/flowgraph/nodes/ui/buttons/getMultipleButtons.lua

function C:init()
  self.count = 1
@/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/ge/extensions/flowgraph/nodes/vehicle/fire/fire.lua

function C:init()
  self.functions = {
@/lua/ge/extensions/editor/rallyEditor/testTab.lua

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

function C:init()
@/lua/ge/extensions/flowgraph/nodes/events/onBeamNGTrigger.lua

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

function C:init()
  self.filter = im.ImGuiTextFilterPtr()
@/gameplay/missionTypes/collection/customNodes/collectionMarkersNode.lua

function C:init(mgr)
  self.mgr.markerData = nil
@/lua/ge/extensions/flowgraph/nodes/career/garageComputerUtil.lua

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

function C:init(mgr, ...)
  self.data.resetTimer = 1
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalPath.lua

function C:init()
end
@/lua/ge/extensions/flowgraph/modules/uiModule.lua

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

function C:init(mgr, ...)
  self.reset = false
@/lua/ge/extensions/flowgraph/nodes/input/blacklistActionFilter.lua

function C:init()
  self.activeTemplates = {}
@/lua/vehicle/controller/drivingDynamics/sensors/sensorHub.lua

local function init(jbeamData)
  M.gravity = obj:getGravity()
@/lua/ge/extensions/flowgraph/nodes/career/completeLinearTutorialStep.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/scene/storeStatics.lua

function C:init(mgr, ...)
  self.objects = {}
@/gameplay/missionTypes/chase/constructor.lua

function C:init()
  self.supportsReplay = true
@/gameplay/missionTypes/rallyRoadSection/constructor.lua

function C:init()
  self.latestVersion = version
@/gameplay/missionTypes/evade/customNodes/getClosestTrafficNode.lua

function C:init()
  self.pos = vec3()
@/lua/ge/extensions/flowgraph/nodes/vehicle/setLightbar.lua

function C:init()
@/lua/ge/extensions/flowgraph/nodes/mission/selectHeistMissionSpots.lua

function C:init()
  self.spots = {}
@/lua/vehicle/bdebugImpl.lua

local function init(savedState, newPartialState)
  log('D', 'bdebugImpl.init', 'init')
@/lua/ge/extensions/flowgraph/nodes/debug/multiFlow.lua
C.tags = {'util'}
function C:init()
  self.data.logOnWork = false
@/lua/ge/extensions/flowgraph/nodes/util/roadSegment.lua

function C:init()
  self._n1, self._n2 = nil, nil
@/ui/lib/ext/angular-toastr.tpls.min.js
!function(){"use strict";function t(t,e,s,n,o,r,a){function i(t){if(1!==arguments.length||t)if(t)g(t.toastId);else for(var e=0;e=e&&O[e-1].open.resolve(),o()&&(h.remove(),h=null,B=a.defer())}))}function d(t,e,s,n){return angular.isObject(s)&&(n=s,s=null),v({iconClass:t,message:e,optionsOverride:n,title:s})}function m(){return angular.extend({},r)}function f(e){if(h)return B.promise;h=angular.element("
"),h.attr("id",e.containerId),h.addClass(e.positionClass),h.css({"pointer-events":"auto"});var s=angular.element(document.querySelector(e.target));if(!s||!s.length)throw"Target for toasts doesn't exist";return t.enter(h,s).then(function(){B.resolve()}),B.promise}function v(s){function r(){return d.autoDismiss&&d.maxOpened&&O.length>d.maxOpened}function i(t,e,s){function n(e){return s[e]?function(){s[e](t)}:void 0}s.allowHtml?(t.scope.allowHtml=!0,t.scope.title=o.trustAsHtml(e.title),t.scope.message=o.trustAsHtml(e.message)):(t.scope.title=e.title,t.scope.message=e.message),t.scope.toastType=t.iconClass,t.scope.toastId=t.toastId,t.scope.extraData=s.extraData,t.scope.options={extendedTimeOut:s.extendedTimeOut,messageClass:s.messageClass,onHidden:s.onHidden,onShown:n("onShown"),onTap:n("onTap"),progressBar:s.progressBar,tapToDismiss:s.tapToDismiss,timeOut:s.timeOut,titleClass:s.titleClass,toastClass:s.toastClass},s.closeButton&&(t.scope.options.closeHtml=s.closeHtml)}function l(){function t(t){for(var e=["containerId","iconClasses","maxOpened","newestOnTop","positionClass","preventDuplicates","preventOpenDuplicates","templates"],s=0,n=e.length;n>s;s++)delete t[e[s]];return t}var e={toastId:C++,isOpened:!1,scope:n.$new(),open:a.defer()};return e.iconClass=s.iconClass,s.optionsOverride&&(angular.extend(d,t(s.optionsOverride)),e.iconClass=s.optionsOverride.iconClass||e.iconClass),i(e,s,d),e.el=c(e.scope),e}function c(t){var s=angular.element("
"),n=e.get("$compile");return n(s)(t)}function u(){return d.maxOpened&&O.length<=d.maxOpened||!d.maxOpened}function p(){var t=d.preventDuplicates&&s.message===w,e=d.preventOpenDuplicates&&T[s.message];return t||e?!0:(w=s.message,T[s.message]=!0,!1)}var d=m();if(!p()){var v=l();if(O.push(v),r())for(var B=O.slice(0,O.length-d.maxOpened),x=0,$=B.length;$>x;x++)g(B[x].toastId);return u()&&v.open.resolve(),v.open.promise.then(function(){f(d).then(function(){if(v.isOpened=!0,d.newestOnTop)t.enter(v.el,h).then(function(){v.scope.init()});else{var e=h[0].lastChild?angular.element(h[0].lastChild):null;t.enter(v.el,h,e).then(function(){v.scope.init()})}})}),v}}var h,C=0,O=[],w="",T={},B=a.defer(),x={clear:i,error:l,info:c,remove:g,success:u,warning:p};return x}angular.module("toastr",[]).factory("toastr",t),t.$inject=["$animate","$injector","$document","$rootScope","$sce","toastrConfig","$q"]}(),function(){"use strict";angular.module("toastr").constant("toastrConfig",{allowHtml:!1,autoDismiss:!1,closeButton:!1,closeHtml:"",containerId:"toast-container",extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},maxOpened:0,messageClass:"toast-message",newestOnTop:!0,onHidden:null,onShown:null,onTap:null,positionClass:"toast-top-right",preventDuplicates:!1,preventOpenDuplicates:!1,progressBar:!1,tapToDismiss:!0,target:"body",templates:{toast:"directives/toast/toast.html",progressbar:"directives/progressbar/progressbar.html"},timeOut:5e3,titleClass:"toast-title",toastClass:"toast"})}(),function(){"use strict";function t(t){function e(t,e,s,n){function o(){var t=(i-(new Date).getTime())/a*100;e.css("width",t+"%")}var r,a,i;n.progressBar=t,t.start=function(t){r&&clearInterval(r),a=parseFloat(t),i=(new Date).getTime()+a,r=setInterval(o,10)},t.stop=function(){r&&clearInterval(r)},t.$on("$destroy",function(){clearInterval(r)})}return{replace:!0,require:"^toast",templateUrl:function(){return t.templates.progressbar},link:e}}angular.module("toastr").directive("progressBar",t),t.$inject=["toastrConfig"]}(),function(){"use strict";function t(){this.progressBar=null,this.startProgressBar=function(t){this.progressBar&&this.progressBar.start(t)},this.stopProgressBar=function(){this.progressBar&&this.progressBar.stop()}}angular.module("toastr").controller("ToastController",t)}(),function(){"use strict";function t(t,e,s,n){function o(s,o,r,a){function i(t){return a.startProgressBar(t),e(function(){a.stopProgressBar(),n.remove(s.toastId)},t,1)}function l(){s.progressBar=!1,a.stopProgressBar()}function c(){return s.options.closeHtml}var u;if(s.toastClass=s.options.toastClass,s.titleClass=s.options.titleClass,s.messageClass=s.options.messageClass,s.progressBar=s.options.progressBar,c()){var p=angular.element(s.options.closeHtml),g=t.get("$compile");p.addClass("toast-close-button"),p.attr("ng-click","close(true, $event)"),g(p)(s),o.prepend(p)}s.init=function(){s.options.timeOut&&(u=i(s.options.timeOut)),s.options.onShown&&s.options.onShown()},o.on("mouseenter",function(){l(),u&&e.cancel(u)}),s.tapToast=function(){angular.isFunction(s.options.onTap)&&s.options.onTap(),s.options.tapToDismiss&&s.close(!0)},s.close=function(t,e){e&&angular.isFunction(e.stopPropagation)&&e.stopPropagation(),n.remove(s.toastId,t)},o.on("mouseleave",function(){(0!==s.options.timeOut||0!==s.options.extendedTimeOut)&&(s.$apply(function(){s.progressBar=s.options.progressBar}),u=i(s.options.extendedTimeOut))})}return{replace:!0,templateUrl:function(){return s.templates.toast},controller:"ToastController",link:o}}angular.module("toastr").directive("toast",t),t.$inject=["$injector","$interval","toastrConfig","toastr"]}(),angular.module("toastr").run(["$templateCache",function(t){t.put("directives/progressbar/progressbar.html",'
\n'),t.put("directives/toast/toast.html",'
\n
\n
{{title}}
\n
{{message}}
\n
\n
\n
\n \n
\n')}]);
!function(){"use strict";function t(t,e,s,n,o,r,a){function i(t){if(1!==arguments.length||t)if(t)g(t.toastId);else for(var e=0;e=e&&O[e-1].open.resolve(),o()&&(h.remove(),h=null,B=a.defer())}))}function d(t,e,s,n){return angular.isObject(s)&&(n=s,s=null),v({iconClass:t,message:e,optionsOverride:n,title:s})}function m(){return angular.extend({},r)}function f(e){if(h)return B.promise;h=angular.element("
"),h.attr("id",e.containerId),h.addClass(e.positionClass),h.css({"pointer-events":"auto"});var s=angular.element(document.querySelector(e.target));if(!s||!s.length)throw"Target for toasts doesn't exist";return t.enter(h,s).then(function(){B.resolve()}),B.promise}function v(s){function r(){return d.autoDismiss&&d.maxOpened&&O.length>d.maxOpened}function i(t,e,s){function n(e){return s[e]?function(){s[e](t)}:void 0}s.allowHtml?(t.scope.allowHtml=!0,t.scope.title=o.trustAsHtml(e.title),t.scope.message=o.trustAsHtml(e.message)):(t.scope.title=e.title,t.scope.message=e.message),t.scope.toastType=t.iconClass,t.scope.toastId=t.toastId,t.scope.extraData=s.extraData,t.scope.options={extendedTimeOut:s.extendedTimeOut,messageClass:s.messageClass,onHidden:s.onHidden,onShown:n("onShown"),onTap:n("onTap"),progressBar:s.progressBar,tapToDismiss:s.tapToDismiss,timeOut:s.timeOut,titleClass:s.titleClass,toastClass:s.toastClass},s.closeButton&&(t.scope.options.closeHtml=s.closeHtml)}function l(){function t(t){for(var e=["containerId","iconClasses","maxOpened","newestOnTop","positionClass","preventDuplicates","preventOpenDuplicates","templates"],s=0,n=e.length;n>s;s++)delete t[e[s]];return t}var e={toastId:C++,isOpened:!1,scope:n.$new(),open:a.defer()};return e.iconClass=s.iconClass,s.optionsOverride&&(angular.extend(d,t(s.optionsOverride)),e.iconClass=s.optionsOverride.iconClass||e.iconClass),i(e,s,d),e.el=c(e.scope),e}function c(t){var s=angular.element("
"),n=e.get("$compile");return n(s)(t)}function u(){return d.maxOpened&&O.length<=d.maxOpened||!d.maxOpened}function p(){var t=d.preventDuplicates&&s.message===w,e=d.preventOpenDuplicates&&T[s.message];return t||e?!0:(w=s.message,T[s.message]=!0,!1)}var d=m();if(!p()){var v=l();if(O.push(v),r())for(var B=O.slice(0,O.length-d.maxOpened),x=0,$=B.length;$>x;x++)g(B[x].toastId);return u()&&v.open.resolve(),v.open.promise.then(function(){f(d).then(function(){if(v.isOpened=!0,d.newestOnTop)t.enter(v.el,h).then(function(){v.scope.init()});else{var e=h[0].lastChild?angular.element(h[0].lastChild):null;t.enter(v.el,h,e).then(function(){v.scope.init()})}})}),v}}var h,C=0,O=[],w="",T={},B=a.defer(),x={clear:i,error:l,info:c,remove:g,success:u,warning:p};return x}angular.module("toastr",[]).factory("toastr",t),t.$inject=["$animate","$injector","$document","$rootScope","$sce","toastrConfig","$q"]}(),function(){"use strict";angular.module("toastr").constant("toastrConfig",{allowHtml:!1,autoDismiss:!1,closeButton:!1,closeHtml:"",containerId:"toast-container",extendedTimeOut:1e3,iconClasses:{error:"toast-error",info:"toast-info",success:"toast-success",warning:"toast-warning"},maxOpened:0,messageClass:"toast-message",newestOnTop:!0,onHidden:null,onShown:null,onTap:null,positionClass:"toast-top-right",preventDuplicates:!1,preventOpenDuplicates:!1,progressBar:!1,tapToDismiss:!0,target:"body",templates:{toast:"directives/toast/toast.html",progressbar:"directives/progressbar/progressbar.html"},timeOut:5e3,titleClass:"toast-title",toastClass:"toast"})}(),function(){"use strict";function t(t){function e(t,e,s,n){function o(){var t=(i-(new Date).getTime())/a*100;e.css("width",t+"%")}var r,a,i;n.progressBar=t,t.start=function(t){r&&clearInterval(r),a=parseFloat(t),i=(new Date).getTime()+a,r=setInterval(o,10)},t.stop=function(){r&&clearInterval(r)},t.$on("$destroy",function(){clearInterval(r)})}return{replace:!0,require:"^toast",templateUrl:function(){return t.templates.progressbar},link:e}}angular.module("toastr").directive("progressBar",t),t.$inject=["toastrConfig"]}(),function(){"use strict";function t(){this.progressBar=null,this.startProgressBar=function(t){this.progressBar&&this.progressBar.start(t)},this.stopProgressBar=function(){this.progressBar&&this.progressBar.stop()}}angular.module("toastr").controller("ToastController",t)}(),function(){"use strict";function t(t,e,s,n){function o(s,o,r,a){function i(t){return a.startProgressBar(t),e(function(){a.stopProgressBar(),n.remove(s.toastId)},t,1)}function l(){s.progressBar=!1,a.stopProgressBar()}function c(){return s.options.closeHtml}var u;if(s.toastClass=s.options.toastClass,s.titleClass=s.options.titleClass,s.messageClass=s.options.messageClass,s.progressBar=s.options.progressBar,c()){var p=angular.element(s.options.closeHtml),g=t.get("$compile");p.addClass("toast-close-button"),p.attr("ng-click","close(true, $event)"),g(p)(s),o.prepend(p)}s.init=function(){s.options.timeOut&&(u=i(s.options.timeOut)),s.options.onShown&&s.options.onShown()},o.on("mouseenter",function(){l(),u&&e.cancel(u)}),s.tapToast=function(){angular.isFunction(s.options.onTap)&&s.options.onTap(),s.options.tapToDismiss&&s.close(!0)},s.close=function(t,e){e&&angular.isFunction(e.stopPropagation)&&e.stopPropagation(),n.remove(s.toastId,t)},o.on("mouseleave",function(){(0!==s.options.timeOut||0!==s.options.extendedTimeOut)&&(s.$apply(function(){s.progressBar=s.options.progressBar}),u=i(s.options.extendedTimeOut))})}return{replace:!0,templateUrl:function(){return s.templates.toast},controller:"ToastController",link:o}}angular.module("toastr").directive("toast",t),t.$inject=["$injector","$interval","toastrConfig","toastr"]}(),angular.module("toastr").run(["$templateCache",function(t){t.put("directives/progressbar/progressbar.html",'
\n'),t.put("directives/toast/toast.html",'
\n
\n
{{title}}
\n
{{message}}
\n
\n
\n
\n \n
\n')}]);
@/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/sitesEditor/zones.lua

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

function C:init()
  self.commentSize = im.ImVec2(200, 200)
@/gameplay/missionTypes/dragStripAPM/editor.lua

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

function C:init(rallyEditor)
  self.rallyEditor = rallyEditor
  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/gameplay/traffic/roles/empty.lua

function C:init()
  self.actions = {}
@/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/vehicle/customPartsConfigProvider.lua

function C:init()
  self.models = {}
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/disable.lua

function C:init()
  self.data.useScriptStop = false
@/lua/ge/extensions/flowgraph/nodes/vehicle/onVehicleSwitched.lua

function C:init(mgr, ...)
@/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/flowgraph/nodes/gameplay/sites/parkingspotByName.lua

function C:init(mgr, ...)
@/lua/vehicle/controller/drivingDynamics/sensors/vehicleData.lua

local function init(jbeamData)
end
@/lua/ge/extensions/flowgraph/nodes/macro/getForeach.lua

function C:init(mgr, ...)
@/lua/ge/extensions/gameplay/crashTest/scenarioManager.lua
  markers = require('scenario/race_marker')
  markers.init()
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/directlyTo.lua

function C:init()
  self.started = false
@/lua/ge/extensions/flowgraph/nodes/states/stateNode.lua
-- This gets called when the node has been created for the first time. Init field here
function C:init(mgr)
@/gameplay/missionTypes/chase/customNodes/suspectAiNode.lua

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

function C:init(mgr, ...)
  self:_executionStopped()
@/lua/ge/extensions/gameplay/crawl/utils.lua
    markers = require('scenario/race_marker')
    markers.init()
  end
@/lua/vehicle/controller/sound/airbrakes.lua

local function init(jbeamData)
  lastBrake = 0
@/lua/ge/extensions/flowgraph/nodes/debug/drawGraph.lua

function C:init()
  self.inputLabels = {}
@/lua/vehicle/controller/sound/reverseWarn.lua

local function init(jbeamData)
  electricsName = jbeamData.electricsName or "reverse"
@/lua/ge/extensions/gameplay/garageMode.lua
    camData.orbit:setSkipFovModifier(false)
    camData.orbit:init()
  end
@/lua/ge/extensions/editor/missionEditor/conditions.lua

function C:init(missionEditor, field, name)
  self.missionEditor = missionEditor
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/gameplay/countdown.lua

function C:init(mgr, ...)
  self.data.useImgui = false
@/lua/ge/extensions/flowgraph/nodes/gfx/blur.lua

function C:init(mgr, ...)
  self.lastWorking = 0
@/lua/ge/extensions/flowgraph/nodes/thread/sendMessage.lua

function C:init()
  self.savePins = true
@/lua/ge/extensions/scenario/timeLimit.lua

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

local function init()
  busLines={routes={}}
@/lua/ge/extensions/gameplay/race/startPosition.lua

function C:init(race, name)
  self.race = race
  C.__index = C
  o:init(...)
  return o
@/lua/vehicle/controller/loggerTemplate.lua
-- This is called once when a vehicle is created
local function init()
  csvData = csvWriter.newCSV("time", "throttle", "brake", "batteryCapacity", "motorPower")
@/lua/ge/extensions/flowgraph/nodes/ui/startScreen.lua

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

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

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

function C:init(veh, name, data)
  data = data or {}
  C.__index = C
  o:init(o.veh, o.name)

  o:init()
  o:postInit()
@/lua/vehicle/controller/hydraulics/electricHydraulics.lua

local function init(jbeamData)
  electricsNames = type(jbeamData.controlElectricsName) ~= "table" and {jbeamData.controlElectricsName} or jbeamData.controlElectricsName
@/lua/ge/extensions/flowgraph/nodes/util/pushActionMap.lua

function C:init(mgr, ...)
  self:_executionStopped()
@/lua/vehicle/backwardsCompatibility.lua

local function init()
  checkOldESC() --convert hardcoded ESC to controller
@/lua/ge/extensions/flowgraph/nodes/activity/activityAttempt.lua

function C:init()
  self.savePins = true
@/lua/vehicle/controller/advancedCouplerControl.lua

local function init(jbeamData)
  --print(M.name)
@/lua/ge/extensions/flowgraph/nodes/vehicle/ai/stop.lua

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

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

function C:init()
  self.data.zOffset = 0
        self.markers = require('scenario/race_marker')
        self.markers.init()
        local wps = {}
@/lua/ge/extensions/flowgraph/nodes/environment/setTimeOfDay.lua

function C:init(mgr)
  self.data.restoreTod = true
@/lua/ge/extensions/editor/api/valueInspector.lua

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

function C:init()
@/ui/modules/apps/ForcedInductionDebug/app.js

      init()
@/lua/ge/extensions/editor/flowgraph/variables.lua
local scale = 1
function C:init()
  self.target = nil
@/lua/ge/extensions/gameplay/markers/gasStationMarker.lua
local tmpVec = vec3()
function C:init()
  self.visible = true
  C.__index = C
  o:init(...)
  return o
@/lua/ge/extensions/flowgraph/nodes/string/match.lua

function C:init()
  self.data.pattern = "%d"
@/lua/ge/extensions/core/settings/graphic.lua
    if graphicsOptions[k] and type(graphicsOptions[k].init) == 'function' then
      graphicsOptions[k].init(v)
    end
@/lua/ge/extensions/flowgraph/nodes/gameplay/recoveryPrompt/onRecoveryPromptAction.lua
}
function C:init()
  self.savePins = true
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/fileSites.lua

function C:init(mgr, ...)
  self.sites = nil
@/lua/vehicle/controller/nitrousOxideInjection.lua

local function init(jbeamData)
  M.updateGFX = nop
@/gameplay/missionTypes/rallyStage/constructor.lua

function C:init()
  self.latestVersion = version
@/lua/ge/extensions/flowgraph/nodes/scene/pointOnDecalroad.lua
C.tags = {}
function C:init()
  self.point = vec3(0,0,0)
@/gameplay/missionTypes/flowgraph/editor.lua

function C:init()
  self.currentConfig = nil
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficSpawnGroup.lua

function C:init()
  self:resetState()
@/lua/ge/extensions/flowgraph/nodes/util/file/saveData.lua

function C:init(mgr)
  self.savePins = true
@/lua/vehicle/controller/braking/postCrashBrake.lua

local function init(jbeamData)
  --if the hazards are still active from before reset, deactivate them
@/lua/vehicle/recovery.lua

local function init(path)
  M.updateGFX = updateGFXRecord
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/signals/sequenceByName.lua

function C:init()
  self:onNodeReset()
@/gameplay/missions/italy/flowgraph/002-Pizza/constructor.lua

function C:init()
  self.defaultAggregateValues = {
return function()
  C:init()
  return C
@/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(',