[
  {
    "term": "index:title",
    "definition": "Traintastic Lua scripting"
  },
  {
    "term": "index:nav",
    "definition": "Index"
  },
  {
    "term": "contents",
    "definition": "Contents"
  },
  {
    "term": "value",
    "definition": "Value"
  },
  {
    "term": "description",
    "definition": "Description"
  },
  {
    "term": "constants",
    "definition": "Constants"
  },
  {
    "term": "libraries",
    "definition": "Libraries"
  },
  {
    "term": "objects",
    "definition": "Objects"
  },
  {
    "term": "functions",
    "definition": "Functions"
  },
  {
    "term": "methods",
    "definition": "Methods"
  },
  {
    "term": "example",
    "definition": "Example"
  },
  {
    "term": "examples",
    "definition": "Examples"
  },
  {
    "term": "properties",
    "definition": "Properties"
  },
  {
    "term": "events",
    "definition": "Events"
  },
  {
    "term": "arguments",
    "definition": "Arguments"
  },
  {
    "term": "functions",
    "definition": "Functions"
  },
  {
    "term": "parameters",
    "definition": "Parameters"
  },
  {
    "term": "return_values",
    "definition": "Return values"
  },
  {
    "term": "see_also",
    "definition": "See also"
  },
  {
    "term": "enum:title",
    "definition": "Enum library"
  },
  {
    "term": "enum:description",
    "definition": ""
  },
  {
    "term": "enum.decoder_protocol:title",
    "definition": "Decoder protocol"
  },
  {
    "term": "enum.direction:title",
    "definition": "Direction"
  },
  {
    "term": "enum.direction_control_state:title",
    "definition": "Direction control state"
  },
  {
    "term": "enum.identification_event_type:title",
    "definition": "Identification event type"
  },
  {
    "term": "enum.interface_state:title",
    "definition": "Interface state"
  },
  {
    "term": "enum.tri_state:title",
    "definition": "Tristate"
  },
  {
    "term": "enum.turnout_position:title",
    "definition": "Turnout position"
  },
  {
    "term": "enum.signal_aspect:title",
    "definition": "Signal aspect"
  },
  {
    "term": "enum.world_event:title",
    "definition": "World event"
  },
  {
    "term": "enum.world_scale:title",
    "definition": "World scale"
  },
  {
    "term": "enum.decoder_protocol:description",
    "definition": ""
  },
  {
    "term": "enum.decoder_protocol.none:description",
    "definition": "None or invalid protocol"
  },
  {
    "term": "enum.decoder_protocol.dcc_short:description",
    "definition": "Lenz DCC protocol with 7 bit short address"
  },
  {
    "term": "enum.decoder_protocol.motorola:description",
    "definition": "Märklin Motorola protocol"
  },
  {
    "term": "enum.decoder_protocol.selectrix:description",
    "definition": "Selectrix protocol"
  },
  {
    "term": "enum.decoder_protocol.mfx:description",
    "definition": "Märklin MFX protocol"
  },
  {
    "term": "enum.decoder_protocol.dcc_long:description",
    "definition": "Lenz DCC protocol with 14 bit long address"
  },
  {
    "term": "enum.direction:description",
    "definition": ""
  },
  {
    "term": "enum.direction.forward:description",
    "definition": "Forward direction"
  },
  {
    "term": "enum.direction.reverse:description",
    "definition": "Reverse direction"
  },
  {
    "term": "enum.direction.unknown:description",
    "definition": "Unknown or invalid direction"
  },
  {
    "term": "enum.direction_control_state:description",
    "definition": ""
  },
  {
    "term": "enum.direction_control_state.none:description",
    "definition": "A to B and B to A are not allowed"
  },
  {
    "term": "enum.direction_control_state.a_to_b:description",
    "definition": "A to B is allowed, B to A is not allowed"
  },
  {
    "term": "enum.direction_control_state.b_to_a:description",
    "definition": "B to A is allowed, A to B is not allowed"
  },
  {
    "term": "enum.direction_control_state.both:description",
    "definition": "A to B and B to A are allowed"
  },
  {
    "term": "enum.identification_event_type:description",
    "definition": ""
  },
  {
    "term": "enum.identification_event_type.present:description",
    "definition": ""
  },
  {
    "term": "enum.identification_event_type.absent:description",
    "definition": ""
  },
  {
    "term": "enum.identification_event_type.seen:description",
    "definition": ""
  },
  {
    "term": "enum.interface_state:description",
    "definition": ""
  },
  {
    "term": "enum.interface_state.offline:description",
    "definition": ""
  },
  {
    "term": "enum.interface_state.initializing:description",
    "definition": ""
  },
  {
    "term": "enum.interface_state.online:description",
    "definition": ""
  },
  {
    "term": "enum.interface_state.error:description",
    "definition": ""
  },
  {
    "term": "enum.tri_state:description",
    "definition": ""
  },
  {
    "term": "enum.tri_state.undefined:description",
    "definition": ""
  },
  {
    "term": "enum.tri_state.false:description",
    "definition": ""
  },
  {
    "term": "enum.tri_state.true:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.unknown:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.straight:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.left:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.right:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.crossed:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.diverged:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.double_slip_straight_a:description",
    "definition": ""
  },
  {
    "term": "enum.turnout_position.double_slip_straight_b:description",
    "definition": ""
  },
  {
    "term": "enum.signal_aspect:description",
    "definition": ""
  },
  {
    "term": "enum.signal_aspect.unknown:description",
    "definition": ""
  },
  {
    "term": "enum.signal_aspect.stop:description",
    "definition": ""
  },
  {
    "term": "enum.signal_aspect.proceed:description",
    "definition": ""
  },
  {
    "term": "enum.signal_aspect.proceed_reduced_speed:description",
    "definition": ""
  },
  {
    "term": "enum.world_event:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.edit_disabled:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.edit_enabled:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.offline:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.online:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.power_off:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.power_on:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.stop:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.run:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.unmute:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.mute:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.no_smoke:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.smoke:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.simulation_disabled:description",
    "definition": ""
  },
  {
    "term": "enum.world_event.simulation_enabled:description",
    "definition": ""
  },
  {
    "term": "enum.world_scale:description",
    "definition": ""
  },
  {
    "term": "enum.world_scale.h0:description",
    "definition": "H0 scale (1:87)"
  },
  {
    "term": "enum.world_scale.n:description",
    "definition": "N scale (1:160)"
  },
  {
    "term": "enum.world_scale.tt:description",
    "definition": "TT scale (1:120)"
  },
  {
    "term": "enum.world_scale.z:description",
    "definition": "Z scale (1:220)"
  },
  {
    "term": "enum.world_scale.custom:description",
    "definition": ""
  },
  {
    "term": "set:title",
    "definition": "Set library"
  },
  {
    "term": "set:description",
    "definition": ""
  },
  {
    "term": "set.world_state:title",
    "definition": "World state"
  },
  {
    "term": "set.world_state:description",
    "definition": ""
  },
  {
    "term": "set.world_state.edit:description",
    "definition": ""
  },
  {
    "term": "set.world_state.online:description",
    "definition": ""
  },
  {
    "term": "set.world_state.power_on:description",
    "definition": ""
  },
  {
    "term": "set.world_state.run:description",
    "definition": ""
  },
  {
    "term": "set.world_state.mute:description",
    "definition": ""
  },
  {
    "term": "set.world_state.no_smoke:description",
    "definition": ""
  },
  {
    "term": "set.world_state.simulation:description",
    "definition": ""
  },
  {
    "term": "index-az:title",
    "definition": "Index A-Z"
  },
  {
    "term": "index:description",
    "definition": ""
  },
  {
    "term": "globals:title",
    "definition": "Globals"
  },
  {
    "term": "globals:description",
    "definition": "Global environment containing built-in constants, libraries, objects, and functions available in Traintastics Lua."
  },
  {
    "term": "globals.assert:description",
    "definition": "Raises an error if the given condition is false or nil; otherwise returns its argument(s)."
  },
  {
    "term": "globals.assert.parameter.condition:description",
    "definition": "A value that is tested for truth; if false or nil, the function errors."
  },
  {
    "term": "globals.assert.parameter.message:description",
    "definition": "Optional error message (string) to use if the assertion fails."
  },
  {
    "term": "globals.ipairs:description",
    "definition": "Returns an iterator function for array-like tables, iterating in order of numerical indices starting from 1."
  },
  {
    "term": "globals.ipairs.parameter.table:description",
    "definition": "A numerically indexed table."
  },
  {
    "term": "globals.ipairs:return_values",
    "definition": "Three values: an iterator function, the table itself, and the initial index (0)."
  },
  {
    "term": "globals.next:description",
    "definition": "Allows traversal of all key–value pairs in a table; returns the next key and its value."
  },
  {
    "term": "globals.next.parameter.table:description",
    "definition": "The table to iterate."
  },
  {
    "term": "globals.next.parameter.index:description",
    "definition": "The last key returned; iteration resumes after this key (optional, use nil to start)."
  },
  {
    "term": "globals.next:return_values",
    "definition": "The next key and its corresponding value in the table, or nil when no more entries."
  },
  {
    "term": "globals.pairs:description",
    "definition": "Returns an iterator function to traverse all key–value pairs in a table in no particular order."
  },
  {
    "term": "globals.pairs.parameter.table:description",
    "definition": "The table to iterate over."
  },
  {
    "term": "globals.pairs:return_values",
    "definition": "Three values: an iterator function, the table itself, and an initial nil key."
  },
  {
    "term": "globals.tonumber:description",
    "definition": "Tries to convert its argument to a number; returns the number or nil if conversion fails."
  },
  {
    "term": "globals.tonumber.parameter.value:description",
    "definition": "A string or number to convert."
  },
  {
    "term": "globals.tonumber.parameter.base:description",
    "definition": "An optional base (2–36) to interpret the string in (default is base 10)."
  },
  {
    "term": "globals.tonumber:return_values",
    "definition": "The converted number, or nil if the input is not a valid numeric representation."
  },
  {
    "term": "globals.tostring:description",
    "definition": "Returns a string representation of its argument."
  },
  {
    "term": "globals.tostring.parameter.value:description",
    "definition": "The value to convert to string."
  },
  {
    "term": "globals.tostring:return_values",
    "definition": "A string representation of the given value."
  },
  {
    "term": "globals.type:description",
    "definition": "Returns the type name of its argument as a string (such as 'nil', 'number', 'string', 'boolean', 'table', 'function', etc.)."
  },
  {
    "term": "globals.type.parameter.value:description",
    "definition": "The value whose type is to be returned."
  },
  {
    "term": "globals.type:return_values",
    "definition": "A string describing the type of the input value, or 'nil' if the value is nil."
  },
  {
    "term": "class:title",
    "definition": "Class library"
  },
  {
    "term": "log:title",
    "definition": "Log library"
  },
  {
    "term": "math:title",
    "definition": "Math library"
  },
  {
    "term": "string:title",
    "definition": "String library"
  },
  {
    "term": "table:title",
    "definition": "Table library"
  },
  {
    "term": "index-az:description",
    "definition": ""
  },
  {
    "term": "math.abs:description",
    "definition": "Computes the absolute value of `number`."
  },
  {
    "term": "math.abs.parameter.number:description",
    "definition": "A numberic value."
  },
  {
    "term": "math.abs:return_values",
    "definition": "The absolute value of `number`."
  },
  {
    "term": "math:description",
    "definition": "Provides mathematical functions and constants. This library includes trigonometric, exponential, logarithmic, and other standard math operations, along with constants such as π."
  },
  {
    "term": "math.huge:description",
    "definition": "A special value representing positive infinity."
  },
  {
    "term": "math.maxinteger:description",
    "definition": "The maximum value that can be represented by an integer in Lua."
  },
  {
    "term": "math.mininteger:description",
    "definition": "The minimum value that can be represented by an integer in Lua."
  },
  {
    "term": "math.pi:description",
    "definition": "The value of π (pi), the ratio of a circle's circumference to its diameter."
  },
  {
    "term": "math.acos.parameter.number:description",
    "definition": "A number between -1 and 1."
  },
  {
    "term": "math.acos:return_values",
    "definition": "The arc cosine of the input number, in radians."
  },
  {
    "term": "math.asin.parameter.number:description",
    "definition": "A number between -1 and 1."
  },
  {
    "term": "math.asin:return_values",
    "definition": "The arc sine of the input number, in radians."
  },
  {
    "term": "math.atan:description",
    "definition": "Returns the arc tangent of a number, in radians."
  },
  {
    "term": "math.atan.parameter.number:description",
    "definition": "A numeric value representing a tangent."
  },
  {
    "term": "math.atan:return_values",
    "definition": "The arc tangent of the input number, in radians."
  },
  {
    "term": "math.ceil.parameter.number:description",
    "definition": "A numeric value to round up."
  },
  {
    "term": "math.ceil:return_values",
    "definition": "The smallest integer greater than or equal to the given number."
  },
  {
    "term": "math.cos.parameter.number:description",
    "definition": "An angle in radians."
  },
  {
    "term": "math.cos:return_values",
    "definition": "The cosine of the angle."
  },
  {
    "term": "math.deg:description",
    "definition": "Converts an angle from radians to degrees."
  },
  {
    "term": "math.deg.parameter.number:description",
    "definition": "An angle in radians."
  },
  {
    "term": "math.deg:return_values",
    "definition": "The angle converted to degrees."
  },
  {
    "term": "math.exp:description",
    "definition": "Returns the value of the constant e raised to the power of the given number."
  },
  {
    "term": "math.exp.parameter.number:description",
    "definition": "The exponent to raise e to."
  },
  {
    "term": "math.exp:return_values",
    "definition": "The result of e^number."
  },
  {
    "term": "math.floor:description",
    "definition": "Returns the largest integral value less than or equal to the given number."
  },
  {
    "term": "math.floor.parameter.number:description",
    "definition": "A numeric value to round down."
  },
  {
    "term": "math.floor:return_values",
    "definition": "The largest integer less than or equal to the given number."
  },
  {
    "term": "math.fmod:description",
    "definition": "Returns the remainder of the division of the first number by the second."
  },
  {
    "term": "math.fmod.parameter.divided:description",
    "definition": "The dividend."
  },
  {
    "term": "math.fmod.parameter.divisor:description",
    "definition": "The divisor."
  },
  {
    "term": "math.fmod:return_values",
    "definition": "The remainder of the division."
  },
  {
    "term": "math.log:description",
    "definition": "Returns the logarithm of a number in a given base. Defaults to natural logarithm if base is not provided."
  },
  {
    "term": "math.log.parameter.number:description",
    "definition": "The number to compute the logarithm for."
  },
  {
    "term": "math.log.parameter.base:description",
    "definition": "The logarithmic base. Optional; defaults to e."
  },
  {
    "term": "math.max:description",
    "definition": "Returns the largest value among its arguments."
  },
  {
    "term": "math.max.parameter.number:description",
    "definition": "The first number to compare."
  },
  {
    "term": "math.max.parameter....:description",
    "definition": "Additional numbers to compare."
  },
  {
    "term": "math.min:description",
    "definition": "Returns the smallest value among its arguments."
  },
  {
    "term": "math.min.parameter.number:description",
    "definition": "The first number to compare."
  },
  {
    "term": "math.min.parameter....:description",
    "definition": "Additional numbers to compare."
  },
  {
    "term": "math.modf:description",
    "definition": "Splits a number into its integer and fractional parts."
  },
  {
    "term": "math.modf.parameter.number:description",
    "definition": "The number to split."
  },
  {
    "term": "math.modf:return_values",
    "definition": "Two numbers: the integer part and the fractional part."
  },
  {
    "term": "math.rad:description",
    "definition": "Converts an angle from degrees to radians."
  },
  {
    "term": "math.random:description",
    "definition": "Generates a pseudo-random number. The behavior depends on the provided arguments."
  },
  {
    "term": "math.random.parameter.m:description",
    "definition": "The lower limit of the random number range (optional)."
  },
  {
    "term": "math.random.parameter.n:description",
    "definition": "The upper limit of the random number range (optional)."
  },
  {
    "term": "math.randomseed:description",
    "definition": "Sets the seed for the random number generator."
  },
  {
    "term": "math.sin:description",
    "definition": "Returns the sine of an angle (in radians)."
  },
  {
    "term": "math.sqrt:description",
    "definition": "Returns the square root of a number."
  },
  {
    "term": "math.tan:description",
    "definition": "Returns the tangent of an angle (in radians)."
  },
  {
    "term": "math.tointeger:description",
    "definition": "Converts a number to an integer if it is exactly representable."
  },
  {
    "term": "math.type:description",
    "definition": "Returns the type of a number: 'integer', 'float', or nil if not a number."
  },
  {
    "term": "math.ult:description",
    "definition": "Compares two unsigned integers and returns true if the first is less than the second."
  },
  {
    "term": "globals:description",
    "definition": ""
  },
  {
    "term": "globals.lua_version:description",
    "definition": "Lua version and copyright, e.g. `\"Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio\"`"
  },
  {
    "term": "globals.version:description",
    "definition": "Traintastic version, e.g. `\"0.1.0-master-380-e669a73b\"`"
  },
  {
    "term": "globals.version_major:description",
    "definition": "Traintastic major version, e.g. `0`"
  },
  {
    "term": "globals.version_minor:description",
    "definition": "Traintastic minor version, e.g. `1`"
  },
  {
    "term": "globals.version_patch:description",
    "definition": "Traintastic patch level, e.g. `0`"
  },
  {
    "term": "globals.world:description",
    "definition": "The global {ref:object.world} object."
  },
  {
    "term": "globals.assert:description",
    "definition": ""
  },
  {
    "term": "globals.ipairs:description",
    "definition": ""
  },
  {
    "term": "globals.next:description",
    "definition": ""
  },
  {
    "term": "globals.pairs:description",
    "definition": ""
  },
  {
    "term": "globals.tonumber:description",
    "definition": ""
  },
  {
    "term": "globals.tostring:description",
    "definition": ""
  },
  {
    "term": "globals.type:description",
    "definition": ""
  },
  {
    "term": "enum.world_state:description",
    "definition": ""
  },
  {
    "term": "enum.world_state.edit:description",
    "definition": ""
  },
  {
    "term": "enum.world_state.online:description",
    "definition": ""
  },
  {
    "term": "enum.world_state.power_on:description",
    "definition": ""
  },
  {
    "term": "enum.world_state.run:description",
    "definition": ""
  },
  {
    "term": "enum.world_state.mute:description",
    "definition": ""
  },
  {
    "term": "enum.world_state.no_smoke:description",
    "definition": ""
  },
  {
    "term": "enum.world_state.simulation:description",
    "definition": ""
  },
  {
    "term": "math:description",
    "definition": ""
  },
  {
    "term": "math.huge:description",
    "definition": ""
  },
  {
    "term": "math.maxinteger:description",
    "definition": ""
  },
  {
    "term": "math.mininteger:description",
    "definition": ""
  },
  {
    "term": "math.pi:description",
    "definition": ""
  },
  {
    "term": "math.acos:description",
    "definition": "Returns the arc cosine of `number`."
  },
  {
    "term": "math.acos.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.acos:return_values",
    "definition": ""
  },
  {
    "term": "math.asin:description",
    "definition": "Returns the arc sine of `number`."
  },
  {
    "term": "math.asin.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.asin:return_values",
    "definition": ""
  },
  {
    "term": "math.atan:description",
    "definition": ""
  },
  {
    "term": "math.atan.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.atan:return_values",
    "definition": ""
  },
  {
    "term": "math.ceil:description",
    "definition": " Returns the smallest integral value larger than or equal to `number`. "
  },
  {
    "term": "math.ceil.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.ceil:return_values",
    "definition": ""
  },
  {
    "term": "math.cos:description",
    "definition": "Returns the cosine of `number."
  },
  {
    "term": "math.cos.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.cos:return_values",
    "definition": ""
  },
  {
    "term": "math.deg:description",
    "definition": ""
  },
  {
    "term": "math.deg.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.deg:return_values",
    "definition": ""
  },
  {
    "term": "math.exp:description",
    "definition": ""
  },
  {
    "term": "math.exp.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.exp:return_values",
    "definition": ""
  },
  {
    "term": "math.floor:description",
    "definition": ""
  },
  {
    "term": "math.floor.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.floor:return_values",
    "definition": ""
  },
  {
    "term": "math.fmod:description",
    "definition": ""
  },
  {
    "term": "math.fmod.parameter.divided:description",
    "definition": ""
  },
  {
    "term": "math.fmod.parameter.divisor:description",
    "definition": ""
  },
  {
    "term": "math.fmod:return_values",
    "definition": ""
  },
  {
    "term": "math.log:description",
    "definition": ""
  },
  {
    "term": "math.log.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.log.parameter.base:description",
    "definition": ""
  },
  {
    "term": "math.max:description",
    "definition": ""
  },
  {
    "term": "math.max.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.max.parameter....:description",
    "definition": ""
  },
  {
    "term": "math.min:description",
    "definition": ""
  },
  {
    "term": "math.min.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.min.parameter....:description",
    "definition": ""
  },
  {
    "term": "math.modf:description",
    "definition": ""
  },
  {
    "term": "math.modf.parameter.number:description",
    "definition": ""
  },
  {
    "term": "math.modf:return_values",
    "definition": ""
  },
  {
    "term": "math.rad:description",
    "definition": ""
  },
  {
    "term": "math.random:description",
    "definition": ""
  },
  {
    "term": "math.random.parameter.m:description",
    "definition": ""
  },
  {
    "term": "math.random.parameter.n:description",
    "definition": ""
  },
  {
    "term": "math.randomseed:description",
    "definition": ""
  },
  {
    "term": "math.sin:description",
    "definition": ""
  },
  {
    "term": "math.sqrt:description",
    "definition": ""
  },
  {
    "term": "math.tan:description",
    "definition": ""
  },
  {
    "term": "math.tointeger:description",
    "definition": ""
  },
  {
    "term": "math.type:description",
    "definition": ""
  },
  {
    "term": "math.ult:description",
    "definition": ""
  },
  {
    "term": "string:description",
    "definition": ""
  },
  {
    "term": "string.byte:description",
    "definition": ""
  },
  {
    "term": "string.char:description",
    "definition": ""
  },
  {
    "term": "string.find:description",
    "definition": ""
  },
  {
    "term": "string.format:description",
    "definition": ""
  },
  {
    "term": "string.gmatch:description",
    "definition": ""
  },
  {
    "term": "string.gsub:description",
    "definition": ""
  },
  {
    "term": "string.len:description",
    "definition": ""
  },
  {
    "term": "string.lower:description",
    "definition": ""
  },
  {
    "term": "string.match:description",
    "definition": ""
  },
  {
    "term": "string.pack:description",
    "definition": ""
  },
  {
    "term": "string.packsize:description",
    "definition": ""
  },
  {
    "term": "string.rep:description",
    "definition": ""
  },
  {
    "term": "string.reverse:description",
    "definition": ""
  },
  {
    "term": "string.sub:description",
    "definition": ""
  },
  {
    "term": "string.unpack:description",
    "definition": ""
  },
  {
    "term": "string.upper:description",
    "definition": ""
  },
  {
    "term": "table:description",
    "definition": ""
  },
  {
    "term": "table.concat:description",
    "definition": ""
  },
  {
    "term": "table.insert:description",
    "definition": ""
  },
  {
    "term": "table.move:description",
    "definition": ""
  },
  {
    "term": "table.pack:description",
    "definition": ""
  },
  {
    "term": "table.remove:description",
    "definition": ""
  },
  {
    "term": "table.sort:description",
    "definition": ""
  },
  {
    "term": "table.unpack:description",
    "definition": ""
  },
  {
    "term": "log:description",
    "definition": "The log library provides 7 functions, each function takes all its arguments, concatenates them into a string then sends it to the Traintastic server log."
  },
  {
    "term": "log.critical:description",
    "definition": "Log a critical message."
  },
  {
    "term": "log.critical.parameter.message:description",
    "definition": "The message."
  },
  {
    "term": "log.critical.parameter....:description",
    "definition": "Additional values, all values are concatenated and seperated by a space."
  },
  {
    "term": "log.debug:description",
    "definition": "Log a debug message, useful when developing or testing a script."
  },
  {
    "term": "log.debug.parameter.message:description",
    "definition": "The message."
  },
  {
    "term": "log.debug.parameter....:description",
    "definition": "Additional values, all values are concatenated and seperated by a space."
  },
  {
    "term": "log.error:description",
    "definition": "Log an error message."
  },
  {
    "term": "log.error.parameter.message:description",
    "definition": "The message."
  },
  {
    "term": "log.error.parameter....:description",
    "definition": "Additional values, all values are concatenated and seperated by a space."
  },
  {
    "term": "log.fatal:description",
    "definition": "Log a fatal message, use this for unrecoverble errors only."
  },
  {
    "term": "log.fatal.parameter.message:description",
    "definition": "The message."
  },
  {
    "term": "log.fatal.parameter....:description",
    "definition": "Additional values, all values are concatenated and seperated by a space."
  },
  {
    "term": "log.info:description",
    "definition": "Log a info message."
  },
  {
    "term": "log.info.parameter.message:description",
    "definition": "The message."
  },
  {
    "term": "log.info.parameter....:description",
    "definition": "Additional values, all values are concatenated and seperated by a space."
  },
  {
    "term": "log.notice:description",
    "definition": "Log a notice message."
  },
  {
    "term": "log.notice.parameter.message:description",
    "definition": "The message."
  },
  {
    "term": "log.notice.parameter....:description",
    "definition": "Additional values, all values are concatenated and seperated by a space."
  },
  {
    "term": "log.warning:description",
    "definition": "Log a warning message."
  },
  {
    "term": "log.warning.parameter.message:description",
    "definition": "The message."
  },
  {
    "term": "log.warning.parameter....:description",
    "definition": "Additional values, all values are concatenated and seperated by a space."
  },
  {
    "term": "class:description",
    "definition": ""
  },
  {
    "term": "class.block_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.board:description",
    "definition": ""
  },
  {
    "term": "class.board_list:description",
    "definition": ""
  },
  {
    "term": "class.buffer_stop_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.clock:description",
    "definition": ""
  },
  {
    "term": "class.dccplusplus_interface:description",
    "definition": ""
  },
  {
    "term": "class.decoder:description",
    "definition": ""
  },
  {
    "term": "class.decoder_function:description",
    "definition": ""
  },
  {
    "term": "class.decoder_functions:description",
    "definition": ""
  },
  {
    "term": "class.decoder_list:description",
    "definition": ""
  },
  {
    "term": "class.ecos_interface:description",
    "definition": ""
  },
  {
    "term": "class.freight_wagon:description",
    "definition": ""
  },
  {
    "term": "class.input:description",
    "definition": ""
  },
  {
    "term": "class.input_list:description",
    "definition": ""
  },
  {
    "term": "class.interface_status:description",
    "definition": ""
  },
  {
    "term": "class.locomotive:description",
    "definition": ""
  },
  {
    "term": "class.loconet_interface:description",
    "definition": ""
  },
  {
    "term": "class.marklin_can_interface:description",
    "definition": ""
  },
  {
    "term": "class.output:description",
    "definition": ""
  },
  {
    "term": "class.output_list:description",
    "definition": ""
  },
  {
    "term": "class.rail_vehicle_list:description",
    "definition": ""
  },
  {
    "term": "class.sensor_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.straight_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.train:description",
    "definition": ""
  },
  {
    "term": "class.traintastic_diy_interface:description",
    "definition": ""
  },
  {
    "term": "class.train_list:description",
    "definition": ""
  },
  {
    "term": "class.tunnel_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.turnout_double_slip_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.turnout_right_curved_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.turnout_single_slip_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.turnout_wye_rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.turnout__rail_tile:description",
    "definition": ""
  },
  {
    "term": "class.withrottle_interface:description",
    "definition": ""
  },
  {
    "term": "class.wlanmaus_interface:description",
    "definition": ""
  },
  {
    "term": "class.world:description",
    "definition": ""
  },
  {
    "term": "class.xpressnet_interface:description",
    "definition": ""
  },
  {
    "term": "class.get:description",
    "definition": "Get the class type of an object."
  },
  {
    "term": "class.get.parameter.object:description",
    "definition": "The object to get class type of."
  },
  {
    "term": "class.get:return_values",
    "definition": "The class type of `object`, or `nil` if `object` isn't a valid object."
  },
  {
    "term": "object.world.get_object:description",
    "definition": "Get object with `id`."
  },
  {
    "term": "object.world.power_off:description",
    "definition": "Stop all vehicles and power off, identical to pressing power off in the Traintastic client application."
  },
  {
    "term": "object.world.stop:description",
    "definition": "Stop all vehicles, identical to pressing stop in the Traintastic client application."
  },
  {
    "term": "object.world.get_object.parameter.id:description",
    "definition": "Object id"
  },
  {
    "term": "object.world.get_object:return_values",
    "definition": "Object if it exists with the given `id`, else it returns `nil`."
  },
  {
    "term": "object.world.on_event:description",
    "definition": "Fired when the world state changes, e.g. when pressing the power on, power off, stop, run etc. button in the Traintastic client application or calling `world.stop()`."
  },
  {
    "term": "event.parameter.user_data:description",
    "definition": "optional user-provided value (see [Events](../events.md#user_data))."
  },
  {
    "term": "object:title",
    "definition": "Objects"
  },
  {
    "term": "object:description",
    "definition": "List of all object that are available in Traintastic Lua scripting."
  },
  {
    "term": "object.board:title",
    "definition": "Board"
  },
  {
    "term": "object.boardlist:title",
    "definition": "Board list"
  },
  {
    "term": "object.boardlist:description",
    "definition": "List of all boards, it can be accessed using {ref:object.world#boards|`world.boards`}."
  },
  {
    "term": "object.straightrailtile:title",
    "definition": "Straight rail tile"
  },
  {
    "term": "object.tunnelrailtile:title",
    "definition": "Tunnel rail tile"
  },
  {
    "term": "object.bufferstoprailtile:title",
    "definition": "Buffer stop rail tile"
  },
  {
    "term": "object.turnoutsinglesliprailtile:title",
    "definition": "Single slip turnout rail tile"
  },
  {
    "term": "object.turnoutdoublesliprailtile:title",
    "definition": "Double slip turnout rail tile"
  },
  {
    "term": "object.turnoutwyerailtile:title",
    "definition": "Wye turnout rail tile"
  },
  {
    "term": "object.turnoutleftcurvedrailtile:title",
    "definition": "Curved left turnout left rail tile"
  },
  {
    "term": "object.turnoutrightcurvedrailtile:title",
    "definition": "Curved right turnout rail tile"
  },
  {
    "term": "object.sensorrailtile:title",
    "definition": "Sensor rail tile"
  },
  {
    "term": "object.blockrailtile:title",
    "definition": "Block rail tile"
  },
  {
    "term": "object.clock:title",
    "definition": "Clock"
  },
  {
    "term": "object.clock:description",
    "definition": "The clock object represents the time of the world. There is only one clock object, it can be accessed using {ref:object.world#clock|`world.clock`}."
  },
  {
    "term": "object.dccexinterface:title",
    "definition": "DCC-EX interface"
  },
  {
    "term": "object.ecosinterface:title",
    "definition": "ECoS interface"
  },
  {
    "term": "object.loconetinterface:title",
    "definition": "LocoNet interface"
  },
  {
    "term": "object.loconetinterface:description",
    "definition": "Interface for communicating with a LocoNet network."
  },
  {
    "term": "object.marklincaninterface:title",
    "definition": "Märklin CAN interface"
  },
  {
    "term": "object.traintasticdiyinterface:title",
    "definition": "TraintasticDIY interface"
  },
  {
    "term": "object.xpressnetinterface:title",
    "definition": "XpressNet interface"
  },
  {
    "term": "object.withrottleinterface:title",
    "definition": "WiThrottle interface"
  },
  {
    "term": "object.wlanmausinterface:title",
    "definition": "WLANmaus interface"
  },
  {
    "term": "object.interfacestatus:title",
    "definition": "Interface status"
  },
  {
    "term": "object.decoderfunction:title",
    "definition": "Decoder function"
  },
  {
    "term": "object.decoderlist:title",
    "definition": "Decoder list"
  },
  {
    "term": "object.decoder:title",
    "definition": "Decoder"
  },
  {
    "term": "object.decoderfunctions:title",
    "definition": "Decoder functions"
  },
  {
    "term": "object.input:title",
    "definition": "Input"
  },
  {
    "term": "object.inputlist:title",
    "definition": "Input list"
  },
  {
    "term": "object.output:title",
    "definition": "Output"
  },
  {
    "term": "object.outputlist:title",
    "definition": "Output list"
  },
  {
    "term": "object.railvehiclelist:title",
    "definition": "Rail vehicle list"
  },
  {
    "term": "object.locomotive:title",
    "definition": "Locomotive"
  },
  {
    "term": "object.freightwagon:title",
    "definition": "Freight wagon"
  },
  {
    "term": "object.train:title",
    "definition": "Train"
  },
  {
    "term": "object.trainlist:title",
    "definition": "Train list"
  },
  {
    "term": "object.world:title",
    "definition": "World"
  },
  {
    "term": "object.idobject.id:description",
    "definition": "Unique object identifier. Each object in Traintastic has a globally unique id that can be used in scripts (see {ref:object.world#get_object|`world.get_object`})."
  },
  {
    "term": "object.board.name:description",
    "definition": ""
  },
  {
    "term": "object.turnoutrailtile.name:description",
    "definition": ""
  },
  {
    "term": "object.turnoutrailtile.position:description",
    "definition": ""
  },
  {
    "term": "object.turnoutrailtile.set_position:description",
    "definition": ""
  },
  {
    "term": "object.turnoutrailtile.set_position.parameter.position:description",
    "definition": ""
  },
  {
    "term": "object.turnoutrailtile.set_position:return_values",
    "definition": ""
  },
  {
    "term": "object.blockrailtile.on_train_assigned:description",
    "definition": ""
  },
  {
    "term": "object.blockrailtile.on_train_assigned.parameter.train:description",
    "definition": "{ref:object.train} that is assigned to the block."
  },
  {
    "term": "object.blockrailtile.on_train_assigned.parameter.block:description",
    "definition": "The block that the train is assigned to."
  },
  {
    "term": "object.blockrailtile.on_train_removed:description",
    "definition": ""
  },
  {
    "term": "object.blockrailtile.on_train_removed.parameter.train:description",
    "definition": "{ref:object.train} that is removed from the block."
  },
  {
    "term": "object.blockrailtile.on_train_removed.parameter.block:description",
    "definition": "The block that the train is removed from."
  },
  {
    "term": "object.clock.freeze:description",
    "definition": "`true` if clock is frozen, the clock does not tick."
  },
  {
    "term": "object.clock.hour:description",
    "definition": "Hour, `0`...`23`."
  },
  {
    "term": "object.clock.minute:description",
    "definition": "Minute, `0`...`59`."
  },
  {
    "term": "object.clock.multiplier:description",
    "definition": "Fast clock multiplier rate. That is, one minute in real time represents `multiplier` minutes of world time."
  },
  {
    "term": "object.clock.running:description",
    "definition": "`true` if clock is running, `false` if the clock is frozen or the world is not running."
  },
  {
    "term": "object.clock.time:description",
    "definition": "Current time in ticks since midnight, each tick is one fast clock minute,  e.g. `383` is `6:23` (AM)"
  },
  {
    "term": "object.clock.on_freeze:description",
    "definition": "Fired when the clock is frozen or stopped."
  },
  {
    "term": "object.clock.on_freeze.parameter.time:description",
    "definition": "Current time in ticks since midnight."
  },
  {
    "term": "object.clock.on_freeze.parameter.clock:description",
    "definition": ""
  },
  {
    "term": "object.clock.on_resume:description",
    "definition": "Fired when the clock resumes."
  },
  {
    "term": "object.clock.on_resume.parameter.time:description",
    "definition": "Current time in ticks since midnight."
  },
  {
    "term": "object.clock.on_resume.parameter.multiplier:description",
    "definition": "Fast clock multiplier rate."
  },
  {
    "term": "object.clock.on_resume.parameter.clock:description",
    "definition": ""
  },
  {
    "term": "object.clock.on_tick:description",
    "definition": "Fired when the clock ticks, once every fast clock minute."
  },
  {
    "term": "object.clock.on_tick.parameter.time:description",
    "definition": "Current time in ticks since midnight."
  },
  {
    "term": "object.clock.on_tick.parameter.clock:description",
    "definition": ""
  },
  {
    "term": "object.interface.name:description",
    "definition": "Interface name"
  },
  {
    "term": "object.interface.online:description",
    "definition": "`true` if interface is online, `false` otherwise. Read `status` for more information."
  },
  {
    "term": "object.interface.status:description",
    "definition": "{ref:object.interfacestatus} object."
  },
  {
    "term": "object.interfacestatus.state:description",
    "definition": "Interface state, a {ref:enum.interface_state} value."
  },
  {
    "term": "object.input.name:description",
    "definition": ""
  },
  {
    "term": "object.input.value:description",
    "definition": ""
  },
  {
    "term": "object.input.on_value_changed:description",
    "definition": ""
  },
  {
    "term": "object.input.on_value_changed.parameter.value:description",
    "definition": ""
  },
  {
    "term": "object.input.on_value_changed.parameter.input:description",
    "definition": ""
  },
  {
    "term": "object.output.name:description",
    "definition": "Output name"
  },
  {
    "term": "object.output.value:description",
    "definition": "Current output value, a {ref:enum.tri_state} value. `TRUE` means high, `FALSE` means low, `UNDEFINED` means that the output value isn't known."
  },
  {
    "term": "object.output.set_value:description",
    "definition": "Set the output value."
  },
  {
    "term": "object.output.set_value.parameter.value:description",
    "definition": "The output value to set, `true` means high, `false` means low."
  },
  {
    "term": "object.output.set_value:return_values",
    "definition": "`true` if request is sent, `false` otherwise. Note: It might take some time for the hardware to process the request."
  },
  {
    "term": "object.output.on_value_changed:description",
    "definition": "Fired if the output value changes."
  },
  {
    "term": "object.output.on_value_changed.parameter.value:description",
    "definition": "The new output value, `true` means high, `false` means low."
  },
  {
    "term": "object.output.on_value_changed.parameter.output:description",
    "definition": "The output object that changed."
  },
  {
    "term": "object.vehicle.name:description",
    "definition": "Vehicle name."
  },
  {
    "term": "object.train.active:description",
    "definition": ""
  },
  {
    "term": "object.train.emergency_stop:description",
    "definition": "`true` if emergency stop is active, `false` otherwise."
  },
  {
    "term": "object.train.is_stopped:description",
    "definition": "`true` if the train's velocity is zero, `false` if the train's velocity is greater than zero."
  },
  {
    "term": "object.train.mode:description",
    "definition": ""
  },
  {
    "term": "object.train.name:description",
    "definition": "Train name"
  },
  {
    "term": "object.train.powered:description",
    "definition": "`true` if the train contains a rail vehicle that can power the train, `false` otherwise."
  },
  {
    "term": "object.train.stop:description",
    "definition": "Stop the train, sets the speed to zero."
  },
  {
    "term": "object.world.boards:description",
    "definition": "{ref:object.boardlist} object."
  },
  {
    "term": "object.world.clock:description",
    "definition": "{ref:object.clock} object."
  },
  {
    "term": "object.world.name:description",
    "definition": "World name"
  },
  {
    "term": "object.world.rail_vehicles:description",
    "definition": "{ref:object.railvehiclelist} object."
  },
  {
    "term": "object.world.scale:description",
    "definition": "{ref:enum.world_scale}."
  },
  {
    "term": "object.world.scale_ratio:description",
    "definition": "World scale, e.g. `87` means `1:87` (H0 scale)"
  },
  {
    "term": "object.world.state:description",
    "definition": "World state, a combination of {ref:set.world_state} values."
  },
  {
    "term": "object.world.trains:description",
    "definition": "{ref:object.trainlist} object."
  },
  {
    "term": "object.world.uuid:description",
    "definition": "World UUID, unique for each world."
  },
  {
    "term": "object.world.on_event.parameter.state:description",
    "definition": "World state, a combination of {ref:set.world_state} values."
  },
  {
    "term": "object.world.on_event.parameter.event:description",
    "definition": "The {ref:enum.world_event}."
  },
  {
    "term": "object.world.on_event.parameter.world:description",
    "definition": ""
  },
  {
    "term": "object.loconetinterface.imm_packet:description",
    "definition": "Request the LocoNet command station to send a DCC packet to the track (`OPC_IMM_PACKET`)."
  },
  {
    "term": "object.loconetinterface.imm_packet.note:title",
    "definition": "Limited support"
  },
  {
    "term": "object.loconetinterface.imm_packet.note:description",
    "definition": "Not supported by all LocoNet command stations."
  },
  {
    "term": "object.loconetinterface.imm_packet.parameter.dcc_packet:description",
    "definition": "Table containing up to five DCC packet bytes to send excluding checksum byte."
  },
  {
    "term": "object.loconetinterface.imm_packet.parameter.repeat:description",
    "definition": "Number of times to repeat the packet on the track. (1...7)"
  },
  {
    "term": "object.loconetinterface.imm_packet:return_values",
    "definition": "`true` if send to the command station, `false` otherwise."
  },
  {
    "term": "object.loconetinterface.imm_packet.warning:title",
    "definition": "Use this with caution!"
  },
  {
    "term": "object.loconetinterface.imm_packet.warning:description",
    "definition": "These messages bypass Traintastic’s normal handling. You need a solid understanding of DCC to avoid conflicts. Side effects may occur that Traintastic is not aware of or cannot manage."
  },
  {
    "term": "object.loconetinterface.send:description",
    "definition": "Send LocoNet packet."
  },
  {
    "term": "object.loconetinterface.send.parameter.packet:description",
    "definition": "LocoNet packet bytes, excluding checksum."
  },
  {
    "term": "object.loconetinterface.send:return_values",
    "definition": "`true` if send, `false` otherwise."
  },
  {
    "term": "object.loconetinterface.send.warning:title",
    "definition": "Use this with caution!"
  },
  {
    "term": "object.loconetinterface.send.warning:description",
    "definition": "These messages bypass Traintastic’s normal handling. You need a solid understanding of LocoNet to avoid conflicts. Side effects may occur that Traintastic is not aware of or cannot manage."
  },
  {
    "term": "object.objectlist.__get:description",
    "definition": "Get object at `index`."
  },
  {
    "term": "object.objectlist.__get.parameter.index:description",
    "definition": "Index, 1...length."
  },
  {
    "term": "object.objectlist.__get:return_values",
    "definition": "Object at index or `nil` if index isn't valid."
  },
  {
    "term": "example:title",
    "definition": "Examples"
  },
  {
    "term": "example.controloutputworldrunstop:title",
    "definition": "Control output on world run/stop"
  },
  {
    "term": "example.controloutputworldrunstop:description",
    "definition": "This examples monitors the world state and controls an output based on the `RUN` flag. If the world is in `RUN` state the output is off, if the world is stopped the output is on, e.g. for controller a red lamp."
  },
  {
    "term": "example.directioncontrolusinginput:title",
    "definition": "Direction control using an input"
  },
  {
    "term": "example.directioncontrolusinginput:description",
    "definition": "This example show how to use an input to control a direction control board element on the board. This can e.g. be used for physical control panels that control board elements."
  },
  {
    "term": "object.identification:title",
    "definition": "Identification"
  },
  {
    "term": "object.identificationlist:title",
    "definition": "Identification list"
  },
  {
    "term": "enum.block_train_direction:title",
    "definition": "Block train direction"
  },
  {
    "term": "enum.block_train_direction:description",
    "definition": "Train direction from the block perspective."
  },
  {
    "term": "enum.block_train_direction.towards_a:description",
    "definition": "Towards the west for horizontal blocks, towards the south for vertical blocks."
  },
  {
    "term": "enum.block_train_direction.towards_b:description",
    "definition": "Towards the east for horizontal blocks, towards the north for vertical blocks."
  },
  {
    "term": "enum.block_train_direction.unknown:description",
    "definition": "Unknown or invalid direction."
  },
  {
    "term": "object.blockrailtile.on_train_reserved:description",
    "definition": "Fired when a {ref:object.train} reserves the block."
  },
  {
    "term": "object.blockrailtile.on_train_reserved.parameter.train:description",
    "definition": "{ref:object.train} that is reserved the block."
  },
  {
    "term": "object.blockrailtile.on_train_reserved.parameter.block:description",
    "definition": "The block that is reserved."
  },
  {
    "term": "object.blockrailtile.on_train_reserved.parameter.direction:description",
    "definition": "Train direction from the block perspective, a {ref:enum.block_train_direction} value."
  },
  {
    "term": "object.blockrailtile.on_train_entered:description",
    "definition": "Fired when a {ref:object.train} enters the block."
  },
  {
    "term": "object.blockrailtile.on_train_entered.parameter.train:description",
    "definition": "{ref:object.train} that entered the block."
  },
  {
    "term": "object.blockrailtile.on_train_entered.parameter.block:description",
    "definition": "The block that is entered."
  },
  {
    "term": "object.blockrailtile.on_train_entered.parameter.direction:description",
    "definition": "Train direction from the block perspective, a {ref:enum.block_train_direction} value."
  },
  {
    "term": "object.blockrailtile.on_train_left:description",
    "definition": "Fired when a {ref:object.train} has left the block."
  },
  {
    "term": "object.blockrailtile.on_train_left.parameter.train:description",
    "definition": "{ref:object.train} that entered the block."
  },
  {
    "term": "object.blockrailtile.on_train_left.parameter.block:description",
    "definition": "The block that the train left."
  },
  {
    "term": "object.blockrailtile.on_train_left.parameter.direction:description",
    "definition": "Train direction from the block perspective, a {ref:enum.block_train_direction} value."
  },
  {
    "term": "object.curve45railtile:title",
    "definition": "Curve 45° rail tile"
  },
  {
    "term": "object.curve90railtile:title",
    "definition": "Curve 90° rail tile"
  },
  {
    "term": "object.bridge45leftrailtile:title",
    "definition": "Bridge 45° left rail tile"
  },
  {
    "term": "object.bridge45rightrailtile:title",
    "definition": "Bridge 45° right rail tile"
  },
  {
    "term": "object.bridge90railtile:title",
    "definition": "Bridge 90° rail tile"
  },
  {
    "term": "object.cross45railtile:title",
    "definition": "Cross 45° rail tile"
  },
  {
    "term": "object.cross90railtile:title",
    "definition": "Cross 90° rail tile"
  },
  {
    "term": "object.hsi88interface:title",
    "definition": "HSI88 interface"
  },
  {
    "term": "object.signal2aspectrailtile:title",
    "definition": "Signal 2 aspect rail tile"
  },
  {
    "term": "object.signal3aspectrailtile:title",
    "definition": "Signal 3 aspect rail tile"
  },
  {
    "term": "object.turnout3wayrailtile:title",
    "definition": "Turnout 3 way rail tile"
  },
  {
    "term": "object.turnoutleft45railtile:title",
    "definition": "Turnout left 45° rail tile"
  },
  {
    "term": "object.turnoutleft90railtile:title",
    "definition": "Turnout left 90° rail tile"
  },
  {
    "term": "object.turnoutright45railtile:title",
    "definition": "Turnout right 45° rail tile"
  },
  {
    "term": "object.turnoutright90railtile:title",
    "definition": "Turnout right 90° rail tile"
  },
  {
    "term": "object.z21interface:title",
    "definition": "Z21 interface"
  },
  {
    "term": "object.nxbuttonrailtile:title",
    "definition": "NX button rail tile"
  },
  {
    "term": "object.pushbuttontile:title",
    "definition": "Push button tile"
  },
  {
    "term": "example.dccextsignalloconet:title",
    "definition": "DCCext signal control (LocoNet)"
  },
  {
    "term": "example.dccextsignalloconet:description",
    "definition": "This examples shows how a signal can be controlled with DCCext commands (via LocoNet) as demonstration how custom control can be implemented. Traintastic will offcourse support DCCext natively in the future."
  },
  {
    "term": "object.category.interfaces:title",
    "definition": "Interfaces"
  },
  {
    "term": "object.category.other:title",
    "definition": "Other"
  },
  {
    "term": "object.singleoutput:title",
    "definition": "Single output"
  },
  {
    "term": "object.singleoutput:description",
    "definition": ""
  },
  {
    "term": "object.pairoutput:title",
    "definition": "Pair output"
  },
  {
    "term": "object.pairoutput:description",
    "definition": ""
  },
  {
    "term": "object.output.type:description",
    "definition": "{ref:enum.output_type}."
  },
  {
    "term": "object.pairoutput.value:description",
    "definition": "Current output value, a {ref:enum.output_type} value."
  },
  {
    "term": "object.pairoutput.set_value:description",
    "definition": ""
  },
  {
    "term": "object.pairoutput.set_value.parameter.value:description",
    "definition": ""
  },
  {
    "term": "object.pairoutput.set_value:return_values",
    "definition": ""
  },
  {
    "term": "object.pairoutput.on_value_changed:description",
    "definition": ""
  },
  {
    "term": "object.pairoutput.on_value_changed.parameter.value:description",
    "definition": ""
  },
  {
    "term": "object.pairoutput.on_value_changed.parameter.output:description",
    "definition": ""
  },
  {
    "term": "object.aspectoutput:title",
    "definition": "Aspect output"
  },
  {
    "term": "object.aspectoutput:description",
    "definition": ""
  },
  {
    "term": "enum.output_type:title",
    "definition": "Output type"
  },
  {
    "term": "enum.output_channel:title",
    "definition": "Output channel"
  },
  {
    "term": "object.interface.get_output:description",
    "definition": "Get an output object."
  },
  {
    "term": "object.interface.get_output.parameter.channel:description",
    "definition": "Output channel, a {ref:enum.output_channel} value."
  },
  {
    "term": "object.interface.get_output.parameter.address:description",
    "definition": "Output address, valid range depends on `channel`."
  },
  {
    "term": "object.interface.get_output:return_values",
    "definition": "{ref:object.singleoutput}, {ref:object.pairoutput} or {ref:object.aspectoutput} object depending on `channel` or `nil` if `channel`/`address` combination is invalid."
  },
  {
    "term": "object.labeltile:title",
    "definition": "Label tile"
  },
  {
    "term": "object.switchtile:title",
    "definition": "Switch tile"
  },
  {
    "term": "object.train.on_block_entered:description",
    "definition": "Fired when the train enters a {ref:object.blockrailtile|block}."
  },
  {
    "term": "object.train.on_block_entered.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_block_entered.parameter.block:description",
    "definition": "The {ref:object.blockrailtile|block} that is entered."
  },
  {
    "term": "object.train.on_block_entered.parameter.direction:description",
    "definition": "Train direction from the block perspective, a {ref:enum.block_train_direction} value."
  },
  {
    "term": "object.train.on_block_left:description",
    "definition": "Fired when the train has left a {ref:object.blockrailtile|block}."
  },
  {
    "term": "object.train.on_block_left.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_block_left.parameter.block:description",
    "definition": "The {ref:object.blockrailtile|block} that the train left."
  },
  {
    "term": "object.train.on_block_left.parameter.direction:description",
    "definition": "Train direction from the block perspective, a {ref:enum.block_train_direction} value."
  },
  {
    "term": "example:description",
    "definition": "A collection of examples to help getting started with Traintastic Lua scripting."
  },
  {
    "term": "object.ecosinterface:description",
    "definition": "Interface for communicating with an ESU ECoS or ECoS 2."
  },
  {
    "term": "object.interface.output_channels:description",
    "definition": "Supported output channels, a table containing {ref:enum.output_channel|output channel} values."
  },
  {
    "term": "object.hsi88interface:description",
    "definition": "Interface for communicating with a LDT HSI-88."
  },
  {
    "term": "object.marklincaninterface:description",
    "definition": "Interface for communicating with a Märklin CS2/CS3."
  },
  {
    "term": "object.traintasticdiyinterface:description",
    "definition": "Interface for communicating with a Traintastic DIY compatible device."
  },
  {
    "term": "object.xpressnetinterface:description",
    "definition": "Interface for communicating with a XpressNet network."
  },
  {
    "term": "object.z21interface:description",
    "definition": "Interface for communicating with a Z21, z21 or z21 start."
  },
  {
    "term": "object.signal2aspectrailtile.on_aspect_changed:description",
    "definition": "Fired when the signal aspect changes."
  },
  {
    "term": "object.signal3aspectrailtile.on_aspect_changed:description",
    "definition": "Fired when the signal aspect changes."
  },
  {
    "term": "object.train.on_block_assigned:description",
    "definition": "Fired when the train is assigned to a block."
  },
  {
    "term": "object.train.on_block_assigned.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_block_assigned.parameter.block:description",
    "definition": "The {ref:object.blockrailtile|block} the train is assigned to."
  },
  {
    "term": "object.train.on_block_removed:description",
    "definition": "Fired when the train is removed from a block."
  },
  {
    "term": "object.train.on_block_removed.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_block_removed.parameter.block:description",
    "definition": "The {ref:object.blockrailtile|block} the train is removed from."
  },
  {
    "term": "object.train.on_block_reserved:description",
    "definition": "Fired when the train reserves a block."
  },
  {
    "term": "object.train.on_block_reserved.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_block_reserved.parameter.block:description",
    "definition": "The {ref:object.blockrailtile|block} that is reserved by the train."
  },
  {
    "term": "object.train.on_block_reserved.parameter.direction:description",
    "definition": "Train direction from the block perspective, a {ref:enum.block_train_direction} value."
  },
  {
    "term": "object.turnoutsliprailtile.dual_motor:description",
    "definition": "`true` if the slip turnout has two motors/coils, `false` if it has one motor/coil."
  },
  {
    "term": "object.turnoutrailtile.name:description",
    "definition": "Turnout name."
  },
  {
    "term": "object.turnoutrailtile.position:description",
    "definition": "Current turnout position, a {ref:enum.turnout_position} value. To change the turnout position call [`set_position`](#set_position)."
  },
  {
    "term": "object.turnoutrailtile.set_position:description",
    "definition": "Change turnout position."
  },
  {
    "term": "object.turnoutrailtile.set_position.parameter.position:description",
    "definition": "Requested turnout position, a {ref:enum.turnout_position} value."
  },
  {
    "term": "object.turnoutrailtile.set_position:return_values",
    "definition": "`true` if the position is changed, `false` if position value is invalid or turnout is locked e.g. due to a reserved path."
  },
  {
    "term": "object.zone:title",
    "definition": "Zone"
  },
  {
    "term": "object.zone:description",
    "definition": "A zone groups multiple blocks into a logical area, such as a station, yard, or staging area. Zones make it easier to script behaviors that depend on a train’s location within a larger area, rather than tracking individual blocks."
  },
  {
    "term": "object.zone.name:description",
    "definition": "The configured name of the zone."
  },
  {
    "term": "object.zone:events_overview",
    "definition": "Zone events fall into two categories:\n\n- **Assignment events**: `on_train_assigned` and `on_train_removed` are triggered when a train is manually linked to or unlinked from a block in the zone. These indicate identification changes made by the operator, not movement.\n\n- **Movement events**: `on_train_entering`, `on_train_entered`, `on_train_leaving`, and `on_train_left` are triggered as a train moves through the zone. They represent the lifecycle of a train entering, being inside, leaving, and fully leaving the zone."
  },
  {
    "term": "object.zone.on_train_entering:description",
    "definition": "Fired when a train starts moving into the zone by reserving or occupying its first block. This marks the point where the train begins to interact with the zone but is not yet fully inside it (see `on_train_entered`).\n\nUnlike `on_train_assigned`, which is triggered when a train is manually linked to a block (e.g., placed on the track and assigned by the operator), `on_train_entering` reflects actual movement or reservation during operation."
  },
  {
    "term": "object.zone.on_train_entering.parameter.train:description",
    "definition": "the {ref:object.train|train} that is entering the zone."
  },
  {
    "term": "object.zone.on_train_entering.parameter.zone:description",
    "definition": "the {ref:object.zone|zone} firing the event."
  },
  {
    "term": "object.zone.on_train_assigned:description",
    "definition": "Fired when a train is manually assigned to the first block of the zone. This happens after a train has been placed on the track and the operator links it to the block, allowing Traintastic to recognize which train it is.\n\nThis event is about train identification, not movement."
  },
  {
    "term": "object.zone.on_train_assigned.parameter.train:description",
    "definition": "the {ref:object.train|train} that is assigned to a block in the zone."
  },
  {
    "term": "object.zone.on_train_assigned.parameter.zone:description",
    "definition": "the {ref:object.zone|zone} firing the event."
  },
  {
    "term": "object.zone.on_train_leaving:description",
    "definition": "Fired when a train starts to leave the zone by reserving or occupying a block that is not part of the zone. At this point the train still has blocks in the zone, but it is extending beyond its boundaries."
  },
  {
    "term": "object.zone.on_train_leaving.parameter.train:description",
    "definition": "the {ref:object.train|train} that is leaving the zone."
  },
  {
    "term": "object.zone.on_train_leaving.parameter.zone:description",
    "definition": "the {ref:object.zone|zone} firing the event."
  },
  {
    "term": "object.zone.on_train_entered:description",
    "definition": "Fired when a train is fully inside the zone. A train is considered 'in the zone' only if it exclusively occupies blocks that belong to the zone.\n\n!!! note\n    If a zone is too small or the train too long, it may happen that while entering, the train simultaneously starts leaving the zone. In this case, the train is never fully inside, and `on_train_entered` will not be fired (only `on_train_entering` and `on_train_leaving` apply)."
  },
  {
    "term": "object.zone.on_train_entered.parameter.train:description",
    "definition": "the {ref:object.train|train} that is in the zone."
  },
  {
    "term": "object.zone.on_train_entered.parameter.zone:description",
    "definition": "the {ref:object.zone|zone} firing the event."
  },
  {
    "term": "object.zone.on_train_left:description",
    "definition": "Fired when a train is no longer in the zone, a train is no longer in the zone when it doesn't occupy any block that are part of the zone."
  },
  {
    "term": "object.zone.on_train_left.parameter.train:description",
    "definition": "the {ref:object.train|train} that has left the zone."
  },
  {
    "term": "object.zone.on_train_left.parameter.zone:description",
    "definition": "the {ref:object.zone|zone} firing the event."
  },
  {
    "term": "object.zone.on_train_removed:description",
    "definition": "Fired when a train is manually removed from the last block of the zone. This is the opposite of `on_train_assigned` and indicates the train is no longer linked to the zone.\n\nThis event is about train identification, not movement."
  },
  {
    "term": "object.zone.on_train_removed.parameter.train:description",
    "definition": "the {ref:object.train|train} that is removed from the zone."
  },
  {
    "term": "object.zone.on_train_removed.parameter.zone:description",
    "definition": "the {ref:object.zone|zone} firing the event."
  },
  {
    "term": "object.trainzonestatus:title",
    "definition": "Train zone status"
  },
  {
    "term": "object.trainzonestatus.state:description",
    "definition": "State of the train in the zone, a {ref:enum.zone_train_state} value."
  },
  {
    "term": "object.trainzonestatus.train:description",
    "definition": "The {ref:object.train|train}."
  },
  {
    "term": "object.trainzonestatus.zone:description",
    "definition": "The {ref:object.zone|zone}."
  },
  {
    "term": "enum.zone_train_state:title",
    "definition": "Zone train state"
  },
  {
    "term": "object.train.on_zone_assigned:description",
    "definition": "Fired when the train is assigned to the first block of a zone."
  },
  {
    "term": "object.train.on_zone_assigned.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_zone_assigned.parameter.zone:description",
    "definition": "The {ref:object.zone|zone} that the train is assigned to."
  },
  {
    "term": "object.train.on_zone_entered:description",
    "definition": "Fired when the train is in a zone, the train is in a zone when it only occupies blocks that are part of a zone."
  },
  {
    "term": "object.train.on_zone_entered.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_zone_entered.parameter.zone:description",
    "definition": "The {ref:object.zone|zone} that the train has entered."
  },
  {
    "term": "object.train.on_zone_entering:description",
    "definition": "Fired when the train reserves or enters the first block of a zone it currently isn't in."
  },
  {
    "term": "object.train.on_zone_entering.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_zone_entering.parameter.zone:description",
    "definition": "The {ref:object.zone|zone} that the train is entering."
  },
  {
    "term": "object.train.on_zone_leaving:description",
    "definition": "Fired when the train reserves or enters a block that is not part of a zone it currently is in."
  },
  {
    "term": "object.train.on_zone_leaving.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_zone_leaving.parameter.zone:description",
    "definition": "The {ref:object.zone|zone} that the train is leaving."
  },
  {
    "term": "object.train.on_zone_left:description",
    "definition": "Fired when the train is no longer in a zone, the train is not longer in a zone when it doesn't occupy any block that is part of a zone."
  },
  {
    "term": "object.train.on_zone_left.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_zone_left.parameter.zone:description",
    "definition": "The {ref:object.zone|zone} that the train left."
  },
  {
    "term": "object.train.on_zone_removed:description",
    "definition": "Fired when the train is removed from the last block of a zone."
  },
  {
    "term": "object.train.on_zone_removed.parameter.train:description",
    "definition": "The train."
  },
  {
    "term": "object.train.on_zone_removed.parameter.zone:description",
    "definition": "The {ref:object.zone|zone} that the train is removed from."
  },
  {
    "term": "object.zone.mute:description",
    "definition": "If `true`, all sounds of trains in the zone are muted."
  },
  {
    "term": "object.zone.no_smoke:description",
    "definition": "If `true`, smoke generaters are disabled of all trains in the zone."
  },
  {
    "term": "object.zone.trains:description",
    "definition": "List of {ref:object.trainzonestatus|train zone status} objects of all trains that are entering, entered or leaving the zone."
  },
  {
    "term": "globals.pv:description",
    "definition": "The {ref:pv|persistent variable} table."
  },
  {
    "term": "pv:title",
    "definition": "Persistent variables"
  },
  {
    "term": "pv:paragraph_1",
    "definition": "Persistent variables allow you to store data that survives script restarts and world save/load. They are useful for keeping state between sessions, such as counters, configuration values, or custom train data."
  },
  {
    "term": "pv:paragraph_2",
    "definition": "The {ref:globals#pv|`pv`} global provides a simple and efficient interface for interacting with persistent data. Any values stored in {ref:globals#pv|`pv`} are saved across script executions and world save and loads. Below is a detailed breakdown of how to use the {ref:globals#pv|`pv`} global."
  },
  {
    "term": "pv.storing:title",
    "definition": "Storing persistent data"
  },
  {
    "term": "pv.storing:paragraph_1",
    "definition": "You can store data in {ref:globals#pv|`pv`} just like you would with a regular Lua table."
  },
  {
    "term": "pv:storing_note",
    "definition": "Persistent variables supports storing booleans, numbers, strings, tables, {ref:enum|enums}, {ref:set|sets}, {ref:object|objects} and object methods."
  },
  {
    "term": "pv.retrieving:title",
    "definition": "Retrieving persistent data"
  },
  {
    "term": "pv.retrieving:paragraph_1",
    "definition": "To retrieve a previously stored value, including tables, access the corresponding key in the {ref:globals#pv|`pv`} global:"
  },
  {
    "term": "pv.deleting:title",
    "definition": "Deleting persistent data"
  },
  {
    "term": "pv.deleting:paragraph_1",
    "definition": "To delete a stored persistent value, including tables, simply assign `nil` to the desired key:"
  },
  {
    "term": "pv.checking:title",
    "definition": "Checking if data exists"
  },
  {
    "term": "pv.checking:paragraph_1",
    "definition": "To determine if a persistent variable has been set, use a `nil` checks. This pattern is useful for initializing default values or handling cases where the persistent variables are cleared."
  },
  {
    "term": "enum.zone_train_state:description",
    "definition": "Enum value represeting the state of a {ref:object.train|train} related to a {ref:object.zone|zone}. For long trains and/or short zones it is possible that a train is `LEAVING` before it fully `ENTERED` the zone, in that case `LEAVING` takes preference over `ENTERING`."
  },
  {
    "term": "enum.zone_train_state.entered:description",
    "definition": "The {ref:object.train|train} is in the {ref:object.zone|zone}, it does not occupy any {ref:object.blockrailtile|block} outside the zone."
  },
  {
    "term": "enum.zone_train_state.entering:description",
    "definition": "The front of the {ref:object.train|train} is in or has reserved at least one {ref:object.blockrailtile|block} of the {ref:object.zone|zone}."
  },
  {
    "term": "enum.zone_train_state.leaving:description",
    "definition": "The front of the {ref:object.train|train} is in or has reserved at least one {ref:object.blockrailtile|block} that is not of the {ref:object.zone|zone}."
  },
  {
    "term": "enum.zone_train_state.unknown:description",
    "definition": "The state is unknown, this value isn't used, it can be used for initialization purposes."
  },
  {
    "term": "object.trainzonestatus:description",
    "definition": "Object represeting the state of a train related to a zone."
  },
  {
    "term": "object.train.mute:description",
    "definition": "If `true`, mutes all trains in the zone."
  },
  {
    "term": "object.train.no_smoke:description",
    "definition": "If `true`, disables smoke generators of all trains in the zone.s"
  },
  {
    "term": "object.train.zones:description",
    "definition": "List of {ref:object.trainzonestatus|train zone status} objects of all zones that the train is entering, has entered and/or is leaving."
  },
  {
    "term": "object.scriptthrottle:title",
    "definition": "Script throttle"
  },
  {
    "term": "object.scriptthrottle:description",
    "definition": "Represents a script-accessible throttle object that can control a {ref:object.train|train} when acquired.\nThrottle objects can be created using the `class.create_throttle()` function."
  },
  {
    "term": "object.throttle.name:description",
    "definition": "The name assigned to this throttle."
  },
  {
    "term": "object.throttle.train:description",
    "definition": "the {ref:object.train|train} currently controlled by this throttle, if any."
  },
  {
    "term": "object.scriptthrottle.acquire:description",
    "definition": "Attempts to acquire control of {ref:object.train|train} for this throttle."
  },
  {
    "term": "object.scriptthrottle.acquire.parameter.train:description",
    "definition": "The {ref:object.train|train} to acquire."
  },
  {
    "term": "object.scriptthrottle.acquire.parameter.steal:description",
    "definition": "Optional flag allowing the throttle to steal control from another throttle, default is `false`."
  },
  {
    "term": "object.scriptthrottle.acquire:return_values",
    "definition": "Returns `true` if the {ref:object.train|train} was successfully acquired, `false` otherwise."
  },
  {
    "term": "object.scriptthrottle.change_direction:description",
    "definition": "Reverses the current direction of the {ref:object.train|train} controlled by this throttle. The train can only change direcition if stopped."
  },
  {
    "term": "object.scriptthrottle.change_direction:return_values",
    "definition": "Returns `true` if the direction was changed successfully, `false` otherwise."
  },
  {
    "term": "object.scriptthrottle.emergency_stop:description",
    "definition": "Immediately stops the {ref:object.train|train} controlled by this throttle, bypassing any deceleration logic."
  },
  {
    "term": "object.scriptthrottle.emergency_stop:return_values",
    "definition": "Returns `true`, only returns `false` if throttle is not acquired."
  },
  {
    "term": "object.scriptthrottle.release:description",
    "definition": "Releases control of the currently controlled {ref:object.train|train}."
  },
  {
    "term": "object.scriptthrottle.release.parameter.stop:description",
    "definition": "Optional boolean indicating whether the {ref:object.train|train} should stop when released, default is `true`."
  },
  {
    "term": "object.scriptthrottle.set_direction:description",
    "definition": "Sets the direction of the {ref:object.train|train}. The train can only change direcition if stopped."
  },
  {
    "term": "object.scriptthrottle.set_direction.parameter.direction:description",
    "definition": "The desired {ref:enum.direction|direction} for the {ref:object.train|train} (`enum.direction.FORWARD` or `enum.direction.REVERSE`)."
  },
  {
    "term": "object.scriptthrottle.set_direction:return_values",
    "definition": "Returns true if the direction was successfully set."
  },
  {
    "term": "object.scriptthrottle.set_speed:description",
    "definition": "Sets the current speed of the {ref:object.train|train} directly."
  },
  {
    "term": "object.scriptthrottle.set_speed.parameter.speed:description",
    "definition": "The train speed in *unit*."
  },
  {
    "term": "object.scriptthrottle.set_speed.parameter.unit:description",
    "definition": "The {ref:enum.speed_unit|speed unit} (e.g. `enum.speed_unit.KMPH` or `enum.speed_unit.MPH`)."
  },
  {
    "term": "object.scriptthrottle.set_speed:return_values",
    "definition": "Returns `true` if the speed was successfully set, `false` otherwise."
  },
  {
    "term": "object.scriptthrottle.set_target_speed:description",
    "definition": "Sets the target speed for the {ref:object.train|train}, allowing gradual acceleration or deceleration."
  },
  {
    "term": "object.scriptthrottle.set_target_speed.parameter.target_speed:description",
    "definition": "The desired target speed for the train in *unit*."
  },
  {
    "term": "object.scriptthrottle.set_target_speed.parameter.unit:description",
    "definition": "The {ref:enum.speed_unit|speed unit} (e.g. `enum.speed_unit.KMPH` or `enum.speed_unit.MPH`)."
  },
  {
    "term": "object.scriptthrottle.set_target_speed:return_values",
    "definition": "Returns `true` if the target speed was successfully applied, `false` otherwise."
  },
  {
    "term": "object.scriptthrottle.on_acquire:description",
    "definition": "Event triggered when the throttle successfully acquires a {ref:object.train|train}."
  },
  {
    "term": "object.throttle.on_acquire.parameter.throttle:description",
    "definition": "the throttle that is acquired control of the {ref:object.train|train}."
  },
  {
    "term": "object.throttle.on_acquire.parameter.train:description",
    "definition": "the {ref:object.train|train} that is acquired by the throttle."
  },
  {
    "term": "object.scriptthrottle.on_release:description",
    "definition": "Event triggered when the throttle releases control of its {ref:object.train|train}."
  },
  {
    "term": "object.throttle.on_release.parameter.throttle:description",
    "definition": "the throttle that released control."
  },
  {
    "term": "object.blockrailtile:description",
    "definition": "Represents a block in the train control system. A block is a section of track that can detect, reserve, and track trains."
  },
  {
    "term": "object.blockrailtile.name:description",
    "definition": "The name assigned to the block, used for the user interface."
  },
  {
    "term": "object.blockrailtile.state:description",
    "definition": "The current state of the block, a {ref:enum.block_state|block state} value. Indicates whether the block is free, reserved, occupied, or its state is unknown."
  },
  {
    "term": "object.blockrailtile.trains:description",
    "definition": "List of {ref:object.trainblockstatus|train block status} objects with information about the trains in this block."
  },
  {
    "term": "object.blockrailtile.on_train_assigned:description",
    "definition": "Fired when a train is manually assigned to the block. This happens after a train has been placed on the track and the operator links it to the block, allowing Traintastic to recognize which train it is.\n\nThis event is about train identification, not movement."
  },
  {
    "term": "object.blockrailtile.on_train_removed:description",
    "definition": "Fired when a train is manually removed from the block. This is the opposite of `on_train_assigned` and indicates the train is no longer linked to the block.\n\nThis event is about train identification, not movement."
  },
  {
    "term": "enum.block_state:title",
    "definition": "Block state"
  },
  {
    "term": "enum.block_state:description",
    "definition": "Represents the current occupancy or reservation state of a {ref:object.blockrailtile|block} in the train control system."
  },
  {
    "term": "enum.block_state.free:description",
    "definition": "Indicates that the block is free and not occupied or reserved by any train."
  },
  {
    "term": "enum.block_state.occupied:description",
    "definition": "Indicates that the block is currently occupied by a train."
  },
  {
    "term": "enum.block_state.reserved:description",
    "definition": "Indicates that the block has been reserved by a train but is not yet occupied."
  },
  {
    "term": "enum.block_state.unknown:description",
    "definition": "Indicates that the block's state is unknown, typically due to missing or invalid data from feedback sensors."
  },
  {
    "term": "object.trainblockstatus:title",
    "definition": "Train block status"
  },
  {
    "term": "object.trainblockstatus:description",
    "definition": "Represents the status of a {ref:object.train|train} in relation to a specific {ref:object.blockrailtile|block}. It provides information about which block the train occupies or interacts with, along with its direction and reference to the train."
  },
  {
    "term": "object.trainblockstatus.block:description",
    "definition": "The {ref:object.blockrailtile|block} associated with this status entry."
  },
  {
    "term": "object.trainblockstatus.direction:description",
    "definition": "The direction of the train relative to the block, represented by a {ref:enum.block_train_direction|block train direction} value."
  },
  {
    "term": "object.trainblockstatus.train:description",
    "definition": "The {ref:object.train|train} this status entry refers to."
  },
  {
    "term": "enum.color:title",
    "definition": "Color"
  },
  {
    "term": "enum.color:description",
    "definition": "Represents a set of standard named colors that can be used for display, signaling, or visualization within the train control system or user interface."
  },
  {
    "term": "enum.color.aqua:description",
    "definition": "A bright cyan-blue color, often used for highlighting or informational indicators."
  },
  {
    "term": "enum.color.black:description",
    "definition": "Black color, typically used for text, outlines, or inactive elements."
  },
  {
    "term": "enum.color.blue:description",
    "definition": "Blue color, commonly used to represent normal operation, information, or neutral states."
  },
  {
    "term": "enum.color.fuchsia:description",
    "definition": "A vivid pink-purple color, often used for emphasis or alerts."
  },
  {
    "term": "enum.color.gray:description",
    "definition": "Gray color, usually used for disabled or inactive elements."
  },
  {
    "term": "enum.color.green:description",
    "definition": "Green color, typically representing safety, readiness, or 'go' states."
  },
  {
    "term": "enum.color.lime:description",
    "definition": "Bright lime-green color, a lighter variant of green often used for visibility or highlights."
  },
  {
    "term": "enum.color.maroon:description",
    "definition": "Dark red color, sometimes used to indicate caution or reserved conditions."
  },
  {
    "term": "enum.color.navy:description",
    "definition": "Dark blue color, typically used for professional or subdued indicators."
  },
  {
    "term": "enum.color.none:description",
    "definition": "Represents the absence of a color or transparent state."
  },
  {
    "term": "enum.color.olive:description",
    "definition": "Olive green color, often used for muted or intermediate visual states."
  },
  {
    "term": "enum.color.purple:description",
    "definition": "Purple color, commonly used for secondary or auxiliary indicators."
  },
  {
    "term": "enum.color.red:description",
    "definition": "Red color, typically representing danger, stop, or error conditions."
  },
  {
    "term": "enum.color.silver:description",
    "definition": "Light gray or silver color, used for neutral or decorative purposes."
  },
  {
    "term": "enum.color.teal:description",
    "definition": "Teal color, a blue-green hue used for calm or neutral indicators."
  },
  {
    "term": "enum.color.white:description",
    "definition": "White color, representing neutrality, clarity, or background elements."
  },
  {
    "term": "enum.color.yellow:description",
    "definition": "Yellow color, typically used for warnings, attention, or intermediate states."
  },
  {
    "term": "enum.input_channel:title",
    "definition": "Input channel"
  },
  {
    "term": "enum.input_channel:description",
    "definition": "Defines the input channel type used by supported hardware interfaces to receive sensor or feedback data. By default, the channel is `INPUT`, but other channels are used for specific systems such as Z21, ESU ECoS, or LDI HSI-88."
  },
  {
    "term": "enum.input_channel.ecos_detector:description",
    "definition": "Input channel used by the {ref:object.ecosinterface} for ESU ECoS Detector feedback modules."
  },
  {
    "term": "enum.input_channel.input:description",
    "definition": "Default input channel type used for general-purpose inputs not tied to a specific hardware interface."
  },
  {
    "term": "enum.input_channel.loconet:description",
    "definition": "Input channel used by the {ref:object.z21interface} for LocoNet-based feedback modules."
  },
  {
    "term": "enum.input_channel.rbus:description",
    "definition": "Input channel used by the {ref:object.z21interface} for RBus-based feedback modules."
  },
  {
    "term": "enum.input_channel.s88:description",
    "definition": "Input channel used by the {ref:object.ecosinterface} for S88 feedback modules."
  },
  {
    "term": "enum.input_channel.s88_left:description",
    "definition": "Input channel for the left S88 bus segment on the {ref:object.hsi88interface}."
  },
  {
    "term": "enum.input_channel.s88_middle:description",
    "definition": "Input channel for the middle S88 bus segment on the {ref:object.hsi88interface}."
  },
  {
    "term": "enum.input_channel.s88_right:description",
    "definition": "Input channel for the right S88 bus segment on the {ref:object.hsi88interface}."
  },
  {
    "term": "enum.output_pair_value:title",
    "definition": "Output pair value"
  },
  {
    "term": "enum.output_pair_value:description",
    "definition": "Defines the active output within a pair used by accessory-type outputs such as turnouts or signals. Each pair has two lines, where only one is active at a time — typically referred to as red/green or thrown/closed."
  },
  {
    "term": "enum.output_pair_value.first:description",
    "definition": "Indicates that the first output in the pair is active. This is commonly referred to as the red or thrown state."
  },
  {
    "term": "enum.output_pair_value.second:description",
    "definition": "Indicates that the second output in the pair is active. This is commonly referred to as the green or closed state."
  },
  {
    "term": "enum.output_pair_value.undefined:description",
    "definition": "Indicates that the active output in the pair is undefined, meaning neither output is currently active or the state cannot be determined."
  },
  {
    "term": "enum.speed_unit:title",
    "definition": "Speed unit"
  },
  {
    "term": "enum.speed_unit:description",
    "definition": "Specifies the unit of measurement used for train speed values."
  },
  {
    "term": "enum.speed_unit.kmph:description",
    "definition": "Speed expressed in kilometers per hour (km/h). Commonly used in metric-based regions."
  },
  {
    "term": "enum.speed_unit.mph:description",
    "definition": "Speed expressed in miles per hour (mph). Commonly used in imperial-based regions."
  },
  {
    "term": "enum.speed_unit.mps:description",
    "definition": "Speed expressed in meters per second (m/s)."
  },
  {
    "term": "enum.text_align:title",
    "definition": "Text alignment"
  },
  {
    "term": "enum.text_align:description",
    "definition": "Defines how text is positioned within a display or layout area, combining vertical and horizontal alignment options."
  },
  {
    "term": "enum.text_align.bottom_center:description",
    "definition": "Text is aligned to the bottom and horizontally centered."
  },
  {
    "term": "enum.text_align.bottom_left:description",
    "definition": "Text is aligned to the bottom and flush to the left."
  },
  {
    "term": "enum.text_align.bottom_right:description",
    "definition": "Text is aligned to the bottom and flush to the right."
  },
  {
    "term": "enum.text_align.center:description",
    "definition": "Text is centered both horizontally and vertically."
  },
  {
    "term": "enum.text_align.center_left:description",
    "definition": "Text is vertically centered and aligned to the left."
  },
  {
    "term": "enum.text_align.center_right:description",
    "definition": "Text is vertically centered and aligned to the right."
  },
  {
    "term": "enum.text_align.top_center:description",
    "definition": "Text is aligned to the top and horizontally centered."
  },
  {
    "term": "enum.text_align.top_left:description",
    "definition": "Text is aligned to the top and flush to the left."
  },
  {
    "term": "enum.text_align.top_right:description",
    "definition": "Text is aligned to the top and flush to the right."
  },
  {
    "term": "enum.decoder_protocol:description",
    "definition": "Communication protocol used by a digital decoder to receive commands from the command station."
  },
  {
    "term": "enum.sensor_state:title",
    "definition": "Sensor state"
  },
  {
    "term": "enum.sensor_state:description",
    "definition": "Defines the possible states of a track sensor. Depending on the set type sensors report section occupancy (free/occupied), or event triggers (idle/triggered)."
  },
  {
    "term": "enum.sensor_state.free:description",
    "definition": "Section-based state indicating that no train is present in the monitored track section."
  },
  {
    "term": "enum.sensor_state.idle:description",
    "definition": "Position-based state indicating that the sensor is inactive and waiting to be triggered  (e.g., reed switch, IR sensor, or hall sensor)."
  },
  {
    "term": "enum.sensor_state.occupied:description",
    "definition": "Section-based state indicating that a train occupies the monitored track section."
  },
  {
    "term": "enum.sensor_state.triggered:description",
    "definition": "Position-based state indicating that the sensor has been activated by a passing train."
  },
  {
    "term": "enum.sensor_state.unknown:description",
    "definition": "Indicates that the current sensor state cannot be determined, possibly due to communication issues or an uninitialized input."
  },
  {
    "term": "enum.signal_aspect:description",
    "definition": "Represents the visual aspect or indication shown by a railway signal, defining how a train should proceed based on track conditions ahead."
  },
  {
    "term": "enum.signal_aspect.proceed:description",
    "definition": "Indicates that the train may proceed at the permitted line speed. Typically shown as a green aspect."
  },
  {
    "term": "enum.signal_aspect.proceed_reduced_speed:description",
    "definition": "Indicates that the train may proceed but must reduce speed, often due to an upcoming occupied block or diverging route. Typically shown as a yellow aspect."
  },
  {
    "term": "enum.signal_aspect.stop:description",
    "definition": "Indicates that the train must stop before the signal. Typically shown as a red aspect."
  },
  {
    "term": "enum.signal_aspect.unknown:description",
    "definition": "Indicates that the signal aspect is not known or cannot be determined, possibly due to configuration or communication issues."
  },
  {
    "term": "enum.output_channel:title",
    "definition": "Output channel"
  },
  {
    "term": "enum.output_channel:description",
    "definition": "Defines the communication channel or protocol used for controlling digital outputs such as accessories, turnouts, and signals. The available options depend on the connected command station or hardware interface."
  },
  {
    "term": "enum.output_channel.accessory:description",
    "definition": "Generic accessory channel used when the interface supports only one protocol for accessory control."
  },
  {
    "term": "enum.output_channel.accessory_dcc:description",
    "definition": "Accessory channel using the DCC protocol, available on systems that support multiple protocols to control accessories."
  },
  {
    "term": "enum.output_channel.accessory_motorola:description",
    "definition": "Accessory channel using the Motorola protocol, available on systems that support multiple protocols to control accessories."
  },
  {
    "term": "enum.output_channel.dcc_ext:description",
    "definition": "DCCext channel as defined in the RCN-213 standard, used for extended DCC accessory communication."
  },
  {
    "term": "enum.output_channel.ecos_object:description",
    "definition": "ECoS object channel representing a turnout or signal defined in an ESU ECoS command station."
  },
  {
    "term": "enum.output_channel.output:description",
    "definition": "Output channel specific to the {ref:object.dccexinterface}, used for controlling general-purpose outputs."
  },
  {
    "term": "enum.output_channel.turnout:description",
    "definition": "Turnout channel specific to the {ref:object.dccexinterface}, used for controlling turnout (switch) outputs."
  },
  {
    "term": "enum.output_type:description",
    "definition": "Defines how an output behaves or is structured, depending on the selected output channel or the type of accessory being controlled."
  },
  {
    "term": "enum.output_type.aspect:description",
    "definition": "Used for multi-aspect signals where the output represents a specific signal aspect, such as red, yellow, or green. Typically applies to DCCext (RCN-213)."
  },
  {
    "term": "enum.output_type.ecos_state:description",
    "definition": "Represents an ESU ECoS object state, such as a turnout or signal defined within the ECoS command station."
  },
  {
    "term": "enum.output_type.pair:description",
    "definition": "Generally used for accessory outputs that form a logical pair, where one output is active at a time (e.g., red/green or thrown/closed)."
  },
  {
    "term": "enum.output_type.single:description",
    "definition": "Used for a single, independent output, typically representing an on/off function such as a light or relay control."
  },
  {
    "term": "object.category.boards_tiles:title",
    "definition": "Boards & Tiles"
  },
  {
    "term": "object.category.hardware:title",
    "definition": "Hardware"
  },
  {
    "term": "object.category.decoders:title",
    "definition": "Decoders"
  },
  {
    "term": "object.category.inputs:title",
    "definition": "Inputs"
  },
  {
    "term": "object.category.outputs:title",
    "definition": "Outputs"
  },
  {
    "term": "object.category.identification:title",
    "definition": "Identification"
  },
  {
    "term": "object.category.trains_vehicles:title",
    "definition": "Trains & Vehicles"
  },
  {
    "term": "object.category.world:title",
    "definition": "World"
  },
  {
    "term": "object.category.control:title",
    "definition": "Control"
  },
  {
    "term": "object.category.miscellaneous:title",
    "definition": "Miscellaneous"
  },
  {
    "term": "object.category.standard:title",
    "definition": "Standard"
  },
  {
    "term": "object.category.turnouts:title",
    "definition": "Turnouts"
  },
  {
    "term": "object.category.signals:title",
    "definition": "Signals"
  }
]