{
  "rtvars_right":[
    "enginespeed",
    "map",
    "coolanttemp",
    "pedalposition",
    "rackposition",
    "rackcommand",
    "rackpulsewidth",
    "error0",
    "error1",
    "error2",
    "supplyvoltage",
    "time",
    "roadspeed",
    "roaddistance",
    "fuelrequest",
    "idlefuelrequest",
    "ecutemp",
    "mainfrequency",
    "date",
    "logging",
    "logseq"
  ],
  "rtgroups":{
    "rackcontrol":[
      "rack0",
      "rack1",
      "error_rack0_high",
      "error_rack1_high",
      "rackP",
      "rackI",
      "rackD",
      "rackbasepw",
      "analog0",
      "analog1",
      "pedalsecondary",
      "rackcommand",
      "rackposition",
      "rackposerror"
    ],
    "gplimit":[
      "fuellimit",
      "gplim1",
      "gplim2",
      "gplim3",
      "gplim4",
      "gpangletrim1"
    ],
    "throttle":[
      "analog0",
      "analog1",
      "pedalsecondary"
    ],
    "idle":[
      "targetidle",
      "idlefuelrequest",
      "fuelqty",
      "idleP",
      "idlePD",
      "idleI",
      "idleD",
      "antistallcount"
    ],
    "cruise":[
      "flag_cruise",
      "brakes_active",
      "clutch_active",
      "cruiseswitch",
      "roadspeed",
      "cruisespeed",
      "cruisethrottle",
      "effthrottle",
      "cruiseP",
      "cruiseI",
      "cruiseD"
    ],
    "gpio":[
      "gpin",
      "outputs"
    ],
    "gppid":[
      "pwm1duty",
      "pwm1P",
      "pwm1I",
      "pwm1D",
      "+pwm1var",
      "pwm1sp"
    ],
    "gppid2":[
      "pwm2duty",
      "pwm2P",
      "pwm2I",
      "pwm2D",
      "+pwm2var",
      "pwm2sp"
    ],
    "can":[
      "canrx1",
      "cantx1",
      "canerrcount1"
    ],
    "canrx":[
      "canrx1",
      "canerrcount1",
      "canrxerr",
      "cansrc0",
      "cansrc1",
      "cansrc2",
      "cansrc3",
      "cansrc4",
      "cansrc5",
      "cansrc6",
      "cansrc7",
      "cansrc8",
      "cansrc9",
      "cansrc10",
      "cansrc11",
      "cansrc12",
      "cansrc13",
      "cansrc14",
      "cansrc15",
      "cansrc16",
      "cansrc17",
      "cansrc18",
      "cansrc19",
      "cansrc20",
      "cansrc21",
      "cansrc22",
      "cansrc23",
      "cansrc24",
      "cansrc25",
      "cansrc26",
      "cansrc27",
      "cansrc28",
      "cansrc29",
      "cansrc30",
      "cansrc31"
    ],
    "intlogging":[
      "logging",
      "logseq",
      "logrecs",
      "logstatus"
    ],
    "gplogic":[
      "gplogic1",
      "gplogic2",
      "gplogic3",
      "gplogic4",
      "gplogic5",
      "gplogic6",
      "gplogic7",
      "gplogic8",
      "gplogic9",
      "gplogic10",
      "gplogic11",
      "gplogic12",
      "gplogic13",
      "gplogic14",
      "gplogic15",
      "gplogic16"
    ],
    "canscan":[
      "canscan_running",
      "canscanaddr",
      "canerrcount1",
      "canrx1",
      "cantx1"
    ],
    "h2o":[
      "h2o_active",
      "h2opwmduty"
    ],
    "harsh":[
      "harshcycles",
      "harshseverity",
      "harshfuelreduction"
    ],
    "fuelpress":[
      "+fpsource",
      "fuelpressure"
    ],
    "pumptiming":[
      "pumpangle",
      "pumpangletarget",
      "gpangletrim1",
      "track0",
      "track1",
      "trackposition"
    ],
    "flipflop":[
      "flipflop1",
      "flipflop2",
      "flipflop3",
      "flipflop4",
      "flipflop5",
      "flipflop6",
      "flipflop7",
      "flipflop8"
    ],
    "gpcounters":[
      "count1",
      "count2",
      "count3",
      "count4"
    ],
    "gplatches":[
      "+gplatchinput1",
      "+gplatchaltinput1",
      "gplatch1",
      "+gplatchinput2",
      "+gplatchaltinput2",
      "gplatch2",
      "+gplatchinput3",
      "+gplatchaltinput3",
      "gplatch3",
      "+gplatchinput4",
      "+gplatchaltinput4",
      "gplatch4"
    ],
    "egt":[
      "egt",
      "+egtsource"
    ],
    "gptimers":[
      "gptimer1",
      "gptimer2",
      "gptimer3",
      "gptimer4"
    ],
    "customlookup":[
      "+customlookupsrc1",
      "customtransfer1",
      "+customlookupsrc2",
      "customtransfer2",
      "+customlookupsrc3",
      "customtransfer3",
      "+customlookupsrc4",
      "customtransfer4"
    ],
    "vss":[
      "vssevent",
      "din1event",
      "din2event",
      "din3event",
      "din1freq",
      "din2freq",
      "din3freq",
      "din1",
      "din2",
      "din3",
      "din_vss"
    ],
    "analog":[
      "analog0",
      "analog1",
      "analog2",
      "analog3",
      "analog4",
      "analog5",
      "analog6",
      "analog7",
      "analog8",
      "analog9",
      "analog10",
      "analog11",
      "analog12",
      "analog13",
      "analog14",
      "analog15"
    ],
    "customtables":[
      "customtable1",
      "customtable2",
      "customtable3",
      "customtable4"
    ],
    "airtemp":[
      "airtemp",
      "+airtempsrc"
    ],
    "torque":[
      "torqueactual",
      "torquelimit",
      "minimumtorque",
      "torquereserve",
      "torquerequest",
      "torquerequestlimit",
      "torquerequestlimited",
      "torquefuelrequestlimit",
      "fuelrequestlimited",
      "torquefuellimit",
      "tq_rqlimited",
      "tq_limited",
      "tq_blip",
      "+torquelimitrequestsrc",
      "+torquelimitsrc"
    ],
    "start":[
      "start_requested",
      "starter_engaged",
      "glow_heating"
    ],
    "fan":[
      "fanspeed",
      "fanpwmduty"
    ],
    "oilpress":[
      "oilpress",
      "+oilpsrc"
    ],
    "oiltemp":[
      "oiltemp",
      "+oiltempsrc"
    ],
    "transtemp":[
      "transtemp",
      "+transtempsrc"
    ],
    "oillevelsensor":[
      "oillevel",
      "+oillevelsrc",
      "oiltemp"
    ],
    "oilqualitysensor":[
      "oilquality",
      "+oilqualitysrc",
      "oillevel",
      "oiltemperature"
    ],
    "boostctl":[
      "+boostpressuresource",
      "boosttarget",
      "boosterror",
      "boostdot",
      "boostgptrim1",
      "boostgptrim2",
      "boostgptrim3",
      "boostp1duty",
      "boostp2duty",
      "boostp3duty",
      "boostctlcmd",
      "boostpw",
      "boostP",
      "boostPD",
      "boostI",
      "boostD"
    ],
    "governor":[
      "+governorspeedsrc",
      "governortarget",
      "governorerror",
      "fuelrequest",
      "govfuelreq",
      "governorP",
      "governorI",
      "governorD"
    ],
    "boostctl2":[
      "boostctlcmd",
      "boostp2duty",
      "boostp3duty",
      "boostp2limit",
      "+boostparam2picker",
      "boostp3limit",
      "+boostparam3picker",
      "boostp2P",
      "boostp2I",
      "boostp2D",
      "boostp3P",
      "boostp3I",
      "boostp3D"
    ],
    "cankeypads":[
      "keypadstate1",
      "keypadstate2",
      "keypadstate3",
      "keypadstate4"
    ],
    "cankeypad1":[
      "keypadstate1",
      "keypad1.1",
      "keypad1.2",
      "keypad1.3",
      "keypad1.4",
      "keypad1.5",
      "keypad1.6",
      "keypad1.7",
      "keypad1.8",
      "keypad1.9",
      "keypad1.10",
      "keypad1.11",
      "keypad1.12",
      "keypad1.13",
      "keypad1.14",
      "keypad1.15"
    ],
    "cankeypad2":[
      "keypadstate2",
      "keypad2.1",
      "keypad2.2",
      "keypad2.3",
      "keypad2.4",
      "keypad2.5",
      "keypad2.6",
      "keypad2.7",
      "keypad2.8",
      "keypad2.9",
      "keypad2.10",
      "keypad2.11",
      "keypad2.12",
      "keypad2.13",
      "keypad2.14",
      "keypad2.15"
    ],
    "cankeypad3":[
      "keypadstate3",
      "keypad3.1",
      "keypad3.2",
      "keypad3.3",
      "keypad3.4",
      "keypad3.5",
      "keypad3.6",
      "keypad3.7",
      "keypad3.8",
      "keypad3.9",
      "keypad3.10",
      "keypad3.11",
      "keypad3.12",
      "keypad3.13",
      "keypad3.14",
      "keypad3.15"
    ],
    "cankeypad4":[
      "keypadstate4",
      "keypad4.1",
      "keypad4.2",
      "keypad4.3",
      "keypad4.4",
      "keypad4.5",
      "keypad4.6",
      "keypad4.7",
      "keypad4.8",
      "keypad4.9",
      "keypad4.10",
      "keypad4.11",
      "keypad4.12",
      "keypad4.13",
      "keypad4.14",
      "keypad4.15"
    ]
  },
  "config":[
    {
      "name":"Sensor inputs",
      "type":255,
      "context":"rackcontrol",
      "value":[
        {
          "name":"Pedal\/rack position inputs",
          "type":255,
          "value":[
            {
              "name":"Pedal position voltage sensing range",
              "id":"throttlerange",
              "type":4,
              "value":[
                0.350427,
                3.300363
              ]
            },
            {
              "name":"Pedal position error limits",
              "id":"throttlelimits",
              "type":4,
              "value":[
                0.200244,
                4.799751
              ]
            },
            {
              "name":"Pedal position backup sensor voltage range",
              "id":"secondarythrottle",
              "type":4,
              "value":[
                1.500609,
                3.500607
              ]
            },
            {
              "name":"Pedal position backup values",
              "id":"secondaryrange",
              "type":4,
              "value":[
                99.999744,
                29.980392
              ]
            },
            {
              "name":"Maximum secondary position at idle",
              "id":"maxsecondaryatidle",
              "value":30.956952
            },
            {
              "name":"Rack position error limits",
              "id":"rack0limits",
              "type":4,
              "value":[
                100.000000,
                20000.000000
              ]
            },
            {
              "name":"Rack reference error limits",
              "id":"rack1limits",
              "type":4,
              "value":[
                200.000000,
                3500.000000
              ]
            },
            {
              "name":"Pedal position low pass filter",
              "id":"analogfilter0",
              "value":98.999250
            },
            {
              "name":"Pedal position secondary low pass filter",
              "id":"analogfilter1",
              "value":98.999250
            },
            {
              "name":"Rack position inputs gain increase",
              "id":"racksense_low",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Custom pump position input",
              "id":"customracksrc",
              "type":7,
              "applies":[
                "pumptype",
                "=",
                "Custom"
              ],
              "value":"const_zero"
            },
            {
              "name":"Custom pump position sensor breakpoint count",
              "id":"customrackbpcount",
              "applies":[
                "pumptype",
                "=",
                "Custom"
              ],
              "value":2.000000
            },
            {
              "name":"Custom pump position breakpoints",
              "type":4,
              "id":"customrackpts",
              "applies":[
                "pumptype",
                "=",
                "Custom"
              ],
              "value":[
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Custom pump position transfer function",
              "type":5,
              "id":"customrackcurve",
              "applies":[
                "pumptype",
                "=",
                "Custom"
              ],
              "xaxis":"customrackpts",
              "value":[
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Custom pump position error limits",
              "type":4,
              "applies":[
                "pumptype",
                "=",
                "Custom"
              ],
              "id":"customrackrange",
              "value":[
                0.000000,
                0.000000
              ]
            }
          ]
        },
        {
          "name":"Analog inputs",
          "context":"analog",
          "type":255,
          "value":[
            {
              "name":"MAP sensor voltage span",
              "id":"mapadcrange",
              "unit":"V",
              "type":4,
              "value":[
                0.250305,
                4.999995
              ]
            },
            {
              "name":"MAP sensor calibration",
              "id":"mapvaluerange",
              "type":5,
              "unit":"mbar",
              "xaxis":"mapadcrange",
              "value":[
                170.000000,
                3150.000000
              ]
            },
            {
              "name":"MAP sensor voltage error limits",
              "id":"mapvalidrange",
              "unit":"V",
              "type":4,
              "value":[
                0.000000,
                4.999995
              ]
            },
            {
              "name":"MAP sensor failure value",
              "id":"mapdefault",
              "unit":"mbar",
              "value":1000.000000
            },
            {
              "name":"MAP sensor low pass filter",
              "id":"analogfilter3",
              "value":98.999250
            },
            {
              "name":"Coolant temperature sensor voltage span",
              "id":"coolantadc",
              "type":4,
              "variable":"analog2",
              "unit":"V",
              "value":[
                0.000000,
                0.283272,
                0.570207,
                0.859584,
                1.153845,
                1.451769,
                1.753356,
                2.058606,
                2.368740,
                2.682537,
                2.999997,
                3.322341,
                3.648348,
                3.979239,
                4.315014,
                4.655673
              ]
            },
            {
              "name":"Coolant temperature sensor values",
              "id":"coolantvalues",
              "type":5,
              "unit":"°C",
              "xaxis":"coolantadc",
              "value":[
                154.000000,
                91.000000,
                68.000000,
                54.000000,
                45.000000,
                37.000000,
                31.000000,
                25.000000,
                19.000000,
                13.000000,
                8.000000,
                2.000000,
                -4.000000,
                -10.000000,
                -19.000000,
                -32.000000
              ]
            },
            {
              "name":"Coolant temperature limits",
              "id":"coolantlimits",
              "type":4,
              "unit":"°C",
              "value":[
                -30.000000,
                140.000000
              ]
            },
            {
              "name":"Coolant temperature error value",
              "id":"coolantdefault",
              "value":130.000000
            },
            {
              "name":"Low pass filters",
              "type":255,
              "value":[
                {
                  "name":"Coolant temperature low pass filter",
                  "id":"analogfilter2",
                  "value":99.949948
                },
                {
                  "name":"Analog input 4 low pass filter",
                  "id":"analogfilter4",
                  "value":90.000428
                },
                {
                  "name":"Analog input 5 low pass filter",
                  "id":"analogfilter5",
                  "value":90.000428
                },
                {
                  "name":"Analog input 6 low pass filter",
                  "id":"analogfilter6",
                  "value":90.000428
                },
                {
                  "name":"Supply voltage low pass filter",
                  "id":"analogfilter7",
                  "value":90.000428
                },
                {
                  "name":"Analog input 8 low pass filter",
                  "id":"analogfilter8",
                  "value":98.999250
                },
                {
                  "name":"Analog input 9 low pass filter",
                  "id":"analogfilter9",
                  "value":98.999250
                },
                {
                  "name":"Analog input 10 low pass filter",
                  "id":"analogfilter10",
                  "value":98.999250
                },
                {
                  "name":"Analog input 11 low pass filter",
                  "id":"analogfilter11",
                  "value":98.999250
                },
                {
                  "name":"Analog input 12 low pass filter",
                  "id":"analogfilter12",
                  "value":98.999250
                },
                {
                  "name":"Analog input 13 low pass filter",
                  "id":"analogfilter13",
                  "value":98.999250
                },
                {
                  "name":"Analog input 14 low pass filter",
                  "id":"analogfilter14",
                  "value":98.999250
                },
                {
                  "name":"Analog input 15 low pass filter",
                  "id":"analogfilter15",
                  "value":98.999250
                }
              ]
            },
            {
              "name":"Exhaust gas temperature sensor",
              "context":"egt",
              "type":255,
              "value":[
                {
                  "name":"EGT sensor input",
                  "id":"egtsource",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"EGT voltage breakpoint count",
                  "id":"egtcalptcount",
                  "value":2.000000
                },
                {
                  "name":"EGT sensor voltage breakpoints",
                  "id":"egtvoltages",
                  "type":4,
                  "value":[
                    0.000000,
                    5.000000
                  ]
                },
                {
                  "name":"EGT sensor values",
                  "id":"egtvalues",
                  "type":5,
                  "xaxis":"egtvoltages",
                  "value":[
                    0.000000,
                    7.000000
                  ]
                }
              ]
            },
            {
              "name":"Fuel feed pressure sensor",
              "context":"fuelpress",
              "type":255,
              "value":[
                {
                  "name":"FP sensor input",
                  "id":"fpsource",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"FP sensor voltage breakpoints",
                  "id":"fpvoltages",
                  "type":4,
                  "value":[
                    0.000000,
                    5.000000
                  ]
                },
                {
                  "name":"FP sensor values",
                  "id":"fpvalues",
                  "type":5,
                  "xaxis":"fpvoltages",
                  "value":[
                    0.000000,
                    7.000000
                  ]
                },
                {
                  "name":"FP sensor input validation range",
                  "id":"fpvalidrange",
                  "type":4,
                  "value":[
                    0.000000,
                    5.000000
                  ]
                },
                {
                  "name":"FP error value",
                  "id":"fpdefault",
                  "value":65.535000
                },
                {
                  "name":"Acceptable feed pressure range when engine running",
                  "id":"fpacceptable",
                  "type":4,
                  "value":[
                    0.000000,
                    65.535000
                  ]
                }
              ]
            },
            {
              "name":"Exhaust manifold absolute pressure sensor",
              "type":255,
              "value":[
                {
                  "name":"EMAP sensor input",
                  "id":"emapsource",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"EMAP sensor voltage breakpoints",
                  "id":"emapvoltages",
                  "type":4,
                  "value":[
                    0.000000,
                    5.000000
                  ]
                },
                {
                  "name":"EMAP sensor values",
                  "id":"emapvalues",
                  "type":5,
                  "xaxis":"emapvoltages",
                  "value":[
                    0.000000,
                    7000.000000
                  ]
                },
                {
                  "name":"EMAP sensor input validation range",
                  "id":"emapvalidrange",
                  "type":4,
                  "value":[
                    0.000000,
                    5.000000
                  ]
                },
                {
                  "name":"EMAP error value",
                  "id":"emapdefault",
                  "value":1000.000000
                }
              ]
            },
            {
              "name":"Air temperature sensor",
              "context":"airtemp",
              "type":255,
              "value":[
                {
                  "name":"Air temperature sensor input",
                  "id":"airtempsrc",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Air temperature airfer function breakpoint count",
                  "id":"airtempbpcount",
                  "value":16.000000
                },
                {
                  "name":"Air temperature sensor voltage breakpoints",
                  "id":"airtempvoltages",
                  "type":4,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Air temperature sensor values",
                  "id":"airtempvalues",
                  "type":5,
                  "xaxis":"airtempvoltages",
                  "value":[
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000,
                    -273.100000
                  ]
                },
                {
                  "name":"Air temperature sensor valid temperature range",
                  "id":"airtempvalidrange",
                  "type":4,
                  "value":[
                    -30.000000,
                    200.000000
                  ]
                },
                {
                  "name":"Air temperature sensor error value",
                  "id":"airtempdefault",
                  "value":20.000000
                }
              ]
            },
            {
              "name":"Oil pressure sensor",
              "context":"oilpress",
              "type":255,
              "value":[
                {
                  "name":"Oil pressure sensor input",
                  "id":"oilpsrc",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Oil pressure sensor voltage breakpoints",
                  "id":"oilpvoltages",
                  "type":4,
                  "value":[
                    0.000000,
                    5.000000
                  ]
                },
                {
                  "name":"Oil pressure sensor values",
                  "id":"oilpvalues",
                  "type":5,
                  "xaxis":"oilpvoltages",
                  "value":[
                    0.000000,
                    7000.000000
                  ]
                },
                {
                  "name":"Oil pressure sensor input validation range",
                  "id":"oilpvalidrange",
                  "type":4,
                  "value":[
                    0.000000,
                    5.000000
                  ]
                },
                {
                  "name":"Oil pressure sensor error value",
                  "id":"oilpdefault",
                  "value":0.000000
                },
                {
                  "name":"Oil pressure engine speed breakpoints",
                  "id":"opspeedbins",
                  "type":4,
                  "value":[
                    0.000000,
                    500.000000,
                    1000.000000,
                    1500.000000,
                    2000.000000,
                    3000.000000,
                    4000.000000,
                    5000.000000
                  ]
                },
                {
                  "name":"Minimum oil pressure Y axis input",
                  "id":"opyaxsrc",
                  "type":7,
                  "value":"oiltemp"
                },
                {
                  "name":"Minimum oil pressure Y axis",
                  "id":"opyaxis",
                  "type":4,
                  "value":[
                    0.000000,
                    20.000000,
                    40.000000,
                    60.000000,
                    80.000000,
                    100.000000,
                    120.000000,
                    140.000000
                  ]
                },
                {
                  "name":"Minimum acceptable oil pressure",
                  "id":"opminvalue",
                  "type":5,
                  "xaxis":"opspeedbins",
                  "value":[
                    0.000000,
                    700.000000,
                    700.000000,
                    1500.000000,
                    3000.000000,
                    4000.000000,
                    4000.000000,
                    4000.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Low oil pressure time before shut off",
                  "id":"optimeout",
                  "value":0.000000
                },
                {
                  "name":"Engine run time before oil pressure shut off activates",
                  "id":"opcheckminruntime",
                  "value":5.000000
                }
              ]
            },
            {
              "name":"Oil temperature sensor",
              "context":"oiltemp",
              "type":255,
              "value":[
                {
                  "name":"Oil temperature sensor input",
                  "id":"oiltempsrc",
                  "type":7,
                  "value":"oilpansensor1"
                },
                {
                  "name":"Oil temperature transfer function breakpoint count",
                  "id":"oiltempbpcount",
                  "value":2.000000
                },
                {
                  "name":"Oil temperature sensor voltage breakpoints",
                  "id":"oiltempvoltages",
                  "type":4,
                  "value":[
                    0.000000,
                    100000.000000
                  ]
                },
                {
                  "name":"Oil temperature sensor values",
                  "id":"oiltempvalues",
                  "type":5,
                  "xaxis":"oiltempvoltages",
                  "value":[
                    -97.600000,
                    190.000000
                  ]
                },
                {
                  "name":"Oil temperature sensor valid temperature range",
                  "id":"oiltempvalidrange",
                  "type":4,
                  "value":[
                    -40.000000,
                    150.000000
                  ]
                },
                {
                  "name":"Oil temperature sensor error value",
                  "id":"oiltempdefault",
                  "value":150.000000
                }
              ]
            },
            {
              "name":"Oil level sensor",
              "context":"oillevelsensor",
              "type":255,
              "value":[
                {
                  "name":"Oil level sensor input",
                  "id":"oillevelsrc",
                  "type":7,
                  "value":"oilpansensor2"
                },
                {
                  "name":"Oil level transfer function breakpoint count",
                  "id":"oillevelbpcount",
                  "value":2.000000
                },
                {
                  "name":"Oil level input breakpoints",
                  "id":"oillevelpoints",
                  "type":4,
                  "value":[
                    32000.000000,
                    52000.000000
                  ]
                },
                {
                  "name":"Oil level sensor values",
                  "id":"oillevelfunction",
                  "type":5,
                  "xaxis":"oillevelpoints",
                  "value":[
                    0.000000,
                    200.000000
                  ]
                },
                {
                  "name":"Oil level sensor valid input range",
                  "id":"oillevelinputrange",
                  "type":4,
                  "value":[
                    20000.000000,
                    60000.000000
                  ]
                },
                {
                  "name":"Oil level sensor error value",
                  "id":"oilleveldefault",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Oil quality sensor",
              "context":"oilqualitysensor",
              "type":255,
              "value":[
                {
                  "name":"Oil quality sensor input",
                  "id":"oilqualitysrc",
                  "type":7,
                  "value":"oilpansensor3"
                },
                {
                  "name":"Oil quality transfer function breakpoint count",
                  "id":"oilqualitybpcount",
                  "value":2.000000
                },
                {
                  "name":"Oil quality input breakpoints",
                  "id":"oilqualitypoints",
                  "type":4,
                  "value":[
                    30000.000000,
                    38000.000000
                  ]
                },
                {
                  "name":"Oil quality sensor values",
                  "id":"oilqualityfunction",
                  "type":5,
                  "xaxis":"oilqualitypoints",
                  "value":[
                    0.000000,
                    100.000000
                  ]
                },
                {
                  "name":"Oil quality sensor valid input range",
                  "id":"oilqualityinputrange",
                  "type":4,
                  "value":[
                    10000.000000,
                    100000.000000
                  ]
                },
                {
                  "name":"Oil quality sensor error value",
                  "id":"oilqualitydefault",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Transmission temperature sensor",
              "context":"transtemp",
              "type":255,
              "value":[
                {
                  "name":"Transmission temperature sensor input",
                  "id":"transtempsrc",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Transmission temperature transfer function breakpoint count",
                  "id":"transtempbpcount",
                  "value":16.000000
                },
                {
                  "name":"Transmission temperature sensor voltage breakpoints",
                  "id":"transtempvoltages",
                  "type":4,
                  "value":[
                    5.000000,
                    4.000000,
                    3.000000,
                    3.000000,
                    2.000000,
                    2.000000,
                    1.000000,
                    1.000000,
                    1.000000,
                    1.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Transmission temperature sensor values",
                  "id":"transtempvalues",
                  "type":5,
                  "xaxis":"transtempvoltages",
                  "value":[
                    -40.000000,
                    -10.000000,
                    0.000000,
                    10.000000,
                    20.000000,
                    30.000000,
                    40.000000,
                    50.000000,
                    60.000000,
                    70.000000,
                    80.000000,
                    90.000000,
                    100.000000,
                    110.000000,
                    120.000000,
                    130.000000
                  ]
                },
                {
                  "name":"Transmission temperature sensor valid temperature range",
                  "id":"transtempvalidrange",
                  "type":4,
                  "value":[
                    -30.000000,
                    130.000000
                  ]
                },
                {
                  "name":"Transmission temperature sensor error value",
                  "id":"transtempdefault",
                  "value":130.000000
                }
              ]
            }
          ]
        },
        {
          "name":"Frequency inputs",
          "type":255,
          "context":"vss",
          "value":[
            {
              "name":"Crank input mode",
              "id":"triggermode",
              "type":3,
              "value":"Universal"
            },
            {
              "name":"Crank input trigger edge",
              "id":"crankrising",
              "type":3,
              "value":"Falling"
            },
            {
              "name":"Engine speed pulses per two rotations",
              "id":"triggertoothcount",
              "type":0,
              "value":5.000000
            },
            {
              "name":"Engine speed pulse averaging",
              "id":"rpmaveraging",
              "type":0,
              "value":1.000000
            },
            {
              "name":"Engine speed filter period",
              "id":"rpmfilter",
              "value":1000.000000
            },
            {
              "name":"Trigger angle offset",
              "applies":[
                "triggermode",
                "=",
                "Missing tooth crank angle"
              ],
              "id":"syncangle",
              "value":49.997286
            },
            {
              "name":"Crank sync threshold ratio",
              "applies":[
                "triggermode",
                "=",
                "Missing tooth crank angle"
              ],
              "id":"syncratio",
              "value":1.699980
            },
            {
              "name":"Number of base teeth for missing tooth mode",
              "applies":[
                "triggermode",
                "=",
                "Missing tooth crank angle"
              ],
              "id":"nminustoothcount",
              "value":60.000000
            },
            {
              "name":"Number of missing teeth for missing tooth mode",
              "applies":[
                "triggermode",
                "=",
                "Missing tooth crank angle"
              ],
              "id":"nminusmissing",
              "value":2.000000
            },
            {
              "name":"Road speed source",
              "id":"vsssource",
              "type":3,
              "value":"Vehicle speed input"
            },
            {
              "name":"VSS pulses per kilometre",
              "id":"pulseperkm",
              "applies":[
                "vsssource",
                "=",
                "Vehicle speed input"
              ],
              "type":0,
              "value":2200.000000
            },
            {
              "name":"VSS trigger edge",
              "id":"vssrising",
              "type":3,
              "value":"Falling"
            },
            {
              "name":"VSS filter period",
              "id":"vssfilter",
              "applies":[
                "vsssource",
                "=",
                "Vehicle speed input"
              ],
              "value":5000.000000
            },
            {
              "name":"VSS smoothing",
              "id":"vsssmoothing",
              "applies":[
                "vsssource",
                "=",
                "Vehicle speed input"
              ],
              "value":50.000000
            },
            {
              "name":"VSS pulse averaging",
              "id":"vssaveraging",
              "applies":[
                "vsssource",
                "=",
                "Vehicle speed input"
              ],
              "value":0.000000
            },
            {
              "name":"Use road speed input for pump angle instead",
              "id":"vss_as_pumpangle",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Digital input 1 function",
              "id":"din1function",
              "type":3,
              "value":"General purpose digital input"
            },
            {
              "name":"Digital input 1 active edge",
              "id":"din1rising",
              "type":3,
              "value":"Falling"
            },
            {
              "name":"Digital input 1 rejection period",
              "id":"din1filter",
              "value":100.000000
            },
            {
              "name":"Digital input 1 frequency smoothing",
              "id":"freqfilter0",
              "value":50.000000
            },
            {
              "name":"Digital input 2 function",
              "id":"din2function",
              "type":3,
              "value":"General purpose digital input"
            },
            {
              "name":"Digital input 2 active edge",
              "id":"din2rising",
              "type":3,
              "value":"Falling"
            },
            {
              "name":"Digital input 2 rejection period",
              "id":"din2filter",
              "value":100.000000
            },
            {
              "name":"Digital input 2 frequency smoothing",
              "id":"freqfilter1",
              "value":50.000000
            },
            {
              "name":"Digital input 3 function",
              "id":"din3function",
              "type":3,
              "value":"General purpose digital input"
            },
            {
              "name":"Digital input 3 active edge",
              "id":"din3rising",
              "type":3,
              "value":"Falling"
            },
            {
              "name":"Digital input 3 rejection period",
              "id":"din3filter",
              "value":100.000000
            },
            {
              "name":"Digital input 3 frequency smoothing",
              "id":"freqfilter2",
              "value":50.000000
            },
            {
              "name":"Pump angle sensing reference angle",
              "id":"pumpanglereference",
              "value":120.000078
            },
            {
              "name":"Pump angle measuring range maximum",
              "id":"pumpangleoffset",
              "value":40.000026
            }
          ]
        }
      ]
    },
    {
      "name":"Rack control parameters",
      "context":"rackcontrol",
      "type":255,
      "value":[
        {
          "id":"pumptype",
          "name":"Injection pump type",
          "type":3,
          "value":"M-EDC (OM605\/OM606)"
        },
        {
          "id":"pwmdivider",
          "name":"Rack solenoid PWM frequency divider",
          "value":29.000000
        },
        {
          "id":"variablerackfreq",
          "name":"Switch PWM frequencies at idle",
          "type":3,
          "value":"Disabled"
        },
        {
          "id":"idlepwmdivider",
          "name":"Rack solenoid PWM frequency divider for idle",
          "applies":[
            "variablerackfreq",
            "=",
            "Enabled"
          ],
          "value":29.000000
        },
        {
          "id":"rackfilter",
          "name":"Rack position feedback averaging cycles",
          "value":16.000000
        },
        {
          "name":"Rack position secondary filter enable",
          "id":"rackexpfilter_enable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Rack position secondary filter for primary sensor",
          "id":"rack0filterfactor",
          "applies":[
            "rackexpfilter_enable",
            "=",
            "Enabled"
          ],
          "value":49.999390
        },
        {
          "name":"Rack position secondary filter for secondary sensor",
          "id":"rack1filterfactor",
          "applies":[
            "rackexpfilter_enable",
            "=",
            "Enabled"
          ],
          "value":98.999250
        },
        {
          "name":"Rack solenoid base duty cycle",
          "id":"rackpreload",
          "xaxis":"preloadpositions",
          "type":5,
          "value":[
            19.999756,
            27.999048,
            33.001276,
            39.300604,
            42.999628,
            45.999744,
            53.001032,
            53.001032
          ]
        },
        {
          "name":"Rack solenoid target breakpoints",
          "id":"preloadpositions",
          "type":4,
          "value":[
            300.000000,
            800.000000,
            1200.000000,
            1700.000000,
            2000.000000,
            2400.000000,
            2500.000000,
            2500.000000
          ]
        },
        {
          "name":"Fuel quantity breakpoints",
          "id":"fuelqtybreakpoints",
          "type":4,
          "value":[
            0.000000,
            1.000000,
            20.000000,
            50.000000,
            100.000000,
            150.000000,
            200.000000,
            250.000000
          ]
        },
        {
          "name":"Rack position strategy",
          "id":"rackposmethod",
          "type":3,
          "value":"Simple"
        },
        {
          "name":"Simple rack position request",
          "id":"fueltorackpos",
          "applies":[
            "rackposmethod",
            "=",
            "Simple"
          ],
          "type":5,
          "xaxis":"fuelqtybreakpoints",
          "value":[
            300.000000,
            800.000000,
            980.000000,
            1450.000000,
            2300.000000,
            2300.000000,
            2300.000000,
            2300.000000
          ]
        },
        {
          "name":"Pump characteristic map",
          "id":"pumpcharmap",
          "applies":[
            "rackposmethod",
            "!=",
            "Simple"
          ],
          "type":11,
          "value":[
            0.000000
          ]
        },
        {
          "name":"Rack solenoid P gain",
          "type":5,
          "id":"rackKp",
          "xaxis":"ectbreakpoints",
          "value":[
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100,
            0.250100
          ]
        },
        {
          "name":"Rack solenoid I gain",
          "type":5,
          "id":"rackKi",
          "xaxis":"ectbreakpoints",
          "value":[
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016,
            0.040016
          ]
        },
        {
          "name":"Rack solenoid D gain",
          "type":5,
          "id":"rackKd",
          "xaxis":"ectbreakpoints",
          "value":[
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080
          ]
        },
        {
          "name":"Rack solenoid integrator min",
          "type":2,
          "id":"rackImin",
          "value":-3000.000000
        },
        {
          "name":"Rack solenoid integrator max",
          "type":2,
          "id":"rackImax",
          "value":10000.000000
        },
        {
          "name":"Rack position error breakpoints",
          "type":4,
          "id":"rackerrbins",
          "value":[
            -300.000000,
            -200.000000,
            -100.000000,
            -80.000000,
            -60.000000,
            -40.000000,
            -20.000000,
            -10.000000,
            10.000000,
            20.000000,
            40.000000,
            60.000000,
            80.000000,
            100.000000,
            200.000000,
            300.000000
          ]
        },
        {
          "name":"Rack P gain modifier",
          "type":5,
          "id":"rackKpmod",
          "xaxis":"rackerrbins",
          "value":[
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000
          ]
        },
        {
          "name":"Rack I gain modifier",
          "type":5,
          "id":"rackKimod",
          "xaxis":"rackerrbins",
          "value":[
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000
          ]
        },
        {
          "name":"Rack D gain modifier",
          "type":5,
          "id":"rackKdmod",
          "xaxis":"rackerrbins",
          "value":[
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000
          ]
        },
        {
          "name":"Rack control supply voltage correction method",
          "id":"voltcorrmode",
          "type":3,
          "value":"Linear"
        },
        {
          "name":"Rack control supply voltage breakpoints",
          "type":4,
          "applies":[
            "voltcorrmode",
            "=",
            "Custom"
          ],
          "id":"voltbins",
          "value":[
            7.000000,
            8.000000,
            9.000000,
            10.000000,
            11.000000,
            12.000000,
            13.000000,
            14.000000,
            15.000000,
            16.000000,
            17.000000,
            18.000000
          ]
        },
        {
          "name":"Rack control supply voltage correction",
          "type":5,
          "applies":[
            "voltcorrmode",
            "=",
            "Custom"
          ],
          "id":"voltcorrection",
          "xaxis":"voltbins",
          "value":[
            2.000000,
            1.750000,
            1.556000,
            1.400000,
            1.272000,
            1.166000,
            1.077000,
            1.000000,
            0.933000,
            0.875000,
            0.824000,
            0.778000
          ]
        },
        {
          "name":"Quick spool fuel limit map enable",
          "type":3,
          "id":"quickspoolenable",
          "value":"Disabled"
        },
        {
          "name":"Quick spool starting throttle position",
          "id":"quickspoollowtps",
          "value":70.019352
        },
        {
          "name":"Quick spool fully active throttle position",
          "id":"quickspoolhightps",
          "value":95.019288
        },
        {
          "name":"Engine rev limit",
          "id":"revlimit",
          "type":11,
          "value":[
            5000.000000
          ]
        },
        {
          "name":"Rev limit hysteresis",
          "id":"revlimithysteresis",
          "value":200.000000
        },
        {
          "name":"Engine speed breakpoints for smoothing functions",
          "id":"smoothingrpmpoints",
          "type":4,
          "value":[
            500.000000,
            800.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000
          ]
        },
        {
          "name":"Accelerator pedal breakpoints for smoothing functions",
          "id":"smoothingpedalpoints",
          "type":4,
          "value":[
            1.955040,
            4.985352,
            9.970704,
            14.956056,
            20.039160,
            39.980568,
            60.019728,
            79.961136
          ]
        },
        {
          "name":"Engine speed smoothing factor",
          "type":5,
          "xaxis":"smoothingrpmpoints",
          "id":"rpmsmoothingfiltermap",
          "yaxis":"smoothingpedalpoints",
          "value":[
            94.999604,
            94.999604,
            94.999604,
            94.999604,
            90.000428,
            80.000550,
            49.999390,
            49.999390,
            94.999604,
            94.999604,
            94.999604,
            94.999604,
            90.000428,
            80.000550,
            49.999390,
            49.999390,
            91.999488,
            91.999488,
            91.999488,
            91.999488,
            87.329928,
            77.999964,
            49.999390,
            49.999390,
            88.999372,
            88.999372,
            88.999372,
            88.999372,
            84.670110,
            75.999378,
            49.999390,
            49.999390,
            85.999256,
            85.999256,
            85.999256,
            85.999256,
            81.999610,
            74.000318,
            49.999390,
            49.999390,
            74.000318,
            74.000318,
            74.000318,
            74.000318,
            71.329818,
            65.999500,
            49.999390,
            49.999390,
            61.999854,
            61.999854,
            61.999854,
            61.999854,
            60.670708,
            58.000208,
            49.999390,
            49.999390,
            49.999390,
            49.999390,
            49.999390,
            49.999390,
            49.999390,
            49.999390,
            49.999390,
            49.999390
          ]
        },
        {
          "name":"Fuel request increase lag factor",
          "id":"fuelrequestposfiltermap",
          "type":5,
          "xaxis":"smoothingrpmpoints",
          "yaxis":"smoothingpedalpoints",
          "value":[
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            39.999512,
            39.999512,
            88.080720,
            88.080720,
            88.080720,
            88.080720,
            88.080720,
            88.080720,
            39.999512,
            39.999512,
            84.870016,
            84.870016,
            84.870016,
            84.870016,
            84.870016,
            84.870016,
            39.999512,
            39.999512,
            81.669994,
            81.669994,
            81.669994,
            81.669994,
            81.669994,
            81.669994,
            39.999512,
            39.999512,
            78.459290,
            78.459290,
            78.459290,
            78.459290,
            78.459290,
            78.459290,
            39.999512,
            39.999512,
            65.639364,
            65.639364,
            65.639364,
            65.639364,
            65.639364,
            65.639364,
            39.999512,
            39.999512,
            52.819438,
            52.819438,
            52.819438,
            52.819438,
            52.819438,
            52.819438,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512
          ]
        },
        {
          "name":"Fuel request decrease lag factor",
          "id":"fuelrequestnegfiltermap",
          "type":5,
          "xaxis":"smoothingrpmpoints",
          "yaxis":"smoothingpedalpoints",
          "value":[
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            39.999512,
            39.999512,
            88.080720,
            88.080720,
            88.080720,
            88.080720,
            88.080720,
            88.080720,
            39.999512,
            39.999512,
            84.870016,
            84.870016,
            84.870016,
            84.870016,
            84.870016,
            84.870016,
            39.999512,
            39.999512,
            81.669994,
            81.669994,
            81.669994,
            81.669994,
            81.669994,
            81.669994,
            39.999512,
            39.999512,
            78.459290,
            78.459290,
            78.459290,
            78.459290,
            78.459290,
            78.459290,
            39.999512,
            39.999512,
            65.639364,
            65.639364,
            65.639364,
            65.639364,
            65.639364,
            65.639364,
            39.999512,
            39.999512,
            52.819438,
            52.819438,
            52.819438,
            52.819438,
            52.819438,
            52.819438,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512,
            39.999512
          ]
        },
        {
          "name":"Rack solenoid dither enable",
          "type":3,
          "id":"ditherenable",
          "value":"Disabled"
        },
        {
          "name":"Dither period",
          "id":"ditherperiod",
          "value":40.000000
        },
        {
          "name":"Dither engine speed breakpoints",
          "type":4,
          "id":"ditherrpm",
          "value":[
            500.000000,
            800.000000,
            1000.000000,
            1300.000000,
            1500.000000,
            2000.000000
          ]
        },
        {
          "name":"Dither rack position breakpoints",
          "type":4,
          "id":"ditherrackpos",
          "value":[
            300.000000,
            500.000000,
            700.000000,
            900.000000,
            1100.000000,
            1300.000000
          ]
        },
        {
          "name":"Rack solenoid dither map",
          "type":5,
          "id":"dithermap",
          "xaxis":"ditherrpm",
          "yaxis":"ditherrackpos",
          "value":[
            4.999176,
            4.999176,
            4.999176,
            4.999176,
            0.000000,
            0.000000,
            4.999176,
            4.999176,
            4.999176,
            4.999176,
            0.000000,
            0.000000,
            4.999176,
            4.999176,
            4.999176,
            4.999176,
            0.000000,
            0.000000,
            4.999176,
            4.999176,
            4.999176,
            4.999176,
            0.000000,
            0.000000,
            1.999060,
            1.999060,
            1.999060,
            1.999060,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        }
      ]
    },
    {
      "name":"Harshness control",
      "context":"harsh",
      "type":255,
      "value":[
        {
          "name":"Harshness index computation enable",
          "id":"harshindex_enable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Harshness computation interval",
          "id":"harshindexinterval",
          "value":40.000000
        },
        {
          "name":"Engine speed tolerance",
          "id":"harshindextolerance",
          "value":75.000000
        },
        {
          "name":"Maximum engine speed for harshness control",
          "id":"harshindexmaxrpm",
          "value":3000.000000
        },
        {
          "name":"Harshness fuel reduction decay rate",
          "id":"harshreductiondecay",
          "value":1.000000
        },
        {
          "name":"Harshness cycle breakpoints",
          "id":"harshnesscyclebins",
          "type":4,
          "value":[
            0.000000,
            1.000000,
            2.000000,
            3.000000,
            4.000000,
            5.000000,
            6.000000,
            7.000000
          ]
        },
        {
          "name":"Harshness severity breakpoints",
          "id":"harshnessseverbins",
          "type":4,
          "value":[
            0.000000,
            100.000000,
            150.000000,
            200.000000,
            250.000000,
            300.000000,
            400.000000,
            500.000000
          ]
        },
        {
          "name":"Harshness reaction map",
          "id":"harshnessmap",
          "type":5,
          "xaxis":"harshnesscyclebins",
          "yaxis":"harshnessseverbins",
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            4.000000,
            6.000000,
            8.000000,
            10.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            4.750000,
            7.130000,
            9.500000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            1.000000,
            5.500000,
            8.250000,
            11.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            2.000000,
            6.250000,
            9.380000,
            12.500000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            3.000000,
            7.000000,
            10.500000,
            14.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            4.000000,
            8.500000,
            12.750000,
            17.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            5.000000,
            10.000000,
            15.000000,
            20.000000,
            20.000000
          ]
        },
        {
          "name":"Engine speed breakpoints for harshness control authority",
          "id":"harshnessrpmbins",
          "type":4,
          "value":[
            0.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000
          ]
        },
        {
          "name":"Pedal position breakpoints for harshness control authority",
          "id":"harshnesspedalbins",
          "type":4,
          "value":[
            0.000000,
            4.980456,
            9.960912,
            15.039024,
            20.019480,
            24.999936,
            29.980392,
            49.999872
          ]
        },
        {
          "name":"Harshness control authority",
          "id":"harshnessauth",
          "type":5,
          "xaxis":"harshnessrpmbins",
          "yaxis":"harshnesspedalbins",
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            10.000000,
            10.000000,
            10.000000,
            10.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            10.000000,
            20.000000,
            20.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            10.000000,
            20.000000,
            20.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            10.000000,
            20.000000,
            20.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            10.000000,
            20.000000,
            20.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            10.000000,
            20.000000,
            20.000000,
            20.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Engine run speed threshold",
          "id":"runthreshold",
          "value":400.000000
        }
      ]
    },
    {
      "name":"Idle control",
      "context":"idle",
      "type":255,
      "value":[
        {
          "name":"Idle speed target",
          "id":"idletarget",
          "type":11,
          "xvariable":"coolanttemp",
          "xaxis":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ],
          "allocation":[
            0,
            8252,
            76
          ],
          "value":[
            900.000000,
            900.000000,
            900.000000,
            900.000000,
            900.000000,
            900.000000,
            850.000000,
            800.000000,
            750.000000,
            700.000000,
            700.000000,
            700.000000,
            700.000000,
            700.000000,
            700.000000,
            700.000000
          ]
        },
        {
          "name":"Approximate fuel needed",
          "id":"idleoffset",
          "type":11,
          "xvariable":"coolanttemp",
          "xaxis":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ],
          "allocation":[
            0,
            8328,
            76
          ],
          "value":[
            26.000000,
            24.100000,
            22.800000,
            21.900000,
            21.100000,
            20.200000,
            19.500000,
            18.600000,
            17.700000,
            16.800000,
            16.000000,
            14.800000,
            13.500000,
            12.500000,
            12.500000,
            12.500000
          ]
        },
        {
          "name":"Idle speed after start adder",
          "id":"idleafterstartspeedadder",
          "type":11,
          "xvariable":"coolanttemp",
          "yvariable":"runtime",
          "xaxis":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ],
          "allocation":[
            0,
            8404,
            192
          ],
          "yaxis":[
            0.000000,
            0.100000,
            1.000000,
            2.000000,
            5.000000,
            10.000000,
            30.000000,
            60.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Idle fuel after start adder",
          "id":"idleafterstartfueladder",
          "type":11,
          "xvariable":"coolanttemp",
          "yvariable":"runtime",
          "xaxis":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ],
          "allocation":[
            0,
            8596,
            320
          ],
          "yaxis":[
            0.000000,
            0.100000,
            1.000000,
            2.000000,
            5.000000,
            10.000000,
            30.000000,
            60.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"P factor",
          "id":"idleKp",
          "type":11,
          "xvariable":"coolanttemp",
          "xaxis":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ],
          "allocation":[
            0,
            8916,
            76
          ],
          "value":[
            0.150060,
            0.150060,
            0.150060,
            0.150060,
            0.150060,
            0.150060,
            0.150060,
            0.150060,
            0.150060,
            0.150060,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080,
            0.200080
          ]
        },
        {
          "name":"I factor",
          "id":"idleKi",
          "type":11,
          "xvariable":"coolanttemp",
          "xaxis":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ],
          "allocation":[
            0,
            8992,
            76
          ],
          "value":[
            0.005612,
            0.005612,
            0.005612,
            0.005612,
            0.005612,
            0.005612,
            0.005612,
            0.008052,
            0.008052,
            0.008052,
            0.011956,
            0.011956,
            0.011956,
            0.011956,
            0.011956,
            0.011956
          ]
        },
        {
          "name":"D factor",
          "id":"idleKd",
          "type":11,
          "xvariable":"coolanttemp",
          "xaxis":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ],
          "allocation":[
            0,
            9068,
            76
          ],
          "value":[
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012,
            0.030012
          ]
        },
        {
          "name":"Idle engine speed breakpoints",
          "id":"idlerpmpts",
          "type":4,
          "value":[
            500.000000,
            600.000000,
            700.000000,
            800.000000,
            900.000000,
            1000.000000,
            1100.000000,
            1200.000000
          ]
        },
        {
          "name":"Idle run time breakpoints",
          "id":"idleruntimepts",
          "type":4,
          "value":[
            0.000000,
            0.100000,
            1.000000,
            2.000000,
            5.000000,
            10.000000,
            30.000000,
            60.000000
          ]
        },
        {
          "name":"Idle PD map",
          "id":"idlePDmap",
          "type":11,
          "xvariable":"idleerror",
          "yvariable":"deltarpm",
          "xaxis":[
            -300.000000,
            -250.000000,
            -200.000000,
            -150.000000,
            -100.000000,
            -75.000000,
            -50.000000,
            -25.000000,
            25.000000,
            50.000000,
            75.000000,
            100.000000,
            150.000000,
            200.000000,
            250.000000,
            300.000000
          ],
          "allocation":[
            0,
            9144,
            320
          ],
          "yaxis":[
            -1000.000000,
            -500.000000,
            -250.000000,
            -50.000000,
            50.000000,
            250.000000,
            500.000000,
            1000.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Idle ID map",
          "id":"idleIDmap",
          "type":11,
          "xvariable":"idleerror",
          "yvariable":"deltarpm",
          "xaxis":[
            -300.000000,
            -250.000000,
            -200.000000,
            -150.000000,
            -100.000000,
            -75.000000,
            -50.000000,
            -25.000000,
            25.000000,
            50.000000,
            75.000000,
            100.000000,
            150.000000,
            200.000000,
            250.000000,
            300.000000
          ],
          "allocation":[
            0,
            9464,
            320
          ],
          "yaxis":[
            -1000.000000,
            -500.000000,
            -250.000000,
            -50.000000,
            50.000000,
            250.000000,
            500.000000,
            1000.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Idle P factor modifier",
          "id":"idleKpmod",
          "type":11,
          "xvariable":"idleerror",
          "xaxis":[
            -300.000000,
            -250.000000,
            -200.000000,
            -150.000000,
            -100.000000,
            -75.000000,
            -50.000000,
            -25.000000,
            25.000000,
            50.000000,
            75.000000,
            100.000000,
            150.000000,
            200.000000,
            250.000000,
            300.000000
          ],
          "allocation":[
            0,
            9784,
            76
          ],
          "value":[
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000
          ]
        },
        {
          "name":"Idle I factor modifier",
          "id":"idleKimod",
          "type":11,
          "xvariable":"idleerror",
          "xaxis":[
            -300.000000,
            -250.000000,
            -200.000000,
            -150.000000,
            -100.000000,
            -75.000000,
            -50.000000,
            -25.000000,
            25.000000,
            50.000000,
            75.000000,
            100.000000,
            150.000000,
            200.000000,
            250.000000,
            300.000000
          ],
          "allocation":[
            0,
            9860,
            76
          ],
          "value":[
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000
          ]
        },
        {
          "name":"Idle D factor modifier",
          "id":"idleKdmod",
          "type":11,
          "xvariable":"idleerror",
          "xaxis":[
            -300.000000,
            -250.000000,
            -200.000000,
            -150.000000,
            -100.000000,
            -75.000000,
            -50.000000,
            -25.000000,
            25.000000,
            50.000000,
            75.000000,
            100.000000,
            150.000000,
            200.000000,
            250.000000,
            300.000000
          ],
          "allocation":[
            0,
            9936,
            76
          ],
          "value":[
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000,
            1.000000
          ]
        },
        {
          "name":"Idle P factor modifier based on engine speed",
          "id":"idlerpmPmod",
          "type":5,
          "xaxis":"idlerpmpts",
          "value":[
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448
          ]
        },
        {
          "name":"Idle I factor modifier based on engine speed",
          "id":"idlerpmImod",
          "type":5,
          "xaxis":"idlerpmpts",
          "value":[
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448
          ]
        },
        {
          "name":"Idle D factor modifier based on engine speed",
          "id":"idlerpmDmod",
          "type":5,
          "xaxis":"idlerpmpts",
          "value":[
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448
          ]
        },
        {
          "name":"Max I value",
          "id":"idleImaxlimit",
          "type":11,
          "value":[
            20.000000
          ]
        },
        {
          "name":"Min I value",
          "id":"idleIminlimit",
          "type":11,
          "value":[
            -10.000000
          ]
        },
        {
          "name":"Max P value",
          "id":"idlePmaxlimit",
          "value":10.000000
        },
        {
          "name":"Max D value",
          "id":"idleDmaxlimit",
          "value":10.000000
        },
        {
          "name":"Min D value",
          "id":"idleDminlimit",
          "value":-10.000000
        },
        {
          "name":"Idle max throttle",
          "id":"idlemaxtps",
          "value":4.003896
        },
        {
          "name":"Integral value restriction based on run time",
          "type":5,
          "id":"idleruntimeIrange",
          "xaxis":"idleruntimepts",
          "yaxis":[
            "Min",
            "Max"
          ],
          "value":[
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035,
            100.000035
          ]
        },
        {
          "name":"Idle PID service interval",
          "id":"idleserviceinterval",
          "value":40.000000
        },
        {
          "name":"Idle PID service synchronous",
          "id":"idlesyncenable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Controlled return rate",
          "id":"idlecontrolledreturn",
          "type":3,
          "value":"Enabled"
        },
        {
          "name":"Idle decay upper limit",
          "id":"idlemaxrpm",
          "value":1200.000000
        },
        {
          "name":"Idle decay time",
          "id":"idledecaytime",
          "value":3.000000
        },
        {
          "name":"Anti decel threshold",
          "id":"antidecelthreshold",
          "value":19.921875
        },
        {
          "name":"Anti decel fuel adder",
          "id":"antideceleffect",
          "value":5.000000
        },
        {
          "name":"Anti stall speed",
          "id":"antistallspeed",
          "value":500.000000
        },
        {
          "name":"Anti stall fuel adder",
          "id":"antistalleffect",
          "value":15.000000
        },
        {
          "name":"Use cruise control buttons to adjust idle speed",
          "id":"cruisebuttonidle",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Maximum idle speed added by cruise buttons",
          "id":"cruisebuttonmaxidle",
          "applies":[
            "cruisebuttonidle",
            "=",
            "Enabled"
          ],
          "value":500.000000
        },
        {
          "name":"Cruise button speed adjustment step size",
          "id":"cruisebuttonidlestep",
          "applies":[
            "cruisebuttonidle",
            "=",
            "Enabled"
          ],
          "value":100.000000
        },
        {
          "name":"Idle-up input 1",
          "id":"idleupin1",
          "type":3,
          "value":"Always off"
        },
        {
          "name":"Idle-up mode 1",
          "id":"idleup1adder",
          "type":3,
          "value":"Adder"
        },
        {
          "name":"Idle-up value 1",
          "id":"idleuprpm1",
          "type":11,
          "value":[
            300.000000
          ]
        },
        {
          "name":"Idle-up input 2",
          "id":"idleupin2",
          "type":3,
          "value":"Always off"
        },
        {
          "name":"Idle-up mode 2",
          "id":"idleup2adder",
          "type":3,
          "value":"Adder"
        },
        {
          "name":"Idle-up value 2",
          "id":"idleuprpm2",
          "type":11,
          "value":[
            300.000000
          ]
        }
      ]
    },
    {
      "name":"Over-run fuel cut",
      "type":255,
      "value":[
        {
          "name":"Over-run fuel cut enable",
          "type":3,
          "id":"orfcenable",
          "value":"Enabled"
        },
        {
          "name":"Engine speed to enable cut",
          "applies":[
            "orfcenable",
            "=",
            "Enabled"
          ],
          "id":"overruncutspeed",
          "value":2100.000000
        },
        {
          "name":"Engine speed to resume fuelling",
          "applies":[
            "orfcenable",
            "=",
            "Enabled"
          ],
          "id":"overrunresumespeed",
          "value":1700.000000
        },
        {
          "name":"Pedal position to cut fuel",
          "applies":[
            "orfcenable",
            "=",
            "Enabled"
          ],
          "id":"overrunthrottle",
          "value":0.976560
        },
        {
          "name":"Delay before cutting fuel",
          "applies":[
            "orfcenable",
            "=",
            "Enabled"
          ],
          "id":"overrundelay",
          "value":0.500000
        }
      ]
    },
    {
      "name":"Breakpoints",
      "type":255,
      "value":[
        {
          "name":"Coolant temperature breakpoints",
          "id":"ectbreakpoints",
          "type":4,
          "value":[
            -32.000000,
            -19.000000,
            -10.000000,
            -4.000000,
            2.000000,
            8.000000,
            13.000000,
            19.000000,
            25.000000,
            31.000000,
            37.000000,
            45.000000,
            54.000000,
            68.000000,
            91.000000,
            154.000000
          ]
        },
        {
          "name":"Air temperature breakpoints",
          "id":"airtempbins",
          "type":4,
          "value":[
            -30.000000,
            -20.000000,
            -10.000000,
            0.000000,
            10.000000,
            20.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000,
            90.000000,
            100.000000,
            110.000000,
            120.000000
          ]
        }
      ]
    },
    {
      "name":"Tables",
      "type":255,
      "value":[
        {
          "name":"Fuel request table",
          "id":"fuelrequestmap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"effthrottle",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            10012,
            456
          ],
          "yaxis":[
            2.000000,
            5.000000,
            10.000000,
            15.000000,
            20.000000,
            25.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000
          ],
          "value":[
            0.000000,
            80.000000,
            30.000000,
            9.000000,
            5.000000,
            1.000000,
            1.000000,
            0.500000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            80.000000,
            30.000000,
            14.000000,
            10.000000,
            10.000000,
            10.000000,
            7.000000,
            7.000000,
            7.000000,
            7.000000,
            7.000000,
            7.000000,
            5.500000,
            4.400000,
            0.000000,
            0.000000,
            80.000000,
            30.000000,
            18.400000,
            14.400000,
            14.400000,
            14.400000,
            10.100000,
            10.100000,
            10.100000,
            10.100000,
            10.100000,
            10.100000,
            7.700000,
            6.200000,
            0.000000,
            0.000000,
            80.000000,
            37.300000,
            22.900000,
            18.900000,
            18.900000,
            18.900000,
            15.700000,
            15.700000,
            15.700000,
            15.700000,
            15.700000,
            15.700000,
            11.800000,
            9.400000,
            0.000000,
            20.000000,
            80.000000,
            56.000000,
            27.300000,
            23.300000,
            23.300000,
            23.300000,
            21.300000,
            21.300000,
            21.300000,
            21.300000,
            21.300000,
            21.300000,
            15.700000,
            12.600000,
            0.000000,
            30.000000,
            80.000000,
            74.700000,
            31.800000,
            27.800000,
            27.800000,
            27.800000,
            27.000000,
            27.000000,
            27.000000,
            27.000000,
            27.000000,
            27.000000,
            19.600000,
            15.700000,
            0.000000,
            40.000000,
            80.000000,
            80.000000,
            36.200000,
            32.200000,
            32.200000,
            32.200000,
            32.100000,
            32.100000,
            32.100000,
            32.100000,
            32.100000,
            32.100000,
            28.000000,
            22.400000,
            0.000000,
            50.000000,
            100.000000,
            80.000000,
            45.100000,
            41.100000,
            41.100000,
            41.100000,
            38.300000,
            38.300000,
            38.300000,
            38.300000,
            38.300000,
            38.300000,
            35.900000,
            28.700000,
            0.000000,
            60.000000,
            100.000000,
            80.000000,
            54.000000,
            50.000000,
            50.000000,
            50.000000,
            49.600000,
            49.600000,
            49.600000,
            49.600000,
            49.600000,
            49.600000,
            43.700000,
            35.000000,
            0.000000,
            80.000000,
            100.000000,
            80.000000,
            54.000000,
            50.000000,
            50.000000,
            56.500000,
            60.800000,
            60.800000,
            60.800000,
            60.800000,
            60.800000,
            60.800000,
            51.700000,
            41.400000,
            0.000000,
            100.000000,
            100.000000,
            100.000000,
            54.000000,
            50.000000,
            50.000000,
            68.300000,
            75.000000,
            75.000000,
            75.000000,
            75.000000,
            75.000000,
            75.000000,
            59.500000,
            47.600000,
            0.000000,
            100.000000,
            100.000000,
            100.000000,
            54.000000,
            50.000000,
            50.000000,
            80.000000,
            80.000000,
            80.000000,
            80.000000,
            80.000000,
            80.000000,
            80.000000,
            70.000000,
            56.000000,
            0.000000
          ]
        },
        {
          "name":"Fuel limit table",
          "id":"maxfuel",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"map",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            10468,
            456
          ],
          "yaxis":[
            800.000000,
            1000.000000,
            1200.000000,
            1400.000000,
            1600.000000,
            1800.000000,
            2000.000000,
            2200.000000,
            2400.000000,
            2600.000000,
            2800.000000,
            3000.000000
          ],
          "value":[
            200.000000,
            200.000000,
            200.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            200.000000,
            200.000000,
            200.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            60.000000,
            200.000000,
            200.000000,
            200.000000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            66.300000,
            200.000000,
            200.000000,
            200.000000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            72.500000,
            200.000000,
            200.000000,
            200.000000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            78.800000,
            200.000000,
            200.000000,
            200.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            85.000000,
            200.000000,
            200.000000,
            200.000000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            91.300000,
            200.000000,
            200.000000,
            200.000000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            97.500000,
            200.000000,
            200.000000,
            200.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            200.000000,
            200.000000,
            200.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            100.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000,
            200.000000
          ]
        },
        {
          "name":"Quick spool fuel limit table",
          "id":"quickspoolfuellimit",
          "type":11,
          "applies":[
            "quickspoolenable",
            "=",
            "Enabled"
          ],
          "value":[
            200.000000
          ]
        },
        {
          "name":"Alternate fuel request table",
          "applies":[
            "altfuelenable",
            "=",
            "Enabled"
          ],
          "id":"altfuelrequestmap",
          "type":11,
          "value":[
            0.000000
          ]
        },
        {
          "name":"Alternate fuel limit table",
          "applies":[
            "altlimitenable",
            "=",
            "Enabled"
          ],
          "id":"altmaxfuel",
          "type":11,
          "value":[
            200.000000
          ]
        },
        {
          "name":"Air temperature fuel limit modifier",
          "id":"airtempcorr",
          "type":5,
          "xaxis":"airtempbins",
          "value":[
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448,
            1.000448
          ]
        },
        {
          "name":"Boost target",
          "id":"boostmap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"fuelrequest",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            10924,
            456
          ],
          "yaxis":[
            0.000000,
            10.000000,
            20.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000,
            90.000000,
            100.000000,
            110.000000
          ],
          "value":[
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000,
            2500.000000
          ]
        },
        {
          "name":"Turbocharger control base duty cycle",
          "id":"wgdutymap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"boosttarget",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            11380,
            456
          ],
          "yaxis":[
            800.000000,
            1000.000000,
            1200.000000,
            1400.000000,
            1600.000000,
            1800.000000,
            2000.000000,
            2200.000000,
            2400.000000,
            2600.000000,
            2800.000000,
            3000.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            50.000916,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428,
            90.000428
          ]
        },
        {
          "name":"Turbocharger control minimum duty cycle",
          "id":"wgminmap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"boosttarget",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            11836,
            456
          ],
          "yaxis":[
            800.000000,
            1000.000000,
            1200.000000,
            1400.000000,
            1600.000000,
            1800.000000,
            2000.000000,
            2200.000000,
            2400.000000,
            2600.000000,
            2800.000000,
            3000.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Turbocharger control maximum duty cycle",
          "id":"wgmaxmap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"boosttarget",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            12292,
            456
          ],
          "yaxis":[
            800.000000,
            1000.000000,
            1200.000000,
            1400.000000,
            1600.000000,
            1800.000000,
            2000.000000,
            2200.000000,
            2400.000000,
            2600.000000,
            2800.000000,
            3000.000000
          ],
          "value":[
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776,
            99.000776
          ]
        },
        {
          "name":"Alternate boost target",
          "id":"altboostmap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"fuelrequest",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            12748,
            456
          ],
          "yaxis":[
            0.000000,
            10.000000,
            20.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000,
            90.000000,
            100.000000,
            110.000000
          ],
          "value":[
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            800.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1000.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1400.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            1800.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            2200.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        }
      ]
    },
    {
      "name":"High speed governor",
      "type":255,
      "context":"governor",
      "value":[
        {
          "name":"High speed governor enable",
          "id":"governor_enable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Condition to activate governor",
          "id":"governorcondition",
          "type":3,
          "value":"Always on"
        },
        {
          "name":"Governor speed source",
          "id":"governorspeedsrc",
          "type":7,
          "value":"enginespeed"
        },
        {
          "name":"Governor speed",
          "type":11,
          "id":"governorspeed",
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":[
            3000.000000
          ]
        },
        {
          "name":"Secondary speed limit",
          "type":11,
          "id":"governorlimiter",
          "applies":[
            "governor_enable",
            "=",
            "Enabled",
            "governorlimitersrc",
            "!=",
            "const_zero"
          ],
          "value":[
            0.000000
          ]
        },
        {
          "name":"Proportional gain",
          "id":"governorPgain",
          "type":11,
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":[
            1.000035
          ]
        },
        {
          "name":"Integral gain",
          "id":"governorIgain",
          "type":11,
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":[
            0.099847
          ]
        },
        {
          "name":"Derivative gain",
          "id":"governorDgain",
          "type":11,
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":[
            0.499861
          ]
        },
        {
          "name":"Proportional gain error modifier",
          "id":"governorPgainmod",
          "type":11,
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":[
            1.000448
          ]
        },
        {
          "name":"Integral gain error modifier",
          "id":"governorIgainmod",
          "type":11,
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":[
            1.000448
          ]
        },
        {
          "name":"Derivative gain error modifier",
          "id":"governorDgainmod",
          "type":11,
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":[
            1.000448
          ]
        },
        {
          "name":"Service interval",
          "id":"governorcycletime",
          "applies":[
            "governor_enable",
            "=",
            "Enabled"
          ],
          "value":50.000000
        },
        {
          "name":"Secondary speed limit condition",
          "type":3,
          "id":"governorlimiterenable",
          "applies":[
            "governor_enable",
            "=",
            "Enabled",
            "governorlimitersrc",
            "!=",
            "const_zero"
          ],
          "value":"Always off"
        }
      ]
    },
    {
      "name":"Glow heating control",
      "type":255,
      "context":"glow",
      "value":[
        {
          "name":"Pre start glow time",
          "id":"preglowtime",
          "type":5,
          "xaxis":"ectbreakpoints",
          "value":[
            12.100000,
            10.300000,
            9.200000,
            8.500000,
            7.900000,
            7.300000,
            6.900000,
            6.500000,
            6.000000,
            5.500000,
            5.000000,
            4.100000,
            3.000000,
            2.000000,
            2.000000,
            2.000000
          ]
        },
        {
          "name":"Coolant temperature threshold to disable glow during cranking",
          "id":"maxectglowduringstart",
          "value":150.000000
        },
        {
          "name":"After start glow strategy",
          "id":"afterstartglowmode",
          "type":3,
          "value":"Simple timer"
        },
        {
          "name":"After start glow time",
          "id":"afterglowtime",
          "applies":[
            "afterstartglowmode",
            "=",
            "Simple timer"
          ],
          "type":5,
          "xaxis":"ectbreakpoints",
          "value":[
            30.000000,
            30.000000,
            30.000000,
            30.000000,
            20.000000,
            15.000000,
            10.000000,
            5.000000,
            3.000000,
            2.000000,
            1.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Engine run time breakpoints for after glow",
          "id":"afterglowruntime",
          "applies":[
            "afterstartglowmode",
            "=",
            "Pulsed"
          ],
          "type":4,
          "value":[
            0.000000,
            10.000000,
            20.000000,
            30.000000,
            40.000000,
            60.000000,
            80.000000,
            100.000000,
            120.000000,
            150.000000
          ]
        },
        {
          "name":"Pulse cycle length",
          "id":"afterglowperiod",
          "applies":[
            "afterstartglowmode",
            "=",
            "Pulsed"
          ],
          "value":5.000000
        },
        {
          "name":"After start glow duty cycle",
          "id":"afterglowduty",
          "applies":[
            "afterstartglowmode",
            "=",
            "Pulsed"
          ],
          "type":5,
          "xaxis":"ectbreakpoints",
          "yaxis":"afterglowruntime",
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Number of glow plugs to monitor",
          "id":"glowplugcount",
          "value":0.000000
        }
      ]
    },
    {
      "name":"Inputs\/outputs",
      "type":255,
      "context":"gpio",
      "value":[
        {
          "name":"Output 1 function",
          "id":"output.0",
          "type":3,
          "value":"Tach output"
        },
        {
          "name":"Output 2 function",
          "id":"output.1",
          "type":3,
          "value":"PWM glow control"
        },
        {
          "name":"Output 3 function",
          "id":"output.2",
          "type":3,
          "value":"Boost control"
        },
        {
          "name":"Output 4 function",
          "id":"output.3",
          "type":3,
          "value":"Check engine light"
        },
        {
          "name":"Output 5 function",
          "id":"output.4",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Output 6 function",
          "id":"output.5",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Output 7 function",
          "id":"output.6",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Output 8 function",
          "id":"output.7",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Output 9 function",
          "id":"output.8",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Output 10 function",
          "id":"output.9",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Output 11 function",
          "id":"output.10",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Output 12 function",
          "id":"output.11",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Tach output cylinder count",
          "id":"tachcylcount",
          "value":8.000000
        },
        {
          "name":"Speedometer output pulses per kilometre",
          "id":"outputpulseperkm",
          "value":2000.000000
        },
        {
          "name":"Speedometer output test speed",
          "id":"speedotestspeed",
          "value":0.000000
        },
        {
          "name":"Fan turn-on temperature",
          "id":"fantemperature",
          "type":11,
          "value":[
            92.000000
          ]
        },
        {
          "name":"Fan turn-off hysteresis",
          "id":"fanhysteresis",
          "value":5.000000
        },
        {
          "name":"Variable speed fan control",
          "type":255,
          "context":"fan",
          "value":[
            {
              "name":"Temperature to start fan",
              "id":"fanstarttemp",
              "value":85.000000
            },
            {
              "name":"Temperature for maximum fan speed",
              "id":"fanmaxtemp",
              "value":100.000000
            },
            {
              "name":"PWM duty cycle to stop fan",
              "id":"fanoffduty",
              "value":10.156250
            },
            {
              "name":"PWM duty cycle for maximum fan speed",
              "id":"fanmaxduty",
              "value":89.843750
            },
            {
              "name":"PWM frequency",
              "id":"fanpwmfreq",
              "value":10.000000
            },
            {
              "name":"Air conditioning switch input",
              "id":"airconinput",
              "type":3,
              "value":"Always off"
            },
            {
              "name":"Minimum fan speed with air conditioning",
              "id":"fanacspeed",
              "value":50.000000
            }
          ]
        },
        {
          "name":"Starter control",
          "type":255,
          "context":"start",
          "value":[
            {
              "name":"Start request input",
              "type":3,
              "id":"startrequest",
              "value":"Always off"
            },
            {
              "name":"Delay starting while preheating glow plugs",
              "type":3,
              "id":"start_waitglow",
              "value":"Disabled"
            },
            {
              "name":"Starting timeout",
              "id":"starttimeout",
              "value":10.000000
            },
            {
              "name":"Starter response timeout",
              "id":"startrpmtimeout",
              "value":1.000000
            }
          ]
        },
        {
          "name":"Brake pedal input",
          "type":3,
          "id":"brakeinput",
          "value":"Always off"
        },
        {
          "name":"Clutch pedal input",
          "type":3,
          "id":"clutchinput",
          "value":"Always off"
        }
      ]
    },
    {
      "name":"User defined functions",
      "type":255,
      "value":[
        {
          "name":"General purpose logic",
          "type":255,
          "context":"gplogic",
          "value":[
            {
              "name":"General purpose logic 1",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr0",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay0",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay0",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration0",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var0",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type0",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val0",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster0",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and0",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var0",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type0",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val0",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster0",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and0",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition",
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var0",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition",
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type0",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition",
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val0",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and0",
                    "!=",
                    "No other condition",
                    "gpiocond1and0",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster0",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 2",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr1",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay1",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay1",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration1",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var1",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type1",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val1",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster1",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and1",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var1",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type1",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val1",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster1",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and1",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition",
                    "gpiocond2and1",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var1",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition",
                    "gpiocond2and1",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type1",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition",
                    "gpiocond2and1",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val1",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and1",
                    "!=",
                    "No other condition",
                    "gpiocond2and1",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster1",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 3",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr2",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay2",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay2",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration2",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var2",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type2",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val2",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster2",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and2",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var2",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type2",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val2",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster2",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and2",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition",
                    "gpiocond2and2",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var2",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition",
                    "gpiocond2and2",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type2",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition",
                    "gpiocond2and2",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val2",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and2",
                    "!=",
                    "No other condition",
                    "gpiocond2and2",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster2",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 4",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr3",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay3",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay3",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration3",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var3",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type3",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val3",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster3",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and3",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var3",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type3",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val3",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster3",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and3",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition",
                    "gpiocond2and3",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var3",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition",
                    "gpiocond2and3",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type3",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition",
                    "gpiocond2and3",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val3",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and3",
                    "!=",
                    "No other condition",
                    "gpiocond2and3",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster3",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 5",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr5",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay5",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay5",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration5",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var5",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type5",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val5",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster5",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and5",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var5",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type5",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val5",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster5",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and5",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition",
                    "gpiocond2and5",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var5",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition",
                    "gpiocond2and5",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type5",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition",
                    "gpiocond2and5",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val5",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and5",
                    "!=",
                    "No other condition",
                    "gpiocond2and5",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster5",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 6",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr6",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay6",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay6",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration6",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var6",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type6",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val6",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster6",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and6",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var6",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type6",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val6",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster6",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and6",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition",
                    "gpiocond2and6",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var6",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition",
                    "gpiocond2and6",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type6",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition",
                    "gpiocond2and6",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val6",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and6",
                    "!=",
                    "No other condition",
                    "gpiocond2and6",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster6",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 7",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr7",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay7",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay7",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration7",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var7",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type7",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val7",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster7",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and7",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var7",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type7",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val7",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster7",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and7",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition",
                    "gpiocond2and7",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var7",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition",
                    "gpiocond2and7",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type7",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition",
                    "gpiocond2and7",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val7",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and7",
                    "!=",
                    "No other condition",
                    "gpiocond2and7",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster7",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 8",
              "type":255,
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr8",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay8",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay8",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration8",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var8",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type8",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val8",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster8",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and8",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var8",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type8",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val8",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster8",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and8",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition",
                    "gpiocond2and8",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var8",
                  "type":7,
                  "value":"time"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition",
                    "gpiocond2and8",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type8",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition",
                    "gpiocond2and8",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val8",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and8",
                    "!=",
                    "No other condition",
                    "gpiocond2and8",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster8",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 9",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr10",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay10",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay10",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration10",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var10",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type10",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val10",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster10",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and10",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var10",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type10",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val10",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster10",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and10",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition",
                    "gpiocond2and10",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var10",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition",
                    "gpiocond2and10",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type10",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition",
                    "gpiocond2and10",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val10",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and10",
                    "!=",
                    "No other condition",
                    "gpiocond2and10",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster10",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 10",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr11",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay11",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay11",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration11",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var11",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type11",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val11",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster11",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and11",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var11",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type11",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val11",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster11",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and11",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition",
                    "gpiocond2and11",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var11",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition",
                    "gpiocond2and11",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type11",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition",
                    "gpiocond2and11",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val11",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and11",
                    "!=",
                    "No other condition",
                    "gpiocond2and11",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster11",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 11",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr12",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay12",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay12",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration12",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var12",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type12",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val12",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster12",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and12",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var12",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type12",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val12",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster12",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and12",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition",
                    "gpiocond2and12",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var12",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition",
                    "gpiocond2and12",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type12",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition",
                    "gpiocond2and12",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val12",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and12",
                    "!=",
                    "No other condition",
                    "gpiocond2and12",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster12",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 12",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr13",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay13",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay13",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration13",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var13",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type13",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val13",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster13",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and13",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var13",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type13",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val13",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster13",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and13",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition",
                    "gpiocond2and13",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var13",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition",
                    "gpiocond2and13",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type13",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition",
                    "gpiocond2and13",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val13",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and13",
                    "!=",
                    "No other condition",
                    "gpiocond2and13",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster13",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 13",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr14",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay14",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay14",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration14",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var14",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type14",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val14",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster14",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and14",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var14",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type14",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val14",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster14",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and14",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition",
                    "gpiocond2and14",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var14",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition",
                    "gpiocond2and14",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type14",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition",
                    "gpiocond2and14",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val14",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and14",
                    "!=",
                    "No other condition",
                    "gpiocond2and14",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster14",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 14",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr15",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay15",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay15",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration15",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var15",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type15",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val15",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster15",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and15",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var15",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type15",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val15",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster15",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and15",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition",
                    "gpiocond2and15",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var15",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition",
                    "gpiocond2and15",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type15",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition",
                    "gpiocond2and15",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val15",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and15",
                    "!=",
                    "No other condition",
                    "gpiocond2and15",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster15",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 15",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr16",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay16",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay16",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration16",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var16",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type16",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val16",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster16",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and16",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var16",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type16",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val16",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster16",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and16",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition",
                    "gpiocond2and16",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var16",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition",
                    "gpiocond2and16",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type16",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition",
                    "gpiocond2and16",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val16",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and16",
                    "!=",
                    "No other condition",
                    "gpiocond2and16",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster16",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"General purpose logic 16",
              "type":255,
              "context":"gplogic",
              "value":[
                {
                  "name":"Description",
                  "id":"gpiodescr17",
                  "type":6,
                  "value":""
                },
                {
                  "name":"On delay",
                  "id":"gpioondelay17",
                  "value":0.000000
                },
                {
                  "name":"Off delay",
                  "id":"gpiooffdelay17",
                  "value":0.000000
                },
                {
                  "name":"Maximum on duration",
                  "id":"gpiomaxduration17",
                  "value":0.000000
                },
                {
                  "name":"Variable 1",
                  "id":"gpiocond1var17",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 1",
                  "type":3,
                  "id":"gpiocond1type17",
                  "value":"="
                },
                {
                  "name":"Value 1",
                  "id":"gpiocond1val17",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 1",
                  "id":"gpiocond1hyster17",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "type":7,
                  "id":"gpiocond1and17",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 2",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2var17",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 2",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2type17",
                  "value":"="
                },
                {
                  "name":"Value 2",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2val17",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 2",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond2hyster17",
                  "value":0.000000
                },
                {
                  "name":"Next condition",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond2and17",
                  "value":"No other condition"
                },
                {
                  "name":"Variable 3",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition",
                    "gpiocond2and17",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3var17",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Condition 3",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition",
                    "gpiocond2and17",
                    "!=",
                    "No other condition"
                  ],
                  "type":7,
                  "id":"gpiocond3type17",
                  "value":"="
                },
                {
                  "name":"Value 3",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition",
                    "gpiocond2and17",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3val17",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Hysteresis 3",
                  "applies":[
                    "gpiocond1and17",
                    "!=",
                    "No other condition",
                    "gpiocond2and17",
                    "!=",
                    "No other condition"
                  ],
                  "id":"gpiocond3hyster17",
                  "value":0.000000
                }
              ]
            }
          ]
        },
        {
          "name":"Flip flop logic (momentary switch inputs)",
          "context":"flipflop",
          "type":255,
          "value":[
            {
              "name":"Flip flop logic 1",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset0",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset0",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle0",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay0",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay0",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay0",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay0",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout0",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate0",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Flip flop logic 2",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset1",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset1",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle1",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay1",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay1",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay1",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay1",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout1",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate1",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Flip flop logic 3",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset2",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset2",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle2",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay2",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay2",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay2",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay2",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout2",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate2",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Flip flop logic 4",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset3",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset3",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle3",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay3",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay3",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay3",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay3",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout3",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate3",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Flip flop logic 5",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset4",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset4",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle4",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay4",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay4",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay4",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay4",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout4",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate4",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Flip flop logic 6",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset5",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset5",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle5",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay5",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay5",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay5",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay5",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout5",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate5",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Flip flop logic 7",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset6",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset6",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle6",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay6",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay6",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay6",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay6",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout6",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate6",
                  "value":0.000000
                }
              ]
            },
            {
              "name":"Flip flop logic 8",
              "type":255,
              "value":[
                {
                  "name":"Set input",
                  "type":3,
                  "id":"ffset7",
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "type":3,
                  "id":"ffreset7",
                  "value":"Always off"
                },
                {
                  "name":"Toggle input",
                  "type":3,
                  "id":"fftoggle7",
                  "value":"Always off"
                },
                {
                  "name":"Set delay",
                  "id":"ffsetdelay7",
                  "value":0.496000
                },
                {
                  "name":"Reset delay",
                  "id":"ffresetdelay7",
                  "value":0.496000
                },
                {
                  "name":"Toggle on delay",
                  "id":"fftoggleondelay7",
                  "value":0.496000
                },
                {
                  "name":"Toggle off delay",
                  "id":"fftoggleoffdelay7",
                  "value":0.496000
                },
                {
                  "name":"Inactivity timeout",
                  "id":"fftimeout7",
                  "value":0.000000
                },
                {
                  "name":"Initial state",
                  "id":"ffbootstate7",
                  "value":0.000000
                }
              ]
            }
          ]
        },
        {
          "name":"General purpose counters",
          "type":255,
          "context":"gpcounters",
          "value":[
            {
              "name":"Counter 1",
              "type":255,
              "value":[
                {
                  "name":"Increment input",
                  "id":"upcountinput0",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Decrement input",
                  "id":"downcountinput0",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"countresetinput0",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"counterresetvalue0",
                  "value":0.000000
                },
                {
                  "name":"Maximum value",
                  "id":"countmaxvalue0",
                  "value":255.000000
                },
                {
                  "name":"Overflow behaviour",
                  "id":"countmode0",
                  "type":3,
                  "value":"No overflows"
                },
                {
                  "name":"Debounce delay",
                  "id":"counterdebounce0",
                  "value":0.096000
                }
              ]
            },
            {
              "name":"Counter 2",
              "type":255,
              "value":[
                {
                  "name":"Increment input",
                  "id":"upcountinput1",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Decrement input",
                  "id":"downcountinput1",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"countresetinput1",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"counterresetvalue1",
                  "value":0.000000
                },
                {
                  "name":"Maximum value",
                  "id":"countmaxvalue1",
                  "value":255.000000
                },
                {
                  "name":"Overflow behaviour",
                  "id":"countmode1",
                  "type":3,
                  "value":"No overflows"
                },
                {
                  "name":"Debounce delay",
                  "id":"counterdebounce1",
                  "value":0.096000
                }
              ]
            },
            {
              "name":"Counter 3",
              "type":255,
              "value":[
                {
                  "name":"Increment input",
                  "id":"upcountinput2",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Decrement input",
                  "id":"downcountinput2",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"countresetinput2",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"counterresetvalue2",
                  "value":0.000000
                },
                {
                  "name":"Maximum value",
                  "id":"countmaxvalue2",
                  "value":255.000000
                },
                {
                  "name":"Overflow behaviour",
                  "id":"countmode2",
                  "type":3,
                  "value":"No overflows"
                },
                {
                  "name":"Debounce delay",
                  "id":"counterdebounce2",
                  "value":0.096000
                }
              ]
            },
            {
              "name":"Counter 4",
              "type":255,
              "value":[
                {
                  "name":"Increment input",
                  "id":"upcountinput3",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Decrement input",
                  "id":"downcountinput3",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"countresetinput3",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"counterresetvalue3",
                  "value":0.000000
                },
                {
                  "name":"Maximum value",
                  "id":"countmaxvalue3",
                  "value":255.000000
                },
                {
                  "name":"Overflow behaviour",
                  "id":"countmode3",
                  "type":3,
                  "value":"No overflows"
                },
                {
                  "name":"Debounce delay",
                  "id":"counterdebounce3",
                  "value":0.096000
                }
              ]
            }
          ]
        },
        {
          "name":"General purpose latches",
          "type":255,
          "context":"gplatches",
          "value":[
            {
              "name":"General purpose latch 1",
              "type":255,
              "value":[
                {
                  "name":"Data source",
                  "id":"gplatchinput1",
                  "type":7,
                  "value":"enginespeed"
                },
                {
                  "name":"Set input",
                  "id":"gplatchset1",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"gplatchreset1",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"gplatchdefaultval1",
                  "value":0.000000
                },
                {
                  "name":"Set input mode",
                  "id":"latchmode1",
                  "type":3,
                  "value":"Set while active"
                },
                {
                  "name":"Alternate data source for multiplex mode",
                  "id":"gplatchaltinput1",
                  "type":7,
                  "value":"const_zero"
                }
              ]
            },
            {
              "name":"General purpose latch 2",
              "type":255,
              "value":[
                {
                  "name":"Data source",
                  "id":"gplatchinput2",
                  "type":7,
                  "value":"enginespeed"
                },
                {
                  "name":"Set input",
                  "id":"gplatchset2",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"gplatchreset2",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"gplatchdefaultval2",
                  "value":0.000000
                },
                {
                  "name":"Set input mode",
                  "id":"latchmode2",
                  "type":3,
                  "value":"Set while active"
                },
                {
                  "name":"Alternate data source for multiplex mode",
                  "id":"gplatchaltinput2",
                  "type":7,
                  "value":"const_zero"
                }
              ]
            },
            {
              "name":"General purpose latch 3",
              "type":255,
              "value":[
                {
                  "name":"Data source",
                  "id":"gplatchinput3",
                  "type":7,
                  "value":"enginespeed"
                },
                {
                  "name":"Set input",
                  "id":"gplatchset3",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"gplatchreset3",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"gplatchdefaultval3",
                  "value":0.000000
                },
                {
                  "name":"Set input mode",
                  "id":"latchmode3",
                  "type":3,
                  "value":"Set while active"
                },
                {
                  "name":"Alternate data source for multiplex mode",
                  "id":"gplatchaltinput3",
                  "type":7,
                  "value":"const_zero"
                }
              ]
            },
            {
              "name":"General purpose latch 4",
              "type":255,
              "value":[
                {
                  "name":"Data source",
                  "id":"gplatchinput4",
                  "type":7,
                  "value":"enginespeed"
                },
                {
                  "name":"Set input",
                  "id":"gplatchset4",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"gplatchreset4",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset value",
                  "id":"gplatchdefaultval4",
                  "value":0.000000
                },
                {
                  "name":"Set input mode",
                  "id":"latchmode4",
                  "type":3,
                  "value":"Set while active"
                },
                {
                  "name":"Alternate data source for multiplex mode",
                  "id":"gplatchaltinput4",
                  "type":7,
                  "value":"const_zero"
                }
              ]
            }
          ]
        },
        {
          "name":"General purpose timers",
          "type":255,
          "context":"gptimers",
          "value":[
            {
              "name":"General purpose timer 1",
              "type":255,
              "value":[
                {
                  "name":"Timer mode",
                  "id":"timermode1",
                  "type":3,
                  "value":"Normal"
                },
                {
                  "name":"Timer resets when not enabled",
                  "id":"timerautoreset1",
                  "type":3,
                  "value":"Disabled"
                },
                {
                  "name":"Enable input",
                  "id":"timerenable1",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"timerreset1",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Edge sensitive reset input",
                  "id":"timeredgereset1",
                  "type":3,
                  "value":"Always off"
                }
              ]
            },
            {
              "name":"General purpose timer 2",
              "type":255,
              "value":[
                {
                  "name":"Timer mode",
                  "id":"timermode2",
                  "type":3,
                  "value":"Normal"
                },
                {
                  "name":"Timer resets when not enabled",
                  "id":"timerautoreset2",
                  "type":3,
                  "value":"Disabled"
                },
                {
                  "name":"Enable input",
                  "id":"timerenable2",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"timerreset2",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Edge sensitive reset input",
                  "id":"timeredgereset2",
                  "type":3,
                  "value":"Always off"
                }
              ]
            },
            {
              "name":"General purpose timer 3",
              "type":255,
              "value":[
                {
                  "name":"Timer mode",
                  "id":"timermode3",
                  "type":3,
                  "value":"Normal"
                },
                {
                  "name":"Timer resets when not enabled",
                  "id":"timerautoreset3",
                  "type":3,
                  "value":"Disabled"
                },
                {
                  "name":"Enable input",
                  "id":"timerenable3",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"timerreset3",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Edge sensitive reset input",
                  "id":"timeredgereset3",
                  "type":3,
                  "value":"Always off"
                }
              ]
            },
            {
              "name":"General purpose timer 4",
              "type":255,
              "value":[
                {
                  "name":"Timer mode",
                  "id":"timermode4",
                  "type":3,
                  "value":"Normal"
                },
                {
                  "name":"Timer resets when not enabled",
                  "id":"timerautoreset4",
                  "type":3,
                  "value":"Disabled"
                },
                {
                  "name":"Enable input",
                  "id":"timerenable4",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Reset input",
                  "id":"timerreset4",
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"Edge sensitive reset input",
                  "id":"timeredgereset4",
                  "type":3,
                  "value":"Always off"
                }
              ]
            }
          ]
        },
        {
          "name":"Simple PWM 1",
          "type":255,
          "context":"simplepwm",
          "value":[
            {
              "name":"Update interval",
              "id":"simplepwmrefreshinterval1",
              "value":0.000000
            },
            {
              "name":"Output enable condition",
              "type":3,
              "id":"simplepwmenable1",
              "applies":[
                "simplepwmrefreshinterval1",
                "!=",
                0
              ],
              "value":"Always on"
            },
            {
              "name":"Frequency",
              "id":"simplepwmfreq1",
              "type":11,
              "value":[
                2000.000000
              ]
            },
            {
              "name":"Duty cycle",
              "id":"simplepwmduty1",
              "type":11,
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"Simple PWM 2",
          "type":255,
          "context":"simplepwm",
          "value":[
            {
              "name":"Update interval",
              "id":"simplepwmrefreshinterval2",
              "value":0.000000
            },
            {
              "name":"Output enable condition",
              "type":3,
              "id":"simplepwmenable2",
              "applies":[
                "simplepwmrefreshinterval2",
                "!=",
                0
              ],
              "value":"Always on"
            },
            {
              "name":"Frequency",
              "id":"simplepwmfreq2",
              "type":11,
              "value":[
                2000.000000
              ]
            },
            {
              "name":"Duty cycle",
              "id":"simplepwmduty2",
              "type":11,
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"Simple PWM 3",
          "type":255,
          "context":"simplepwm",
          "value":[
            {
              "name":"Update interval",
              "id":"simplepwmrefreshinterval3",
              "value":0.000000
            },
            {
              "name":"Output enable condition",
              "type":3,
              "id":"simplepwmenable3",
              "applies":[
                "simplepwmrefreshinterval3",
                "!=",
                0
              ],
              "value":"Always on"
            },
            {
              "name":"Frequency",
              "id":"simplepwmfreq3",
              "type":11,
              "value":[
                2000.000000
              ]
            },
            {
              "name":"Duty cycle",
              "id":"simplepwmduty3",
              "type":11,
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"Simple PWM 4",
          "type":255,
          "context":"simplepwm",
          "value":[
            {
              "name":"Update interval",
              "id":"simplepwmrefreshinterval4",
              "value":0.000000
            },
            {
              "name":"Output enable condition",
              "type":3,
              "id":"simplepwmenable4",
              "applies":[
                "simplepwmrefreshinterval4",
                "!=",
                0
              ],
              "value":"Always on"
            },
            {
              "name":"Frequency",
              "id":"simplepwmfreq4",
              "type":11,
              "value":[
                2000.000000
              ]
            },
            {
              "name":"Duty cycle",
              "id":"simplepwmduty4",
              "type":11,
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose PWM",
          "type":255,
          "value":[
            {
              "name":"PWM frequency",
              "id":"pwm0period",
              "value":500.000000
            },
            {
              "name":"Table selection",
              "type":3,
              "id":"pwm0tabsel",
              "value":"Single table"
            },
            {
              "name":"Primary X axis variable",
              "id":"pwm0primaryxvar",
              "type":7,
              "value":"enginespeed"
            },
            {
              "name":"Primary Y axis variable",
              "id":"pwm0primaryyvar",
              "type":7,
              "value":"const_zero"
            },
            {
              "name":"Primary X axis",
              "id":"pwm0primaryxaxis",
              "type":4,
              "value":[
                200.000000,
                500.000000,
                1000.000000,
                2000.000000,
                3000.000000,
                4000.000000,
                5000.000000,
                6000.000000
              ]
            },
            {
              "name":"Primary Y axis",
              "id":"pwm0primaryyaxis",
              "type":4,
              "value":[
                0.000000,
                10.000000,
                20.000000,
                30.000000,
                40.000000,
                50.000000,
                70.000000,
                90.000000
              ]
            },
            {
              "name":"Duty cycle",
              "id":"pwm0primary",
              "type":5,
              "xaxis":"pwm0primaryxaxis",
              "yaxis":"pwm0primaryyaxis",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Secondary X axis variable",
              "id":"pwm0secondaryxvar",
              "type":7,
              "value":"enginespeed"
            },
            {
              "name":"Secondary Y axis variable",
              "id":"pwm0secondaryyvar",
              "type":7,
              "value":"map"
            },
            {
              "name":"Secondary X axis",
              "id":"pwm0secondaryxaxis",
              "type":4,
              "value":[
                200.000000,
                500.000000,
                1000.000000,
                2000.000000,
                3000.000000,
                4000.000000,
                5000.000000,
                6000.000000
              ]
            },
            {
              "name":"Secondary Y axis",
              "id":"pwm0secondaryyaxis",
              "type":4,
              "value":[
                0.000000,
                10.000000,
                20.000000,
                30.000000,
                40.000000,
                50.000000,
                70.000000,
                90.000000
              ]
            },
            {
              "name":"Secondary modifier",
              "id":"pwm0secondary",
              "type":5,
              "xaxis":"pwm0secondaryxaxis",
              "yaxis":"pwm0secondaryyaxis",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Ternaryary X axis variable",
              "id":"pwm0ternaryxvar",
              "type":7,
              "value":"enginespeed"
            },
            {
              "name":"Ternary Y axis variable",
              "id":"pwm0ternaryyvar",
              "type":7,
              "value":"coolanttemp"
            },
            {
              "name":"Ternary X axis",
              "id":"pwm0ternaryxaxis",
              "type":4,
              "value":[
                200.000000,
                500.000000,
                1000.000000,
                2000.000000,
                3000.000000,
                4000.000000,
                5000.000000,
                6000.000000
              ]
            },
            {
              "name":"Ternary Y axis",
              "id":"pwm0ternaryyaxis",
              "type":4,
              "value":[
                0.000000,
                10.000000,
                30.000000,
                40.000000,
                50.000000,
                60.000000,
                70.000000,
                90.000000
              ]
            },
            {
              "name":"Ternary modifier",
              "id":"pwm0ternary",
              "type":5,
              "xaxis":"pwm0ternaryxaxis",
              "yaxis":"pwm0ternaryyaxis",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose PID control",
          "context":"gppid",
          "type":255,
          "value":[
            {
              "name":"PID service interval",
              "id":"pwm1pidserviceperiod",
              "value":0.000000
            },
            {
              "name":"Control loop enable input",
              "id":"pwm1enable",
              "type":3,
              "value":"Always on"
            },
            {
              "name":"Duty cycle when control loop disabled",
              "id":"pwm1defaultduty",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"PWM frequency",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1period",
              "value":500.000000
            },
            {
              "name":"Bipolar mode",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm1polarised",
              "value":"Disabled"
            },
            {
              "name":"Control variable",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1var",
              "type":7,
              "value":"supplyvoltage"
            },
            {
              "name":"Set point",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1target",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"Base duty",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "type":11,
              "id":"pwm1base",
              "value":[
                0.000000
              ]
            },
            {
              "name":"Maximum duty",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1maxduty",
              "value":99.998780
            },
            {
              "name":"Minimum duty",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1minduty",
              "value":0.000000
            },
            {
              "name":"P factor",
              "type":11,
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1Kp",
              "value":[
                0.200080
              ]
            },
            {
              "name":"I factor",
              "type":11,
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1Ki",
              "value":[
                0.050020
              ]
            },
            {
              "name":"D factor",
              "type":11,
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1Kd",
              "value":[
                0.100040
              ]
            },
            {
              "name":"Integrator max",
              "type":11,
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1Imax",
              "value":[
                30.001160
              ]
            },
            {
              "name":"Integrator min",
              "type":11,
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1Imin",
              "value":[
                -50.000916
              ]
            },
            {
              "name":"Setpoint low pass filter",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1targetfilter",
              "value":0.000000
            },
            {
              "name":"Setpoint slew rate limit enable",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm1slewlimit_enable",
              "value":"Disabled"
            },
            {
              "name":"Setpoint slew rate limit",
              "type":11,
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0,
                "pwm1slewlimit_enable",
                "=",
                "Enabled"
              ],
              "id":"pwm1slewlimit",
              "value":[
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm1Igplimit",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Input variable for general purpose duty limit",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0,
                "pwm1Igplimit",
                "=",
                "Enabled"
              ],
              "type":7,
              "id":"pwm1gplimitsrc",
              "value":"const_zero"
            },
            {
              "name":"Breakpoints for general purpose duty limit",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0,
                "pwm1Igplimit",
                "=",
                "Enabled"
              ],
              "type":4,
              "id":"pwm1gplimitpts",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0,
                "pwm1Igplimit",
                "=",
                "Enabled"
              ],
              "type":5,
              "id":"pwm1gplimit",
              "xaxis":"pwm1gplimitpts",
              "yaxis":[
                "Minimum",
                "Maximum"
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty multiplier",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm1Igpmod",
              "value":"Disabled"
            },
            {
              "name":"General pupose duty multiplier",
              "applies":[
                "pwm1pidserviceperiod",
                "!=",
                0,
                "pwm1Igpmod",
                "=",
                "Enabled"
              ],
              "type":11,
              "id":"pwm1gpdutymod",
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose PID control 2",
          "type":255,
          "context":"gppid2",
          "value":[
            {
              "name":"PID service interval",
              "id":"pwm2pidserviceperiod",
              "value":0.000000
            },
            {
              "name":"Control loop enable input",
              "id":"pwm2enable",
              "type":3,
              "value":"Always on"
            },
            {
              "name":"Duty cycle when control loop disabled",
              "id":"pwm2defaultduty",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"PWM frequency",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2period",
              "value":500.000000
            },
            {
              "name":"Bipolar mode",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm2polarised",
              "value":"Disabled"
            },
            {
              "name":"Control variable",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2var",
              "type":7,
              "value":"supplyvoltage"
            },
            {
              "name":"Set point",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2target",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"Base duty",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "type":11,
              "id":"pwm2base",
              "value":[
                0.000000
              ]
            },
            {
              "name":"Maximum duty",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2maxduty",
              "value":99.998780
            },
            {
              "name":"Minimum duty",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2minduty",
              "value":0.000000
            },
            {
              "name":"P factor",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2Kp",
              "type":11,
              "value":[
                0.200080
              ]
            },
            {
              "name":"I factor",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2Ki",
              "type":11,
              "value":[
                0.050020
              ]
            },
            {
              "name":"D factor",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2Kd",
              "type":11,
              "value":[
                0.100040
              ]
            },
            {
              "name":"Integrator max",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2Imax",
              "type":11,
              "value":[
                30.001160
              ]
            },
            {
              "name":"Integrator min",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2Imin",
              "type":11,
              "value":[
                -50.000916
              ]
            },
            {
              "name":"Setpoint low pass filter",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2targetfilter",
              "value":0.000000
            },
            {
              "name":"Setpoint slew rate limit enable",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm2slewlimit_enable",
              "value":"Disabled"
            },
            {
              "name":"Setpoint slew rate limit",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0,
                "pwm2slewlimit_enable",
                "=",
                "Enabled"
              ],
              "id":"pwm2slewlimit",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm2Igplimit",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Input variable for general purpose duty limit",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0,
                "pwm2Igplimit",
                "=",
                "Enabled"
              ],
              "type":7,
              "id":"pwm2gplimitsrc",
              "value":"const_zero"
            },
            {
              "name":"Breakpoints for general purpose duty limit",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0,
                "pwm2Igplimit",
                "=",
                "Enabled"
              ],
              "type":4,
              "id":"pwm2gplimitpts",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0,
                "pwm2Igplimit",
                "=",
                "Enabled"
              ],
              "type":5,
              "id":"pwm2gplimit",
              "xaxis":"pwm2gplimitpts",
              "yaxis":[
                "Minimum",
                "Maximum"
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty multiplier",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm2Igpmod",
              "value":"Disabled"
            },
            {
              "name":"General pupose duty multiplier",
              "applies":[
                "pwm2pidserviceperiod",
                "!=",
                0,
                "pwm2Igpmod",
                "=",
                "Enabled"
              ],
              "type":11,
              "id":"pwm2gpdutymod",
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose PID control 3",
          "type":255,
          "context":"gppid3",
          "value":[
            {
              "name":"PID service interval",
              "id":"pwm3pidserviceperiod",
              "value":0.000000
            },
            {
              "name":"Control loop enable input",
              "id":"pwm3enable",
              "type":3,
              "value":"Always on"
            },
            {
              "name":"Duty cycle when control loop disabled",
              "id":"pwm3defaultduty",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"PWM frequency",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3period",
              "value":500.000000
            },
            {
              "name":"Bipolar mode",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm3polarised",
              "value":"Disabled"
            },
            {
              "name":"Control variable",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3var",
              "type":7,
              "value":"supplyvoltage"
            },
            {
              "name":"Set point",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3target",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"Base duty",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "type":11,
              "id":"pwm3base",
              "value":[
                0.000000
              ]
            },
            {
              "name":"Maximum duty",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3maxduty",
              "value":99.998780
            },
            {
              "name":"Minimum duty",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3minduty",
              "value":0.000000
            },
            {
              "name":"P factor",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3Kp",
              "type":11,
              "value":[
                0.200080
              ]
            },
            {
              "name":"I factor",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3Ki",
              "type":11,
              "value":[
                0.050020
              ]
            },
            {
              "name":"D factor",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3Kd",
              "type":11,
              "value":[
                0.100040
              ]
            },
            {
              "name":"Integrator max",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3Imax",
              "type":11,
              "value":[
                30.001160
              ]
            },
            {
              "name":"Integrator min",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3Imin",
              "type":11,
              "value":[
                -50.000916
              ]
            },
            {
              "name":"Setpoint low pass filter",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3targetfilter",
              "value":0.000000
            },
            {
              "name":"Setpoint slew rate limit enable",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm3slewlimit_enable",
              "value":"Disabled"
            },
            {
              "name":"Setpoint slew rate limit",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0,
                "pwm3slewlimit_enable",
                "=",
                "Enabled"
              ],
              "id":"pwm3slewlimit",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm3Igplimit",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Input variable for general purpose duty limit",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0,
                "pwm3Igplimit",
                "=",
                "Enabled"
              ],
              "type":7,
              "id":"pwm3gplimitsrc",
              "value":"const_zero"
            },
            {
              "name":"Breakpoints for general purpose duty limit",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0,
                "pwm3Igplimit",
                "=",
                "Enabled"
              ],
              "type":4,
              "id":"pwm3gplimitpts",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0,
                "pwm3Igplimit",
                "=",
                "Enabled"
              ],
              "type":5,
              "id":"pwm3gplimit",
              "xaxis":"pwm3gplimitpts",
              "yaxis":[
                "Minimum",
                "Maximum"
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty multiplier",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm3Igpmod",
              "value":"Disabled"
            },
            {
              "name":"General pupose duty multiplier",
              "applies":[
                "pwm3pidserviceperiod",
                "!=",
                0,
                "pwm3Igpmod",
                "=",
                "Enabled"
              ],
              "type":11,
              "id":"pwm3gpdutymod",
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose PID control 4",
          "type":255,
          "context":"gppid4",
          "value":[
            {
              "name":"PID service interval",
              "id":"pwm4pidserviceperiod",
              "value":0.000000
            },
            {
              "name":"Control loop enable input",
              "id":"pwm4enable",
              "type":3,
              "value":"Always on"
            },
            {
              "name":"Duty cycle when control loop disabled",
              "id":"pwm4defaultduty",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"PWM frequency",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4period",
              "value":500.000000
            },
            {
              "name":"Bipolar mode",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm4polarised",
              "value":"Disabled"
            },
            {
              "name":"Control variable",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4var",
              "type":7,
              "value":"supplyvoltage"
            },
            {
              "name":"Set point",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4target",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"Base duty",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "type":11,
              "id":"pwm4base",
              "value":[
                0.000000
              ]
            },
            {
              "name":"Maximum duty",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4maxduty",
              "value":99.998780
            },
            {
              "name":"Minimum duty",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4minduty",
              "value":0.000000
            },
            {
              "name":"P factor",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4Kp",
              "type":11,
              "value":[
                0.200080
              ]
            },
            {
              "name":"I factor",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4Ki",
              "type":11,
              "value":[
                0.050020
              ]
            },
            {
              "name":"D factor",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4Kd",
              "type":11,
              "value":[
                0.100040
              ]
            },
            {
              "name":"Integrator max",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4Imax",
              "type":11,
              "value":[
                30.001160
              ]
            },
            {
              "name":"Integrator min",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4Imin",
              "type":11,
              "value":[
                -50.000916
              ]
            },
            {
              "name":"Setpoint low pass filter",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4targetfilter",
              "value":0.000000
            },
            {
              "name":"Setpoint slew rate limit enable",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm4slewlimit_enable",
              "value":"Disabled"
            },
            {
              "name":"Setpoint slew rate limit",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0,
                "pwm4slewlimit_enable",
                "=",
                "Enabled"
              ],
              "id":"pwm4slewlimit",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "id":"pwm4Igplimit",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Input variable for general purpose duty limit",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0,
                "pwm4Igplimit",
                "=",
                "Enabled"
              ],
              "type":7,
              "id":"pwm4gplimitsrc",
              "value":"const_zero"
            },
            {
              "name":"Breakpoints for general purpose duty limit",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0,
                "pwm4Igplimit",
                "=",
                "Enabled"
              ],
              "type":4,
              "id":"pwm4gplimitpts",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty limit",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0,
                "pwm4Igplimit",
                "=",
                "Enabled"
              ],
              "type":5,
              "id":"pwm4gplimit",
              "xaxis":"pwm4gplimitpts",
              "yaxis":[
                "Minimum",
                "Maximum"
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"General purpose duty multiplier",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0
              ],
              "type":3,
              "id":"pwm4Igpmod",
              "value":"Disabled"
            },
            {
              "name":"General pupose duty multiplier",
              "applies":[
                "pwm4pidserviceperiod",
                "!=",
                0,
                "pwm4Igpmod",
                "=",
                "Enabled"
              ],
              "type":11,
              "id":"pwm4gpdutymod",
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"User defined transfer functions",
          "context":"customlookup",
          "type":255,
          "value":[
            {
              "name":"User defined transfer function 1",
              "type":255,
              "value":[
                {
                  "name":"Input variable",
                  "id":"customlookupsrc1",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Breakpoint count",
                  "id":"customlookupcount1",
                  "value":32.000000
                },
                {
                  "name":"Breakpoints",
                  "id":"customlookup1axis",
                  "type":4,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Function",
                  "id":"customlookup1",
                  "type":5,
                  "xaxis":"customlookup1axis",
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"customlookupsigned1",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"customlookupdecimal1",
                  "type":3,
                  "value":"0"
                }
              ]
            },
            {
              "name":"User defined transfer function 2",
              "type":255,
              "value":[
                {
                  "name":"Input variable",
                  "id":"customlookupsrc2",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Breakpoint count",
                  "id":"customlookupcount2",
                  "value":32.000000
                },
                {
                  "name":"Breakpoints",
                  "id":"customlookup2axis",
                  "type":4,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Function",
                  "id":"customlookup2",
                  "type":5,
                  "xaxis":"customlookup2axis",
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"customlookupsigned2",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"customlookupdecimal2",
                  "type":3,
                  "value":"0"
                }
              ]
            },
            {
              "name":"User defined transfer function 3",
              "type":255,
              "value":[
                {
                  "name":"Input variable",
                  "id":"customlookupsrc3",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Breakpoint count",
                  "id":"customlookupcount3",
                  "value":32.000000
                },
                {
                  "name":"Breakpoints",
                  "id":"customlookup3axis",
                  "type":4,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Function",
                  "id":"customlookup3",
                  "type":5,
                  "xaxis":"customlookup3axis",
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"customlookupsigned3",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"customlookupdecimal3",
                  "type":3,
                  "value":"0"
                }
              ]
            },
            {
              "name":"User defined transfer function 4",
              "type":255,
              "value":[
                {
                  "name":"Input variable",
                  "id":"customlookupsrc4",
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Breakpoint count",
                  "id":"customlookupcount4",
                  "value":32.000000
                },
                {
                  "name":"Breakpoints",
                  "id":"customlookup4axis",
                  "type":4,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Function",
                  "id":"customlookup4",
                  "type":5,
                  "xaxis":"customlookup4axis",
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"customlookupsigned4",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"customlookupdecimal4",
                  "type":3,
                  "value":"0"
                }
              ]
            }
          ]
        },
        {
          "name":"User defined tables",
          "context":"customtables",
          "type":255,
          "value":[
            {
              "name":"User defined table 1",
              "type":255,
              "value":[
                {
                  "name":"Table",
                  "id":"custom2dtable1",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"custom2dsigned1",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"custom2ddecimal1",
                  "type":3,
                  "value":"0"
                }
              ]
            },
            {
              "name":"User defined table 2",
              "type":255,
              "value":[
                {
                  "name":"Table",
                  "id":"custom2dtable2",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"custom2dsigned2",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"custom2ddecimal2",
                  "type":3,
                  "value":"0"
                }
              ]
            },
            {
              "name":"User defined table 3",
              "type":255,
              "value":[
                {
                  "name":"Table",
                  "id":"custom2dtable3",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"custom2dsigned3",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"custom2ddecimal3",
                  "type":3,
                  "value":"0"
                }
              ]
            },
            {
              "name":"User defined table 4",
              "type":255,
              "value":[
                {
                  "name":"Table",
                  "id":"custom2dtable4",
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Output type",
                  "id":"custom2dsigned4",
                  "type":3,
                  "value":"Unsigned"
                },
                {
                  "name":"Digits after the decimal point",
                  "id":"custom2ddecimal4",
                  "type":3,
                  "value":"0"
                }
              ]
            }
          ]
        },
        {
          "name":"User defined math channels",
          "type":255,
          "context":"uservars",
          "value":[
            {
              "name":"User defined math expression 1 computation interval",
              "id":"customformulainterval1",
              "value":0.000000
            },
            {
              "name":"User defined math expression 1",
              "id":"customformula1",
              "mathmode":1,
              "type":6,
              "scriptbutton":[
                "Test compile",
                [
                  [
                    "updateconfig"
                  ],
                  [
                    "compileexpression",
                    1,
                    "customformula1",
                    "customformula1compiled"
                  ]
                ]
              ],
              "value":""
            },
            {
              "name":"User defined math expression 2 computation interval",
              "id":"customformulainterval2",
              "value":0.000000
            },
            {
              "name":"User defined math expression 2",
              "id":"customformula2",
              "mathmode":1,
              "type":6,
              "scriptbutton":[
                "Test compile",
                [
                  [
                    "updateconfig"
                  ],
                  [
                    "compileexpression",
                    1,
                    "customformula2",
                    "customformula2compiled"
                  ]
                ]
              ],
              "value":""
            },
            {
              "name":"User defined math expression 3 computation interval",
              "id":"customformulainterval3",
              "value":0.000000
            },
            {
              "name":"User defined math expression 3",
              "id":"customformula3",
              "mathmode":1,
              "type":6,
              "scriptbutton":[
                "Test compile",
                [
                  [
                    "updateconfig"
                  ],
                  [
                    "compileexpression",
                    1,
                    "customformula3",
                    "customformula3compiled"
                  ]
                ]
              ],
              "value":""
            },
            {
              "name":"User defined math expression 4 computation interval",
              "id":"customformulainterval4",
              "value":0.000000
            },
            {
              "name":"User defined math expression 4",
              "id":"customformula4",
              "mathmode":1,
              "type":6,
              "scriptbutton":[
                "Test compile",
                [
                  [
                    "updateconfig"
                  ],
                  [
                    "compileexpression",
                    1,
                    "customformula4",
                    "customformula4compiled"
                  ]
                ]
              ],
              "value":""
            }
          ]
        }
      ]
    },
    {
      "name":"Turbocharger control",
      "context":"boostctl",
      "type":255,
      "value":[
        {
          "name":"PWM control frequency",
          "id":"boostperiod",
          "value":30.001200
        },
        {
          "name":"PID service interval",
          "id":"boostpidinterval",
          "value":50.000000
        },
        {
          "name":"Pressure source",
          "id":"boostpressuresource",
          "type":7,
          "value":"map"
        },
        {
          "name":"PD table",
          "type":11,
          "id":"boostPDmap",
          "xvariable":"boosterror",
          "yvariable":"boostdot",
          "xaxis":[
            -1600.000000,
            -1200.000000,
            -800.000000,
            -400.000000,
            -200.000000,
            -100.000000,
            100.000000,
            200.000000,
            400.000000,
            800.000000,
            1200.000000,
            1600.000000
          ],
          "allocation":[
            0,
            13204,
            352
          ],
          "yaxis":[
            -2000.000000,
            -800.000000,
            -600.000000,
            -400.000000,
            -200.000000,
            -80.000000,
            80.000000,
            200.000000,
            400.000000,
            600.000000,
            800.000000,
            2000.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"ID table",
          "type":11,
          "id":"boostIDmap",
          "xvariable":"boosterror",
          "yvariable":"boostdot",
          "xaxis":[
            -1600.000000,
            -1200.000000,
            -800.000000,
            -400.000000,
            -200.000000,
            -100.000000,
            100.000000,
            200.000000,
            400.000000,
            800.000000,
            1200.000000,
            1600.000000
          ],
          "allocation":[
            0,
            13556,
            352
          ],
          "yaxis":[
            -2000.000000,
            -800.000000,
            -600.000000,
            -400.000000,
            -200.000000,
            -80.000000,
            80.000000,
            200.000000,
            400.000000,
            600.000000,
            800.000000,
            2000.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"P gain",
          "id":"boostKp",
          "type":11,
          "xvariable":"boosterror",
          "xaxis":[
            -1600.000000,
            -1200.000000,
            -800.000000,
            -400.000000,
            -200.000000,
            -100.000000,
            100.000000,
            200.000000,
            400.000000,
            800.000000,
            1200.000000,
            1600.000000
          ],
          "allocation":[
            0,
            13908,
            60
          ],
          "value":[
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040,
            0.100040
          ]
        },
        {
          "name":"I gain",
          "id":"boostKi",
          "type":11,
          "xvariable":"boosterror",
          "xaxis":[
            -1600.000000,
            -1200.000000,
            -800.000000,
            -400.000000,
            -200.000000,
            -100.000000,
            100.000000,
            200.000000,
            400.000000,
            800.000000,
            1200.000000,
            1600.000000
          ],
          "allocation":[
            0,
            13968,
            60
          ],
          "value":[
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120,
            0.300120
          ]
        },
        {
          "name":"D gain",
          "id":"boostKd",
          "type":11,
          "value":[
            0.100040
          ]
        },
        {
          "name":"Integrator max value",
          "id":"boostImax",
          "type":11,
          "value":[
            50.000916
          ]
        },
        {
          "name":"Integrator min value",
          "id":"boostImin",
          "type":11,
          "value":[
            -50.000916
          ]
        },
        {
          "name":"Zero integrator below target",
          "id":"boostzerointbelow",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Minimum error below target to enable integrator",
          "applies":[
            "boostzerointbelow",
            "=",
            "Enabled"
          ],
          "id":"boostienablerange",
          "value":300.000000
        },
        {
          "name":"General purpose trims",
          "type":255,
          "value":[
            {
              "name":"General purpose trim 1 mode",
              "id":"boostgp1mode",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"General purpose trim 1 conditional",
              "id":"boostgp1switch",
              "type":3,
              "value":"Always on"
            },
            {
              "name":"General purpose trim 1",
              "applies":[
                "boostgp1mode",
                "!=",
                "Disabled"
              ],
              "id":"boostgp1",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"General purpose trim 2 mode",
              "id":"boostgp2mode",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"General purpose trim 2 conditional",
              "id":"boostgp2switch",
              "type":3,
              "value":"Always on"
            },
            {
              "name":"General purpose trim 2",
              "applies":[
                "boostgp2mode",
                "!=",
                "Disabled"
              ],
              "id":"boostgp2",
              "type":11,
              "value":[
                0.000000
              ]
            },
            {
              "name":"General purpose trim 3 mode",
              "id":"boostgp3mode",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"General purpose trim 3 conditional",
              "id":"boostgp3switch",
              "type":3,
              "value":"Always on"
            },
            {
              "name":"General purpose trim 3",
              "applies":[
                "boostgp3mode",
                "!=",
                "Disabled"
              ],
              "id":"boostgp3",
              "type":11,
              "value":[
                1500.000000
              ]
            }
          ]
        },
        {
          "name":"Auxiliary control loops",
          "type":255,
          "context":"boostctl2",
          "value":[
            {
              "name":"Control parameter 2",
              "type":255,
              "value":[
                {
                  "name":"Control parameter 2 enable",
                  "id":"boostp2enable",
                  "type":3,
                  "value":"Disabled"
                },
                {
                  "name":"Control variable 2 selection",
                  "id":"boostparam2picker",
                  "applies":[
                    "boostp2enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Control variable 2 target map",
                  "id":"boostparam2map",
                  "type":11,
                  "applies":[
                    "boostp2enable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Proportional gain",
                  "id":"boostparam2Kp",
                  "type":11,
                  "applies":[
                    "boostp2enable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Integral gain",
                  "id":"boostparam2Ki",
                  "type":11,
                  "applies":[
                    "boostp2enable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Derivative gain",
                  "applies":[
                    "boostp2enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":11,
                  "id":"boostparam2Kd",
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Integral minimum value",
                  "id":"boostparam2Imin",
                  "type":11,
                  "applies":[
                    "boostp2enable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Integral maximum value",
                  "id":"boostparam2Imax",
                  "type":11,
                  "applies":[
                    "boostp2enable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    99.998780
                  ]
                }
              ]
            },
            {
              "name":"Control parameter 3",
              "type":255,
              "value":[
                {
                  "name":"Control parameter 3 enable",
                  "id":"boostp3enable",
                  "type":3,
                  "value":"Disabled"
                },
                {
                  "name":"Control variable 3 selection",
                  "id":"boostparam3picker",
                  "applies":[
                    "boostp3enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":7,
                  "value":"const_zero"
                },
                {
                  "name":"Control variable 3 target map",
                  "id":"boostparam3map",
                  "type":11,
                  "applies":[
                    "boostp3enable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Proportional gain",
                  "id":"boostparam3Kp",
                  "applies":[
                    "boostp3enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Integral gain",
                  "id":"boostparam3Ki",
                  "applies":[
                    "boostp3enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":11,
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Derivative gain",
                  "applies":[
                    "boostp3enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":11,
                  "id":"boostparam3Kd",
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Integral minimum value",
                  "applies":[
                    "boostp3enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":11,
                  "id":"boostparam3Imin",
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Integral maximum value",
                  "applies":[
                    "boostp3enable",
                    "!=",
                    "Disabled"
                  ],
                  "type":11,
                  "id":"boostparam3Imax",
                  "value":[
                    99.998780
                  ]
                }
              ]
            }
          ]
        },
        {
          "name":"Boost duty translation curve",
          "id":"boost_nonlinear",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Boost actuation breakpoint count",
          "applies":[
            "boost_nonlinear",
            "=",
            "Enabled"
          ],
          "id":"boostdutybpcount",
          "value":11.000000
        },
        {
          "name":"Boost actuation breakpoints",
          "applies":[
            "boost_nonlinear",
            "=",
            "Enabled"
          ],
          "id":"boostdutybreakpts",
          "type":4,
          "value":[
            0.000000,
            10.001404,
            19.999756,
            30.001160,
            39.999512,
            50.000916,
            59.999268,
            70.000672,
            79.999024,
            90.000428,
            99.998780
          ]
        },
        {
          "name":"Boost duty output",
          "applies":[
            "boost_nonlinear",
            "=",
            "Enabled"
          ],
          "id":"boostdutycurve",
          "type":5,
          "xaxis":"boostdutybreakpts",
          "value":[
            0.000000,
            10.001404,
            19.999756,
            30.001160,
            39.999512,
            50.000916,
            59.999268,
            70.000672,
            79.999024,
            90.000428,
            99.998780
          ]
        },
        {
          "name":"Turbo override trigger",
          "id":"turbooverridetrigger",
          "type":3,
          "value":"Always off"
        },
        {
          "name":"Turbo override duty cycle",
          "id":"turbooverrideduty",
          "type":11,
          "value":[
            0.000000
          ]
        }
      ]
    },
    {
      "name":"Cruise control",
      "context":"cruise",
      "type":255,
      "value":[
        {
          "name":"Cruise control enable",
          "type":3,
          "id":"cruiseenable",
          "value":"Disabled"
        },
        {
          "name":"Cruise switch input",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruisesource",
          "type":7,
          "value":"analog5"
        },
        {
          "name":"Cruise switch values",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruisebuttonmap",
          "type":5,
          "colwidth":2.000000,
          "xaxis":[
            "Inactive",
            "Stop",
            "Set\/Decel",
            "Resume\/Accel"
          ],
          "value":[
            4.999995,
            0.500610,
            2.500608,
            1.500609
          ]
        },
        {
          "name":"Use engine speed instead of road speed",
          "type":3,
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruise_enginespeedbased",
          "value":"Disabled"
        },
        {
          "name":"P factor",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruiseKp",
          "type":11,
          "value":[
            3.999892
          ]
        },
        {
          "name":"I factor",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruiseKi",
          "type":11,
          "value":[
            0.549976
          ]
        },
        {
          "name":"D factor",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruiseKd",
          "type":11,
          "value":[
            0.999912
          ]
        },
        {
          "name":"Integrator maximum",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruiseImax",
          "type":11,
          "value":[
            5000.000000
          ]
        },
        {
          "name":"Maximum engine speed",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruisemaxrpm",
          "value":4000.000000
        },
        {
          "name":"Maximum effective throttle",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruisemaxthrottle",
          "type":11,
          "value":[
            70.019352
          ]
        },
        {
          "name":"Accel\/decel mode",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "type":3,
          "id":"cruise_continuous",
          "value":"Step"
        },
        {
          "name":"Accel\/decel step size",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruisestep",
          "value":1.000000
        },
        {
          "name":"Accel\/decel rate in continuous mode",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled",
            "cruise_continuous",
            "=",
            "Continuous"
          ],
          "id":"cruiseaccelrate",
          "value":2.000000
        },
        {
          "name":"Accel\/decel continuous mode delay",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled",
            "cruise_continuous",
            "=",
            "Continuous"
          ],
          "id":"cruisecontinuousdelay",
          "value":0.500000
        },
        {
          "name":"Minimum vehicle speed",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruiseminspeed",
          "value":50.000000
        },
        {
          "name":"Control loop smoothing filter",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruisesmoothing",
          "value":69.915252
        },
        {
          "name":"Default cruise speed",
          "applies":[
            "cruiseenable",
            "!=",
            "Disabled"
          ],
          "id":"cruisedefaultspeed",
          "value":0.000000
        }
      ]
    },
    {
      "name":"CAN bus",
      "type":255,
      "value":[
        {
          "name":"CAN bus data rate",
          "id":"canmode",
          "type":3,
          "value":"500kbit"
        },
        {
          "name":"CAN bus broadcasting",
          "type":255,
          "value":[
            {
              "name":"CAN broadcasting enable",
              "applies":[
                "canmode",
                "!=",
                "Disabled"
              ],
              "id":"canbcenable",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Broadcast slot count",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canbcenable",
                "=",
                "Enabled"
              ],
              "id":"cantxcount",
              "value":16.000000
            },
            {
              "name":"CAN broadcast content",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canbcenable",
                "=",
                "Enabled"
              ],
              "id":"cantxformat",
              "type":5,
              "xaxis":[
                0,
                2,
                4,
                6
              ],
              "yaxis":"cantxaddress",
              "scriptbutton":[
                "Export DBC file",
                [
                  [
                    "exportdbc",
                    "cantxaddress",
                    "cantxinterval",
                    "cantxformat",
                    "DSL1"
                  ]
                ]
              ],
              "value":[
                "effthrottle",
                "rackposition",
                "map",
                "enginespeed",
                "enginespeed",
                "map",
                "pedalposition",
                "fuelqty",
                "coolanttemp",
                "airtemp",
                "egt",
                "oiltemp",
                "const_zero",
                "oilpress",
                "fuelpressure",
                "pumpangle",
                "supplyvoltage",
                "roadspeed",
                "emap",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero"
              ]
            },
            {
              "name":"CAN broadcast address",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canbcenable",
                "=",
                "Enabled"
              ],
              "id":"cantxaddress",
              "type":5,
              "yaxis":[
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                30,
                31
              ],
              "value":[
                74565.000000,
                1792.000000,
                1793.000000,
                1794.000000,
                1795.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"CAN broadcast frequency",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canbcenable",
                "=",
                "Enabled"
              ],
              "id":"cantxinterval",
              "type":5,
              "yaxis":"cantxaddress",
              "value":[
                "20Hz",
                "100Hz",
                "10Hz",
                "100Hz",
                "100Hz",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled"
              ]
            }
          ]
        },
        {
          "name":"Custom CAN broadcast on CAN bus 1",
          "type":255,
          "value":[
            {
              "name":"Custom CAN enable",
              "applies":[
                "canmode",
                "!=",
                "Disabled"
              ],
              "id":"customcanenable",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Broadcast slot count",
              "applies":[
                "canmode",
                "!=",
                "Disabled"
              ],
              "id":"customcancount",
              "value":16.000000
            },
            {
              "name":"Transmission frequency",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcaninterval",
              "type":5,
              "yaxis":"customcanaddr",
              "value":[
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled",
                "Disabled"
              ]
            },
            {
              "name":"CAN addresses",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanaddr",
              "type":5,
              "yaxis":[
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                30,
                31
              ],
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "scriptbutton2":[
                "Export DBC file",
                [
                  [
                    "exportcustomdbc",
                    "customcanaddr",
                    "customcaninterval",
                    "customcandata",
                    "customcanlength",
                    "customcanoffsets",
                    "customcanformat",
                    "customcanrange",
                    "customcanoutput",
                    "DSL1"
                  ]
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"CAN frame lengths",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcantxbytes",
              "type":5,
              "novisual":1,
              "yaxis":"customcanaddr",
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000,
                8.000000
              ]
            },
            {
              "name":"CAN frame filler bytes",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanfiller",
              "type":5,
              "yaxis":"customcanaddr",
              "novisual":1,
              "xaxis":[
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7
              ],
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"CAN packet item count",
              "id":"customcanlength",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "type":5,
              "yaxis":"customcanaddr",
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"CAN item offsets",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanoffsets",
              "type":5,
              "novisual":1,
              "yaxis":"customcanaddr",
              "xaxis":[
                "First",
                "Second",
                "Third",
                "Fourth"
              ],
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"CAN packet content",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcandata",
              "type":5,
              "yaxis":"customcanaddr",
              "xaxis":[
                "First",
                "Second",
                "Third",
                "Fourth"
              ],
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero"
              ]
            },
            {
              "name":"Content format",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanformat",
              "type":5,
              "yaxis":"customcanaddr",
              "xaxis":[
                "First",
                "Second",
                "Third",
                "Fourth"
              ],
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit",
                "bit"
              ]
            },
            {
              "name":"CAN item bit shift",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanbitshifts",
              "type":5,
              "novisual":1,
              "yaxis":"customcanaddr",
              "xaxis":[
                "First",
                "Second",
                "Third",
                "Fourth"
              ],
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"CAN item width shortening",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanbitshort",
              "type":5,
              "novisual":1,
              "yaxis":"customcanaddr",
              "xaxis":[
                "First",
                "Second",
                "Third",
                "Fourth"
              ],
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Content input range",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanrange",
              "type":5,
              "colwidth":1.500000,
              "yaxis":"customcanaddr",
              "xaxis":[
                "First low",
                "First high",
                "Second low",
                "Second high",
                "Third low",
                "Third high",
                "Fourth low",
                "Fourth high"
              ],
              "novisual":1,
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Content output range",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanoutput",
              "type":5,
              "colwidth":1.500000,
              "yaxis":"customcanaddr",
              "xaxis":[
                "First low",
                "First high",
                "Second low",
                "Second high",
                "Third low",
                "Third high",
                "Fourth low",
                "Fourth high"
              ],
              "novisual":1,
              "scriptbutton":[
                "Launch preview tool",
                [
                  "library",
                  "ccanpreview"
                ]
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Transmit conditions",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcantxconds",
              "type":5,
              "yaxis":"customcanaddr",
              "value":[
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on",
                "Always on"
              ]
            },
            {
              "name":"Packet checksums",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "customcanenable",
                "=",
                "Enabled"
              ],
              "id":"customcanchecksums",
              "type":5,
              "yaxis":"customcanaddr",
              "value":[
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None",
                "None"
              ]
            }
          ]
        },
        {
          "name":"CAN receiving",
          "context":"canrx",
          "type":255,
          "value":[
            {
              "name":"CAN receiving enable",
              "applies":[
                "canmode",
                "!=",
                "Disabled"
              ],
              "id":"canrxenable",
              "type":3,
              "value":"Enabled"
            },
            {
              "name":"Receive slot count",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxcount",
              "value":16.000000
            },
            {
              "name":"Descriptions",
              "id":"canrxname",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "type":5,
              "yaxis":[
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                30,
                31
              ],
              "value":[
                " ",
                " ",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                ""
              ]
            },
            {
              "name":"Variable aliases",
              "id":"canrxalias",
              "type":5,
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "yaxis":"canrxname",
              "value":[
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                "",
                ""
              ]
            },
            {
              "name":"Format",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxdescr",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8"
              ]
            },
            {
              "name":"Addresses",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxaddr",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000,
                4294967295.000000
              ]
            },
            {
              "name":"Byte offsets",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxoffset",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000,
                7.000000
              ]
            },
            {
              "name":"Bit width alterations",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxbits",
              "type":5,
              "yaxis":"canrxname",
              "xaxis":[
                "Bit shift",
                "Bit width"
              ],
              "colwidth":2,
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Input range",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxrange",
              "type":5,
              "xaxis":[
                "min",
                "max"
              ],
              "yaxis":"canrxname",
              "value":[
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000,
                -1.000000
              ]
            },
            {
              "name":"Translation",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxoutput",
              "type":5,
              "xaxis":[
                "min",
                "max"
              ],
              "yaxis":"canrxname",
              "value":[
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000,
                65535.000000
              ]
            },
            {
              "name":"Receive timeouts",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxtimeout",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Default values",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxdefault",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Low pass filter",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxfilter",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Multiplexing mode",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxmuxmode",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing",
                "No multiplexing"
              ]
            },
            {
              "name":"Multiplexing value",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"canrxmux",
              "type":5,
              "yaxis":"canrxname",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            }
          ]
        },
        {
          "name":"OBD2 service",
          "type":255,
          "context":"obd2",
          "value":[
            {
              "name":"OBD2 service enable",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"obd2enable",
              "type":3,
              "value":"Enabled"
            },
            {
              "name":"OBD2 broadcast ID enable",
              "applies":[
                "obd2enable",
                "=",
                "Enabled",
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled"
              ],
              "id":"obd2bcenable",
              "type":3,
              "value":"Enabled"
            },
            {
              "name":"OBD2 listening ID",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"obdid",
              "value":2016.000000
            },
            {
              "name":"OBD2 response ID",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"obdresponseid",
              "value":2024.000000
            },
            {
              "name":"OBD2 VIN number reported",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"obdvin",
              "type":6,
              "value":"REALLYFASTRACECAR"
            },
            {
              "name":"Custom PID slot count",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"customobdcount",
              "value":16.000000
            },
            {
              "name":"OBD2 custom PIDs",
              "id":"customobdpid",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "type":5,
              "yaxis":[
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10,
                11,
                12,
                13,
                14,
                15,
                16,
                17,
                18,
                19,
                20,
                21,
                22,
                23,
                24,
                25,
                26,
                27,
                28,
                29,
                30,
                31
              ],
              "novisual":1,
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"OBD2 custom PID contents",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"customobddata",
              "type":5,
              "yaxis":"customobdpid",
              "colwidth":2,
              "value":[
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero",
                "const_zero"
              ]
            },
            {
              "name":"OBD2 custom PID format",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"customobdformat",
              "type":5,
              "yaxis":"customobdpid",
              "colwidth":3,
              "value":[
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8",
                "u8"
              ]
            },
            {
              "name":"OBD2 custom PID input range",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"customobdrange",
              "type":5,
              "yaxis":"customobddata",
              "novisual":1,
              "xaxis":[
                "Low",
                "High"
              ],
              "colwidth":3,
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"OBD2 custom PID output range",
              "applies":[
                "canmode",
                "!=",
                "Disabled",
                "canrxenable",
                "=",
                "Enabled",
                "obd2enable",
                "=",
                "Enabled"
              ],
              "id":"customobdoutput",
              "type":5,
              "yaxis":"customobddata",
              "novisual":1,
              "xaxis":[
                "Low",
                "High"
              ],
              "colwidth":3,
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            }
          ]
        },
        {
          "name":"CAN transmit sequences",
          "type":255,
          "value":[
            {
              "name":"CAN sequence 1",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval1",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable1",
                  "applies":[
                    "canseqinterval1",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect1",
                  "applies":[
                    "canseqinterval1",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid1",
                  "applies":[
                    "canseqinterval1",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc1",
                  "applies":[
                    "canseqinterval1",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength1",
                  "applies":[
                    "canseqinterval1",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq1",
                  "applies":[
                    "canseqinterval1",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq1alt",
                  "applies":[
                    "canseqinterval1",
                    "!=",
                    0,
                    "canseqselect1",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom1",
                  "value":255.000000
                }
              ]
            },
            {
              "name":"CAN sequence 2",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval2",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable2",
                  "applies":[
                    "canseqinterval2",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect2",
                  "applies":[
                    "canseqinterval2",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid2",
                  "applies":[
                    "canseqinterval2",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc2",
                  "applies":[
                    "canseqinterval2",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength2",
                  "applies":[
                    "canseqinterval2",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq2",
                  "applies":[
                    "canseqinterval2",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq2alt",
                  "applies":[
                    "canseqinterval2",
                    "!=",
                    0,
                    "canseqselect2",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom2",
                  "value":255.000000
                }
              ]
            },
            {
              "name":"CAN sequence 3",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval3",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable3",
                  "applies":[
                    "canseqinterval3",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect3",
                  "applies":[
                    "canseqinterval3",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid3",
                  "applies":[
                    "canseqinterval3",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc3",
                  "applies":[
                    "canseqinterval3",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength3",
                  "applies":[
                    "canseqinterval3",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq3",
                  "applies":[
                    "canseqinterval3",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq3alt",
                  "applies":[
                    "canseqinterval3",
                    "!=",
                    0,
                    "canseqselect3",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom3",
                  "value":255.000000
                }
              ]
            },
            {
              "name":"CAN sequence 4",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval4",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable4",
                  "applies":[
                    "canseqinterval4",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect4",
                  "applies":[
                    "canseqinterval4",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid4",
                  "applies":[
                    "canseqinterval4",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc4",
                  "applies":[
                    "canseqinterval4",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength4",
                  "applies":[
                    "canseqinterval4",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq4",
                  "applies":[
                    "canseqinterval4",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq4alt",
                  "applies":[
                    "canseqinterval4",
                    "!=",
                    0,
                    "canseqselect4",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom4",
                  "value":255.000000
                }
              ]
            },
            {
              "name":"CAN sequence 5",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval5",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable5",
                  "applies":[
                    "canseqinterval5",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect5",
                  "applies":[
                    "canseqinterval5",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid5",
                  "applies":[
                    "canseqinterval5",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc5",
                  "applies":[
                    "canseqinterval5",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength5",
                  "applies":[
                    "canseqinterval5",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq5",
                  "applies":[
                    "canseqinterval5",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq5alt",
                  "applies":[
                    "canseqinterval5",
                    "!=",
                    0,
                    "canseqselect5",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom5",
                  "value":255.000000
                }
              ]
            },
            {
              "name":"CAN sequence 6",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval6",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable6",
                  "applies":[
                    "canseqinterval6",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect6",
                  "applies":[
                    "canseqinterval6",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid6",
                  "applies":[
                    "canseqinterval6",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc6",
                  "applies":[
                    "canseqinterval6",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength6",
                  "applies":[
                    "canseqinterval6",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq6",
                  "applies":[
                    "canseqinterval6",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq6alt",
                  "applies":[
                    "canseqinterval6",
                    "!=",
                    0,
                    "canseqselect6",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom6",
                  "value":255.000000
                }
              ]
            },
            {
              "name":"CAN sequence 7",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval7",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable7",
                  "applies":[
                    "canseqinterval7",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect7",
                  "applies":[
                    "canseqinterval7",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid7",
                  "applies":[
                    "canseqinterval7",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc7",
                  "applies":[
                    "canseqinterval7",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength7",
                  "applies":[
                    "canseqinterval7",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq7",
                  "applies":[
                    "canseqinterval7",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq7alt",
                  "applies":[
                    "canseqinterval7",
                    "!=",
                    0,
                    "canseqselect7",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom7",
                  "value":255.000000
                }
              ]
            },
            {
              "name":"CAN sequence 8",
              "type":255,
              "value":[
                {
                  "name":"Transmit interval",
                  "id":"canseqinterval8",
                  "value":0.000000
                },
                {
                  "name":"Transmit enable condition",
                  "id":"canseqenable8",
                  "applies":[
                    "canseqinterval8",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always on"
                },
                {
                  "name":"Alternate sequence select condition",
                  "id":"canseqselect8",
                  "applies":[
                    "canseqinterval8",
                    "!=",
                    0
                  ],
                  "type":3,
                  "value":"Always off"
                },
                {
                  "name":"CAN packet ID",
                  "id":"canseqid8",
                  "applies":[
                    "canseqinterval8",
                    "!=",
                    0
                  ],
                  "value":0.000000
                },
                {
                  "name":"CAN packet size",
                  "id":"canseqdlc8",
                  "applies":[
                    "canseqinterval8",
                    "!=",
                    0
                  ],
                  "value":8.000000
                },
                {
                  "name":"CAN sequence length",
                  "id":"canseqlength8",
                  "applies":[
                    "canseqinterval8",
                    "!=",
                    0
                  ],
                  "value":4.000000
                },
                {
                  "name":"CAN sequence values",
                  "id":"canseq8",
                  "applies":[
                    "canseqinterval8",
                    "!=",
                    0
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Alternate values",
                  "id":"canseq8alt",
                  "applies":[
                    "canseqinterval8",
                    "!=",
                    0,
                    "canseqselect8",
                    "!=",
                    "Always off"
                  ],
                  "type":5,
                  "xaxis":[
                    0,
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7
                  ],
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16
                  ],
                  "novisual":1,
                  "value":[
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000,
                    0.000000
                  ]
                },
                {
                  "name":"Populate with data definition",
                  "id":"canseqdatafrom8",
                  "value":255.000000
                }
              ]
            }
          ]
        },
        {
          "name":"CAN scan tools",
          "type":255,
          "context":"canscan",
          "value":[
            {
              "name":"Scan start address",
              "id":"canscanstartaddr",
              "value":1.000000
            },
            {
              "name":"Scan end address",
              "id":"canscanendaddr",
              "value":1.000000
            },
            {
              "name":"Packet transmit interval",
              "id":"canscaninterval",
              "value":10.000000
            },
            {
              "name":"Data length",
              "id":"canscanlength",
              "value":8.000000
            },
            {
              "name":"Scan packet content",
              "id":"canscancontent",
              "type":5,
              "novisual":1,
              "xaxis":[
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "name":"Number of packets to send before advancing to the next address",
              "id":"canscanrepeat",
              "value":1.000000
            },
            {
              "name":"Scan packet adder bytes",
              "applies":[
                "canscanrepeat",
                "!=",
                "1"
              ],
              "id":"canscanadder",
              "type":5,
              "novisual":1,
              "xaxis":[
                0,
                1,
                2,
                3,
                4,
                5,
                6,
                7
              ],
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            }
          ]
        },
        {
          "name":"Blink Marine CAN keypads",
          "type":255,
          "context":"cankeypads",
          "value":[
            {
              "name":"Blink Marine keypad interface",
              "id":"blinkkeypadenable",
              "type":3,
              "value":"Disabled"
            },
            {
              "name":"Keypad 1",
              "type":255,
              "context":"cankeypad1",
              "value":[
                {
                  "name":"Keypad size",
                  "id":"blinkkeypadsize1",
                  "value":4.000000
                },
                {
                  "name":"Button modes",
                  "id":"blinkkeypad1buttonmodes",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "value":[
                    "Momentary",
                    "Momentary",
                    "Momentary",
                    "Momentary"
                  ]
                },
                {
                  "name":"Button auxiliary inputs",
                  "id":"blinkkeypad1buttonauxinputs",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Reset",
                    "Set"
                  ],
                  "value":[
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1"
                  ]
                },
                {
                  "name":"Button light modes",
                  "id":"blinkkeypad1lightstates",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Off",
                    "On"
                  ],
                  "value":[
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off"
                  ]
                }
              ]
            },
            {
              "name":"Keypad 2",
              "type":255,
              "context":"cankeypad2",
              "value":[
                {
                  "name":"Keypad size",
                  "id":"blinkkeypadsize2",
                  "value":4.000000
                },
                {
                  "name":"Button modes",
                  "id":"blinkkeypad2buttonmodes",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "value":[
                    "Momentary",
                    "Momentary",
                    "Momentary",
                    "Momentary"
                  ]
                },
                {
                  "name":"Button auxiliary inputs",
                  "id":"blinkkeypad2buttonauxinputs",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Reset",
                    "Set"
                  ],
                  "value":[
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1"
                  ]
                },
                {
                  "name":"Button light modes",
                  "id":"blinkkeypad2lightstates",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Off",
                    "On"
                  ],
                  "value":[
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off"
                  ]
                }
              ]
            },
            {
              "name":"Keypad 3",
              "type":255,
              "context":"cankeypad3",
              "value":[
                {
                  "name":"Keypad size",
                  "id":"blinkkeypadsize3",
                  "value":4.000000
                },
                {
                  "name":"Button modes",
                  "id":"blinkkeypad3buttonmodes",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "value":[
                    "Momentary",
                    "Momentary",
                    "Momentary",
                    "Momentary"
                  ]
                },
                {
                  "name":"Button auxiliary inputs",
                  "id":"blinkkeypad3buttonauxinputs",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Reset",
                    "Set"
                  ],
                  "value":[
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1"
                  ]
                },
                {
                  "name":"Button light modes",
                  "id":"blinkkeypad3lightstates",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Off",
                    "On"
                  ],
                  "value":[
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off"
                  ]
                }
              ]
            },
            {
              "name":"Keypad 4",
              "type":255,
              "context":"cankeypad4",
              "value":[
                {
                  "name":"Keypad size",
                  "id":"blinkkeypadsize4",
                  "value":4.000000
                },
                {
                  "name":"Button modes",
                  "id":"blinkkeypad4buttonmodes",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "value":[
                    "Momentary",
                    "Momentary",
                    "Momentary",
                    "Momentary"
                  ]
                },
                {
                  "name":"Button auxiliary inputs",
                  "id":"blinkkeypad4buttonauxinputs",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Reset",
                    "Set"
                  ],
                  "value":[
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1",
                    "Digital in 1"
                  ]
                },
                {
                  "name":"Button light modes",
                  "id":"blinkkeypad4lightstates",
                  "type":5,
                  "yaxis":[
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "xaxis":[
                    "Off",
                    "On"
                  ],
                  "value":[
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off",
                    "Off"
                  ]
                }
              ]
            },
            {
              "name":"Colour picker functions",
              "type":255,
              "value":[
                {
                  "name":"Colour picker function 1",
                  "id":"keypadcolourfunction1",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Colour picker function 2",
                  "id":"keypadcolourfunction2",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Colour picker function 3",
                  "id":"keypadcolourfunction3",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Colour picker function 4",
                  "id":"keypadcolourfunction4",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Colour picker function 5",
                  "id":"keypadcolourfunction5",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Colour picker function 6",
                  "id":"keypadcolourfunction6",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Colour picker function 7",
                  "id":"keypadcolourfunction7",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                },
                {
                  "name":"Colour picker function 8",
                  "id":"keypadcolourfunction8",
                  "type":11,
                  "applies":[
                    "blinkkeypadenable",
                    "!=",
                    "Disabled"
                  ],
                  "value":[
                    0.000000
                  ]
                }
              ]
            },
            {
              "name":"Utility screen",
              "id":"blinkutility",
              "type":9,
              "layout":[
                {
                  "wid":"switchtoj1939",
                  "caption":"Switch to j1939 mode",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    0,
                    10
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "if",
                      "widgetval(busselector) = 0",
                      [
                        "set",
                        "canmode",
                        "125kbit"
                      ],
                      [
                        "set",
                        "can2mode",
                        "125kbit"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x615",
                        5,
                        "0x2b",
                        "0xff",
                        "0x20",
                        "1",
                        "1"
                      ]
                    ],
                    [
                      "if",
                      "widgetval(busselector) = 0",
                      [
                        "set",
                        "canmode",
                        "250kbit"
                      ],
                      [
                        "set",
                        "can2mode",
                        "250kbit"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"enableheartbeat",
                  "caption":"Enable heartbeat",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    30,
                    10
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x75",
                        "0x01",
                        "100",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x37",
                        "0x02",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlight0",
                  "caption":"Backlight off",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    0,
                    20
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7b",
                        "0",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlight10",
                  "caption":"Backlight 10%",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    30,
                    20
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7b",
                        "0x06",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlight25",
                  "caption":"Backlight 25%",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    60,
                    20
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7b",
                        "0x10",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlight50",
                  "caption":"Backlight 50%",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    90,
                    20
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7b",
                        "0x20",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlight75",
                  "caption":"Backlight 75%",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    120,
                    20
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7b",
                        "0x30",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlight100",
                  "caption":"Backlight 100%",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    150,
                    20
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7b",
                        "0x3F",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightred",
                  "caption":"Backlight red",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    0,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x01",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightgreen",
                  "caption":"Backlight green",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    20,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x02",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightblue",
                  "caption":"Backlight blue",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    40,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x03",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightyellow",
                  "caption":"Backlight yellow",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    60,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x04",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightcyan",
                  "caption":"Backlight cyan",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    80,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x05",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightmagenta",
                  "caption":"Backlight magenta",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    100,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x06",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightwlb",
                  "caption":"Backlight white",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    120,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x07",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightao",
                  "caption":"Backlight amber",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    140,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x08",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"backlightyg",
                  "caption":"Backlight y\/g",
                  "size":[
                    20,
                    10
                  ],
                  "position":[
                    160,
                    30
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x7d",
                        "0x09",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"makekeypad1",
                  "caption":"Make keypad 1",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    0,
                    50
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2200",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x21",
                        "0x21",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2300",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x21",
                        "0x21",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2400",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x21",
                        "0x21",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"makekeypad2",
                  "caption":"Make keypad 2",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    30,
                    50
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x22",
                        "0x22",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2300",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x22",
                        "0x22",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2400",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x22",
                        "0x22",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"makekeypad3",
                  "caption":"Make keypad 3",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    60,
                    50
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x23",
                        "0x23",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2200",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x23",
                        "0x23",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2400",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x23",
                        "0x23",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"makekeypad4",
                  "caption":"Make keypad 4",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    90,
                    50
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x24",
                        "0x24",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2200",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x24",
                        "0x24",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2300",
                        8,
                        "0x04",
                        "0x1b",
                        "0x70",
                        "0x24",
                        "0x24",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"busselector",
                  "caption":"CAN bus 2",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    0,
                    0
                  ],
                  "type":"button",
                  "checkbox":true
                },
                {
                  "wid":"set500k",
                  "caption":"Set to 500k",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    40,
                    80
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "if",
                      "widgetval(busselector) = 0",
                      [
                        "set",
                        "canmode",
                        "250kbit"
                      ],
                      [
                        "set",
                        "can2mode",
                        "250kbit"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x6f",
                        "0x02",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "if",
                      "widgetval(busselector) = 0",
                      [
                        "set",
                        "canmode",
                        "500kbit"
                      ],
                      [
                        "set",
                        "can2mode",
                        "500kbit"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"set250k",
                  "caption":"Set to 250k",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    70,
                    80
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "if",
                      "widgetval(busselector) = 0",
                      [
                        "set",
                        "canmode",
                        "500kbit"
                      ],
                      [
                        "set",
                        "can2mode",
                        "500kbit"
                      ]
                    ],
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x6f",
                        "0x03",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ],
                    [
                      "if",
                      "widgetval(busselector) = 0",
                      [
                        "set",
                        "canmode",
                        "250kbit"
                      ],
                      [
                        "set",
                        "can2mode",
                        "250kbit"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"lightshowoff",
                  "caption":"Startup light show off",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    0,
                    40
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x34",
                        "0",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"lightshowslow",
                  "caption":"Startup light show slow",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    30,
                    40
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x34",
                        "1",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "wid":"lightshowfast",
                  "caption":"Startup light show fast",
                  "size":[
                    30,
                    10
                  ],
                  "position":[
                    60,
                    40
                  ],
                  "type":"button",
                  "onclick":[
                    [
                      "rpc",
                      "canxmit",
                      [
                        "widgetval(busselector)",
                        "0x18EF2100",
                        8,
                        "0x04",
                        "0x1b",
                        "0x34",
                        "2",
                        "0xFF",
                        "0xFF",
                        "0xFF",
                        "0xFF"
                      ]
                    ]
                  ]
                },
                {
                  "size":[
                    170,
                    10
                  ],
                  "position":[
                    30,
                    0
                  ],
                  "type":"static",
                  "caption":"Make sure only one keypad is connected to the CAN network when using these utilities. If the keypad has been addressed as 2-4 it must be configured as keypad 1 prior to applying other settings, and then it can be changed back to whatever identifier it had."
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "name":"Internal data logging",
      "type":255,
      "context":"intlogging",
      "value":[
        {
          "name":"Internal logging enable",
          "id":"intlog_enable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Internal logging mode",
          "id":"sdlogmode",
          "type":3,
          "value":"Standard"
        },
        {
          "name":"Internal logging rate",
          "id":"sdloginterval",
          "applies":[
            "intlog_enable",
            "=",
            "Enabled"
          ],
          "value":50.000000
        },
        {
          "name":"Maximum log files to keep in memory",
          "id":"sdloggingmaxfiles",
          "value":0.000000
        },
        {
          "name":"Conditions to start logging",
          "type":255,
          "value":[
            {
              "name":"On delay",
              "id":"gpioondelay4",
              "value":0.000000
            },
            {
              "name":"Off delay",
              "id":"gpiooffdelay4",
              "value":0.000000
            },
            {
              "name":"Maximum on duration",
              "id":"gpiomaxduration4",
              "value":0.000000
            },
            {
              "name":"Variable 1",
              "id":"gpiocond1var4",
              "type":7,
              "value":"enginespeed"
            },
            {
              "name":"Condition 1",
              "type":3,
              "id":"gpiocond1type4",
              "value":">"
            },
            {
              "name":"Value 1",
              "type":11,
              "id":"gpiocond1val4",
              "value":[
                6000.000000
              ]
            },
            {
              "name":"Hysteresis 1",
              "id":"gpiocond1hyster4",
              "value":1000.000000
            },
            {
              "name":"Next condition",
              "type":7,
              "id":"gpiocond1and4",
              "value":"No other condition"
            },
            {
              "name":"Variable 2",
              "id":"gpiocond2var4",
              "type":7,
              "value":"const_zero"
            },
            {
              "name":"Condition 2",
              "type":7,
              "id":"gpiocond2type4",
              "value":">"
            },
            {
              "name":"Value 2",
              "type":11,
              "id":"gpiocond2val4",
              "value":[
                60.000000
              ]
            },
            {
              "name":"Hysteresis 2",
              "id":"gpiocond2hyster4",
              "value":10.000000
            },
            {
              "name":"Next condition",
              "type":7,
              "id":"gpiocond2and4",
              "value":"AND"
            },
            {
              "name":"Variable 3",
              "id":"gpiocond3var4",
              "type":7,
              "value":"time"
            },
            {
              "name":"Condition 3",
              "type":7,
              "id":"gpiocond3type4",
              "value":"="
            },
            {
              "name":"Value 3",
              "type":11,
              "id":"gpiocond3val4",
              "value":[
                0.000000
              ]
            },
            {
              "name":"Hysteresis 3",
              "id":"gpiocond3hyster4",
              "value":0.000000
            }
          ]
        },
        {
          "name":"Maximum log file duration",
          "applies":[
            "intlog_enable",
            "=",
            "Enabled"
          ],
          "id":"maxloglength",
          "value":300.000000
        },
        {
          "name":"Log time after start conditions last met",
          "applies":[
            "intlog_enable",
            "=",
            "Enabled"
          ],
          "id":"minloglength",
          "value":0.000000
        },
        {
          "name":"Burst logging enable",
          "id":"logburstenable",
          "type":3,
          "applies":[
            "intlog_enable",
            "=",
            "Enabled"
          ],
          "value":"Disabled"
        },
        {
          "name":"Log burst rate",
          "id":"sdlogburstinterval",
          "applies":[
            "intlog_enable",
            "=",
            "Enabled",
            "logburstenable",
            "=",
            "Enabled"
          ],
          "value":100.000000
        },
        {
          "name":"Conditions to trigger burst logging",
          "type":255,
          "value":[
            {
              "name":"On delay",
              "id":"gpioondelay9",
              "value":0.000000
            },
            {
              "name":"Off delay",
              "id":"gpiooffdelay9",
              "value":10.000000
            },
            {
              "name":"Maximum on duration",
              "id":"gpiomaxduration9",
              "value":0.000000
            },
            {
              "name":"Variable 1",
              "id":"gpiocond1var9",
              "type":7,
              "value":"enginespeed"
            },
            {
              "name":"Condition 1",
              "type":3,
              "id":"gpiocond1type9",
              "value":">"
            },
            {
              "name":"Value 1",
              "id":"gpiocond1val9",
              "type":11,
              "value":[
                3000.000000
              ]
            },
            {
              "name":"Hysteresis 1",
              "id":"gpiocond1hyster9",
              "value":1000.000000
            },
            {
              "name":"Next condition",
              "type":7,
              "id":"gpiocond1and9",
              "value":"AND"
            },
            {
              "name":"Variable 2",
              "id":"gpiocond2var9",
              "type":7,
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition"
              ],
              "value":"const_zero"
            },
            {
              "name":"Condition 2",
              "type":7,
              "id":"gpiocond2type9",
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition"
              ],
              "value":">"
            },
            {
              "name":"Value 2",
              "type":11,
              "id":"gpiocond2val9",
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition"
              ],
              "value":[
                60.000000
              ]
            },
            {
              "name":"Hysteresis 2",
              "id":"gpiocond2hyster9",
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition"
              ],
              "value":10.000000
            },
            {
              "name":"Next condition",
              "type":7,
              "id":"gpiocond2and9",
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition"
              ],
              "value":"No other condition"
            },
            {
              "name":"Variable 3",
              "id":"gpiocond3var9",
              "type":7,
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition",
                "gpiocond2and9",
                "!=",
                "No other condition"
              ],
              "value":"time"
            },
            {
              "name":"Condition 3",
              "type":7,
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition",
                "gpiocond2and9",
                "!=",
                "No other condition"
              ],
              "id":"gpiocond3type9",
              "value":"="
            },
            {
              "name":"Value 3",
              "type":11,
              "id":"gpiocond3val9",
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition",
                "gpiocond2and9",
                "!=",
                "No other condition"
              ],
              "value":[
                0.000000
              ]
            },
            {
              "name":"Hysteresis 3",
              "id":"gpiocond3hyster9",
              "applies":[
                "gpiocond1and9",
                "!=",
                "No other condition",
                "gpiocond2and9",
                "!=",
                "No other condition"
              ],
              "value":0.000000
            }
          ]
        },
        {
          "name":"Structured logging mode",
          "id":"compactstructuredlog",
          "type":3,
          "applies":[
            "intlog_enable",
            "=",
            "Enabled",
            "sdlogmode",
            "=",
            "Structured log"
          ],
          "value":"Record all channels at lowest rate"
        },
        {
          "name":"Structured subset logging rates",
          "id":"prioritylograte",
          "type":5,
          "applies":[
            "intlog_enable",
            "=",
            "Enabled",
            "sdlogmode",
            "=",
            "Structured log"
          ],
          "xaxis":[
            "Group 1",
            "Group 2",
            "Group 3",
            "Group 4"
          ],
          "yaxis":[
            "Normal",
            "Burst mode"
          ],
          "value":[
            100.000000,
            200.000000,
            500.000000,
            1000.000000,
            100.000000,
            200.000000,
            500.000000,
            1000.000000
          ]
        },
        {
          "name":"Number of available log channels per group",
          "id":"logchanspergroup",
          "applies":[
            "intlog_enable",
            "=",
            "Enabled",
            "sdlogmode",
            "=",
            "Structured log"
          ],
          "value":16.000000
        },
        {
          "name":"Structured subset log channels",
          "id":"prioritylogchans",
          "type":5,
          "applies":[
            "intlog_enable",
            "=",
            "Enabled",
            "sdlogmode",
            "=",
            "Structured log"
          ],
          "xaxis":"prioritylograte",
          "yaxis":[
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            24,
            25,
            26,
            27,
            28,
            29,
            30,
            31
          ],
          "value":[
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero",
            "const_zero"
          ]
        }
      ]
    },
    {
      "name":"General purpose trims",
      "type":255,
      "context":"gplimit",
      "value":[
        {
          "name":"General purpose limit 1",
          "type":255,
          "value":[
            {
              "name":"Limit enable",
              "type":3,
              "id":"gplimit1_enable",
              "value":"Disabled"
            },
            {
              "name":"Limit also affects boost target",
              "type":3,
              "id":"gplimit1_boost",
              "applies":[
                "gplimit1_enable",
                "=",
                "Enabled"
              ],
              "value":"Disabled"
            },
            {
              "name":"Condition input",
              "type":3,
              "id":"gplimit1cond",
              "value":"Always on"
            },
            {
              "name":"Fuel limit value",
              "type":11,
              "id":"gplimit1",
              "applies":[
                "gplimit1_enable",
                "=",
                "Enabled"
              ],
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose limit 2",
          "type":255,
          "value":[
            {
              "name":"Limit enable",
              "type":3,
              "id":"gplimit2_enable",
              "value":"Disabled"
            },
            {
              "name":"Limit also affects boost target",
              "type":3,
              "id":"gplimit2_boost",
              "applies":[
                "gplimit2_enable",
                "=",
                "Enabled"
              ],
              "value":"Disabled"
            },
            {
              "name":"Condition input",
              "type":3,
              "id":"gplimit2cond",
              "value":"Always on"
            },
            {
              "name":"Fuel limit value",
              "type":11,
              "id":"gplimit2",
              "applies":[
                "gplimit2_enable",
                "=",
                "Enabled"
              ],
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose limit 3",
          "type":255,
          "value":[
            {
              "name":"Limit enable",
              "type":3,
              "id":"gplimit3_enable",
              "value":"Disabled"
            },
            {
              "name":"Limit also affects boost target",
              "type":3,
              "id":"gplimit3_boost",
              "applies":[
                "gplimit3_enable",
                "=",
                "Enabled"
              ],
              "value":"Disabled"
            },
            {
              "name":"Condition input",
              "type":3,
              "id":"gplimit3cond",
              "value":"Always on"
            },
            {
              "name":"Fuel limit value",
              "type":11,
              "id":"gplimit3",
              "applies":[
                "gplimit3_enable",
                "=",
                "Enabled"
              ],
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose limit 4",
          "type":255,
          "value":[
            {
              "name":"Limit enable",
              "type":3,
              "id":"gplimit4_enable",
              "value":"Disabled"
            },
            {
              "name":"Limit also affects boost target",
              "type":3,
              "id":"gplimit4_boost",
              "applies":[
                "gplimit4_enable",
                "=",
                "Enabled"
              ],
              "value":"Disabled"
            },
            {
              "name":"Condition input",
              "type":3,
              "id":"gplimit4cond",
              "value":"Always on"
            },
            {
              "name":"Fuel limit value",
              "type":11,
              "id":"gplimit4",
              "applies":[
                "gplimit4_enable",
                "=",
                "Enabled"
              ],
              "value":[
                0.000000
              ]
            }
          ]
        },
        {
          "name":"General purpose pump angle trim 1",
          "type":255,
          "value":[
            {
              "name":"Condition input",
              "type":3,
              "id":"gpangletrim1cond",
              "applies":[
                "pumpanglepidinterval",
                "!=",
                0
              ],
              "value":"Always off"
            },
            {
              "name":"Trim mode",
              "type":3,
              "id":"patrim1mode",
              "applies":[
                "pumpanglepidinterval",
                "!=",
                0
              ],
              "value":"Adder"
            },
            {
              "name":"Trim value",
              "type":11,
              "id":"gpangletrim1val",
              "applies":[
                "pumpanglepidinterval",
                "!=",
                0
              ],
              "value":[
                0.000000
              ]
            }
          ]
        }
      ]
    },
    {
      "name":"Water\/methanol injection control",
      "type":255,
      "context":"h2o",
      "value":[
        {
          "name":"Water injection control enable",
          "id":"h2o_enable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Accelerator threshold triggerable by cruise control",
          "id":"h2o_cruise",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Water injection enable input",
          "id":"h2oinput",
          "type":3,
          "value":"Always on"
        },
        {
          "name":"Minimum accelerator pedal position",
          "id":"h2omintps",
          "value":95.019288
        },
        {
          "name":"Minimum engine speed",
          "id":"h2ominrpm",
          "value":2000.000000
        },
        {
          "name":"Maximum engine speed",
          "id":"h2omaxrpm",
          "value":5000.000000
        },
        {
          "name":"Minimum MAP",
          "id":"h2ominmap",
          "value":1800.000000
        },
        {
          "name":"Minimum engine coolant temperature",
          "id":"h2ominect",
          "value":72.000000
        },
        {
          "name":"Maximum engine coolant temperature",
          "id":"h2omaxect",
          "value":100.000000
        },
        {
          "name":"PWM frequency",
          "id":"h2opwmfreq",
          "value":14.999700
        },
        {
          "name":"PWM duty cycle",
          "id":"h2opwmmap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"map",
          "xaxis":[
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000
          ],
          "allocation":[
            0,
            14028,
            112
          ],
          "yaxis":[
            1000.000000,
            1300.000000,
            1600.000000,
            1900.000000,
            2200.000000,
            2500.000000,
            2800.000000,
            3100.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        }
      ]
    },
    {
      "name":"Calibration switching",
      "type":255,
      "value":[
        {
          "name":"Calibration switch input",
          "id":"calswitch",
          "type":3,
          "value":"Always off"
        },
        {
          "name":"Fuel request switching",
          "id":"altfuelenable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Fuel limit switching",
          "id":"altlimitenable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Boost target switching",
          "id":"altboostenable",
          "type":3,
          "value":"Disabled"
        }
      ]
    },
    {
      "name":"Pump angle control",
      "type":255,
      "context":"pumptiming",
      "value":[
        {
          "name":"PID service interval",
          "id":"pumpanglepidinterval",
          "value":0.000000
        },
        {
          "name":"Feedback mode",
          "type":3,
          "id":"timingfeedbackmode",
          "value":"Timing feedback"
        },
        {
          "name":"Timing rack position feedback",
          "type":255,
          "value":[
            {
              "id":"trackfilter",
              "name":"Timing rack position feedback averaging cycles",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback"
              ],
              "value":16.000000
            },
            {
              "name":"Timing rack position secondary filter enable",
              "id":"trackexpfilter_enable",
              "type":3,
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback"
              ],
              "value":"Disabled"
            },
            {
              "name":"Timing rack position secondary filter for primary sensor",
              "id":"track0filterfactor",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback",
                "trackexpfilter_enable",
                "=",
                "Enabled"
              ],
              "value":49.999390
            },
            {
              "name":"Timing rack position secondary filter for secondary sensor",
              "id":"track1filterfactor",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback",
                "trackexpfilter_enable",
                "=",
                "Enabled"
              ],
              "value":98.999250
            },
            {
              "name":"Rack position breakpoints for timing translation",
              "id":"trackpospts",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback"
              ],
              "type":4,
              "value":[
                500.000000,
                600.000000,
                700.000000,
                800.000000,
                900.000000,
                1000.000000,
                1100.000000,
                1200.000000
              ]
            },
            {
              "name":"Timing to rack position relationship",
              "id":"timingfromtrackpos",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback"
              ],
              "type":5,
              "xaxis":"trackpospts",
              "value":[
                0.000000,
                4.998630,
                9.997260,
                14.995890,
                19.994520,
                25.004136,
                30.002766,
                35.001396
              ]
            },
            {
              "name":"Timing rack position error limits",
              "id":"track0limits",
              "type":4,
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback"
              ],
              "value":[
                100.000000,
                20000.000000
              ]
            },
            {
              "name":"Timing rack reference error limits",
              "id":"track1limits",
              "type":4,
              "applies":[
                "timingfeedbackmode",
                "=",
                "Timing rack position feedback"
              ],
              "value":[
                200.000000,
                2500.000000
              ]
            }
          ]
        },
        {
          "name":"Custom timing feedback",
          "type":255,
          "value":[
            {
              "id":"customtimingsrc",
              "name":"Custom timing source",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Custom timing source"
              ],
              "type":7,
              "value":"const_zero"
            },
            {
              "id":"customtimingpts",
              "name":"Custom timing breakpoints",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Custom timing source"
              ],
              "type":4,
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            },
            {
              "id":"timingfromcustomsrc",
              "name":"Custom timing feedback translation",
              "applies":[
                "timingfeedbackmode",
                "=",
                "Custom timing source"
              ],
              "type":5,
              "xaxis":"customtimingpts",
              "value":[
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            }
          ]
        },
        {
          "name":"PWM frequency",
          "id":"pumpanglepwmfreq",
          "value":50.000000
        },
        {
          "name":"Duty cycle when timing control inactive",
          "id":"pumpangleretarddc",
          "value":0.000000
        },
        {
          "name":"Minimum fuel quantity",
          "id":"pumpangleminfuel",
          "applies":[
            "timingfeedbackmode",
            "!=",
            "Timing rack position feedback"
          ],
          "value":10.000000
        },
        {
          "name":"Fuel quantity hysteresis",
          "id":"pumpanglefuelhyster",
          "applies":[
            "timingfeedbackmode",
            "!=",
            "Timing rack position feedback"
          ],
          "value":5.000000
        },
        {
          "name":"Minimum engine speed",
          "id":"pumpangleminspeed",
          "applies":[
            "timingfeedbackmode",
            "!=",
            "Timing rack position feedback"
          ],
          "value":500.000000
        },
        {
          "name":"Engine speed hysteresis",
          "id":"pumpanglespeedhyster",
          "applies":[
            "timingfeedbackmode",
            "!=",
            "Timing rack position feedback"
          ],
          "value":200.000000
        },
        {
          "name":"Set point",
          "id":"pumpanglemap",
          "type":11,
          "xvariable":"enginespeed",
          "yvariable":"fuelrequest",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            14140,
            456
          ],
          "yaxis":[
            0.000000,
            10.000000,
            20.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000,
            90.000000,
            100.000000,
            110.000000
          ],
          "value":[
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            19.994520,
            22.993698,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136,
            25.004136
          ]
        },
        {
          "name":"Base duty",
          "type":11,
          "id":"pumpanglebaseduty",
          "xvariable":"enginespeed",
          "yvariable":"fuelrequest",
          "xaxis":[
            0.000000,
            10.000000,
            300.000000,
            500.000000,
            700.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000,
            6000.000000
          ],
          "allocation":[
            0,
            14596,
            456
          ],
          "yaxis":[
            0.000000,
            10.000000,
            20.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000,
            90.000000,
            100.000000,
            110.000000
          ],
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Timing control supply voltage correction",
          "type":5,
          "id":"timingvoltcorrection",
          "xaxis":"voltbins",
          "value":[
            2.000000,
            1.750000,
            1.556000,
            1.400000,
            1.272000,
            1.166000,
            1.077000,
            1.000000,
            0.933000,
            0.875000,
            0.824000,
            0.778000
          ]
        },
        {
          "name":"P factor",
          "id":"pumpangleKp",
          "type":11,
          "value":[
            -0.999912
          ]
        },
        {
          "name":"I factor",
          "id":"pumpangleKi",
          "type":11,
          "value":[
            -0.499956
          ]
        },
        {
          "name":"D factor",
          "id":"pumpangleKd",
          "type":11,
          "value":[
            -0.100040
          ]
        },
        {
          "name":"Integrator max",
          "id":"pumpangleImax",
          "type":11,
          "value":[
            99.998780
          ]
        },
        {
          "name":"Integrator min",
          "id":"pumpangleImin",
          "type":11,
          "value":[
            -50.000916
          ]
        },
        {
          "name":"Maximum advance target",
          "id":"pumpanglemax",
          "value":30.002766
        },
        {
          "name":"Minimum advance target",
          "id":"pumpanglemin",
          "value":4.998630
        }
      ]
    },
    {
      "name":"Torque model",
      "context":"torque",
      "type":255,
      "value":[
        {
          "name":"Torque model enable",
          "id":"torquemodel_enable",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Separate maps for fuel to torque and torque to fuel conversion",
          "id":"torquemodel_twomaps",
          "type":3,
          "value":"Disabled"
        },
        {
          "name":"Torque map",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "type":5,
          "id":"torquemap",
          "xaxis":"torquefuelbins",
          "yaxis":"torquerpmbins",
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            -39.000000,
            -6.600000,
            25.600000,
            57.800000,
            90.200000,
            154.600000,
            219.200000,
            283.800000,
            348.200000,
            412.800000,
            477.400000,
            541.800000,
            606.400000,
            671.000000,
            735.600000,
            800.000000,
            -48.200000,
            -16.200000,
            15.600000,
            47.400000,
            79.200000,
            143.000000,
            206.600000,
            270.400000,
            334.000000,
            397.800000,
            461.600000,
            525.200000,
            589.000000,
            652.600000,
            716.400000,
            780.000000,
            -57.200000,
            -25.800000,
            5.800000,
            37.200000,
            68.600000,
            131.400000,
            194.200000,
            257.200000,
            320.000000,
            382.800000,
            445.800000,
            508.600000,
            571.400000,
            634.400000,
            697.200000,
            760.000000,
            -66.400000,
            -35.400000,
            -4.400000,
            26.600000,
            57.800000,
            119.800000,
            181.800000,
            243.800000,
            305.800000,
            367.800000,
            429.800000,
            492.000000,
            554.000000,
            616.000000,
            678.000000,
            740.000000,
            -75.400000,
            -44.800000,
            -14.200000,
            16.400000,
            47.000000,
            108.200000,
            169.400000,
            230.600000,
            291.800000,
            353.000000,
            414.200000,
            475.400000,
            536.400000,
            597.600000,
            658.800000,
            720.000000,
            -84.400000,
            -54.200000,
            -24.000000,
            6.200000,
            36.400000,
            96.600000,
            157.000000,
            217.400000,
            277.600000,
            338.000000,
            398.400000,
            458.600000,
            519.000000,
            579.400000,
            639.800000,
            700.000000,
            -93.600000,
            -63.800000,
            -34.000000,
            -4.200000,
            25.400000,
            85.000000,
            144.400000,
            204.000000,
            263.400000,
            323.000000,
            382.600000,
            442.000000,
            501.600000,
            561.000000,
            620.600000,
            680.000000,
            -102.600000,
            -73.200000,
            -43.800000,
            -14.600000,
            14.800000,
            73.400000,
            132.000000,
            190.800000,
            249.400000,
            308.000000,
            366.800000,
            425.400000,
            484.000000,
            542.800000,
            601.400000,
            660.000000,
            -111.800000,
            -82.800000,
            -54.000000,
            -25.000000,
            4.000000,
            61.800000,
            119.600000,
            177.400000,
            235.200000,
            293.000000,
            350.800000,
            408.800000,
            466.600000,
            524.400000,
            582.200000,
            640.000000,
            -120.800000,
            -92.200000,
            -63.800000,
            -35.200000,
            -6.800000,
            50.200000,
            107.200000,
            164.200000,
            221.200000,
            278.200000,
            335.200000,
            392.200000,
            449.000000,
            506.000000,
            563.000000,
            620.000000,
            -130.000000,
            -101.800000,
            -73.800000,
            -45.800000,
            -17.600000,
            38.600000,
            94.600000,
            150.800000,
            207.000000,
            263.200000,
            319.200000,
            375.400000,
            431.600000,
            487.800000,
            543.800000,
            600.000000
          ]
        },
        {
          "name":"Fuel from torque map",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled",
            "torquemodel_twomaps",
            "=",
            "Enabled"
          ],
          "type":5,
          "id":"fuelfromtorquemap",
          "xaxis":"torquebins",
          "yaxis":"torquerpmbins",
          "value":[
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000,
            0.000000
          ]
        },
        {
          "name":"Engine speed breakpoints for torque model",
          "id":"torquerpmbins",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "type":4,
          "value":[
            0.000000,
            500.000000,
            1000.000000,
            1500.000000,
            2000.000000,
            2500.000000,
            3000.000000,
            3500.000000,
            4000.000000,
            4500.000000,
            5000.000000,
            5500.000000
          ]
        },
        {
          "name":"Fuel quantity breakpoints for torque model",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "id":"torquefuelbins",
          "type":4,
          "value":[
            0.000000,
            5.000000,
            10.000000,
            15.000000,
            20.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000,
            90.000000,
            100.000000,
            110.000000,
            120.000000,
            130.000000
          ]
        },
        {
          "name":"Torque breakpoints for fuel from torque map",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled",
            "torquemodel_twomaps",
            "=",
            "Enabled"
          ],
          "id":"torquebins",
          "type":4,
          "value":[
            -100.000000,
            5.000000,
            10.000000,
            15.000000,
            20.000000,
            30.000000,
            40.000000,
            50.000000,
            60.000000,
            70.000000,
            80.000000,
            90.000000,
            100.000000,
            110.000000,
            120.000000,
            130.000000
          ]
        },
        {
          "name":"Engine speed breakpoint count",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "id":"torquerpmbincount",
          "value":12.000000
        },
        {
          "name":"Fuel quantity breakpoint count",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "id":"torquefuelbincount",
          "value":16.000000
        },
        {
          "name":"Torque breakpoint count",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled",
            "torquemodel_twomaps",
            "=",
            "Enabled"
          ],
          "id":"torquebincount",
          "value":16.000000
        },
        {
          "name":"Torque request limit source",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "id":"torquelimitrequestsrc",
          "type":7,
          "value":"const_zero"
        },
        {
          "name":"Torque request limit enable input",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "type":3,
          "id":"torquelimitrequestenable",
          "value":"Always off"
        },
        {
          "name":"Torque limit source",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "id":"torquelimitsrc",
          "type":7,
          "value":"const_zero"
        },
        {
          "name":"Torque limit enable input",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "type":3,
          "id":"torquelimitenable",
          "value":"Always off"
        },
        {
          "name":"Minimum torque source",
          "id":"mintorquerequestsrc",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "type":7,
          "value":"const_zero"
        },
        {
          "name":"Minimum torque enable input",
          "id":"mintorqueenable",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "type":3,
          "value":"Always off"
        },
        {
          "name":"Minimum torque timeout",
          "id":"maxtorquebliptime",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "value":1000.000000
        },
        {
          "name":"Minimum torque maximum value",
          "id":"maxtorqueblipvalue",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "value":150.000000
        },
        {
          "name":"Minimum torque computed",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "id":"torquemin",
          "value":-100.000000
        },
        {
          "name":"Maximum torque computed",
          "applies":[
            "torquemodel_enable",
            "=",
            "Enabled"
          ],
          "id":"torquemax",
          "value":1100.000000
        }
      ]
    },
    {
      "name":"Custom strategies",
      "type":255,
      "userlevel":200,
      "context":"customstrategy",
      "value":[
        {
          "name":"User program code",
          "type":6,
          "id":"userprogramcode",
          "scriptbutton":[
            "Compile",
            [
              [
                "updateconfig"
              ],
              [
                "compileuserprogram",
                2,
                "userprogramcode",
                "userprogram",
                "userpgmvalues",
                true
              ]
            ]
          ],
          "value":""
        },
        {
          "name":"User defined configuration variables",
          "type":6,
          "id":"userconftree",
          "scriptbutton":[
            "Apply",
            [
              [
                "updateconfig"
              ],
              [
                "applyuserconfdef",
                "userconftree",
                true
              ]
            ]
          ],
          "value":""
        },
        {
          "name":"User defined controller flash variables",
          "type":6,
          "id":"userconfdef",
          "scriptbutton":[
            "Apply",
            [
              [
                "updateconfig"
              ],
              [
                "applyuserecudef",
                "userconfdef",
                "userconf",
                true
              ]
            ]
          ],
          "value":""
        },
        {
          "name":"User program real time variables",
          "type":6,
          "id":"userrtdef",
          "scriptbutton":[
            "Apply",
            [
              [
                "updateconfig"
              ],
              [
                "applyuserrtdef",
                "userrtdef",
                "userpgmvalues",
                null,
                true
              ]
            ]
          ],
          "value":""
        }
      ]
    }
  ],
  "controller_serialno":"00200",
  "controller_definition":"41",
  "controller_fwversion":"41",
  "controller_signature":"DSL1 v1.41",
  "controller_model":"D1",
  "ticker":{
    "vars":[
      "enginespeed",
      "rackposition",
      "rackcommand"
    ]
  },
  "definition":{
    "commsmode":"fastusb",
    "usbid":"Baldur's DSL1ECU",
    "firmwarebuild":54,
    "defbuild":54,
    "signature":"DSL1 v1.54",
    "candumpcapable":1,
    "flextablerevision":1,
    "enumerators":{
      "enum_moreless":[
        "=",
        "not =",
        ">",
        "<",
        "bit",
        "not bit"
      ],
      "enum_keypadledcolour":[
        "Off",
        "Red",
        "Green",
        "Blue",
        "Yellow",
        "Cyan",
        "Magenta",
        "White",
        "Amber",
        "Yellow\/green"
      ],
      "enum_keypadledcolourwithfunctions":[
        "Off",
        "Red",
        "Green",
        "Blue",
        "Yellow",
        "Cyan",
        "Magenta",
        "White",
        "Amber",
        "Yellow\/green",
        "Colour function 1",
        "Colour function 2",
        "Colour function 3",
        "Colour function 4",
        "Colour function 5",
        "Colour function 6",
        "Colour function 7",
        "Colour function 8"
      ],
      "enum_keypadmodes":[
        "Momentary",
        "Toggle",
        "Non-volatile toggle"
      ],
      "enum_andor":[
        "No other condition",
        "AND",
        "OR"
      ],
      "enum_enabled":[
        "Disabled",
        "Enabled"
      ],
      "enum_onoff":[
        "Off",
        "On"
      ],
      "enum_bool":[
        "false",
        "true"
      ],
      "enum_triggeredge":[
        "Falling",
        "Rising"
      ],
      "enum_errhilo":[
        "CEL on all errors",
        "Ignore low condition",
        "Ignore high condition",
        "Ignore all errors"
      ],
      "enum_canspeed":[
        "Disabled",
        "125kbit",
        "250kbit",
        "500kbit",
        "1Mbit"
      ],
      "enum_cantxfreq":[
        "Disabled",
        "1Hz",
        "2Hz",
        "5Hz",
        "10Hz",
        "20Hz",
        "25Hz",
        "50Hz",
        "100Hz"
      ],
      "enum_ccantxfreq":[
        "Disabled",
        "1Hz",
        "2Hz",
        "5Hz",
        "10Hz",
        "20Hz",
        "25Hz",
        "50Hz",
        "100Hz"
      ],
      "map_datatypes":[
        [
          0,
          "bit"
        ],
        [
          1,
          "u8"
        ],
        [
          2,
          "u16le"
        ],
        [
          3,
          "u32le"
        ],
        [
          9,
          "s8"
        ],
        [
          10,
          "s16le"
        ],
        [
          11,
          "s32le"
        ],
        [
          18,
          "u16be"
        ],
        [
          19,
          "u32be"
        ],
        [
          26,
          "s16be"
        ],
        [
          27,
          "s32be"
        ]
      ],
      "map_bedatatypes":[
        [
          0,
          "bit"
        ],
        [
          1,
          "u8"
        ],
        [
          9,
          "s8"
        ],
        [
          18,
          "u16be"
        ],
        [
          19,
          "u32be"
        ],
        [
          26,
          "s16be"
        ],
        [
          27,
          "s32be"
        ]
      ],
      "map_inputs":[
        [
          65535,
          "Always off"
        ],
        [
          32767,
          "Always on"
        ],
        [
          0,
          "Digital in 1",
          {
            "rtvar":"din1"
          }
        ],
        [
          1,
          "Digital in 2",
          {
            "rtvar":"din2"
          }
        ],
        [
          2,
          "Digital in 3",
          {
            "rtvar":"din3"
          }
        ],
        [
          3,
          "Wheelspeed input",
          {
            "rtvar":"din_vss"
          }
        ],
        [
          4,
          "Analog 4",
          {
            "rtvar":"analog4",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          5,
          "Analog 5",
          {
            "rtvar":"analog5",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          6,
          "Analog 6",
          {
            "rtvar":"analog6",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          7,
          "Analog 8",
          {
            "rtvar":"analog8",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          8,
          "Analog 9",
          {
            "rtvar":"analog9",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          9,
          "Analog 10",
          {
            "rtvar":"analog10",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          10,
          "Analog 11",
          {
            "rtvar":"analog11",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          11,
          "Analog 12",
          {
            "rtvar":"analog12",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          12,
          "Analog 13",
          {
            "rtvar":"analog13",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          13,
          "Analog 14",
          {
            "rtvar":"analog14",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          14,
          "Analog 15",
          {
            "rtvar":"analog15",
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32,
          "General purpose logic 1",
          {
            "rtvar":"gplogic1",
            "appendtextitem":"gpiodescr0"
          }
        ],
        [
          33,
          "General purpose logic 2",
          {
            "rtvar":"gplogic2",
            "appendtextitem":"gpiodescr1"
          }
        ],
        [
          34,
          "General purpose logic 3",
          {
            "rtvar":"gplogic3",
            "appendtextitem":"gpiodescr2"
          }
        ],
        [
          35,
          "General purpose logic 4",
          {
            "rtvar":"gplogic4",
            "appendtextitem":"gpiodescr3"
          }
        ],
        [
          37,
          "General purpose logic 5",
          {
            "rtvar":"gplogic5",
            "appendtextitem":"gpiodescr5"
          }
        ],
        [
          38,
          "General purpose logic 6",
          {
            "rtvar":"gplogic6",
            "appendtextitem":"gpiodescr6"
          }
        ],
        [
          39,
          "General purpose logic 7",
          {
            "rtvar":"gplogic7",
            "appendtextitem":"gpiodescr7"
          }
        ],
        [
          40,
          "General purpose logic 8",
          {
            "rtvar":"gplogic8",
            "appendtextitem":"gpiodescr8"
          }
        ],
        [
          42,
          "General purpose logic 9",
          {
            "rtvar":"gplogic9",
            "appendtextitem":"gpiodescr10"
          }
        ],
        [
          43,
          "General purpose logic 10",
          {
            "rtvar":"gplogic10",
            "appendtextitem":"gpiodescr11"
          }
        ],
        [
          44,
          "General purpose logic 11",
          {
            "rtvar":"gplogic11",
            "appendtextitem":"gpiodescr12"
          }
        ],
        [
          45,
          "General purpose logic 12",
          {
            "rtvar":"gplogic12",
            "appendtextitem":"gpiodescr13"
          }
        ],
        [
          46,
          "General purpose logic 13",
          {
            "rtvar":"gplogic13",
            "appendtextitem":"gpiodescr14"
          }
        ],
        [
          47,
          "General purpose logic 14",
          {
            "rtvar":"gplogic14",
            "appendtextitem":"gpiodescr15"
          }
        ],
        [
          48,
          "General purpose logic 15",
          {
            "rtvar":"gplogic15",
            "appendtextitem":"gpiodescr16"
          }
        ],
        [
          49,
          "General purpose logic 16",
          {
            "rtvar":"gplogic16",
            "appendtextitem":"gpiodescr17"
          }
        ],
        [
          56,
          "Flip flop logic 1",
          {
            "rtvar":"flipflop1"
          }
        ],
        [
          57,
          "Flip flop logic 2",
          {
            "rtvar":"flipflop2"
          }
        ],
        [
          58,
          "Flip flop logic 3",
          {
            "rtvar":"flipflop3"
          }
        ],
        [
          59,
          "Flip flop logic 4",
          {
            "rtvar":"flipflop4"
          }
        ],
        [
          60,
          "Flip flop logic 5",
          {
            "rtvar":"flipflop5"
          }
        ],
        [
          61,
          "Flip flop logic 6",
          {
            "rtvar":"flipflop6"
          }
        ],
        [
          62,
          "Flip flop logic 7",
          {
            "rtvar":"flipflop7"
          }
        ],
        [
          63,
          "Flip flop logic 8",
          {
            "rtvar":"flipflop8"
          }
        ],
        [
          64,
          "CAN source 0",
          {
            "rtvar":"cansrc0"
          }
        ],
        [
          65,
          "CAN source 1",
          {
            "rtvar":"cansrc1"
          }
        ],
        [
          66,
          "CAN source 2",
          {
            "rtvar":"cansrc2"
          }
        ],
        [
          67,
          "CAN source 3",
          {
            "rtvar":"cansrc3"
          }
        ],
        [
          68,
          "CAN source 4",
          {
            "rtvar":"cansrc4"
          }
        ],
        [
          69,
          "CAN source 5",
          {
            "rtvar":"cansrc5"
          }
        ],
        [
          70,
          "CAN source 6",
          {
            "rtvar":"cansrc6"
          }
        ],
        [
          71,
          "CAN source 7",
          {
            "rtvar":"cansrc7"
          }
        ],
        [
          72,
          "CAN source 8",
          {
            "rtvar":"cansrc8"
          }
        ],
        [
          73,
          "CAN source 9",
          {
            "rtvar":"cansrc9"
          }
        ],
        [
          74,
          "CAN source 10",
          {
            "rtvar":"cansrc10"
          }
        ],
        [
          75,
          "CAN source 11",
          {
            "rtvar":"cansrc11"
          }
        ],
        [
          76,
          "CAN source 12",
          {
            "rtvar":"cansrc12"
          }
        ],
        [
          77,
          "CAN source 13",
          {
            "rtvar":"cansrc13"
          }
        ],
        [
          78,
          "CAN source 14",
          {
            "rtvar":"cansrc14"
          }
        ],
        [
          79,
          "CAN source 15",
          {
            "rtvar":"cansrc15"
          }
        ],
        [
          80,
          "CAN source 16",
          {
            "rtvar":"cansrc16"
          }
        ],
        [
          81,
          "CAN source 17",
          {
            "rtvar":"cansrc17"
          }
        ],
        [
          82,
          "CAN source 18",
          {
            "rtvar":"cansrc18"
          }
        ],
        [
          83,
          "CAN source 19",
          {
            "rtvar":"cansrc19"
          }
        ],
        [
          84,
          "CAN source 20",
          {
            "rtvar":"cansrc20"
          }
        ],
        [
          85,
          "CAN source 21",
          {
            "rtvar":"cansrc21"
          }
        ],
        [
          86,
          "CAN source 22",
          {
            "rtvar":"cansrc22"
          }
        ],
        [
          87,
          "CAN source 23",
          {
            "rtvar":"cansrc23"
          }
        ],
        [
          88,
          "CAN source 24",
          {
            "rtvar":"cansrc24"
          }
        ],
        [
          89,
          "CAN source 25",
          {
            "rtvar":"cansrc25"
          }
        ],
        [
          90,
          "CAN source 26",
          {
            "rtvar":"cansrc26"
          }
        ],
        [
          91,
          "CAN source 27",
          {
            "rtvar":"cansrc27"
          }
        ],
        [
          92,
          "CAN source 28",
          {
            "rtvar":"cansrc28"
          }
        ],
        [
          93,
          "CAN source 29",
          {
            "rtvar":"cansrc29"
          }
        ],
        [
          94,
          "CAN source 30",
          {
            "rtvar":"cansrc30"
          }
        ],
        [
          95,
          "CAN source 31",
          {
            "rtvar":"cansrc31"
          }
        ],
        [
          96,
          "User program output 0",
          {
            "rtvar":"userflag0"
          }
        ],
        [
          97,
          "User program output 1",
          {
            "rtvar":"userflag1"
          }
        ],
        [
          98,
          "User program output 2",
          {
            "rtvar":"userflag2"
          }
        ],
        [
          99,
          "User program output 3",
          {
            "rtvar":"userflag3"
          }
        ],
        [
          100,
          "User program output 4",
          {
            "rtvar":"userflag4"
          }
        ],
        [
          101,
          "User program output 5",
          {
            "rtvar":"userflag5"
          }
        ],
        [
          102,
          "User program output 6",
          {
            "rtvar":"userflag6"
          }
        ],
        [
          103,
          "User program output 7",
          {
            "rtvar":"userflag7"
          }
        ],
        [
          104,
          "User program output 8",
          {
            "rtvar":"userflag8"
          }
        ],
        [
          105,
          "User program output 9",
          {
            "rtvar":"userflag9"
          }
        ],
        [
          106,
          "User program output 10",
          {
            "rtvar":"userflag10"
          }
        ],
        [
          107,
          "User program output 11",
          {
            "rtvar":"userflag11"
          }
        ],
        [
          108,
          "User program output 12",
          {
            "rtvar":"userflag12"
          }
        ],
        [
          109,
          "User program output 13",
          {
            "rtvar":"userflag13"
          }
        ],
        [
          110,
          "User program output 14",
          {
            "rtvar":"userflag14"
          }
        ],
        [
          111,
          "User program output 15",
          {
            "rtvar":"userflag15"
          }
        ],
        [
          112,
          "Remote bit 0",
          {
            "rtvar":"remotebit0"
          }
        ],
        [
          113,
          "Remote bit 1",
          {
            "rtvar":"remotebit1"
          }
        ],
        [
          114,
          "Remote bit 2",
          {
            "rtvar":"remotebit2"
          }
        ],
        [
          115,
          "Remote bit 3",
          {
            "rtvar":"remotebit3"
          }
        ],
        [
          116,
          "Remote bit 4",
          {
            "rtvar":"remotebit4"
          }
        ],
        [
          117,
          "Remote bit 5",
          {
            "rtvar":"remotebit5"
          }
        ],
        [
          118,
          "Remote bit 6",
          {
            "rtvar":"remotebit6"
          }
        ],
        [
          119,
          "Remote bit 7",
          {
            "rtvar":"remotebit7"
          }
        ],
        [
          120,
          "Half hertz",
          {
            "rtvar":"0hz5"
          }
        ],
        [
          121,
          "One hertz",
          {
            "rtvar":"1hz"
          }
        ],
        [
          122,
          "Ten hertz",
          {
            "rtvar":"10hz"
          }
        ],
        [
          128,
          "Engine running",
          {
            "rtvar":"engine_running"
          }
        ],
        [
          135,
          "Brakes active",
          {
            "rtvar":"brakes_active"
          }
        ],
        [
          136,
          "Clutch active",
          {
            "rtvar":"clutch_active"
          }
        ],
        [
          1025,
          "CAN keypad 1 button 1",
          {
            "rtvar":"keypad1.1"
          }
        ],
        [
          1026,
          "CAN keypad 1 button 2",
          {
            "rtvar":"keypad1.2"
          }
        ],
        [
          1027,
          "CAN keypad 1 button 3",
          {
            "rtvar":"keypad1.3"
          }
        ],
        [
          1028,
          "CAN keypad 1 button 4",
          {
            "rtvar":"keypad1.4"
          }
        ],
        [
          1029,
          "CAN keypad 1 button 5",
          {
            "rtvar":"keypad1.5"
          }
        ],
        [
          1030,
          "CAN keypad 1 button 6",
          {
            "rtvar":"keypad1.6"
          }
        ],
        [
          1031,
          "CAN keypad 1 button 7",
          {
            "rtvar":"keypad1.7"
          }
        ],
        [
          1032,
          "CAN keypad 1 button 8",
          {
            "rtvar":"keypad1.8"
          }
        ],
        [
          1033,
          "CAN keypad 1 button 9",
          {
            "rtvar":"keypad1.9"
          }
        ],
        [
          1034,
          "CAN keypad 1 button 10",
          {
            "rtvar":"keypad1.10"
          }
        ],
        [
          1035,
          "CAN keypad 1 button 11",
          {
            "rtvar":"keypad1.11"
          }
        ],
        [
          1036,
          "CAN keypad 1 button 12",
          {
            "rtvar":"keypad1.12"
          }
        ],
        [
          1037,
          "CAN keypad 1 button 13",
          {
            "rtvar":"keypad1.13"
          }
        ],
        [
          1038,
          "CAN keypad 1 button 14",
          {
            "rtvar":"keypad1.14"
          }
        ],
        [
          1039,
          "CAN keypad 1 button 15",
          {
            "rtvar":"keypad1.15"
          }
        ],
        [
          1041,
          "CAN keypad 2 button 1",
          {
            "rtvar":"keypad2.1"
          }
        ],
        [
          1042,
          "CAN keypad 2 button 2",
          {
            "rtvar":"keypad2.2"
          }
        ],
        [
          1043,
          "CAN keypad 2 button 3",
          {
            "rtvar":"keypad2.3"
          }
        ],
        [
          1044,
          "CAN keypad 2 button 4",
          {
            "rtvar":"keypad2.4"
          }
        ],
        [
          1045,
          "CAN keypad 2 button 5",
          {
            "rtvar":"keypad2.5"
          }
        ],
        [
          1046,
          "CAN keypad 2 button 6",
          {
            "rtvar":"keypad2.6"
          }
        ],
        [
          1047,
          "CAN keypad 2 button 7",
          {
            "rtvar":"keypad2.7"
          }
        ],
        [
          1048,
          "CAN keypad 2 button 8",
          {
            "rtvar":"keypad2.8"
          }
        ],
        [
          1049,
          "CAN keypad 2 button 9",
          {
            "rtvar":"keypad2.9"
          }
        ],
        [
          1050,
          "CAN keypad 2 button 10",
          {
            "rtvar":"keypad2.10"
          }
        ],
        [
          1051,
          "CAN keypad 2 button 11",
          {
            "rtvar":"keypad2.11"
          }
        ],
        [
          1052,
          "CAN keypad 2 button 12",
          {
            "rtvar":"keypad2.12"
          }
        ],
        [
          1053,
          "CAN keypad 2 button 13",
          {
            "rtvar":"keypad2.13"
          }
        ],
        [
          1054,
          "CAN keypad 2 button 14",
          {
            "rtvar":"keypad2.14"
          }
        ],
        [
          1055,
          "CAN keypad 2 button 15",
          {
            "rtvar":"keypad2.15"
          }
        ],
        [
          1057,
          "CAN keypad 3 button 1",
          {
            "rtvar":"keypad3.1"
          }
        ],
        [
          1058,
          "CAN keypad 3 button 2",
          {
            "rtvar":"keypad3.2"
          }
        ],
        [
          1059,
          "CAN keypad 3 button 3",
          {
            "rtvar":"keypad3.3"
          }
        ],
        [
          1060,
          "CAN keypad 3 button 4",
          {
            "rtvar":"keypad3.4"
          }
        ],
        [
          1061,
          "CAN keypad 3 button 5",
          {
            "rtvar":"keypad3.5"
          }
        ],
        [
          1062,
          "CAN keypad 3 button 6",
          {
            "rtvar":"keypad3.6"
          }
        ],
        [
          1063,
          "CAN keypad 3 button 7",
          {
            "rtvar":"keypad3.7"
          }
        ],
        [
          1064,
          "CAN keypad 3 button 8",
          {
            "rtvar":"keypad3.8"
          }
        ],
        [
          1065,
          "CAN keypad 3 button 9",
          {
            "rtvar":"keypad3.9"
          }
        ],
        [
          1066,
          "CAN keypad 3 button 10",
          {
            "rtvar":"keypad3.10"
          }
        ],
        [
          1067,
          "CAN keypad 3 button 11",
          {
            "rtvar":"keypad3.11"
          }
        ],
        [
          1068,
          "CAN keypad 3 button 12",
          {
            "rtvar":"keypad3.12"
          }
        ],
        [
          1069,
          "CAN keypad 3 button 13",
          {
            "rtvar":"keypad3.13"
          }
        ],
        [
          1070,
          "CAN keypad 3 button 14",
          {
            "rtvar":"keypad3.14"
          }
        ],
        [
          1071,
          "CAN keypad 3 button 15",
          {
            "rtvar":"keypad3.15"
          }
        ],
        [
          1073,
          "CAN keypad 4 button 1",
          {
            "rtvar":"keypad4.1"
          }
        ],
        [
          1074,
          "CAN keypad 4 button 2",
          {
            "rtvar":"keypad4.2"
          }
        ],
        [
          1075,
          "CAN keypad 4 button 3",
          {
            "rtvar":"keypad4.3"
          }
        ],
        [
          1076,
          "CAN keypad 4 button 4",
          {
            "rtvar":"keypad4.4"
          }
        ],
        [
          1077,
          "CAN keypad 4 button 5",
          {
            "rtvar":"keypad4.5"
          }
        ],
        [
          1078,
          "CAN keypad 4 button 6",
          {
            "rtvar":"keypad4.6"
          }
        ],
        [
          1079,
          "CAN keypad 4 button 7",
          {
            "rtvar":"keypad4.7"
          }
        ],
        [
          1080,
          "CAN keypad 4 button 8",
          {
            "rtvar":"keypad4.8"
          }
        ],
        [
          1081,
          "CAN keypad 4 button 9",
          {
            "rtvar":"keypad4.9"
          }
        ],
        [
          1082,
          "CAN keypad 4 button 10",
          {
            "rtvar":"keypad4.10"
          }
        ],
        [
          1083,
          "CAN keypad 4 button 11",
          {
            "rtvar":"keypad4.11"
          }
        ],
        [
          1084,
          "CAN keypad 4 button 12",
          {
            "rtvar":"keypad4.12"
          }
        ],
        [
          1085,
          "CAN keypad 4 button 13",
          {
            "rtvar":"keypad4.13"
          }
        ],
        [
          1086,
          "CAN keypad 4 button 14",
          {
            "rtvar":"keypad4.14"
          }
        ],
        [
          1087,
          "CAN keypad 4 button 15",
          {
            "rtvar":"keypad4.15"
          }
        ],
        [
          32768,
          "Digital in 1 inverted",
          {
            "rtvar":"din1",
            "inverted":1
          }
        ],
        [
          32769,
          "Digital in 2 inverted",
          {
            "rtvar":"din2",
            "inverted":1
          }
        ],
        [
          32770,
          "Digital in 3 inverted",
          {
            "rtvar":"din3",
            "inverted":1
          }
        ],
        [
          32771,
          "Wheelspeed input inverted",
          {
            "rtvar":"din_vss",
            "inverted":1
          }
        ],
        [
          32772,
          "Analog 4 inverted",
          {
            "rtvar":"analog4",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32773,
          "Analog 5 inverted",
          {
            "rtvar":"analog5",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32774,
          "Analog 6 inverted",
          {
            "rtvar":"analog6",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32775,
          "Analog 8 inverted",
          {
            "rtvar":"analog8",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32776,
          "Analog 9 inverted",
          {
            "rtvar":"analog9",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32777,
          "Analog 10 inverted",
          {
            "rtvar":"analog10",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32778,
          "Analog 11 inverted",
          {
            "rtvar":"analog11",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32779,
          "Analog 12 inverted",
          {
            "rtvar":"analog12",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32780,
          "Analog 13 inverted",
          {
            "rtvar":"analog13",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32781,
          "Analog 14 inverted",
          {
            "rtvar":"analog14",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32782,
          "Analog 15 inverted",
          {
            "rtvar":"analog15",
            "inverted":1,
            "condition":[
              "<",
              "1.1"
            ]
          }
        ],
        [
          32800,
          "General purpose 1 inverted",
          {
            "rtvar":"gplogic1",
            "inverted":1,
            "appendtextitem":"gpiodescr0"
          }
        ],
        [
          32801,
          "General purpose 2 inverted",
          {
            "rtvar":"gplogic2",
            "inverted":1,
            "appendtextitem":"gpiodescr1"
          }
        ],
        [
          32802,
          "General purpose 3 inverted",
          {
            "rtvar":"gplogic3",
            "inverted":1,
            "appendtextitem":"gpiodescr2"
          }
        ],
        [
          32803,
          "General purpose 4 inverted",
          {
            "rtvar":"gplogic4",
            "inverted":1,
            "appendtextitem":"gpiodescr3"
          }
        ],
        [
          32805,
          "General purpose 5 inverted",
          {
            "rtvar":"gplogic5",
            "inverted":1,
            "appendtextitem":"gpiodescr5"
          }
        ],
        [
          32806,
          "General purpose 6 inverted",
          {
            "rtvar":"gplogic6",
            "inverted":1,
            "appendtextitem":"gpiodescr6"
          }
        ],
        [
          32807,
          "General purpose 7 inverted",
          {
            "rtvar":"gplogic7",
            "inverted":1,
            "appendtextitem":"gpiodescr7"
          }
        ],
        [
          32808,
          "General purpose 8 inverted",
          {
            "rtvar":"gplogic8",
            "inverted":1,
            "appendtextitem":"gpiodescr8"
          }
        ],
        [
          32810,
          "General purpose 9 inverted",
          {
            "rtvar":"gplogic9",
            "inverted":1,
            "appendtextitem":"gpiodescr10"
          }
        ],
        [
          32811,
          "General purpose 10 inverted",
          {
            "rtvar":"gplogic10",
            "inverted":1,
            "appendtextitem":"gpiodescr11"
          }
        ],
        [
          32812,
          "General purpose 11 inverted",
          {
            "rtvar":"gplogic11",
            "inverted":1,
            "appendtextitem":"gpiodescr12"
          }
        ],
        [
          32813,
          "General purpose 12 inverted",
          {
            "rtvar":"gplogic12",
            "inverted":1,
            "appendtextitem":"gpiodescr13"
          }
        ],
        [
          32814,
          "General purpose 13 inverted",
          {
            "rtvar":"gplogic13",
            "inverted":1,
            "appendtextitem":"gpiodescr14"
          }
        ],
        [
          32815,
          "General purpose 14 inverted",
          {
            "rtvar":"gplogic14",
            "inverted":1,
            "appendtextitem":"gpiodescr15"
          }
        ],
        [
          32816,
          "General purpose 15 inverted",
          {
            "rtvar":"gplogic15",
            "inverted":1,
            "appendtextitem":"gpiodescr16"
          }
        ],
        [
          32817,
          "General purpose 16 inverted",
          {
            "rtvar":"gplogic16",
            "inverted":1,
            "appendtextitem":"gpiodescr17"
          }
        ],
        [
          32824,
          "Flip flop 1 inverted",
          {
            "rtvar":"flipflop1",
            "inverted":1
          }
        ],
        [
          32825,
          "Flip flop 2 inverted",
          {
            "rtvar":"flipflop2",
            "inverted":1
          }
        ],
        [
          32826,
          "Flip flop 3 inverted",
          {
            "rtvar":"flipflop3",
            "inverted":1
          }
        ],
        [
          32827,
          "Flip flop 4 inverted",
          {
            "rtvar":"flipflop4",
            "inverted":1
          }
        ],
        [
          32828,
          "Flip flop 5 inverted",
          {
            "rtvar":"flipflop5",
            "inverted":1
          }
        ],
        [
          32829,
          "Flip flop 6 inverted",
          {
            "rtvar":"flipflop6",
            "inverted":1
          }
        ],
        [
          32830,
          "Flip flop 7 inverted",
          {
            "rtvar":"flipflop7",
            "inverted":1
          }
        ],
        [
          32831,
          "Flip flop 8 inverted",
          {
            "rtvar":"flipflop8",
            "inverted":1
          }
        ],
        [
          32832,
          "CAN source 0 inverted",
          {
            "rtvar":"cansrc0",
            "inverted":1
          }
        ],
        [
          32833,
          "CAN source 1 inverted",
          {
            "rtvar":"cansrc1",
            "inverted":1
          }
        ],
        [
          32834,
          "CAN source 2 inverted",
          {
            "rtvar":"cansrc2",
            "inverted":1
          }
        ],
        [
          32835,
          "CAN source 3 inverted",
          {
            "rtvar":"cansrc3",
            "inverted":1
          }
        ],
        [
          32836,
          "CAN source 4 inverted",
          {
            "rtvar":"cansrc4",
            "inverted":1
          }
        ],
        [
          32837,
          "CAN source 5 inverted",
          {
            "rtvar":"cansrc5",
            "inverted":1
          }
        ],
        [
          32838,
          "CAN source 6 inverted",
          {
            "rtvar":"cansrc6",
            "inverted":1
          }
        ],
        [
          32839,
          "CAN source 7 inverted",
          {
            "rtvar":"cansrc7",
            "inverted":1
          }
        ],
        [
          32840,
          "CAN source 8 inverted",
          {
            "rtvar":"cansrc8",
            "inverted":1
          }
        ],
        [
          32841,
          "CAN source 9 inverted",
          {
            "rtvar":"cansrc9",
            "inverted":1
          }
        ],
        [
          32842,
          "CAN source 10 inverted",
          {
            "rtvar":"cansrc10",
            "inverted":1
          }
        ],
        [
          32843,
          "CAN source 11 inverted",
          {
            "rtvar":"cansrc11",
            "inverted":1
          }
        ],
        [
          32844,
          "CAN source 12 inverted",
          {
            "rtvar":"cansrc12",
            "inverted":1
          }
        ],
        [
          32845,
          "CAN source 13 inverted",
          {
            "rtvar":"cansrc13",
            "inverted":1
          }
        ],
        [
          32846,
          "CAN source 14 inverted",
          {
            "rtvar":"cansrc14",
            "inverted":1
          }
        ],
        [
          32847,
          "CAN source 15 inverted",
          {
            "rtvar":"cansrc15",
            "inverted":1
          }
        ],
        [
          32848,
          "CAN source 16 inverted",
          {
            "rtvar":"cansrc16",
            "inverted":1
          }
        ],
        [
          32849,
          "CAN source 17 inverted",
          {
            "rtvar":"cansrc17",
            "inverted":1
          }
        ],
        [
          32850,
          "CAN source 18 inverted",
          {
            "rtvar":"cansrc18",
            "inverted":1
          }
        ],
        [
          32851,
          "CAN source 19 inverted",
          {
            "rtvar":"cansrc19",
            "inverted":1
          }
        ],
        [
          32852,
          "CAN source 20 inverted",
          {
            "rtvar":"cansrc20",
            "inverted":1
          }
        ],
        [
          32853,
          "CAN source 21 inverted",
          {
            "rtvar":"cansrc21",
            "inverted":1
          }
        ],
        [
          32854,
          "CAN source 22 inverted",
          {
            "rtvar":"cansrc22",
            "inverted":1
          }
        ],
        [
          32855,
          "CAN source 23 inverted",
          {
            "rtvar":"cansrc23",
            "inverted":1
          }
        ],
        [
          32856,
          "CAN source 24 inverted",
          {
            "rtvar":"cansrc24",
            "inverted":1
          }
        ],
        [
          32857,
          "CAN source 25 inverted",
          {
            "rtvar":"cansrc25",
            "inverted":1
          }
        ],
        [
          32858,
          "CAN source 26 inverted",
          {
            "rtvar":"cansrc26",
            "inverted":1
          }
        ],
        [
          32859,
          "CAN source 27 inverted",
          {
            "rtvar":"cansrc27",
            "inverted":1
          }
        ],
        [
          32860,
          "CAN source 28 inverted",
          {
            "rtvar":"cansrc28",
            "inverted":1
          }
        ],
        [
          32861,
          "CAN source 29 inverted",
          {
            "rtvar":"cansrc29",
            "inverted":1
          }
        ],
        [
          32862,
          "CAN source 30 inverted",
          {
            "rtvar":"cansrc30",
            "inverted":1
          }
        ],
        [
          32863,
          "CAN source 31 inverted",
          {
            "rtvar":"cansrc31",
            "inverted":1
          }
        ],
        [
          32864,
          "User program output 0 inverted",
          {
            "rtvar":"userflag0",
            "inverted":1
          }
        ],
        [
          32865,
          "User program output 1 inverted",
          {
            "rtvar":"userflag1",
            "inverted":1
          }
        ],
        [
          32866,
          "User program output 2 inverted",
          {
            "rtvar":"userflag2",
            "inverted":1
          }
        ],
        [
          32867,
          "User program output 3 inverted",
          {
            "rtvar":"userflag3",
            "inverted":1
          }
        ],
        [
          32868,
          "User program output 4 inverted",
          {
            "rtvar":"userflag4",
            "inverted":1
          }
        ],
        [
          32869,
          "User program output 5 inverted",
          {
            "rtvar":"userflag5",
            "inverted":1
          }
        ],
        [
          32870,
          "User program output 6 inverted",
          {
            "rtvar":"userflag6",
            "inverted":1
          }
        ],
        [
          32871,
          "User program output 7 inverted",
          {
            "rtvar":"userflag7",
            "inverted":1
          }
        ],
        [
          32872,
          "User program output 8 inverted",
          {
            "rtvar":"userflag8",
            "inverted":1
          }
        ],
        [
          32873,
          "User program output 9 inverted",
          {
            "rtvar":"userflag9",
            "inverted":1
          }
        ],
        [
          32874,
          "User program output 10 inverted",
          {
            "rtvar":"userflag10",
            "inverted":1
          }
        ],
        [
          32875,
          "User program output 11 inverted",
          {
            "rtvar":"userflag11",
            "inverted":1
          }
        ],
        [
          32876,
          "User program output 12 inverted",
          {
            "rtvar":"userflag12",
            "inverted":1
          }
        ],
        [
          32877,
          "User program output 13 inverted",
          {
            "rtvar":"userflag13",
            "inverted":1
          }
        ],
        [
          32878,
          "User program output 14 inverted",
          {
            "rtvar":"userflag14",
            "inverted":1
          }
        ],
        [
          32879,
          "User program output 15 inverted",
          {
            "rtvar":"userflag15",
            "inverted":1
          }
        ],
        [
          32880,
          "Remote bit 0 inverted",
          {
            "rtvar":"remotebit0",
            "inverted":1
          }
        ],
        [
          32881,
          "Remote bit 1 inverted",
          {
            "rtvar":"remotebit1",
            "inverted":1
          }
        ],
        [
          32882,
          "Remote bit 2 inverted",
          {
            "rtvar":"remotebit2",
            "inverted":1
          }
        ],
        [
          32883,
          "Remote bit 3 inverted",
          {
            "rtvar":"remotebit3",
            "inverted":1
          }
        ],
        [
          32884,
          "Remote bit 4 inverted",
          {
            "rtvar":"remotebit4",
            "inverted":1
          }
        ],
        [
          32885,
          "Remote bit 5 inverted",
          {
            "rtvar":"remotebit5",
            "inverted":1
          }
        ],
        [
          32886,
          "Remote bit 6 inverted",
          {
            "rtvar":"remotebit6",
            "inverted":1
          }
        ],
        [
          32887,
          "Remote bit 7 inverted",
          {
            "rtvar":"remotebit7",
            "inverted":1
          }
        ],
        [
          32896,
          "Engine not running",
          {
            "rtvar":"engine_running",
            "inverted":1
          }
        ],
        [
          32903,
          "Brakes inactive",
          {
            "rtvar":"brakes_active",
            "inverted":1
          }
        ],
        [
          32904,
          "Clutch inactive",
          {
            "rtvar":"clutch_active",
            "inverted":1
          }
        ],
        [
          33793,
          "CAN keypad 1 button 1 inverted",
          {
            "rtvar":"keypad1.1",
            "inverted":1
          }
        ],
        [
          33794,
          "CAN keypad 1 button 2 inverted",
          {
            "rtvar":"keypad1.2",
            "inverted":1
          }
        ],
        [
          33795,
          "CAN keypad 1 button 3 inverted",
          {
            "rtvar":"keypad1.3",
            "inverted":1
          }
        ],
        [
          33796,
          "CAN keypad 1 button 4 inverted",
          {
            "rtvar":"keypad1.4",
            "inverted":1
          }
        ],
        [
          33797,
          "CAN keypad 1 button 5 inverted",
          {
            "rtvar":"keypad1.5",
            "inverted":1
          }
        ],
        [
          33798,
          "CAN keypad 1 button 6 inverted",
          {
            "rtvar":"keypad1.6",
            "inverted":1
          }
        ],
        [
          33799,
          "CAN keypad 1 button 7 inverted",
          {
            "rtvar":"keypad1.7",
            "inverted":1
          }
        ],
        [
          33800,
          "CAN keypad 1 button 8 inverted",
          {
            "rtvar":"keypad1.8",
            "inverted":1
          }
        ],
        [
          33801,
          "CAN keypad 1 button 9 inverted",
          {
            "rtvar":"keypad1.9",
            "inverted":1
          }
        ],
        [
          33802,
          "CAN keypad 1 button 10 inverted",
          {
            "rtvar":"keypad1.10",
            "inverted":1
          }
        ],
        [
          33803,
          "CAN keypad 1 button 11 inverted",
          {
            "rtvar":"keypad1.11",
            "inverted":1
          }
        ],
        [
          33804,
          "CAN keypad 1 button 12 inverted",
          {
            "rtvar":"keypad1.12",
            "inverted":1
          }
        ],
        [
          33805,
          "CAN keypad 1 button 13 inverted",
          {
            "rtvar":"keypad1.13",
            "inverted":1
          }
        ],
        [
          33806,
          "CAN keypad 1 button 14 inverted",
          {
            "rtvar":"keypad1.14",
            "inverted":1
          }
        ],
        [
          33807,
          "CAN keypad 1 button 15 inverted",
          {
            "rtvar":"keypad1.15",
            "inverted":1
          }
        ],
        [
          33809,
          "CAN keypad 2 button 1 inverted",
          {
            "rtvar":"keypad2.1",
            "inverted":1
          }
        ],
        [
          33810,
          "CAN keypad 2 button 2 inverted",
          {
            "rtvar":"keypad2.2",
            "inverted":1
          }
        ],
        [
          33811,
          "CAN keypad 2 button 3 inverted",
          {
            "rtvar":"keypad2.3",
            "inverted":1
          }
        ],
        [
          33812,
          "CAN keypad 2 button 4 inverted",
          {
            "rtvar":"keypad2.4",
            "inverted":1
          }
        ],
        [
          33813,
          "CAN keypad 2 button 5 inverted",
          {
            "rtvar":"keypad2.5",
            "inverted":1
          }
        ],
        [
          33814,
          "CAN keypad 2 button 6 inverted",
          {
            "rtvar":"keypad2.6",
            "inverted":1
          }
        ],
        [
          33815,
          "CAN keypad 2 button 7 inverted",
          {
            "rtvar":"keypad2.7",
            "inverted":1
          }
        ],
        [
          33816,
          "CAN keypad 2 button 8 inverted",
          {
            "rtvar":"keypad2.8",
            "inverted":1
          }
        ],
        [
          33817,
          "CAN keypad 2 button 9 inverted",
          {
            "rtvar":"keypad2.9",
            "inverted":1
          }
        ],
        [
          33818,
          "CAN keypad 2 button 10 inverted",
          {
            "rtvar":"keypad2.10",
            "inverted":1
          }
        ],
        [
          33819,
          "CAN keypad 2 button 11 inverted",
          {
            "rtvar":"keypad2.11",
            "inverted":1
          }
        ],
        [
          33820,
          "CAN keypad 2 button 12 inverted",
          {
            "rtvar":"keypad2.12",
            "inverted":1
          }
        ],
        [
          33821,
          "CAN keypad 2 button 13 inverted",
          {
            "rtvar":"keypad2.13",
            "inverted":1
          }
        ],
        [
          33822,
          "CAN keypad 2 button 14 inverted",
          {
            "rtvar":"keypad2.14",
            "inverted":1
          }
        ],
        [
          33823,
          "CAN keypad 2 button 15 inverted",
          {
            "rtvar":"keypad2.15",
            "inverted":1
          }
        ],
        [
          33825,
          "CAN keypad 3 button 1 inverted",
          {
            "rtvar":"keypad3.1",
            "inverted":1
          }
        ],
        [
          33826,
          "CAN keypad 3 button 2 inverted",
          {
            "rtvar":"keypad3.2",
            "inverted":1
          }
        ],
        [
          33827,
          "CAN keypad 3 button 3 inverted",
          {
            "rtvar":"keypad3.3",
            "inverted":1
          }
        ],
        [
          33828,
          "CAN keypad 3 button 4 inverted",
          {
            "rtvar":"keypad3.4",
            "inverted":1
          }
        ],
        [
          33829,
          "CAN keypad 3 button 5 inverted",
          {
            "rtvar":"keypad3.5",
            "inverted":1
          }
        ],
        [
          33830,
          "CAN keypad 3 button 6 inverted",
          {
            "rtvar":"keypad3.6",
            "inverted":1
          }
        ],
        [
          33831,
          "CAN keypad 3 button 7 inverted",
          {
            "rtvar":"keypad3.7",
            "inverted":1
          }
        ],
        [
          33832,
          "CAN keypad 3 button 8 inverted",
          {
            "rtvar":"keypad3.8",
            "inverted":1
          }
        ],
        [
          33833,
          "CAN keypad 3 button 9 inverted",
          {
            "rtvar":"keypad3.9",
            "inverted":1
          }
        ],
        [
          33834,
          "CAN keypad 3 button 10 inverted",
          {
            "rtvar":"keypad3.10",
            "inverted":1
          }
        ],
        [
          33835,
          "CAN keypad 3 button 11 inverted",
          {
            "rtvar":"keypad3.11",
            "inverted":1
          }
        ],
        [
          33836,
          "CAN keypad 3 button 12 inverted",
          {
            "rtvar":"keypad3.12",
            "inverted":1
          }
        ],
        [
          33837,
          "CAN keypad 3 button 13 inverted",
          {
            "rtvar":"keypad3.13",
            "inverted":1
          }
        ],
        [
          33838,
          "CAN keypad 3 button 14 inverted",
          {
            "rtvar":"keypad3.14",
            "inverted":1
          }
        ],
        [
          33839,
          "CAN keypad 3 button 15 inverted",
          {
            "rtvar":"keypad3.15",
            "inverted":1
          }
        ],
        [
          33841,
          "CAN keypad 4 button 1 inverted",
          {
            "rtvar":"keypad4.1",
            "inverted":1
          }
        ],
        [
          33842,
          "CAN keypad 4 button 2 inverted",
          {
            "rtvar":"keypad4.2",
            "inverted":1
          }
        ],
        [
          33843,
          "CAN keypad 4 button 3 inverted",
          {
            "rtvar":"keypad4.3",
            "inverted":1
          }
        ],
        [
          33844,
          "CAN keypad 4 button 4 inverted",
          {
            "rtvar":"keypad4.4",
            "inverted":1
          }
        ],
        [
          33845,
          "CAN keypad 4 button 5 inverted",
          {
            "rtvar":"keypad4.5",
            "inverted":1
          }
        ],
        [
          33846,
          "CAN keypad 4 button 6 inverted",
          {
            "rtvar":"keypad4.6",
            "inverted":1
          }
        ],
        [
          33847,
          "CAN keypad 4 button 7 inverted",
          {
            "rtvar":"keypad4.7",
            "inverted":1
          }
        ],
        [
          33848,
          "CAN keypad 4 button 8 inverted",
          {
            "rtvar":"keypad4.8",
            "inverted":1
          }
        ],
        [
          33849,
          "CAN keypad 4 button 9 inverted",
          {
            "rtvar":"keypad4.9",
            "inverted":1
          }
        ],
        [
          33850,
          "CAN keypad 4 button 10 inverted",
          {
            "rtvar":"keypad4.10",
            "inverted":1
          }
        ],
        [
          33851,
          "CAN keypad 4 button 11 inverted",
          {
            "rtvar":"keypad4.11",
            "inverted":1
          }
        ],
        [
          33852,
          "CAN keypad 4 button 12 inverted",
          {
            "rtvar":"keypad4.12",
            "inverted":1
          }
        ],
        [
          33853,
          "CAN keypad 4 button 13 inverted",
          {
            "rtvar":"keypad4.13",
            "inverted":1
          }
        ],
        [
          33854,
          "CAN keypad 4 button 14 inverted",
          {
            "rtvar":"keypad4.14",
            "inverted":1
          }
        ],
        [
          33855,
          "CAN keypad 4 button 15 inverted",
          {
            "rtvar":"keypad4.15",
            "inverted":1
          }
        ],
        [
          32888,
          "Half hertz inverted",
          {
            "rtvar":"0hz5",
            "inverted":1
          }
        ],
        [
          32889,
          "One hertz inverted",
          {
            "rtvar":"1hz",
            "inverted":1
          }
        ],
        [
          32890,
          "Ten hertz inverted",
          {
            "rtvar":"10hz",
            "inverted":1
          }
        ]
      ],
      "map_outputs":[
        [
          0,
          "Disabled"
        ],
        [
          32768,
          "Always on"
        ],
        [
          1,
          "Glow control",
          {
            "rtvar":"glow_heating"
          }
        ],
        [
          2,
          "Fan control",
          {
            "rtvar":"coolingfan"
          }
        ],
        [
          3,
          "Check engine light",
          {
            "rtvar":"cel"
          }
        ],
        [
          4,
          "Fuel pump relay",
          {
            "rtvar":"fuelpump"
          }
        ],
        [
          5,
          "PWM glow control"
        ],
        [
          6,
          "Water injection activation",
          {
            "rtvar":"h2o_active"
          }
        ],
        [
          7,
          "Shut off solenoid",
          {
            "rtvar":"shutoff"
          }
        ],
        [
          8,
          "Glow plug wait indicator",
          {
            "rtvar":"glow_light"
          }
        ],
        [
          9,
          "Starter relay",
          {
            "rtvar":"starter_engaged"
          }
        ],
        [
          10,
          "General purpose out 1",
          {
            "rtvar":"gplogic1",
            "appendtextitem":"gpiodescr0"
          }
        ],
        [
          11,
          "General purpose out 2",
          {
            "rtvar":"gplogic2",
            "appendtextitem":"gpiodescr1"
          }
        ],
        [
          12,
          "General purpose out 3",
          {
            "rtvar":"gplogic3",
            "appendtextitem":"gpiodescr2"
          }
        ],
        [
          13,
          "General purpose out 4",
          {
            "rtvar":"gplogic4",
            "appendtextitem":"gpiodescr3"
          }
        ],
        [
          15,
          "General purpose out 5",
          {
            "rtvar":"gplogic5",
            "appendtextitem":"gpiodescr5"
          }
        ],
        [
          16,
          "General purpose out 6",
          {
            "rtvar":"gplogic6",
            "appendtextitem":"gpiodescr6"
          }
        ],
        [
          17,
          "General purpose out 7",
          {
            "rtvar":"gplogic7",
            "appendtextitem":"gpiodescr7"
          }
        ],
        [
          18,
          "General purpose out 8",
          {
            "rtvar":"gplogic8",
            "appendtextitem":"gpiodescr8"
          }
        ],
        [
          20,
          "General purpose out 9",
          {
            "rtvar":"gplogic9",
            "appendtextitem":"gpiodescr10"
          }
        ],
        [
          21,
          "General purpose out 10",
          {
            "rtvar":"gplogic10",
            "appendtextitem":"gpiodescr11"
          }
        ],
        [
          22,
          "General purpose out 11",
          {
            "rtvar":"gplogic11",
            "appendtextitem":"gpiodescr12"
          }
        ],
        [
          23,
          "General purpose out 12",
          {
            "rtvar":"gplogic12",
            "appendtextitem":"gpiodescr13"
          }
        ],
        [
          24,
          "General purpose out 13",
          {
            "rtvar":"gplogic13",
            "appendtextitem":"gpiodescr14"
          }
        ],
        [
          25,
          "General purpose out 14",
          {
            "rtvar":"gplogic14",
            "appendtextitem":"gpiodescr15"
          }
        ],
        [
          26,
          "General purpose out 15",
          {
            "rtvar":"gplogic15",
            "appendtextitem":"gpiodescr16"
          }
        ],
        [
          27,
          "General purpose out 16",
          {
            "rtvar":"gplogic16",
            "appendtextitem":"gpiodescr17"
          }
        ],
        [
          32,
          "User program output 0",
          {
            "rtvar":"userflag0"
          }
        ],
        [
          33,
          "User program output 1",
          {
            "rtvar":"userflag1"
          }
        ],
        [
          34,
          "User program output 2",
          {
            "rtvar":"userflag2"
          }
        ],
        [
          35,
          "User program output 3",
          {
            "rtvar":"userflag3"
          }
        ],
        [
          36,
          "User program output 4",
          {
            "rtvar":"userflag4"
          }
        ],
        [
          37,
          "User program output 5",
          {
            "rtvar":"userflag5"
          }
        ],
        [
          38,
          "User program output 6",
          {
            "rtvar":"userflag6"
          }
        ],
        [
          39,
          "User program output 7",
          {
            "rtvar":"userflag7"
          }
        ],
        [
          40,
          "User program output 8",
          {
            "rtvar":"userflag8"
          }
        ],
        [
          41,
          "User program output 9",
          {
            "rtvar":"userflag9"
          }
        ],
        [
          42,
          "User program output 10",
          {
            "rtvar":"userflag10"
          }
        ],
        [
          43,
          "User program output 11",
          {
            "rtvar":"userflag11"
          }
        ],
        [
          44,
          "User program output 12",
          {
            "rtvar":"userflag12"
          }
        ],
        [
          45,
          "User program output 13",
          {
            "rtvar":"userflag13"
          }
        ],
        [
          46,
          "User program output 14",
          {
            "rtvar":"userflag14"
          }
        ],
        [
          47,
          "User program output 15",
          {
            "rtvar":"userflag15"
          }
        ],
        [
          56,
          "GP PID 1 polarity output",
          {
            "rtvar":"pwm1duty",
            "descr":"Output activates when bipolar mode is enabled and the duty is negative"
          }
        ],
        [
          57,
          "GP PID 2 polarity output",
          {
            "rtvar":"pwm2duty",
            "descr":"Output activates when bipolar mode is enabled and the duty is negative"
          }
        ],
        [
          58,
          "GP PID 3 polarity output",
          {
            "rtvar":"pwm3duty",
            "descr":"Output activates when bipolar mode is enabled and the duty is negative"
          }
        ],
        [
          59,
          "GP PID 4 polarity output",
          {
            "rtvar":"pwm4duty",
            "descr":"Output activates when bipolar mode is enabled and the duty is negative"
          }
        ],
        [
          1025,
          "CAN keypad 1 button 1",
          {
            "rtvar":"keypad1.1"
          }
        ],
        [
          1026,
          "CAN keypad 1 button 2",
          {
            "rtvar":"keypad1.2"
          }
        ],
        [
          1027,
          "CAN keypad 1 button 3",
          {
            "rtvar":"keypad1.3"
          }
        ],
        [
          1028,
          "CAN keypad 1 button 4",
          {
            "rtvar":"keypad1.4"
          }
        ],
        [
          1029,
          "CAN keypad 1 button 5",
          {
            "rtvar":"keypad1.5"
          }
        ],
        [
          1030,
          "CAN keypad 1 button 6",
          {
            "rtvar":"keypad1.6"
          }
        ],
        [
          1031,
          "CAN keypad 1 button 7",
          {
            "rtvar":"keypad1.7"
          }
        ],
        [
          1032,
          "CAN keypad 1 button 8",
          {
            "rtvar":"keypad1.8"
          }
        ],
        [
          1033,
          "CAN keypad 1 button 9",
          {
            "rtvar":"keypad1.9"
          }
        ],
        [
          1034,
          "CAN keypad 1 button 10",
          {
            "rtvar":"keypad1.10"
          }
        ],
        [
          1035,
          "CAN keypad 1 button 11",
          {
            "rtvar":"keypad1.11"
          }
        ],
        [
          1036,
          "CAN keypad 1 button 12",
          {
            "rtvar":"keypad1.12"
          }
        ],
        [
          1037,
          "CAN keypad 1 button 13",
          {
            "rtvar":"keypad1.13"
          }
        ],
        [
          1038,
          "CAN keypad 1 button 14",
          {
            "rtvar":"keypad1.14"
          }
        ],
        [
          1039,
          "CAN keypad 1 button 15",
          {
            "rtvar":"keypad1.15"
          }
        ],
        [
          1041,
          "CAN keypad 2 button 1",
          {
            "rtvar":"keypad2.1"
          }
        ],
        [
          1042,
          "CAN keypad 2 button 2",
          {
            "rtvar":"keypad2.2"
          }
        ],
        [
          1043,
          "CAN keypad 2 button 3",
          {
            "rtvar":"keypad2.3"
          }
        ],
        [
          1044,
          "CAN keypad 2 button 4",
          {
            "rtvar":"keypad2.4"
          }
        ],
        [
          1045,
          "CAN keypad 2 button 5",
          {
            "rtvar":"keypad2.5"
          }
        ],
        [
          1046,
          "CAN keypad 2 button 6",
          {
            "rtvar":"keypad2.6"
          }
        ],
        [
          1047,
          "CAN keypad 2 button 7",
          {
            "rtvar":"keypad2.7"
          }
        ],
        [
          1048,
          "CAN keypad 2 button 8",
          {
            "rtvar":"keypad2.8"
          }
        ],
        [
          1049,
          "CAN keypad 2 button 9",
          {
            "rtvar":"keypad2.9"
          }
        ],
        [
          1050,
          "CAN keypad 2 button 10",
          {
            "rtvar":"keypad2.10"
          }
        ],
        [
          1051,
          "CAN keypad 2 button 11",
          {
            "rtvar":"keypad2.11"
          }
        ],
        [
          1052,
          "CAN keypad 2 button 12",
          {
            "rtvar":"keypad2.12"
          }
        ],
        [
          1053,
          "CAN keypad 2 button 13",
          {
            "rtvar":"keypad2.13"
          }
        ],
        [
          1054,
          "CAN keypad 2 button 14",
          {
            "rtvar":"keypad2.14"
          }
        ],
        [
          1055,
          "CAN keypad 2 button 15",
          {
            "rtvar":"keypad2.15"
          }
        ],
        [
          1057,
          "CAN keypad 3 button 1",
          {
            "rtvar":"keypad3.1"
          }
        ],
        [
          1058,
          "CAN keypad 3 button 2",
          {
            "rtvar":"keypad3.2"
          }
        ],
        [
          1059,
          "CAN keypad 3 button 3",
          {
            "rtvar":"keypad3.3"
          }
        ],
        [
          1060,
          "CAN keypad 3 button 4",
          {
            "rtvar":"keypad3.4"
          }
        ],
        [
          1061,
          "CAN keypad 3 button 5",
          {
            "rtvar":"keypad3.5"
          }
        ],
        [
          1062,
          "CAN keypad 3 button 6",
          {
            "rtvar":"keypad3.6"
          }
        ],
        [
          1063,
          "CAN keypad 3 button 7",
          {
            "rtvar":"keypad3.7"
          }
        ],
        [
          1064,
          "CAN keypad 3 button 8",
          {
            "rtvar":"keypad3.8"
          }
        ],
        [
          1065,
          "CAN keypad 3 button 9",
          {
            "rtvar":"keypad3.9"
          }
        ],
        [
          1066,
          "CAN keypad 3 button 10",
          {
            "rtvar":"keypad3.10"
          }
        ],
        [
          1067,
          "CAN keypad 3 button 11",
          {
            "rtvar":"keypad3.11"
          }
        ],
        [
          1068,
          "CAN keypad 3 button 12",
          {
            "rtvar":"keypad3.12"
          }
        ],
        [
          1069,
          "CAN keypad 3 button 13",
          {
            "rtvar":"keypad3.13"
          }
        ],
        [
          1070,
          "CAN keypad 3 button 14",
          {
            "rtvar":"keypad3.14"
          }
        ],
        [
          1071,
          "CAN keypad 3 button 15",
          {
            "rtvar":"keypad3.15"
          }
        ],
        [
          1073,
          "CAN keypad 4 button 1",
          {
            "rtvar":"keypad4.1"
          }
        ],
        [
          1074,
          "CAN keypad 4 button 2",
          {
            "rtvar":"keypad4.2"
          }
        ],
        [
          1075,
          "CAN keypad 4 button 3",
          {
            "rtvar":"keypad4.3"
          }
        ],
        [
          1076,
          "CAN keypad 4 button 4",
          {
            "rtvar":"keypad4.4"
          }
        ],
        [
          1077,
          "CAN keypad 4 button 5",
          {
            "rtvar":"keypad4.5"
          }
        ],
        [
          1078,
          "CAN keypad 4 button 6",
          {
            "rtvar":"keypad4.6"
          }
        ],
        [
          1079,
          "CAN keypad 4 button 7",
          {
            "rtvar":"keypad4.7"
          }
        ],
        [
          1080,
          "CAN keypad 4 button 8",
          {
            "rtvar":"keypad4.8"
          }
        ],
        [
          1081,
          "CAN keypad 4 button 9",
          {
            "rtvar":"keypad4.9"
          }
        ],
        [
          1082,
          "CAN keypad 4 button 10",
          {
            "rtvar":"keypad4.10"
          }
        ],
        [
          1083,
          "CAN keypad 4 button 11",
          {
            "rtvar":"keypad4.11"
          }
        ],
        [
          1084,
          "CAN keypad 4 button 12",
          {
            "rtvar":"keypad4.12"
          }
        ],
        [
          1085,
          "CAN keypad 4 button 13",
          {
            "rtvar":"keypad4.13"
          }
        ],
        [
          1086,
          "CAN keypad 4 button 14",
          {
            "rtvar":"keypad4.14"
          }
        ],
        [
          1087,
          "CAN keypad 4 button 15",
          {
            "rtvar":"keypad4.15"
          }
        ]
      ],
      "map_pwmoutputs":[
        [
          20065,
          "Boost control",
          {
            "rtvar":"boostduty"
          }
        ],
        [
          20066,
          "Generic PWM",
          {
            "rtvar":"pwm0duty"
          }
        ],
        [
          20067,
          "Water injection PWM",
          {
            "rtvar":"h2opwmduty"
          }
        ],
        [
          20068,
          "PWM variable speed fan",
          {
            "rtvar":"fanpwmduty"
          }
        ],
        [
          20069,
          "Generic PID control",
          {
            "rtvar":"pwm1duty"
          }
        ],
        [
          20070,
          "Generic PID control 2",
          {
            "rtvar":"pwm2duty"
          }
        ],
        [
          20077,
          "Generic PID control 3",
          {
            "rtvar":"pwm3duty"
          }
        ],
        [
          20078,
          "Generic PID control 4",
          {
            "rtvar":"pwm4duty"
          }
        ],
        [
          20072,
          "Pump angle control PWM",
          {
            "rtvar":"pumpanglepwm"
          }
        ],
        [
          20073,
          "Simple PWM 1",
          {
            "rtvar":"simplepwmdc1"
          }
        ],
        [
          20074,
          "Simple PWM 2",
          {
            "rtvar":"simplepwmdc2"
          }
        ],
        [
          20075,
          "Simple PWM 3",
          {
            "rtvar":"simplepwmdc3"
          }
        ],
        [
          20076,
          "Simple PWM 4",
          {
            "rtvar":"simplepwmdc4"
          }
        ],
        [
          20081,
          "User program PWM 1"
        ],
        [
          20082,
          "User program PWM 2"
        ],
        [
          20083,
          "User program PWM 3"
        ],
        [
          20084,
          "User program PWM 4"
        ],
        [
          20085,
          "User program PWM 5"
        ],
        [
          20086,
          "User program PWM 6"
        ],
        [
          20087,
          "User program PWM 7"
        ],
        [
          20088,
          "User program PWM 8"
        ]
      ]
    },
    "confdef":[
      {
        "page":0,
        "size":24576,
        "data":[
          {
            "id":"mapadcrange",
            "min":0.000000,
            "max":5.000000,
            "type":2,
            "scale":0.001221,
            "array":2,
            "digits":3,
            "unit":"V",
            "input":"analog3",
            "descr":"This range calibrates the MAP sensor. Set to the span of voltages the sensor is expected to output.",
            "address":292
          },
          {
            "id":"mapvalidrange",
            "min":0.000000,
            "max":5.000000,
            "type":2,
            "scale":0.001221,
            "array":2,
            "digits":3,
            "unit":"V",
            "input":"analog3",
            "descr":"The MAP sensor voltage must fall within this range or the sensor is considered to have a fault.",
            "address":300
          },
          {
            "id":"mapvaluerange",
            "min":0,
            "max":65535,
            "type":2,
            "array":2,
            "unit":"mbar",
            "descr":"This function maps the output voltage of the MAP sensor to pressure in millibars absolute.",
            "address":296
          },
          {
            "id":"mapdefault",
            "min":0,
            "max":65535,
            "type":2,
            "unit":"mbar",
            "descr":"This is the MAP sensor pressure value used if the sensor is considered faulty.",
            "address":304
          },
          {
            "id":"coolantadc",
            "min":0.000000,
            "max":5.000000,
            "type":2,
            "scale":0.001221,
            "array":16,
            "digits":3,
            "unit":"V",
            "descr":"The voltage span across which the coolant temperature sensor operates.\nThe temperature sensor input has a pull-up value of 3000 ohms.",
            "address":338
          },
          {
            "id":"coolantvalues",
            "min":-100,
            "max":200,
            "type":2,
            "scale":0.100000,
            "offset":-2731,
            "array":16,
            "digits":1,
            "input":"coolanttemp",
            "unit":"°C",
            "descr":"This function maps analog input voltage at the coolant temperature sensor to temperature.",
            "address":306
          },
          {
            "id":"ectbreakpoints",
            "min":-100,
            "max":200,
            "type":2,
            "scale":0.100000,
            "offset":-2731,
            "array":16,
            "digits":1,
            "input":"coolanttemp",
            "unit":"°C",
            "descr":"These breakpoints are used for most functions whose input is engine coolant temperature.",
            "address":706
          },
          {
            "id":"coolantlimits",
            "min":-100,
            "max":200,
            "type":2,
            "scale":0.100000,
            "offset":-2731,
            "array":2,
            "digits":1,
            "unit":"°C",
            "descr":"If the coolant temperature sensor reports values outside of this range it is considered to have a fault and a default value is used instead.",
            "address":370
          },
          {
            "id":"coolantdefault",
            "min":-100,
            "max":200,
            "type":2,
            "scale":0.100000,
            "offset":-2731,
            "digits":1,
            "unit":"°C",
            "descr":"This value is used in place of sensor input if the coolant temperature sensor is considered faulty.",
            "address":374
          },
          {
            "id":"throttlerange",
            "min":0.000000,
            "max":5.000000,
            "type":2,
            "scale":0.001221,
            "array":2,
            "digits":3,
            "input":"analog0",
            "descr":"The voltage range across which the primary accelerator pedal position sensor operates from fully closed to fully open.",
            "address":56
          },
          {
            "id":"throttlelimits",
            "min":0.000000,
            "max":5.000000,
            "type":2,
            "scale":0.001221,
            "array":2,
            "digits":3,
            "input":"analog0",
            "descr":"If the voltage of the primary accelerator pedal position sensor goes outside of this range it is considered faulty and pedal input is disabled, letting the engine idle only.",
            "address":68
          },
          {
            "id":"secondarythrottle",
            "min":0.000000,
            "max":5.000000,
            "type":2,
            "scale":0.001221,
            "array":2,
            "digits":3,
            "input":"analog1",
            "descr":"This is the voltage range the secondary accelerator pedal position sensor operates in.",
            "address":60
          },
          {
            "id":"secondaryrange",
            "min":0.000000,
            "max":100.000000,
            "type":2,
            "scale":0.097656,
            "array":2,
            "digits":1,
            "descr":"This function maps the secondary accelerator pedal position sensor voltage to position.\nThe secondary sensor must always report a slightly higher value than the primary sensor or the accelerator pedal is disabled.",
            "address":64
          },
          {
            "id":"maxsecondaryatidle",
            "min":0,
            "max":100,
            "type":2,
            "scale":0.097656,
            "digits":1,
            "descr":"When the accelerator pedal is below the position specified in the 'Idle max throttle' setting, the secondary sensor must report a value equal or lower to this setting.",
            "address":72
          },
          {
            "id":"rack0limits",
            "type":3,
            "array":2,
            "descr":"The value range acceptable for the primary rack position sensor. Outside this range a fault is triggered and the rack solenoid power shuts off, disabling the engine.",
            "address":4
          },
          {
            "id":"rack1limits",
            "type":3,
            "array":2,
            "descr":"The value range acceptable for the secondary rack position sensor. Outside this range a fault is triggered and the rack solenoid power shuts off, disabling the engine.",
            "address":12
          },
          {
            "id":"rackpreload",
            "type":2,
            "sign":1,
            "array":8,
            "scale":0.003052,
            "digits":1,
            "min":-100,
            "max":100,
            "descr":"This function specifies the approximate rack solenoid duty cycle required to maintain the specified position.\nIts purpose is to improve the response of the control loop by giving a feed-forward element so smaller swings are required in PID integral across the operating range of the rack solenoid.",
            "address":476
          },
          {
            "id":"preloadpositions",
            "input":"rackcommand",
            "type":2,
            "array":8,
            "min":0,
            "max":10000,
            "descr":"The rack position breakpoints used for the rack preload duty function",
            "address":492
          },
          {
            "id":"rackKp",
            "type":2,
            "array":16,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"Rack control loop PID proportional gain as a function of engine coolant temperature, as a cold injection pump has different characteristics to a warm injection pump.",
            "address":376
          },
          {
            "id":"rackKi",
            "type":2,
            "array":16,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"Rack control loop PID integral gain as a function of engine coolant temperature, as a cold injection pump has different characteristics to a warm injection pump.",
            "address":408
          },
          {
            "id":"rackKd",
            "type":2,
            "array":16,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"Rack control loop PID derivative gain as a function of engine coolant temperature, as a cold injection pump has different characteristics to a warm injection pump.",
            "address":440
          },
          {
            "id":"rackImin",
            "type":2,
            "sign":1,
            "descr":"To limit the amount of integral wind up possible, this setting specifies the maximum integral effect.",
            "address":472
          },
          {
            "id":"rackImax",
            "type":2,
            "sign":1,
            "descr":"To limit the amount of integral wind up possible, this setting specifies the minimum integral effect.",
            "address":474
          },
          {
            "id":"quickspoollowtps",
            "type":2,
            "min":0,
            "max":100,
            "input":"pedalposition",
            "scale":0.097656,
            "digits":1,
            "descr":"Below this throttle position, the regular fuel limit table is used. Between this and the upper quick spool throttle setting a blend between the regular limit and quick spool limit is used.",
            "address":2784
          },
          {
            "id":"quickspoolhightps",
            "type":2,
            "min":0,
            "max":100,
            "input":"pedalposition",
            "scale":0.097656,
            "digits":1,
            "descr":"Above this throttle position, the quick spool fuel limit table is used and the regular fuel limit table is ignored.",
            "address":2786
          },
          {
            "id":"quickspoolenable",
            "type":8,
            "address":"bits0.10.10",
            "options":"enum_enabled",
            "descr":"If the quick spool map is enabled then a second fuel limit map is used at full throttle, making it possible to allow a little smoke for better response when giving full throttle but have a very clean running engine at part throttle"
          },
          {
            "id":"fuelrequestmap",
            "min":0,
            "max":650,
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "digits":1,
            "defaults":{
              "yvar":"effthrottle",
              "xvar":"enginespeed",
              "ypts":[
                2,
                5,
                10,
                20,
                30,
                40,
                50,
                90
              ],
              "xpts":[
                500,
                1000,
                1500,
                2000,
                2500,
                3000,
                3500,
                4000,
                4500,
                5000,
                5500,
                6000
              ],
              "fill":0
            },
            "bannedvars":{
              "pedalposition":"You must use effthrottle in place of pedalposition for pedal position or nothing will work correctly",
              "pedalsecondary":"Do not rely on secondary pedal position for anything other than error checking"
            },
            "descr":"This map is the primary torque request function. It maps accelerator pedal input to desired fuel quantity.",
            "address":40
          },
          {
            "id":"altfuelrequestmap",
            "min":0,
            "max":650,
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "defaults":{
              "yvar":"effthrottle",
              "xvar":"enginespeed",
              "ypts":[
                2,
                5,
                10,
                20,
                30,
                40,
                50,
                90
              ],
              "xpts":[
                500,
                1000,
                1500,
                2000,
                2500,
                3000,
                3500,
                4000,
                4500,
                5000,
                5500,
                6000
              ],
              "fill":0
            },
            "bannedvars":{
              "pedalposition":"You must use effthrottle in place of pedalposition for pedal position or nothing will work correctly",
              "pedalsecondary":"Do not rely on secondary pedal position for anything other than error checking"
            },
            "digits":1,
            "descr":"Alternate fuel request map, used if calibration switch is active.",
            "address":48
          },
          {
            "id":"maxfuel",
            "min":0,
            "max":650,
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "digits":1,
            "defaults":{
              "yvar":"map",
              "xvar":"enginespeed",
              "ypts":[
                800,
                1000,
                1200,
                1500,
                1800,
                2000,
                2300,
                2600,
                2900,
                3200,
                3500
              ],
              "xpts":[
                500,
                1000,
                1500,
                2000,
                2500,
                3000,
                3500,
                4000,
                4500,
                5000,
                5500,
                6000
              ],
              "fill":0
            },
            "descr":"This map limits maximum injection quantity as a function of boost pressure, for optimising engine output and containing smoke and exhaust temperature.",
            "address":44
          },
          {
            "id":"altmaxfuel",
            "min":0,
            "max":650,
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "defaults":{
              "yvar":"map",
              "xvar":"enginespeed",
              "ypts":[
                800,
                1000,
                1200,
                1500,
                1800,
                2000,
                2300,
                2600,
                2900,
                3200,
                3500
              ],
              "xpts":[
                500,
                1000,
                1500,
                2000,
                2500,
                3000,
                3500,
                4000,
                4500,
                5000,
                5500,
                6000
              ],
              "fill":0
            },
            "digits":1,
            "descr":"Alternate fuel limit map, used if calibration switch is active.",
            "address":52
          },
          {
            "id":"quickspoolfuellimit",
            "min":0,
            "max":650,
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "defaults":{
              "yvar":"map",
              "xvar":"enginespeed",
              "ypts":[
                800,
                1000,
                1200,
                1500,
                1800,
                2000,
                2300,
                2600,
                2900,
                3200,
                3500
              ],
              "xpts":[
                500,
                1000,
                1500,
                2000,
                2500,
                3000,
                3500,
                4000,
                4500,
                5000,
                5500,
                6000
              ],
              "fill":0
            },
            "digits":1,
            "descr":"This is an alternative fuel limit map used at full throttle if the quick spool option is enabled.\nIt can be configured to allow slightly more fuel intermittently when at full throttle, allowing the primary fuel limit map to be tuned perfectly clean without affecting full throttle performance.",
            "address":2780
          },
          {
            "id":"triggertoothcount",
            "type":1,
            "descr":"This setting specifies how often in one engine cycle (two rotations) the engine speed should be computed.\nIdeally this is equal to the number of cylinders but if the engine speed sensor outputs a pulse count in two rotations that is smaller than the number of cylinders or not divisible by the number of cylinders, other values must be used.\nThis setting is used together with 'Engine speed pulse averaging' and (Engine speed pulses per two rotations) * (Engine pulse averaging + 1) must equal the number of pulses transmitted by the engine speed sensor in two engine rotations.\r\nIn missing tooth mode, this value specifies how often engine speed is computed over the engine cycle.",
            "address":810
          },
          {
            "id":"rpmfilter",
            "type":3,
            "unit":"µs",
            "descr":"If any pulses are seen from the engine speed sensor during this period after the last pulse was processed, they are ignored.",
            "address":36
          },
          {
            "id":"tachcylcount",
            "type":1,
            "descr":"The tach output will emulate a 4 stroke engine with this number of cylinders.\nIf set to 4 cylinders for example, it will output 4 pulses for every two engine rotations.",
            "address":811
          },
          {
            "id":"pulseperkm",
            "type":2,
            "descr":"The vehicle speed sensor outputs this pulse count when the vehicle covers one kilometre. Used for calibration of speed sensing.\nIf the reported speed is faster than real speed, increase this value and vice versa.",
            "address":688
          },
          {
            "id":"vssaveraging",
            "type":1,
            "descr":"If this setting has a value greater than 1, the road speed is only updated every so many speed pulses.\nUseful if the speed sensor reads a wheel that is not perfectly concentric.\nBy setting this value equal to the number of teeth in one rotation of the wheel any mechanical error is filtered out.",
            "address":2490
          },
          {
            "id":"outputpulseperkm",
            "type":2,
            "descr":"The speedometer output will emit this number of pulses as the vehicle covers one kilometre. Used for calibration of speedometer.",
            "address":690
          },
          {
            "id":"speedotestspeed",
            "type":2,
            "unit":"km\/h",
            "digits":1,
            "scale":0.100000,
            "descr":"Set this to a non-zero value to test the speedometer calibration at different speeds without needing to drive the car to those speeds.",
            "address":2488
          },
          {
            "id":"idleoptions",
            "type":1,
            "address":7615
          },
          {
            "id":"idlecontrolledreturn",
            "type":8,
            "address":"idleoptions.1.1",
            "options":"enum_enabled",
            "descr":"When this option is enabled, the idle control waits for the engine speed to reach an elevated target after driving, before bringing the speed down to the normal idle speed at a controlled rate. Normally desireable with manual transmissions, but not necessarily with automatics."
          },
          {
            "id":"cruisebuttonidle",
            "type":8,
            "address":"idleoptions.2.2",
            "options":"enum_enabled",
            "descr":"When this option is enabled, and the vehicle is stationary (road speed < 5km\/h) and the brake pedal is not pressed, and cruise control is enabled, the cruise accel\/decel buttons can be used to increase or decrease idle speed."
          },
          {
            "id":"cruisebuttonmaxidle",
            "type":2,
            "unit":"RPM",
            "descr":"The maximum value added to the idle speed target by the cruise control buttons",
            "address":1674
          },
          {
            "id":"cruisebuttonidlestep",
            "type":2,
            "unit":"RPM",
            "descr":"The value added or removed from the idle speed on each press of the cruise control buttons",
            "address":1672
          },
          {
            "id":"idleKp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":556
          },
          {
            "id":"idleKi",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":560
          },
          {
            "id":"idleKd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":564
          },
          {
            "id":"idleIminlimit",
            "type":11,
            "datatype":2,
            "sign":1,
            "digits":2,
            "scale":0.010000,
            "unit":"µl",
            "max":0,
            "min":-30,
            "descr":"To limit integral wind-up, this setting specifies the minimum integral effect on idle control.",
            "address":568
          },
          {
            "id":"idleImaxlimit",
            "type":11,
            "datatype":2,
            "sign":1,
            "digits":2,
            "scale":0.010000,
            "unit":"µl",
            "min":0,
            "max":30,
            "descr":"To limit integral wind-up, this setting specifies the maximum integral effect on idle control.",
            "address":572
          },
          {
            "id":"idlePmaxlimit",
            "type":2,
            "sign":1,
            "digits":2,
            "scale":0.010000,
            "unit":"µl",
            "min":0,
            "max":20,
            "descr":"To prevent overly agressive idle control, this setting specifies the maximum proportional effect on idle control.",
            "address":4000
          },
          {
            "id":"idleDminlimit",
            "type":2,
            "sign":1,
            "digits":2,
            "scale":0.010000,
            "unit":"µl",
            "min":-20,
            "max":0,
            "descr":"To prevent overly agressive idle control, this setting specifies the minimum derivative effect on idle control.",
            "address":4002
          },
          {
            "id":"idleDmaxlimit",
            "type":2,
            "sign":1,
            "digits":2,
            "scale":0.010000,
            "unit":"µl",
            "min":0,
            "max":20,
            "descr":"To prevent overly agressive idle control, this setting specifies the maximum derivative effect on idle control.",
            "address":4004
          },
          {
            "id":"idleruntimepts",
            "type":2,
            "array":8,
            "unit":"s",
            "scale":0.100000,
            "digits":1,
            "input":"runtime",
            "address":648
          },
          {
            "id":"idleruntimeIrange",
            "type":1,
            "array":16,
            "rows":2,
            "cols":8,
            "digits":1,
            "scale":0.392157,
            "unit":"%",
            "descr":"To control integral wind up on start up, this table adjusts the allowed integral range, where a value of 100% allows the full value set by the I min and max parameters",
            "address":664
          },
          {
            "id":"idleafterstartspeedadder",
            "type":11,
            "datatype":1,
            "sign":1,
            "unit":"RPM",
            "scale":10,
            "rows":8,
            "cols":16,
            "descr":"This table can be used to increase or decrease the idle speed target during and shortly after engine start up.",
            "address":680
          },
          {
            "id":"idleafterstartfueladder",
            "type":11,
            "datatype":2,
            "sign":1,
            "digits":2,
            "scale":0.010000,
            "unit":"µl",
            "rows":8,
            "cols":16,
            "descr":"This table can help with cold starts by adding more feed forward fuel to the idle control loop shortly after starting. It can also reduce the idle fuel request if that is for any reason desirable shortly after start up.",
            "address":684
          },
          {
            "id":"idletarget",
            "unit":"RPM",
            "type":11,
            "datatype":2,
            "descr":"Idle target speed as a function of engine coolant temperature.",
            "address":544
          },
          {
            "id":"idlemaxtps",
            "unit":"%",
            "type":2,
            "digits":1,
            "min":0.000000,
            "max":100.000000,
            "scale":0.097656,
            "descr":"If the accelerator pedal position is greater than this, idle control is partially disabled to limit integral wind up.\nIdle decay timer is also reset.",
            "address":548
          },
          {
            "id":"output.0",
            "type":12,
            "options":"map_outputs",
            "extraopts":[
              "map_pwmoutputs",
              [
                20064,
                "Tach output"
              ]
            ],
            "descr":"This setting specifies function of configurable output 1. (pin 9 on 24 pin connector)\nIf using the DSL1 to drive a tachometer, this is the only output that can be configured as a tach output.\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has a maximum PWM frequency of 2000Hz.",
            "address":786
          },
          {
            "id":"output.1",
            "type":12,
            "extraopts":[
              "map_pwmoutputs",
              [
                20071,
                "Speedometer signal output"
              ]
            ],
            "options":"map_outputs",
            "descr":"This setting specifies function of configurable output 2. (pin 10 on 24 pin connector)\nIf using the DSL1 to drive a speedometer, this is the only output that can be configured as a speedometer output.\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has a maximum PWM frequency of 2000Hz.",
            "address":788
          },
          {
            "id":"output.2",
            "type":12,
            "options":"map_outputs",
            "extraopts":"map_pwmoutputs",
            "descr":"This setting specifies function of configurable output 3. (pin 22 on 24 pin connector)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has a maximum PWM frequency of 2000Hz.",
            "address":790
          },
          {
            "id":"output.3",
            "type":12,
            "options":"map_outputs",
            "extraopts":"map_pwmoutputs",
            "descr":"This setting specifies function of configurable output 4. (pin 21 on 24 pin connector)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has a maximum PWM frequency of 2000Hz.",
            "address":792
          },
          {
            "id":"output.4",
            "type":12,
            "options":"map_outputs",
            "extraopts":"map_pwmoutputs",
            "descr":"This setting specifies function of configurable output 5. (pin 2 on 6 pin connector only found on controller serial number 200 and up.)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has a maximum PWM frequency of 2000Hz.",
            "address":794
          },
          {
            "id":"output.5",
            "type":12,
            "options":"map_outputs",
            "extraopts":"map_pwmoutputs",
            "descr":"This setting specifies function of configurable output 6. (pin 3 on 6 pin connector only found on controller serial number 200 and up.)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has a maximum PWM frequency of 2000Hz.",
            "address":796
          },
          {
            "id":"output.6",
            "type":12,
            "options":"map_outputs",
            "descr":"This setting specifies function of configurable output 7. (pin 5 on 6 pin connector only found on controller serial number 200 and up.)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has no PWM capability.",
            "address":798
          },
          {
            "id":"output.7",
            "type":12,
            "options":"map_outputs",
            "descr":"This setting specifies function of configurable output 8. (pin 6 on 6 pin connector only found on controller serial number 200 and up.)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has no PWM capability.",
            "address":800
          },
          {
            "id":"output.8",
            "type":12,
            "options":"map_outputs",
            "descr":"This setting specifies function of configurable output 9. (Requires expansion board)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has no PWM capability.",
            "address":802
          },
          {
            "id":"output.9",
            "type":12,
            "options":"map_outputs",
            "descr":"This setting specifies function of configurable output 10. (Requires expansion board)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has no PWM capability.",
            "address":804
          },
          {
            "id":"output.10",
            "type":12,
            "options":"map_outputs",
            "descr":"This setting specifies function of configurable output 11. (Requires expansion board)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has no PWM capability.",
            "address":806
          },
          {
            "id":"output.11",
            "type":12,
            "options":"map_outputs",
            "descr":"This setting specifies function of configurable output 12. (Requires expansion board)\nAfter changing this value it may be necessary to write the changes to the ECU memory and power it off before the changes take effect.\nThis pin has no PWM capability.",
            "address":808
          },
          {
            "id":"error2mask",
            "type":2,
            "address":76
          },
          {
            "id":"preglowtime",
            "type":1,
            "scale":0.100000,
            "unit":"s",
            "digits":1,
            "array":16,
            "descr":"If using the DSL1 to control a glow plug relay, this function specifies the glow duration after key-on depending on engine coolant temperature.",
            "address":738
          },
          {
            "id":"afterglowtime",
            "type":2,
            "scale":0.100000,
            "unit":"s",
            "digits":1,
            "array":16,
            "descr":"If using the DSL1 to control a glow plug relay, this function specifies the glow duration after engine is running depending on engine coolant temperature.",
            "address":754
          },
          {
            "id":"fantemperature",
            "type":11,
            "datatype":2,
            "scale":0.100000,
            "offset":-2731,
            "unit":"°C",
            "digits":1,
            "descr":"If using the DSL1 to control cooling fans, this setting specifies the temperature at which the fans will turn on if the engine is running.\nFans will not turn on unless engine is running.",
            "address":700
          },
          {
            "id":"fanhysteresis",
            "type":1,
            "scale":0.100000,
            "unit":"°C",
            "descr":"If using the DSL1 to control cooling fans, this setting specifies by how much the temperature needs to drop after the fans switch on before they will switch off.",
            "address":704
          },
          {
            "id":"fuelqtybreakpoints",
            "min":0.000000,
            "max":650.000000,
            "input":"fuelqty",
            "type":2,
            "unit":"µl\/event",
            "scale":0.010000,
            "array":8,
            "digits":1,
            "descr":"Breakpoints used for conversion of fuel quantity to desired rack position.",
            "address":508
          },
          {
            "id":"fueltorackpos",
            "min":0.000000,
            "max":10000,
            "type":2,
            "array":8,
            "descr":"This function converts commanded fuel injection quantity to a desired rack position for the rack control loop.\nThe rack position is unitless but across its range is a near linear function of physical rack travel.\nThere is also a more complex (more accurate) function available which allows the pump to be characterised based on rack position and engine speed, if accurate data is available.",
            "address":524
          },
          {
            "id":"revlimit",
            "unit":"RPM",
            "type":11,
            "datatype":2,
            "descr":"If this engine speed is exceeded, rack solenoid power is cut momentarily until engine speed drops below this value by the configured hysteresis amount.\n",
            "address":692
          },
          {
            "id":"revlimithysteresis",
            "unit":"RPM",
            "type":2,
            "address":696
          },
          {
            "id":"rpmaveraging",
            "type":1,
            "descr":"This setting specifies how many crank speed sensor pulses are to be ignored before each computation of the engine speed.\nIf the crank position sensor emits 100 pulses in one engine rotation, setting this value to 99 will make the ECU compute engine speed once per engine rotation. (twice per two rotations)",
            "address":812
          },
          {
            "id":"idleoffset",
            "type":11,
            "datatype":2,
            "min":0.000000,
            "max":300.000000,
            "unit":"µl\/event",
            "scale":0.010000,
            "digits":1,
            "sign":1,
            "descr":"This function specifies the approximate fuel injection quantity needed to maintain idle speed at different coolant temperatures.\nThe purpose is to make the idle control behaviour better across different temperatures by providing a feed-forward value, a starting point.",
            "address":552
          },
          {
            "id":"boostpidinterval",
            "type":1,
            "unit":"ms",
            "descr":"The interval at which the boost control PID loop runs. It's not typically useful to run the control loop a lot faster than the solenoid.\nWith a solenoid running at 20 Hz for example, divide 1\/20 to get 0.05 seconds or 50ms as the fastest practical update rate for the PID loop.\nIf the solenoid is running at 40Hz it can be useful to run the control loop as often as every 25ms.\nNote that changing this value alters the sensitivity of integral and derivative parts of control loop so tuning will be necessary if changed.",
            "address":2444
          },
          {
            "id":"boostmap",
            "type":11,
            "datatype":2,
            "describedby":"boostpressuresource",
            "descr":"This map is the target pressure for the boost control strategy. Normally this is in the same units as MAP, but by changing the pressure source it can be used to target cylinder air mass, post restrictor pressure, post compressor pressure, turbocharger speed or any other variable.",
            "address":84
          },
          {
            "id":"altboostmap",
            "type":11,
            "datatype":2,
            "describedby":"boostpressuresource",
            "descr":"This is an alernate boost target map, selectable by a switch input",
            "address":88
          },
          {
            "id":"wgdutymap",
            "type":11,
            "datatype":2,
            "unit":"%",
            "digits":1,
            "scale":0.003052,
            "descr":"In order to reduce the work the control loop integrator needs to do to find the necessary output effort, this map provides a feed forward input.",
            "address":92
          },
          {
            "id":"wgminmap",
            "type":11,
            "datatype":2,
            "unit":"%",
            "digits":1,
            "scale":0.003052,
            "descr":"To restrict the range a VGT turbocharger is capable of operating in, for example to prevent excessive back pressure during transient conditions or to force a certain position during engine braking, this map is provided to set the minimum effort commanded by the turbocharger control (fully open position of VGT).\r\nPlease note that this sets the control effort, if you are using a linearisation function on the output that is applied after this map.",
            "address":96
          },
          {
            "id":"wgmaxmap",
            "type":11,
            "datatype":2,
            "unit":"%",
            "digits":1,
            "scale":0.003052,
            "descr":"To restrict the range a VGT turbocharger is capable of operating in, for example to prevent excessive back pressure during transient conditions or to force a certain position during engine braking, this map is provided to set the maximum effort commanded by the turbocharger control (fully closed position of VGT).\r\nPlease note that this sets the control effort, if you are using a linearisation function on the output that is applied after this map.",
            "address":100
          },
          {
            "id":"boostperiod",
            "min":1,
            "max":500,
            "type":2,
            "scale":250000,
            "inverse":1,
            "unit":"Hz",
            "descr":"If using a PWM pneumatic solenoid for turbocharger boost control, this setting specifies the drive frequency. Most solenoids perform best in the range between 20-40Hz.",
            "address":216
          },
          {
            "id":"boostoptions",
            "type":2,
            "address":116
          },
          {
            "id":"boostKp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this map specifies the gain of the stateless (proportional) part of the control loop. A larger value makes the control more sensitive.",
            "address":196
          },
          {
            "id":"boostKi",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this map specifies the gain of the integral part of the control loop, as in at what rate the error value feeds into the integrator. A larger value makes the control more sensitive.",
            "address":200
          },
          {
            "id":"boostPDmap",
            "type":11,
            "datatype":2,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "descr":"The result of this map goes to the boostPD variable, which is added to the P, I and D variables. This is an optional adder or even replacement for the P and D components.\r\nNote that unlike the P and D gains this map is in percentage units and directly affects the output duty cycle. Generally in the positive error region the numbers should be negative, and get more negative the bigger the error is, and the inverse is true in the other half of the map.",
            "address":220
          },
          {
            "id":"boostIDmap",
            "type":11,
            "datatype":2,
            "unit":"%",
            "scale":0.003052,
            "digits":2,
            "sign":1,
            "descr":"If enabled, the values in this table are added to the integral.",
            "address":224
          },
          {
            "id":"boostp2enable",
            "type":8,
            "options":"enum_enabled",
            "address":"boostoptions.8.8",
            "descr":"This option enables a secondary control loop that takes over the control of the turbocharger using a secondary control parameter, but only if the target for the secondary parameter is exceeded."
          },
          {
            "id":"boostp3enable",
            "type":8,
            "options":"enum_enabled",
            "address":"boostoptions.9.9",
            "descr":"This option enables a secondary control loop that takes over the control of the turbocharger using a secondary control parameter, but only if the target for the secondary parameter is exceeded."
          },
          {
            "id":"boostparam2picker",
            "type":9,
            "maxwidth":2,
            "descr":"Normally the boost control is referenced to manifold absolute pressure (map) but in certain applications it may make sense to refer it to post restrictor pressure (prap), post compressor pressure (pcap), turbocharger speed or cylinder air mass in a MAF based application.",
            "address":228
          },
          {
            "id":"boostparam2map",
            "type":11,
            "datatype":2,
            "describedby":"boostparam2picker",
            "descr":"This map is the target pressure for the boost control strategy. Normally this is in the same units as MAP, but by changing the pressure source it can be used to target cylinder air mass, post restrictor pressure, post compressor pressure, turbocharger speed or any other variable.",
            "address":232
          },
          {
            "id":"boostparam2Kp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this map specifies the gain of the stateless (proportional) part of the control loop. A larger value makes the control more sensitive.",
            "address":236
          },
          {
            "id":"boostparam2Ki",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this map specifies the gain of the integral part of the control loop, as in at what rate the error value feeds into the integrator. A larger value makes the control more sensitive.",
            "address":240
          },
          {
            "id":"boostparam2Kd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this parameter specifies the gain of the derivative part of the control loop. The pressure difference between two consecutive iterations of the control loop feeds into the derivative. A larger value makes the control more sensitive.",
            "address":244
          },
          {
            "id":"boostparam2Imin",
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "type":11,
            "datatype":2,
            "sign":1,
            "descr":"The turbocharger boost control integrator can be restricted in range to improve response. This setting specifies the lower limit of the range and should normally be a negative number.",
            "address":248
          },
          {
            "id":"boostparam2Imax",
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "type":11,
            "datatype":2,
            "sign":1,
            "descr":"The turbocharger boost control integrator can be restricted in range to improve response. This setting specifies the upper limit of the range and should normally be a positive number.",
            "address":252
          },
          {
            "id":"boostparam3picker",
            "type":9,
            "maxwidth":2,
            "descr":"Normally the boost control is referenced to manifold absolute pressure (map) but in certain applications it may make sense to refer it to post restrictor pressure (prap), post compressor pressure (pcap), turbocharger speed or cylinder air mass in a MAF based application.",
            "address":256
          },
          {
            "id":"boostparam3map",
            "type":11,
            "datatype":2,
            "describedby":"boostparam3picker",
            "descr":"This map is the target pressure for the boost control strategy. Normally this is in the same units as MAP, but by changing the pressure source it can be used to target cylinder air mass, post restrictor pressure, post compressor pressure, turbocharger speed or any other variable.",
            "address":260
          },
          {
            "id":"boostparam3Kp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this map specifies the gain of the stateless (proportional) part of the control loop. A larger value makes the control more sensitive.",
            "address":264
          },
          {
            "id":"boostparam3Ki",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this map specifies the gain of the integral part of the control loop, as in at what rate the error value feeds into the integrator. A larger value makes the control more sensitive.",
            "address":268
          },
          {
            "id":"boostparam3Kd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this parameter specifies the gain of the derivative part of the control loop. The pressure difference between two consecutive iterations of the control loop feeds into the derivative. A larger value makes the control more sensitive.",
            "address":272
          },
          {
            "id":"boostparam3Imin",
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "type":11,
            "datatype":2,
            "sign":1,
            "descr":"The turbocharger boost control integrator can be restricted in range to improve response. This setting specifies the lower limit of the range and should normally be a negative number.",
            "address":276
          },
          {
            "id":"boostparam3Imax",
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "type":11,
            "datatype":2,
            "sign":1,
            "descr":"The turbocharger boost control integrator can be restricted in range to improve response. This setting specifies the upper limit of the range and should normally be a positive number.",
            "address":280
          },
          {
            "id":"boostpressuresource",
            "type":9,
            "maxwidth":2,
            "descr":"Normally the boost control is referenced to manifold absolute pressure (map) but in certain applications it may make sense to refer it to post restrictor pressure (prap), post compressor pressure (pcap), turbocharger speed or cylinder air mass in a MAF based application.",
            "address":80
          },
          {
            "id":"boostKd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "descr":"The turbocharger boost control makes use of a PID loop, this parameter specifies the gain of the derivative part of the control loop. The pressure difference between two consecutive iterations of the control loop feeds into the derivative. A larger value makes the control more sensitive.",
            "address":204
          },
          {
            "id":"boostImin",
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "type":11,
            "datatype":2,
            "sign":1,
            "descr":"The turbocharger boost control integrator can be restricted in range to improve response. This setting specifies the lower limit of the range and should normally be a negative number.",
            "address":208
          },
          {
            "id":"boostImax",
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "type":11,
            "datatype":2,
            "sign":1,
            "descr":"The turbocharger boost control integrator can be restricted in range to improve response. This setting specifies the upper limit of the range and should normally be a positive number.",
            "address":212
          },
          {
            "id":"boostienablerange",
            "type":2,
            "describedby":"boostpressuresource",
            "descr":"To prevent integral wind up, the integrator may be disabled and zeroed out when the actual pressure is below the target pressure by a greater amount than this setting specifies.",
            "address":194
          },
          {
            "id":"boostgp1mode",
            "type":8,
            "address":"boostoptions.0.1",
            "options":[
              "Disabled",
              "Limiter",
              "Adder"
            ],
            "descr":"The general purpose trims have two modes. One is as a limiter, reducing the maximum pressure commanded by the control. Another is as an adder, which can add or subtract from the final commanded value."
          },
          {
            "id":"boostgp2mode",
            "type":8,
            "address":"boostoptions.2.3",
            "options":[
              "Disabled",
              "Limiter",
              "Adder"
            ],
            "descr":"The general purpose trims have two modes. One is as a limiter, reducing the maximum pressure commanded by the control. Another is as an adder, which can add or subtract from the final commanded value."
          },
          {
            "id":"boostgp3mode",
            "type":8,
            "address":"boostoptions.4.5",
            "options":[
              "Disabled",
              "Limiter",
              "Adder"
            ],
            "descr":"The general purpose trims have two modes. One is as a limiter, reducing the maximum pressure commanded by the control. Another is as an adder, which can add or subtract from the final commanded value."
          },
          {
            "id":"boostgp1switch",
            "type":12,
            "options":"map_inputs",
            "descr":"If you would like to apply the trim conditionally, for example only when launch control is active, only in low gear or even activated by a switch input, select the condition here. Otherwise select 'Always on'.",
            "address":106
          },
          {
            "id":"boostgp2switch",
            "type":12,
            "options":"map_inputs",
            "descr":"If you would like to apply the trim conditionally, for example only when launch control is active, only in low gear or even activated by a switch input, select the condition here. Otherwise select 'Always on'.",
            "address":108
          },
          {
            "id":"boostgp3switch",
            "type":12,
            "options":"map_inputs",
            "descr":"If you would like to apply the trim conditionally, for example only when launch control is active, only in low gear or even activated by a switch input, select the condition here. Otherwise select 'Always on'.",
            "address":110
          },
          {
            "id":"boostgp1",
            "type":11,
            "datatype":2,
            "sign":1,
            "describedby":"boostpressuresource",
            "descr":"The output of this function can be seen on real time variable 'boostgptrim1' when the trim is active.",
            "address":112
          },
          {
            "id":"boostgp2",
            "type":11,
            "datatype":2,
            "sign":1,
            "describedby":"boostpressuresource",
            "descr":"The output of this function can be seen on real time variable 'boostgptrim2' when the trim is active.",
            "address":120
          },
          {
            "id":"boostgp3",
            "type":11,
            "datatype":2,
            "sign":1,
            "describedby":"boostpressuresource",
            "descr":"The output of this function can be seen on real time variable 'boostgptrim3' when the trim is active.",
            "address":124
          },
          {
            "id":"boost_nonlinear",
            "type":8,
            "options":"enum_enabled",
            "address":"boostoptions.6.6",
            "descr":"If this parameter is enabled, the boost duty translation curve is used to translate control loop effort to output duty cycle. Useful in case the control actuator response is far from linear.\r\nWhen this is the case, the boostctlcmd real time variable represents the control loop output and boostduty represents the actual output duty cycle.\r\nThe base duty cycle is a part of the control loop so it is included in boostctlcmd."
          },
          {
            "id":"boostzerointbelow",
            "type":8,
            "options":"enum_enabled",
            "address":"boostoptions.7.7",
            "descr":"To prevent integral wind up, the integrator may be disabled and zeroed out when the actual pressure is far below the target pressure."
          },
          {
            "id":"boostdutybpcount",
            "type":1,
            "max":16,
            "address":128
          },
          {
            "id":"boostdutybreakpts",
            "type":2,
            "array":16,
            "cols":"boostdutybpcount",
            "unit":"%",
            "scale":0.003052,
            "input":"boostctlcmd",
            "digits":1,
            "address":130
          },
          {
            "id":"boostdutycurve",
            "type":2,
            "array":16,
            "cols":"boostdutybpcount",
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":162
          },
          {
            "id":"turbooverridetrigger",
            "type":12,
            "options":"map_inputs",
            "descr":"When the selected input is active, the turbocharger output duty prior to the translation function is handled by the override function rather than the turbocharger control loop. This is useful for handling turbocharger control in overrun conditions or during launch control.",
            "address":284
          },
          {
            "id":"turbooverrideduty",
            "type":11,
            "datatype":2,
            "unit":"%",
            "digits":1,
            "scale":0.003052,
            "address":288
          },
          {
            "id":"pwmdivider",
            "type":1,
            "descr":"The PWM frequency of the rack control solenoid is specified by this value. The frequency is 2197\/(1 + this value).\nMaximum frequency is thus 2197Hz with a value of 0. A higher frequency results in smoother rack operation but due to stiction, some amount of induced vibration may be desirable.\nThe default value is 73Hz (divider value of 29).\nAfter changing this value it may be necessary to write the changes to the ECU and power it off before the changes take effect.",
            "address":813
          },
          {
            "id":"rackfilter",
            "type":1,
            "min":4,
            "max":32,
            "descr":"The inductance value of each rack position sensor is sampled 500 times per second. This setting specifies how many samples are averaged together to produce a clean reading of rack position.\nLess averaging produces a noisier reading which may affect performance of control loop.\nMore averaging produces a cleaner reading but induces a lag in the reading.\nPosition is updated at same rate regardless of averaging value.",
            "address":814
          },
          {
            "id":"overrunthrottle",
            "type":2,
            "scale":0.097656,
            "digits":1,
            "unit":"%",
            "descr":"Accelerator pedal position must go below this value to enter overrun mode. Overrun mode is exited when pedal goes 1% above this value.",
            "address":1634
          },
          {
            "id":"overruncutspeed",
            "type":2,
            "unit":"RPM",
            "descr":"The engine speed must be above this value to enter overrun mode. Overrun mode exits if the engine speed drops below the configured resume speed or if the accelerator pedal position is increased.",
            "address":1636
          },
          {
            "id":"overrunresumespeed",
            "type":2,
            "unit":"RPM",
            "descr":"If in overrun fuel cut mode, once the engine speed drops below this value, overrun mode exits.",
            "address":1638
          },
          {
            "id":"overrundelay",
            "type":1,
            "unit":"s",
            "scale":0.100000,
            "digits":1,
            "descr":"Overrun mode will enter after all conditions are met for this amount of time.",
            "address":1640
          },
          {
            "id":"orfcenable",
            "type":8,
            "address":"bits0.1.1",
            "options":"enum_enabled",
            "descr":"Overrun fuel cut mode shuts off fuelling completely when the driver lifts off the accelerator pedal.\nThis provides maximum engine braking and includes some hysteresis to ensure a smooth resume when the engine speed drops."
          },
          {
            "id":"gpioondelay0",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1526
          },
          {
            "id":"gpiooffdelay0",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1562
          },
          {
            "id":"gpiomaxduration0",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1598
          },
          {
            "id":"gpiocond1var0",
            "compact":0,
            "type":9,
            "address":820
          },
          {
            "id":"gpiocond1val0",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var0",
            "address":892
          },
          {
            "id":"gpiocond1hyster0",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var0",
            "relative":1,
            "address":964
          },
          {
            "id":"gpiocond1param0",
            "compact":0,
            "type":1,
            "address":1036
          },
          {
            "id":"gpiocond1type0",
            "type":8,
            "compact":18,
            "options":"enum_moreless",
            "address":"gpiocond1param0.0.2"
          },
          {
            "id":"gpiocond1and0",
            "type":8,
            "compact":18,
            "options":"enum_andor",
            "address":"gpiocond1param0.3.4"
          },
          {
            "id":"gpiocond2var0",
            "compact":0,
            "type":9,
            "address":1056
          },
          {
            "id":"gpiocond2val0",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var0",
            "address":1128
          },
          {
            "id":"gpiocond2hyster0",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var0",
            "relative":1,
            "address":1200
          },
          {
            "id":"gpiocond2param0",
            "compact":0,
            "type":1,
            "address":1272
          },
          {
            "id":"gpiocond2type0",
            "type":8,
            "compact":18,
            "options":"enum_moreless",
            "address":"gpiocond2param0.0.2"
          },
          {
            "id":"gpiocond2and0",
            "type":8,
            "compact":18,
            "options":"enum_andor",
            "address":"gpiocond2param0.3.4"
          },
          {
            "id":"gpiocond3var0",
            "compact":0,
            "type":9,
            "address":1292
          },
          {
            "id":"gpiocond3val0",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var0",
            "address":1364
          },
          {
            "id":"gpiocond3hyster0",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var0",
            "relative":1,
            "address":1436
          },
          {
            "id":"gpiocond3param0",
            "compact":0,
            "type":1,
            "address":1508
          },
          {
            "id":"gpiocond3type0",
            "type":8,
            "compact":18,
            "options":"enum_moreless",
            "address":"gpiocond3param0.0.2"
          },
          {
            "id":"cruiseKp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":1644
          },
          {
            "id":"cruiseKi",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":1648
          },
          {
            "id":"cruiseKd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":1652
          },
          {
            "id":"cruiseImax",
            "type":11,
            "datatype":2,
            "sign":1,
            "descr":"Unlike most other control loops in the system, the cruise control provides no feed-forward mechanism,\nthus the cruise integrator max limit effectively sets how much accelerator pedal input the cruise control is allowed to use when maintaining set speed.",
            "address":1656
          },
          {
            "id":"cruiseminspeed",
            "type":2,
            "unit":"km\/h",
            "digits":1,
            "scale":0.100000,
            "descr":"Road speed must be greater than this value to enable cruise control. If operating cruise control by engine speed and no road speed reference is available, set this to zero.",
            "address":1660
          },
          {
            "id":"cruisedefaultspeed",
            "type":2,
            "unit":"km\/h",
            "digits":1,
            "scale":0.100000,
            "descr":"When the ECU powers up, this is the speed assigned to the cruise control so that if the resume button is used, this is the speed the car will cruise at until adjusted by accel\/decel or set.\nIf using engine speed for cruise control reference, there is a tenfold gain, as in, a value of 200 means 2000RPM",
            "address":2446
          },
          {
            "id":"cruisestep",
            "type":1,
            "unit":"km\/h",
            "digits":1,
            "scale":0.100000,
            "min":0.100000,
            "max":5,
            "descr":"This setting specifies the step increase\/decrease in speed when using the accel\/decel buttons during cruise control operation.\nWhen using engine speed for reference, there is a tenfold gain, so a value of 1 means 10RPM.",
            "address":1662
          },
          {
            "id":"cruiseaccelrate",
            "type":1,
            "unit":"km\/h\/second",
            "min":1,
            "max":20,
            "descr":"This setting only has an effect when continous acceleration is enabled.",
            "address":4820
          },
          {
            "id":"cruisecontinuousdelay",
            "type":1,
            "unit":"s",
            "digits":1,
            "scale":0.100000,
            "descr":"This setting specifies how long the accel\/decel buttons must be held to enter continuous accel\/decel mode.",
            "address":4821
          },
          {
            "id":"cruiseenable",
            "type":8,
            "options":"enum_enabled",
            "address":"bits0.2.2"
          },
          {
            "id":"cruise_enginespeedbased",
            "type":8,
            "options":"enum_enabled",
            "address":"bits0.3.3",
            "descr":"This setting can be used to enable cruise control on a manual transmission car that does not have a vehicle speed sensor connected to the ECU."
          },
          {
            "id":"cruise_continuous",
            "type":8,
            "options":[
              "Step",
              "Continuous"
            ],
            "address":"bits0.27.27",
            "descr":"In step mode (traditionally the only mode) the accel\/decel buttons for the cruise control will increase or decrease the speed by a set amount each time they are pressed.\r\nIn continuous mode, they will initially increase\/decrease the speed by the step size but if held longer than the specified delay they will continually adjust the speed at the configured rate until they are released. When they are released the current speed becomes the set speed."
          },
          {
            "id":"cruisemaxthrottle",
            "type":11,
            "datatype":2,
            "scale":0.097656,
            "digits":1,
            "max":100,
            "unit":"%",
            "descr":"Limits the maximum pedal input the cruise control can emulate.",
            "address":1668
          },
          {
            "id":"cruisesmoothing",
            "type":1,
            "scale":0.390588,
            "digits":1,
            "unit":"%",
            "descr":"For preventing sharp and unpleasant input from the cruise control, this smoothing filter is provided.\nIt is an exponential decay filter that updates at 5Hz like the cruise control PID loop. A value of 0 means no filtering is done, and as the values approach 100% the filtering gets gradually more aggressive.\nTypical values are in the range of 50-90%.",
            "address":2445
          },
          {
            "id":"bits0",
            "type":3,
            "address":0
          },
          {
            "id":"canmode",
            "type":8,
            "options":"enum_canspeed",
            "descr":"This setting must match what is used by all other devices on the CAN bus. Changes to this setting require that the ECU memory is written and the ECU then powered off and back on to apply the settings.",
            "address":816
          },
          {
            "id":"canbcenable",
            "type":8,
            "address":"bits0.12.12",
            "options":"enum_enabled",
            "descr":"Enables transmission of standard format CAN groups, 4 16 bit variables per group, little endian."
          },
          {
            "id":"canrxenable",
            "type":8,
            "address":"bits0.13.13",
            "options":"enum_enabled",
            "descr":"Enables processing of incoming CAN packets. Required for receiving CAN data from other modules and also for OBD2 interfacing to work."
          },
          {
            "id":"customcanenable",
            "type":8,
            "address":"bits0.14.14",
            "options":"enum_enabled",
            "descr":"Enables transmission of custom formatted CAN groups"
          },
          {
            "id":"intlog_enable",
            "type":8,
            "options":"enum_enabled",
            "address":"bits0.4.4",
            "descr":"Requires the controller to be fitted with the internal data logging option"
          },
          {
            "id":"logburstenable",
            "type":8,
            "options":"enum_enabled",
            "address":"bits0.5.5",
            "descr":"If this option is enabled, the internal logging can be configured to log at a slow rate normally but trigger a faster logging rate under conditions when something is going on that needs to be captured in higher resolution, such as going full throttle."
          },
          {
            "id":"compactstructuredlog",
            "type":8,
            "options":[
              "Record all channels at lowest rate",
              "Record only selected channels"
            ],
            "address":"bits0.26.26",
            "descr":"If 'Record only selected channels' is selected, only the structured subset channels are recorded to the log. This results in smaller log files but also potentially missing important data"
          },
          {
            "id":"sdloginterval",
            "min":1,
            "max":500,
            "type":2,
            "scale":1000,
            "inverse":1,
            "unit":"Hz",
            "address":1676
          },
          {
            "id":"sdlogburstinterval",
            "min":1,
            "max":500,
            "type":2,
            "scale":1000,
            "inverse":1,
            "unit":"Hz",
            "address":1678
          },
          {
            "id":"sdloggingmaxfiles",
            "type":2,
            "descr":"If this value is non-zero and more files than this are found in the internal logging memory, older files will be deleted on ECU power on.",
            "address":1682
          },
          {
            "id":"sdlogmode",
            "type":8,
            "options":[
              [
                1,
                "Standard"
              ],
              [
                2,
                "Event log"
              ],
              [
                3,
                "Structured log"
              ]
            ],
            "descr":"In standard mode, the logger records a full snapshot of every real time variable at the specified interval.\r\nIn event log mode, the interval is ignored and the logger records crank\/cam sensor events as well as fuel\/ignition output events as they occur.\r\nThe structured log mode allows the recording of all log channels at a low rate and a selected subset of channels at a higher rate.",
            "address":1680
          },
          {
            "id":"logchanspergroup",
            "type":1,
            "min":1,
            "max":32,
            "descr":"This parameter adjusts the number of available slots in each log channel group, for backwards compatibility reasons this defaults to 16 but can now be set as large as 32",
            "address":1681
          },
          {
            "id":"prioritylogchans",
            "type":9,
            "array":128,
            "verbose":1,
            "rows":"logchanspergroup",
            "cols":4,
            "descr":"Channels to be logged at a faster rate when in structured logging mode. Fill bottom rows first and set all unused slots to const_zero. Do not leave any gaps in the selection. (Slots that are used must be continuous, starting from the bottom at row 0)",
            "address":6936
          },
          {
            "id":"prioritylograte",
            "min":4,
            "max":1000,
            "type":1,
            "scale":1000,
            "inverse":1,
            "unit":"Hz",
            "array":8,
            "rows":2,
            "cols":4,
            "descr":"Set unused groups to the lowest frequency (4Hz). For best results the logging rates should all be multiples of the base log frequency in normal mode and burst mode respectively.",
            "address":7448
          },
          {
            "id":"maxloglength",
            "type":2,
            "unit":"s",
            "descr":"Set to zero and the log will record until controller is powered off or logging is ended via PC control.\r\nOtherwise this value sets the maximum log duration before logging is ended and if conditions for starting are met a new log file will be recorded.",
            "address":1684
          },
          {
            "id":"minloglength",
            "type":2,
            "unit":"s",
            "descr":"Set to zero to disable this feature.\r\nAny other value will end the log being recorded if the conditions for log start have not been met for the set amount of time.",
            "address":1686
          },
          {
            "id":"idleserviceinterval",
            "type":1,
            "unit":"ms",
            "descr":"This is the rate at which the idle control loop runs. It's generally not useful to run the idle control loop more often than the cylinders fire at idle.\nIn case of a 6 cylinder engine idling at 700RPM, there's one cylinder firing every 28 milliseconds.",
            "address":540
          },
          {
            "id":"vsssmoothing",
            "type":1,
            "unit":"%",
            "scale":0.390625,
            "digits":1,
            "descr":"This filter smooths out the road speed signal. It's an exponential decay filter and updates every time there is an impulse from the speed sensor. Useful for getting smoother behaviour out of the cruise control if the signal quality is poor.",
            "address":1690
          },
          {
            "id":"vssfilter",
            "type":2,
            "unit":"µs",
            "descr":"If a vehicle speed sensor impulse is received within this time since the last impulse, it is considered noise and ignored.\nIf this filter is set to a value too long, the speed signal will register correctly up to a certain speed and then start showing wrong numbers but never above the speed where it goes bad.",
            "address":1688
          },
          {
            "id":"cruisemaxrpm",
            "type":2,
            "unit":"RPM",
            "descr":"If the engine speed exceeds this value, cruise control switches off. For engine protection in case neutral gear or clutch is depressed while cruise is active.",
            "address":1664
          },
          {
            "id":"pwm0period",
            "type":2,
            "scale":500000,
            "inverse":1,
            "max":"2000",
            "unit":"Hz",
            "reset":1,
            "address":1692
          },
          {
            "id":"pwm0primaryxvar",
            "type":9,
            "maxwidth":2,
            "address":1696
          },
          {
            "id":"pwm0primaryyvar",
            "type":9,
            "maxwidth":2,
            "address":1700
          },
          {
            "id":"pwm0secondaryxvar",
            "type":9,
            "maxwidth":2,
            "address":1704
          },
          {
            "id":"pwm0secondaryyvar",
            "type":9,
            "maxwidth":2,
            "address":1708
          },
          {
            "id":"pwm0ternaryxvar",
            "type":9,
            "maxwidth":2,
            "address":1712
          },
          {
            "id":"pwm0ternaryyvar",
            "type":9,
            "maxwidth":2,
            "address":1716
          },
          {
            "id":"pwm0primaryxaxis",
            "type":2,
            "array":8,
            "describedby":"pwm0primaryxvar",
            "address":1720
          },
          {
            "id":"pwm0primaryyaxis",
            "type":2,
            "array":8,
            "describedby":"pwm0primaryyvar",
            "address":1736
          },
          {
            "id":"pwm0secondaryxaxis",
            "type":2,
            "array":8,
            "describedby":"pwm0secondaryxvar",
            "address":1752
          },
          {
            "id":"pwm0secondaryyaxis",
            "type":2,
            "array":8,
            "describedby":"pwm0secondaryyvar",
            "address":1768
          },
          {
            "id":"pwm0ternaryxaxis",
            "type":2,
            "array":8,
            "describedby":"pwm0ternaryxvar",
            "address":1784
          },
          {
            "id":"pwm0ternaryyaxis",
            "type":2,
            "array":8,
            "describedby":"pwm0ternaryyvar",
            "address":1800
          },
          {
            "id":"pwm0primary",
            "type":1,
            "unit":"%",
            "max":100,
            "digits":1,
            "scale":0.392157,
            "array":64,
            "rows":8,
            "cols":8,
            "address":1816
          },
          {
            "id":"pwm0secondary",
            "type":1,
            "digits":2,
            "scale":0.010000,
            "array":64,
            "rows":8,
            "cols":8,
            "address":1880
          },
          {
            "id":"pwm0ternary",
            "type":1,
            "digits":2,
            "scale":0.010000,
            "array":64,
            "rows":8,
            "cols":8,
            "address":1944
          },
          {
            "id":"pwm0mode",
            "type":1,
            "address":2008
          },
          {
            "id":"pwm0tabsel",
            "type":8,
            "address":"pwm0mode.0.1",
            "options":[
              "Single table",
              "Dual tables",
              "Triple tables"
            ]
          },
          {
            "id":"pwm1enable",
            "type":12,
            "options":"map_inputs",
            "address":2110
          },
          {
            "id":"pwm1defaultduty",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.003052,
            "digits":1,
            "descr":"If the control loop is disabled via the enable input, this is the duty cycle the output assumes. This value is not restricted by the maximum\/minimum duty limits set for the control loop.",
            "address":2112
          },
          {
            "id":"pwm1options",
            "type":1,
            "address":2013
          },
          {
            "id":"pwm1polarised",
            "type":8,
            "address":"pwm1options.0.0",
            "options":"enum_enabled",
            "descr":"If this mode is enabled, the function will be capable of putting out negative duty cycle. To make use of this capability the output must be assigned to an internal H bridge or an external H bridge adapter used in conjunction with a second output configured as a polarity output."
          },
          {
            "id":"pwm1Igplimit",
            "type":8,
            "address":"pwm1options.3.3",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be limited based on any variable, useful to limit motor actuator power when close to the edge of its travel for example."
          },
          {
            "id":"pwm1Igpmod",
            "type":8,
            "address":"pwm1options.4.4",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be multiplied based on any variable, useful to adjust motor current for battery voltage for example."
          },
          {
            "id":"pwm1slewlimit_enable",
            "type":8,
            "address":"pwm1options.5.5",
            "options":"enum_enabled",
            "descr":"If enabled, the setpoint rate of change is limited to a set value per PID cycle"
          },
          {
            "id":"pwm1slewlimit",
            "type":11,
            "datatype":2,
            "describedby":"pwm1var",
            "relative":1,
            "address":2104
          },
          {
            "id":"pwm1targetfilter",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "descr":"This is an exponential decay low pass filter applied to the set point of the PID function. A value of for example 99% means that for each sample taken, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%",
            "digits":2,
            "address":2108
          },
          {
            "id":"pwm1gplimit",
            "type":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "array":16,
            "rows":2,
            "cols":8,
            "address":2052
          },
          {
            "id":"pwm1gplimitsrc",
            "type":9,
            "maxwidth":2,
            "address":2048
          },
          {
            "id":"pwm1gplimitpts",
            "type":2,
            "describedby":"pwm1gplimitsrc",
            "array":8,
            "address":2084
          },
          {
            "id":"pwm1gpdutymod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.000977,
            "descr":"This value is multiplied by the output duty cycle, after the general purpose limit is applied but before the hard limit is applied.",
            "address":2100
          },
          {
            "id":"pwm1period",
            "type":2,
            "scale":1000000,
            "inverse":1,
            "max":"2000",
            "unit":"Hz",
            "descr":"If assigned to a PWM output pin, this parameter specifies the PWM frequency. Note that not all pins support the same maximum PWM frequency.",
            "address":2010
          },
          {
            "id":"pwm1pidserviceperiod",
            "type":1,
            "unit":"ms",
            "descr":"This parameter specifies the interval at which the PID loop runs. Shortening the interval makes the integrator more sensitive and derivative less sensitive so adjustments will call for retuning of the PID parameters.\r\nTo disable the PID service, set this parameter's value to zero.",
            "address":2012
          },
          {
            "id":"pwm1var",
            "type":9,
            "maxwidth":2,
            "address":2016
          },
          {
            "id":"pwm1target",
            "type":11,
            "datatype":2,
            "describedby":"pwm1var",
            "address":2020
          },
          {
            "id":"pwm1base",
            "type":11,
            "datatype":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2024
          },
          {
            "id":"pwm1minduty",
            "type":2,
            "scale":0.003052,
            "sign":1,
            "digits":1,
            "address":2116
          },
          {
            "id":"pwm1maxduty",
            "type":2,
            "scale":0.003052,
            "sign":1,
            "digits":1,
            "address":2118
          },
          {
            "id":"pwm1Kp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2028
          },
          {
            "id":"pwm1Ki",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2032
          },
          {
            "id":"pwm1Kd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2036
          },
          {
            "id":"pwm1Imin",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2040
          },
          {
            "id":"pwm1Imax",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2044
          },
          {
            "id":"pwm2enable",
            "type":12,
            "options":"map_inputs",
            "address":2218
          },
          {
            "id":"pwm2defaultduty",
            "type":11,
            "datatype":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "descr":"If the control loop is disabled via the enable input, this is the duty cycle the output assumes. This value is not restricted by the maximum\/minimum duty limits set for the control loop.",
            "address":2220
          },
          {
            "id":"pwm2options",
            "type":1,
            "address":2123
          },
          {
            "id":"pwm2polarised",
            "type":8,
            "address":"pwm2options.0.0",
            "options":"enum_enabled",
            "descr":"If this mode is enabled, the function will be capable of putting out negative duty cycle. To make use of this capability the output must be assigned to an internal H bridge or an external H bridge adapter used in conjunction with a second output configured as a polarity output."
          },
          {
            "id":"pwm2Igplimit",
            "type":8,
            "address":"pwm2options.3.3",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be limited based on any variable, useful to limit motor actuator power when close to the edge of its travel for example."
          },
          {
            "id":"pwm2Igpmod",
            "type":8,
            "address":"pwm2options.4.4",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be multiplied based on any variable, useful to adjust motor current for battery voltage for example."
          },
          {
            "id":"pwm2slewlimit_enable",
            "type":8,
            "address":"pwm2options.5.5",
            "options":"enum_enabled",
            "descr":"If enabled, the setpoint rate of change is limited to a set value per PID cycle"
          },
          {
            "id":"pwm2slewlimit",
            "type":11,
            "datatype":2,
            "describedby":"pwm2var",
            "relative":1,
            "address":2212
          },
          {
            "id":"pwm2targetfilter",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "descr":"This is an exponential decay low pass filter applied to the set point of the PID function. A value of for example 99% means that for each sample taken, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%",
            "digits":2,
            "address":2216
          },
          {
            "id":"pwm2gplimit",
            "type":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "array":16,
            "rows":2,
            "cols":8,
            "address":2160
          },
          {
            "id":"pwm2gplimitsrc",
            "type":9,
            "maxwidth":2,
            "address":2156
          },
          {
            "id":"pwm2gplimitpts",
            "type":2,
            "describedby":"pwm2gplimitsrc",
            "array":8,
            "address":2192
          },
          {
            "id":"pwm2gpdutymod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.000977,
            "descr":"This value is multiplied by the output duty cycle, after the general purpose limit is applied but before the hard limit is applied.",
            "address":2208
          },
          {
            "id":"pwm2period",
            "type":2,
            "scale":1000000,
            "inverse":1,
            "max":"2000",
            "unit":"Hz",
            "descr":"If assigned to a PWM output pin, this parameter specifies the PWM frequency. Note that not all pins support the same maximum PWM frequency.",
            "address":2120
          },
          {
            "id":"pwm2pidserviceperiod",
            "type":1,
            "unit":"ms",
            "descr":"This parameter specifies the interval at which the PID loop runs. Shortening the interval makes the integrator more sensitive and derivative less sensitive so adjustments will call for retuning of the PID parameters.\r\nTo disable the PID service, set this parameter's value to zero.",
            "address":2122
          },
          {
            "id":"pwm2var",
            "type":9,
            "maxwidth":2,
            "address":2124
          },
          {
            "id":"pwm2target",
            "type":11,
            "datatype":2,
            "describedby":"pwm2var",
            "address":2128
          },
          {
            "id":"pwm2base",
            "type":11,
            "datatype":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2132
          },
          {
            "id":"pwm2minduty",
            "type":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2224
          },
          {
            "id":"pwm2maxduty",
            "type":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2226
          },
          {
            "id":"pwm2Kp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2136
          },
          {
            "id":"pwm2Ki",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2140
          },
          {
            "id":"pwm2Kd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2144
          },
          {
            "id":"pwm2Imin",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2148
          },
          {
            "id":"pwm2Imax",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2152
          },
          {
            "id":"pwm3enable",
            "type":12,
            "options":"map_inputs",
            "address":2326
          },
          {
            "id":"pwm3defaultduty",
            "type":11,
            "datatype":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "descr":"If the control loop is disabled via the enable input, this is the duty cycle the output assumes. This value is not restricted by the maximum\/minimum duty limits set for the control loop.",
            "address":2328
          },
          {
            "id":"pwm3options",
            "type":1,
            "address":2231
          },
          {
            "id":"pwm3polarised",
            "type":8,
            "address":"pwm3options.0.0",
            "options":"enum_enabled",
            "descr":"If this mode is enabled, the function will be capable of putting out negative duty cycle. To make use of this capability the output must be assigned to an internal H bridge or an external H bridge adapter used in conjunction with a second output configured as a polarity output."
          },
          {
            "id":"pwm3Igplimit",
            "type":8,
            "address":"pwm3options.3.3",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be limited based on any variable, useful to limit motor actuator power when close to the edge of its travel for example."
          },
          {
            "id":"pwm3Igpmod",
            "type":8,
            "address":"pwm3options.4.4",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be multiplied based on any variable, useful to adjust motor current for battery voltage for example."
          },
          {
            "id":"pwm3slewlimit_enable",
            "type":8,
            "address":"pwm3options.5.5",
            "options":"enum_enabled",
            "descr":"If enabled, the setpoint rate of change is limited to a set value per PID cycle"
          },
          {
            "id":"pwm3slewlimit",
            "type":11,
            "datatype":2,
            "describedby":"pwm3var",
            "relative":1,
            "address":2320
          },
          {
            "id":"pwm3targetfilter",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "descr":"This is an exponential decay low pass filter applied to the set point of the PID function. A value of for example 99% means that for each sample taken, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%",
            "digits":2,
            "address":2324
          },
          {
            "id":"pwm3gplimit",
            "type":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "array":16,
            "rows":2,
            "cols":8,
            "address":2268
          },
          {
            "id":"pwm3gplimitsrc",
            "type":9,
            "maxwidth":2,
            "address":2264
          },
          {
            "id":"pwm3gplimitpts",
            "type":2,
            "describedby":"pwm3gplimitsrc",
            "array":8,
            "address":2300
          },
          {
            "id":"pwm3gpdutymod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.000977,
            "descr":"This value is multiplied by the output duty cycle, after the general purpose limit is applied but before the hard limit is applied.",
            "address":2316
          },
          {
            "id":"pwm3period",
            "type":2,
            "scale":1000000,
            "inverse":1,
            "max":"2000",
            "unit":"Hz",
            "descr":"If assigned to a PWM output pin, this parameter specifies the PWM frequency. Note that not all pins support the same maximum PWM frequency.",
            "address":2228
          },
          {
            "id":"pwm3pidserviceperiod",
            "type":1,
            "unit":"ms",
            "descr":"This parameter specifies the interval at which the PID loop runs. Shortening the interval makes the integrator more sensitive and derivative less sensitive so adjustments will call for retuning of the PID parameters.\r\nTo disable the PID service, set this parameter's value to zero.",
            "address":2230
          },
          {
            "id":"pwm3var",
            "type":9,
            "maxwidth":2,
            "address":2232
          },
          {
            "id":"pwm3target",
            "type":11,
            "datatype":2,
            "describedby":"pwm3var",
            "address":2236
          },
          {
            "id":"pwm3base",
            "type":11,
            "datatype":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2240
          },
          {
            "id":"pwm3minduty",
            "type":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2332
          },
          {
            "id":"pwm3maxduty",
            "type":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2334
          },
          {
            "id":"pwm3Kp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2244
          },
          {
            "id":"pwm3Ki",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2248
          },
          {
            "id":"pwm3Kd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2252
          },
          {
            "id":"pwm3Imin",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2256
          },
          {
            "id":"pwm3Imax",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2260
          },
          {
            "id":"pwm4enable",
            "type":12,
            "options":"map_inputs",
            "address":2434
          },
          {
            "id":"pwm4defaultduty",
            "type":11,
            "datatype":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "descr":"If the control loop is disabled via the enable input, this is the duty cycle the output assumes. This value is not restricted by the maximum\/minimum duty limits set for the control loop.",
            "address":2436
          },
          {
            "id":"pwm4options",
            "type":1,
            "address":2339
          },
          {
            "id":"pwm4polarised",
            "type":8,
            "address":"pwm4options.0.0",
            "options":"enum_enabled",
            "descr":"If this mode is enabled, the function will be capable of putting out negative duty cycle. To make use of this capability the output must be assigned to an internal H bridge or an external H bridge adapter used in conjunction with a second output configured as a polarity output."
          },
          {
            "id":"pwm4Igplimit",
            "type":8,
            "address":"pwm4options.3.3",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be limited based on any variable, useful to limit motor actuator power when close to the edge of its travel for example."
          },
          {
            "id":"pwm4Igpmod",
            "type":8,
            "address":"pwm4options.4.4",
            "options":"enum_enabled",
            "descr":"If enabled, the output duty of the PID function can be multiplied based on any variable, useful to adjust motor current for battery voltage for example."
          },
          {
            "id":"pwm4slewlimit_enable",
            "type":8,
            "address":"pwm4options.5.5",
            "options":"enum_enabled",
            "descr":"If enabled, the setpoint rate of change is limited to a set value per PID cycle"
          },
          {
            "id":"pwm4slewlimit",
            "type":11,
            "datatype":2,
            "describedby":"pwm4var",
            "relative":1,
            "address":2428
          },
          {
            "id":"pwm4targetfilter",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "descr":"This is an exponential decay low pass filter applied to the set point of the PID function. A value of for example 99% means that for each sample taken, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%",
            "digits":2,
            "address":2432
          },
          {
            "id":"pwm4gplimit",
            "type":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "array":16,
            "rows":2,
            "cols":8,
            "address":2376
          },
          {
            "id":"pwm4gplimitsrc",
            "type":9,
            "maxwidth":2,
            "address":2372
          },
          {
            "id":"pwm4gplimitpts",
            "type":2,
            "describedby":"pwm4gplimitsrc",
            "array":8,
            "address":2408
          },
          {
            "id":"pwm4gpdutymod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.000977,
            "descr":"This value is multiplied by the output duty cycle, after the general purpose limit is applied but before the hard limit is applied.",
            "address":2424
          },
          {
            "id":"pwm4period",
            "type":2,
            "scale":1000000,
            "inverse":1,
            "max":"2000",
            "unit":"Hz",
            "descr":"If assigned to a PWM output pin, this parameter specifies the PWM frequency. Note that not all pins support the same maximum PWM frequency.",
            "address":2336
          },
          {
            "id":"pwm4pidserviceperiod",
            "type":1,
            "unit":"ms",
            "descr":"This parameter specifies the interval at which the PID loop runs. Shortening the interval makes the integrator more sensitive and derivative less sensitive so adjustments will call for retuning of the PID parameters.\r\nTo disable the PID service, set this parameter's value to zero.",
            "address":2338
          },
          {
            "id":"pwm4var",
            "type":9,
            "maxwidth":2,
            "address":2340
          },
          {
            "id":"pwm4target",
            "type":11,
            "datatype":2,
            "describedby":"pwm4var",
            "address":2344
          },
          {
            "id":"pwm4base",
            "type":11,
            "datatype":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2348
          },
          {
            "id":"pwm4minduty",
            "type":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2440
          },
          {
            "id":"pwm4maxduty",
            "type":2,
            "scale":0.003052,
            "digits":1,
            "sign":1,
            "address":2442
          },
          {
            "id":"pwm4Kp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2352
          },
          {
            "id":"pwm4Ki",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2356
          },
          {
            "id":"pwm4Kd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000244,
            "digits":4,
            "address":2360
          },
          {
            "id":"pwm4Imin",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2364
          },
          {
            "id":"pwm4Imax",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":2368
          },
          {
            "id":"analogfilter0",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2448
          },
          {
            "id":"antidecelthreshold",
            "type":1,
            "unit":"%",
            "digits":1,
            "scale":0.390625,
            "descr":"If the engine speed drops by more than this between two engine speed calculation events (normally coincides with two cylinders firing, depending on engine speed sensor tooth count and config),\nthe anti decel torque increase is commanded. This strategy is proactive, it sets a timer for when it expects to see the next engine speed update and triggers the torque increase if that time passes before another engine speed update is performed.\nThe fuel added by this strategy appears on the idle control integrator.\nTo disable this strategy set this value to zero.",
            "address":2480
          },
          {
            "id":"antideceleffect",
            "type":2,
            "unit":"µl",
            "scale":0.010000,
            "digits":2,
            "descr":"This setting specifies the fuel quantity added by the anti decel strategy if triggered.",
            "address":2482
          },
          {
            "id":"antistallspeed",
            "type":2,
            "unit":"RPM",
            "descr":"If the engine speed drops below this value it is considered to be at risk of stalling and an immediate increase in fuel quantity is commanded.\nThis is a proactive strategy that sets a timeout for when the next engine speed update should happen and if there is an apparent delay in the engine speed update (no crank speed sensor pulse seen in time), this strategy gets trigggered.\nThe fuel added by this strategy appears on the idle control integrator.\nTo disable this strategy set this value to zero.",
            "address":2484
          },
          {
            "id":"antistalleffect",
            "type":2,
            "unit":"µl",
            "scale":0.010000,
            "digits":2,
            "descr":"This setting specifies the fuel quantity added by the anti stall strategy if triggered.",
            "address":2486
          },
          {
            "id":"idlemaxrpm",
            "type":2,
            "unit":"RPM",
            "descr":"When engine speed is above this value, the engine is not considered to be idling and the idle decay time is reset.\nWhen this speed is reached again it becomes the idle target speed which then decays to the speed target specified by Idle speed target map.",
            "address":2492
          },
          {
            "id":"idledecaytime",
            "type":2,
            "unit":"s",
            "scale":0.001000,
            "digits":2,
            "descr":"For a controlled return to idle on a manual transmission car, this setting specifies how quickly the engine is allowed to drop from the decay upper limit down to the specified idle speed target.\nMakes slow maneuvers while slipping the clutch easier and provides a more pleasant controlled return to idle after clutch is depressed at high engine speed.",
            "address":2494
          },
          {
            "id":"password",
            "type":7,
            "width":32,
            "address":2496
          },
          {
            "id":"password_set",
            "type":3,
            "address":2528
          },
          {
            "id":"password_level",
            "type":8,
            "options":[
              "No access",
              "Diagnostics",
              "Full access"
            ],
            "address":2532
          },
          {
            "id":"gplimitopts",
            "type":2,
            "address":2534
          },
          {
            "id":"gplimit1_enable",
            "type":8,
            "address":"gplimitopts.0.0",
            "options":"enum_enabled"
          },
          {
            "id":"gplimit1_boost",
            "type":8,
            "address":"gplimitopts.1.1",
            "options":"enum_enabled"
          },
          {
            "id":"gplimit2_enable",
            "type":8,
            "address":"gplimitopts.2.2",
            "options":"enum_enabled"
          },
          {
            "id":"gplimit2_boost",
            "type":8,
            "address":"gplimitopts.3.3",
            "options":"enum_enabled"
          },
          {
            "id":"gplimit3_enable",
            "type":8,
            "address":"gplimitopts.4.4",
            "options":"enum_enabled"
          },
          {
            "id":"gplimit3_boost",
            "type":8,
            "address":"gplimitopts.5.5",
            "options":"enum_enabled"
          },
          {
            "id":"gplimit4_enable",
            "type":8,
            "address":"gplimitopts.6.6",
            "options":"enum_enabled"
          },
          {
            "id":"gplimit4_boost",
            "type":8,
            "address":"gplimitopts.7.7",
            "options":"enum_enabled"
          },
          {
            "id":"patrim1mode",
            "type":8,
            "options":[
              "Adder",
              "Minimum",
              "Maximum",
              "Override"
            ],
            "descr":"When the trim is in adder mode, the trim value is added to the value from the timing map.\r\nIn minimum mode the trim specifies the minimum permitted angle, conversely in maximum mode it specifies the maximum permitted angle.\r\nIn override mode the trim overrides the value from the table and the table is not used at all.",
            "address":4170
          },
          {
            "id":"gplimit1",
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "digits":2,
            "unit":"µl",
            "address":2536
          },
          {
            "id":"gplimit2",
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "digits":2,
            "unit":"µl",
            "address":2540
          },
          {
            "id":"gplimit3",
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "digits":2,
            "unit":"µl",
            "address":2544
          },
          {
            "id":"gplimit4",
            "type":11,
            "datatype":2,
            "scale":0.010000,
            "digits":2,
            "unit":"µl",
            "address":2548
          },
          {
            "id":"gpangletrim1val",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"°",
            "scale":0.010986,
            "digits":1,
            "descr":"The values of this map are added to the final pump angle target",
            "address":4172
          },
          {
            "id":"gplimit1cond",
            "type":12,
            "options":"map_inputs",
            "address":2552
          },
          {
            "id":"gplimit2cond",
            "type":12,
            "options":"map_inputs",
            "address":2554
          },
          {
            "id":"gplimit3cond",
            "type":12,
            "options":"map_inputs",
            "address":2556
          },
          {
            "id":"gplimit4cond",
            "type":12,
            "options":"map_inputs",
            "address":2558
          },
          {
            "id":"gpangletrim1cond",
            "type":12,
            "options":"map_inputs",
            "address":4176
          },
          {
            "id":"idleupin1",
            "type":12,
            "options":"map_inputs",
            "extraopts":[
              [
                253,
                "Cruise switch toggle"
              ]
            ],
            "descr":"If cruise switch toggle is selected and cruise control is enabled in the configuration, the set button for the cruise control will toggle high idle when the vehicle speed is below 5 km\/h",
            "address":2560
          },
          {
            "id":"idleuprpm1",
            "type":11,
            "datatype":2,
            "unit":"RPM",
            "address":2564
          },
          {
            "id":"idleup1adder",
            "type":8,
            "options":[
              "Minimum target",
              "Adder"
            ],
            "address":"bits0.6.6",
            "descr":"In minimum target mode, you can configure the idle-up value to 1000RPM for example and if the idle target is lower than the idle-up value the idle-up value takes effect"
          },
          {
            "id":"idleupin2",
            "type":12,
            "options":"map_inputs",
            "address":2562
          },
          {
            "id":"idleuprpm2",
            "type":11,
            "datatype":2,
            "unit":"RPM",
            "address":2568
          },
          {
            "id":"idleup2adder",
            "type":8,
            "options":[
              "Minimum target",
              "Adder"
            ],
            "address":"bits0.7.7"
          },
          {
            "id":"vsssource",
            "type":8,
            "options":[
              "Vehicle speed input",
              "CAN source 0",
              "CAN source 1",
              "CAN source 2",
              "CAN source 3",
              "CAN source 4",
              "CAN source 5",
              "CAN source 6",
              "CAN source 7",
              "CAN source 8",
              "CAN source 9",
              "CAN source 10",
              "CAN source 11",
              "CAN source 12",
              "CAN source 13",
              "CAN source 14",
              "CAN source 15"
            ],
            "descr":"If CAN is used as a speed source, the CAN source should be scaled so that its value is 10 times greater than the speed, for a resolution of 0.1km\/h",
            "address":2572
          },
          {
            "id":"rackKpmod",
            "array":16,
            "type":2,
            "scale":0.001000,
            "digits":3,
            "max":30,
            "descr":"This map allows modification of the rack control proportional gain based on rack position error. A positive error value means rack position is greater than target and vice versa.",
            "address":2606
          },
          {
            "id":"rackKimod",
            "type":2,
            "array":16,
            "scale":0.001000,
            "digits":3,
            "sign":1,
            "max":30,
            "descr":"This map allows modification of the rack control integral gain based on rack position error. A positive error value means rack position is greater than target and vice versa.",
            "address":2638
          },
          {
            "id":"rackKdmod",
            "type":2,
            "array":16,
            "scale":0.001000,
            "digits":3,
            "max":30,
            "descr":"This map allows modification of the rack control derivative gain based on rack position error. A positive error value means rack position is greater than target and vice versa.",
            "address":2670
          },
          {
            "id":"rackerrbins",
            "type":2,
            "sign":1,
            "array":16,
            "input":"rackposerror",
            "descr":"Breakpoints for functions of rack position error. Positive values when rack position is greater than target, negative values when rack position is smaller than target.",
            "address":2574
          },
          {
            "id":"voltcorrmode",
            "type":8,
            "address":"bits0.8.8",
            "options":[
              "Linear",
              "Custom"
            ],
            "descr":"If this is set to Linear, then the rack control operates in constant current mode, where the duty cycle is divided by battery voltage. If set to Custom, then the voltage correction function is used."
          },
          {
            "id":"voltbins",
            "type":2,
            "unit":"V",
            "scale":0.001000,
            "digits":3,
            "array":12,
            "input":"supplyvoltage",
            "address":2702
          },
          {
            "id":"voltcorrection",
            "type":2,
            "scale":0.001000,
            "digits":3,
            "array":12,
            "address":2726
          },
          {
            "id":"timingvoltcorrection",
            "type":2,
            "scale":0.001000,
            "digits":3,
            "array":12,
            "address":2750
          },
          {
            "id":"rackposmethod",
            "type":8,
            "address":"bits0.9.9",
            "options":[
              "Simple",
              "Two dimensional"
            ]
          },
          {
            "id":"pumpcharmap",
            "type":11,
            "datatype":2,
            "descr":"This map allows more precise control of the injection pump by adjusting rack position for the changes in pump output that occur depending on engine speed.\nFor this to be useful, the pump must be characterised on a test bench for a number of different rack positions at a number of different speeds.",
            "defaults":{
              "yvar":"fuelqty",
              "xvar":"pces",
              "ypts":[
                0,
                1,
                20,
                50,
                100
              ],
              "xpts":[
                250,
                500,
                1000,
                1500,
                2000,
                2500,
                3000,
                3500,
                4000,
                4500,
                5000,
                5500,
                6000
              ],
              "fill":0
            },
            "address":2776
          },
          {
            "id":"h2oopts",
            "type":1,
            "address":2788
          },
          {
            "id":"h2o_enable",
            "type":8,
            "address":"h2oopts.0.0",
            "options":"enum_enabled"
          },
          {
            "id":"h2o_cruise",
            "type":8,
            "address":"h2oopts.1.1",
            "options":"enum_enabled",
            "descr":"If the water injection control is on\/off type and used only for power boost, disable this option.\nIf the control is PWM and water injection is desired during part throttle when cruise control is active, enable this option."
          },
          {
            "id":"h2oinput",
            "type":12,
            "options":"map_inputs",
            "address":2790
          },
          {
            "id":"h2ominrpm",
            "type":2,
            "unit":"RPM",
            "input":"enginespeed",
            "address":2792
          },
          {
            "id":"h2omaxrpm",
            "type":2,
            "unit":"RPM",
            "input":"enginespeed",
            "address":2794
          },
          {
            "id":"h2ominmap",
            "type":2,
            "unit":"mbar",
            "input":"map",
            "address":2796
          },
          {
            "id":"h2omintps",
            "type":2,
            "unit":"%",
            "input":"pedalposition",
            "digits":1,
            "scale":0.097656,
            "descr":"Hysteresis is 1.0%, so if minimum position to enable is 90%, the control will disable if the value falls below 89%",
            "address":2798
          },
          {
            "id":"h2ominect",
            "type":2,
            "unit":"°C",
            "digits":1,
            "input":"coolanttemp",
            "scale":0.100000,
            "offset":-2731,
            "descr":"Hysteresis is 1.0°C",
            "address":2800
          },
          {
            "id":"h2omaxect",
            "type":2,
            "unit":"°C",
            "digits":1,
            "input":"coolanttemp",
            "scale":0.100000,
            "offset":-2731,
            "descr":"Hysteresis is 1.0°C",
            "address":2802
          },
          {
            "id":"h2opwmfreq",
            "min":1,
            "max":200,
            "type":2,
            "scale":250000,
            "inverse":1,
            "unit":"Hz",
            "descr":"For solenoid control, small values such as 10-30Hz make sense. For pump control using an external solid state relay, values between 100-200Hz make sense.",
            "address":2808
          },
          {
            "id":"h2opwmmap",
            "type":11,
            "datatype":1,
            "unit":"%",
            "scale":0.392157,
            "digits":1,
            "descr":"It is not guaranteed that a 0% duty cycle will keep the output fully de-energised so if triggering a pump, it is advised that a secondary relay is used to prevent it from pumping small quantities occasionally when engine is at idle.",
            "address":2804
          },
          {
            "id":"idlePDmap",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.010000,
            "digits":2,
            "max":300,
            "min":-300,
            "unit":"µl",
            "descr":"This map affects idle fuelling directly based on a combination of idle error and engine speed rate of change. The output is stored in real time variable idlePD.",
            "address":640
          },
          {
            "id":"idleIDmap",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.010000,
            "digits":2,
            "max":300,
            "min":-300,
            "unit":"µl",
            "descr":"This map affects the idle control integral value directly based on idle error and engine speed rate of change.",
            "address":644
          },
          {
            "id":"idleKpmod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.001000,
            "descr":"This modifier adjusts the P factor based on idle error value and is multiplied with the regular P factor setting. A value of 1 has no effect, less than 1 reduces the gain and greater than 1 increases it.",
            "address":3228
          },
          {
            "id":"idleKimod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.001000,
            "descr":"This modifier adjusts the I factor based on idle error value and is multiplied with the regular I factor setting. A value of 1 has no effect, less than 1 reduces the gain and greater than 1 increases it.",
            "address":3232
          },
          {
            "id":"idleKdmod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.001000,
            "descr":"This modifier adjusts the D factor based on idle error value and is multiplied with the regular D factor setting. A value of 1 has no effect, less than 1 reduces the gain and greater than 1 increases it.",
            "address":3236
          },
          {
            "id":"smoothingrpmpoints",
            "type":2,
            "unit":"RPM",
            "input":"enginespeed",
            "array":8,
            "address":2810
          },
          {
            "id":"smoothingpedalpoints",
            "type":2,
            "unit":"%",
            "input":"effthrottle",
            "scale":0.097752,
            "digits":1,
            "array":8,
            "address":2826
          },
          {
            "id":"rpmsmoothingfiltermap",
            "type":2,
            "scale":0.001526,
            "digits":2,
            "unit":"%",
            "array":64,
            "rows":8,
            "cols":8,
            "descr":"This is an exponential decay filter, where 0% is no filtering at all and 99% throws away 99% of the difference during each cycle. The product of this filter is a variable called smoothrpm and it can optionally be used for strategies that are function of engine speed for smoother operation.",
            "address":2842
          },
          {
            "id":"fuelrequestposfiltermap",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "array":64,
            "rows":8,
            "cols":8,
            "descr":"This value induces an exponential decay filter on the fuel request as input by accelerator pedal. Evaluated 100 times per second.\nThis value acts when fuel request is increasing and a value of 0 means no filtering is done, a value of 50% means half of the difference is thrown away on each cycle.\nThe purpose of this filter is for improved drivability, the filter produces a smoother increase in torque when accelerator pedal input is increased.",
            "address":2970
          },
          {
            "id":"fuelrequestnegfiltermap",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "array":64,
            "rows":8,
            "cols":8,
            "descr":"This value induces an exponential decay filter on the fuel request as input by accelerator pedal. Evaluated 100 times per second.\nThis value acts when fuel request is increasing and a value of 0 means no filtering is done, a value of 50% means half of the difference is thrown away on each cycle.\nThe purpose of this filter is for improved drivability, the filter produces a smoother decrease in torque when accelerator pedal input is decreased.",
            "address":3098
          },
          {
            "id":"harshindex_enable",
            "type":8,
            "address":"bits0.15.15",
            "options":"enum_enabled"
          },
          {
            "id":"harshindexinterval",
            "type":1,
            "unit":"ms",
            "min":1,
            "descr":"This specifies the interval at which the smoothness index will be computed. The smoothness index is computed from the engine speed over the last 32 invocations of the smoothness index program, so effectively the interval decides over how long of a period the index is taken as well as the highest oscillation frequency that can be detected.",
            "address":3240
          },
          {
            "id":"harshindextolerance",
            "type":1,
            "unit":"RPM",
            "min":1,
            "descr":"The engine speed is allowed to deviate by this amount above or below the average over the sample period without being considered harsh",
            "address":3241
          },
          {
            "id":"harshindexmaxrpm",
            "type":2,
            "unit":"RPM",
            "max":10000,
            "address":3242
          },
          {
            "id":"harshreductiondecay",
            "type":2,
            "scale":0.010000,
            "digits":2,
            "unit":"µl\/cycle",
            "descr":"If harshness fuel reduction is activated momentarily, it will decay by this amount each computation cycle.",
            "address":3244
          },
          {
            "id":"harshnesscyclebins",
            "type":2,
            "array":8,
            "max":100,
            "input":"harshcycles",
            "address":3374
          },
          {
            "id":"harshnessseverbins",
            "type":2,
            "array":8,
            "unit":"RPM",
            "input":"harshseverity",
            "address":3390
          },
          {
            "id":"harshnessmap",
            "type":2,
            "unit":"µl",
            "scale":0.010000,
            "digits":2,
            "max":50,
            "array":64,
            "rows":8,
            "cols":8,
            "descr":"This map specifies the amount of fuel the injection quantity is reduced by if the harshness strategy activates, depending on harshness severity and oscillation cycle count.",
            "address":3246
          },
          {
            "id":"harshnessrpmbins",
            "type":2,
            "input":"enginespeed",
            "unit":"RPM",
            "array":8,
            "address":3406
          },
          {
            "id":"harshnesspedalbins",
            "type":2,
            "scale":0.097656,
            "input":"pedalposition",
            "digits":1,
            "unit":"%",
            "array":8,
            "address":3422
          },
          {
            "id":"harshnessauth",
            "type":2,
            "unit":"µl",
            "scale":0.010000,
            "digits":2,
            "array":64,
            "rows":8,
            "cols":8,
            "descr":"This map specifies the maximum fuel the harshness strategy is permitted to remove depending on accelerator pedal input and engine speed",
            "address":3438
          },
          {
            "id":"obd2enable",
            "type":8,
            "address":"bits0.16.16",
            "options":"enum_enabled",
            "descr":"Enables communication with OBD2 CAN bus scan tools. Requires that CAN receiving is enabled and CAN data rate set to 500kbps."
          },
          {
            "id":"obd2bcenable",
            "type":8,
            "address":"bits0.30.30",
            "options":"enum_enabled",
            "descr":"Enables listening for the standard 11 bit OBD2 broadcast ID (0x7DF). May want to disable this to avoid interfering with scanning of the engine's ECU."
          },
          {
            "id":"fpsource",
            "type":9,
            "maxwidth":2,
            "descr":"The source of the fuel pressure sensor value, usually either a local analog port or a CAN source.",
            "address":3568
          },
          {
            "id":"fpvoltages",
            "type":2,
            "array":2,
            "describedby":"fpsource",
            "descr":"The input range of the fuel pressure sensor transfer function.",
            "address":3572
          },
          {
            "id":"fpvalidrange",
            "type":2,
            "array":2,
            "describedby":"fpsource",
            "descr":"If the input from the fuel pressure sensor goes outside of this range, the sensor is considered at fault, an error is flagged and the default value is used in place of what the sensor indicates.",
            "address":3580
          },
          {
            "id":"fpacceptable",
            "type":2,
            "array":2,
            "digits":2,
            "scale":0.001000,
            "unit":"bar",
            "descr":"If the fuel pressure goes outside of those limits after the engine has started, an error is flagged.",
            "address":3584
          },
          {
            "id":"fpvalues",
            "type":2,
            "array":2,
            "digits":2,
            "scale":0.001000,
            "unit":"bar",
            "descr":"The output range of the fuel pressure sensor transfer function.",
            "address":3576
          },
          {
            "id":"fpdefault",
            "type":2,
            "digits":2,
            "scale":0.001000,
            "unit":"bar",
            "descr":"The default value used if the fuel pressure sensor is showing non-sensible values.",
            "address":3588
          },
          {
            "id":"vss_as_pumpangle",
            "type":8,
            "address":"bits0.17.17",
            "options":"enum_enabled",
            "descr":"If not using the vehicle speed input for road speed, it can be used for logging the pump timing device behaviour by fitting a sensor to the pump."
          },
          {
            "id":"ffset0",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3590
          },
          {
            "id":"ffreset0",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3646
          },
          {
            "id":"fftoggle0",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3614
          },
          {
            "id":"ffsetdelay0",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3606
          },
          {
            "id":"ffresetdelay0",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3662
          },
          {
            "id":"fftoggleondelay0",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3630
          },
          {
            "id":"fftoggleoffdelay0",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3638
          },
          {
            "id":"fftimeout0",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3678
          },
          {
            "id":"ffbootstate0",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3670
          },
          {
            "id":"altfuelenable",
            "type":8,
            "address":"bits0.18.18",
            "options":"enum_enabled",
            "descr":"If this option is enabled, the controller will use the alternate fuel request map whenever the calibration switch input is active."
          },
          {
            "id":"altlimitenable",
            "type":8,
            "address":"bits0.19.19",
            "options":"enum_enabled",
            "descr":"If this option is enabled, the controller will use the alternate fuel limit map whenever the calibration switch input is active."
          },
          {
            "id":"altboostenable",
            "type":8,
            "address":"bits0.20.20",
            "options":"enum_enabled",
            "descr":"If this option is enabled, the controller will use the alternate boost target map whenever the calibration switch input is active."
          },
          {
            "id":"calswitch",
            "type":12,
            "options":"map_inputs",
            "descr":"This input will activate the use of alternate maps.",
            "address":3694
          },
          {
            "id":"countresetinput0",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the counter to the configured reset value and prevent any change of value until the reset input releases.",
            "address":3714
          },
          {
            "id":"upcountinput0",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will increment the counter value. If the counter is already at the maximum value no action is taken unless overflow is enabled, in which case the counter assumes a value of zero.",
            "address":3698
          },
          {
            "id":"downcountinput0",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3706
          },
          {
            "id":"counterdebounce0",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The increment or decrement inputs must be active for this amount of time before counter value is altered, and deactive for the same amount of time before the value may be altered again. No delay applies to the reset input in any case.",
            "address":3726
          },
          {
            "id":"downcountinput0",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3706
          },
          {
            "id":"counterresetvalue0",
            "compact":0,
            "type":1,
            "descr":"The counter will assume this value when the controller powers on and also if the counter reset input activates.",
            "address":3730
          },
          {
            "id":"countmaxvalue0",
            "compact":0,
            "type":1,
            "descr":"If the counter reaches this value, the increment input is disabled unless overflow is enabled, in which case the value will roll over to zero on increment.",
            "address":3722
          },
          {
            "id":"counterconf",
            "type":1,
            "address":3696
          },
          {
            "id":"countmode0",
            "compact":4,
            "type":8,
            "options":[
              "No overflows",
              "Overflow enabled",
              "Underflow enabled",
              "Overflow and underflow"
            ],
            "address":"counterconf.0.1"
          },
          {
            "id":"latchconfig",
            "type":1,
            "address":3734
          },
          {
            "id":"latchmode1",
            "compact":4,
            "type":8,
            "address":"latchconfig.0.1",
            "options":[
              "Set while active",
              "Leading edge",
              "Trailing edge",
              "Multiplex"
            ],
            "descr":"This option sets the behaviour of the latch set input.\n'Set while active' means that the latch value is continually updated while the set input is active.\n'Leading edge' means the latch value is updated once when the set input activates.\n'Trailing edge means the latch value is updated when the set input deactivates.\n'Multiplex' means the primary value source is used when the set input is active but the alternate source is used if the set input is inactive. The reset input still activates the reset value but as soon as reset releases the value is picked based on the state of the set input."
          },
          {
            "id":"gplatchinput1",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken when the set input activates it.",
            "address":3736
          },
          {
            "id":"gplatchaltinput1",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken if the latch is configured as a multiplex and both set and reset inputs are inactive.",
            "address":3752
          },
          {
            "id":"gplatchset1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When the selected logic input is active, the latch takes the value of the input. If the latch is configured as edge sensitive the the value transfer happens when the input is activated or deactivated. If the latch is not edge sensitive the value transfer happens continually while the input is active.",
            "address":3768
          },
          {
            "id":"gplatchreset1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"If the selected logic input is active, the latch takes the default value and the set input is disabled meanwhile.",
            "address":3776
          },
          {
            "id":"gplatchdefaultval1",
            "compact":0,
            "type":2,
            "describedby":"gplatchinput1",
            "descr":"The latch assumes this value when the controller is powered on and also when the reset input is activated.",
            "address":3784
          },
          {
            "id":"dithermap",
            "rows":6,
            "cols":6,
            "type":2,
            "array":36,
            "scale":0.003052,
            "digits":2,
            "max":100,
            "unit":"%",
            "descr":"This map specifies the dither signal amplitude applied on top of the normal rack solenoid drive signal.",
            "address":3792
          },
          {
            "id":"ditherperiod",
            "type":1,
            "unit":"ms",
            "address":3888
          },
          {
            "id":"ditherrpm",
            "array":6,
            "input":"enginespeed",
            "type":2,
            "unit":"RPM",
            "descr":"These are the engine speed breakpoints used in the dither map, if rack dither is enabled.",
            "address":3864
          },
          {
            "id":"ditherrackpos",
            "array":6,
            "input":"rackposition",
            "type":2,
            "descr":"These are the rack position breakpoints used in the dither map, if rack dither is enabled.",
            "address":3876
          },
          {
            "id":"ditherenable",
            "type":8,
            "address":"bits0.21.21",
            "options":"enum_enabled",
            "descr":"The dither function superimposes a lower frequency signal on top of the normal PWM signal used to drive the rack solenoid. The purpose is to keep the rack in slight motion when at low rack positions where stiction can prevent smooth operation."
          },
          {
            "id":"egtsource",
            "type":9,
            "maxwidth":2,
            "descr":"The source of the exhaust gas temperature sensor value, usually either a local analog port or a CAN source.",
            "address":3892
          },
          {
            "id":"egtvoltages",
            "type":2,
            "array":8,
            "cols":"egtcalptcount",
            "describedby":"egtsource",
            "descr":"The input range of the exhaust gas temperature sensor transfer function.",
            "address":3898
          },
          {
            "id":"egtvalues",
            "type":2,
            "array":8,
            "cols":"egtcalptcount",
            "unit":"°C",
            "scale":0.100000,
            "digits":1,
            "offset":-2731,
            "descr":"The output values of the exhaust gas temperature sensor transfer function.",
            "address":3914
          },
          {
            "id":"egtcalptcount",
            "type":1,
            "min":2,
            "max":8,
            "descr":"This setting specifies the number of calibration points on the exhaust gas temperature sensor transfer function. Minimum of 2 and a maximum of 8.",
            "address":3896
          },
          {
            "id":"racksense_low",
            "type":8,
            "address":"bits0.22.22",
            "options":"enum_enabled",
            "descr":"Increased sensitivity of rack position sensing, for special cases where normal sensitivity is insufficient. Do not enable without consulting support."
          },
          {
            "id":"pumptype",
            "type":8,
            "options":[
              "M-EDC (OM605\/OM606)",
              "VP37",
              "VP37 inverted sensors",
              "Other inductive",
              "Custom"
            ],
            "descr":"Changes a few internal parameters that mostly have to do with rack position sensing. Note that changing the pump type is just one of many steps needed to convert a configuration written for one type of pump to work with another type. It is a better approach to acquire a configuration file written for your type of pump unless you know what you are doing.",
            "address":3930
          },
          {
            "id":"rack1filterfactor",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of rack position.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the value approaches 100%.",
            "address":3934
          },
          {
            "id":"rack0filterfactor",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of rack position.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the value approaches 100%.",
            "address":3932
          },
          {
            "id":"rackexpfilter_enable",
            "type":8,
            "address":"bits0.23.23",
            "options":"enum_enabled",
            "descr":"If this is enabled, additional filtering will apply to the rack position sensing."
          },
          {
            "id":"pumpanglemap",
            "type":11,
            "datatype":2,
            "unit":"°",
            "scale":0.010986,
            "digits":1,
            "max":359,
            "address":3948
          },
          {
            "id":"pumpanglemin",
            "type":2,
            "unit":"°",
            "scale":0.010986,
            "digits":1,
            "max":359,
            "descr":"When all trims are applied, the pump angle target will never go below this value.",
            "address":4178
          },
          {
            "id":"pumpanglemax",
            "type":2,
            "unit":"°",
            "scale":0.010986,
            "digits":1,
            "max":359,
            "descr":"When all trims are applied, the pump angle target will never go above this value.",
            "address":4180
          },
          {
            "id":"pumpanglebaseduty",
            "type":11,
            "datatype":2,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":3952
          },
          {
            "id":"pumpangleretarddc",
            "type":2,
            "unit":"%",
            "max":100,
            "scale":0.003052,
            "address":3998
          },
          {
            "id":"pumpangleKp",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000122,
            "digits":4,
            "address":3968
          },
          {
            "id":"pumpangleKi",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000122,
            "digits":4,
            "address":3972
          },
          {
            "id":"pumpangleKd",
            "type":11,
            "datatype":2,
            "sign":1,
            "scale":0.000122,
            "digits":4,
            "address":3976
          },
          {
            "id":"pumpangleImin",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":3980
          },
          {
            "id":"pumpangleImax",
            "type":11,
            "datatype":2,
            "sign":1,
            "unit":"%",
            "scale":0.003052,
            "digits":1,
            "address":3984
          },
          {
            "id":"pumpangleminspeed",
            "type":2,
            "unit":"RPM",
            "address":3958
          },
          {
            "id":"pumpanglespeedhyster",
            "type":2,
            "unit":"RPM",
            "address":3962
          },
          {
            "id":"pumpangleminfuel",
            "unit":"µl",
            "scale":0.010000,
            "digits":1,
            "type":2,
            "address":3956
          },
          {
            "id":"pumpanglefuelhyster",
            "unit":"µl",
            "scale":0.010000,
            "digits":1,
            "type":2,
            "address":3960
          },
          {
            "id":"pumpanglepidinterval",
            "type":1,
            "unit":"ms",
            "address":3966
          },
          {
            "id":"pumpanglepwmfreq",
            "type":2,
            "scale":1000000,
            "inverse":1,
            "max":"2000",
            "unit":"Hz",
            "reset":1,
            "address":3964
          },
          {
            "id":"din1function",
            "type":8,
            "options":[
              [
                0,
                "General purpose digital input"
              ],
              [
                1,
                "General purpose frequency input"
              ],
              [
                2,
                "Pump angle input"
              ],
              [
                3,
                "Mercedes CDI oil pan sensor"
              ]
            ],
            "address":3941
          },
          {
            "id":"din2function",
            "type":8,
            "options":[
              [
                0,
                "General purpose digital input"
              ],
              [
                1,
                "General purpose frequency input"
              ],
              [
                3,
                "Mercedes CDI oil pan sensor"
              ]
            ],
            "address":3942
          },
          {
            "id":"din3function",
            "type":8,
            "options":[
              [
                0,
                "General purpose digital input"
              ],
              [
                1,
                "General purpose frequency input"
              ],
              [
                3,
                "Mercedes CDI oil pan sensor"
              ]
            ],
            "address":3943
          },
          {
            "id":"dinconfig",
            "type":1,
            "address":3940
          },
          {
            "id":"crankrising",
            "type":8,
            "address":"dinconfig.2.2",
            "options":"enum_triggeredge"
          },
          {
            "id":"vssrising",
            "type":8,
            "address":"dinconfig.3.3",
            "options":"enum_triggeredge"
          },
          {
            "id":"din1rising",
            "type":8,
            "address":"dinconfig.0.0",
            "options":"enum_triggeredge"
          },
          {
            "id":"din1filter",
            "type":2,
            "unit":"µs",
            "descr":"Any time an impulse is registered on digital input 1, if another impulse is seen within this time period it is discarded and not processed.",
            "address":3988
          },
          {
            "id":"din2rising",
            "type":8,
            "address":"dinconfig.1.1",
            "options":"enum_triggeredge"
          },
          {
            "id":"din2filter",
            "type":2,
            "unit":"µs",
            "descr":"Any time an impulse is registered on digital input 2, if another impulse is seen within this time period it is discarded and not processed.",
            "address":3990
          },
          {
            "id":"din3rising",
            "type":8,
            "address":"dinconfig.4.4",
            "options":"enum_triggeredge"
          },
          {
            "id":"din3filter",
            "type":2,
            "unit":"µs",
            "descr":"Any time an impulse is registered on digital input 3, if another impulse is seen within this time period it is discarded and not processed.",
            "address":3992
          },
          {
            "id":"freqfilter0",
            "compact":0,
            "type":1,
            "unit":"%",
            "scale":0.390625,
            "descr":"This is an exponential decay filter. A value of for example 99% means that for each sample taken, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%",
            "digits":1,
            "address":3994
          },
          {
            "id":"pumpanglereference",
            "type":2,
            "scale":0.010986,
            "digits":1,
            "max":360,
            "descr":"This variable specifies the number of degrees between engine speed impulses, used as a reference for injection angle sensing. For example if the crank trigger has 3 teeth then this angle would be 360\/3 = 120 degrees.\r\nEXCEPTION: In missing tooth mode, this angle is subtracted from crank angle to come up with a reasonable pump angle number base.",
            "address":3944
          },
          {
            "id":"pumpangleoffset",
            "type":2,
            "scale":0.010986,
            "digits":1,
            "max":360,
            "descr":"This variable specifies the maximum angle measured, greater angles will be reported as zero.",
            "address":6296
          },
          {
            "id":"afterstartglowmode",
            "type":8,
            "address":"bits0.24.24",
            "options":[
              "Simple timer",
              "Pulsed"
            ],
            "descr":"In simple timer mode, the glow plugs are simply kept on for a configured amount of time after the engine is started.\r\nIn pulsed mode, the glow plugs are pulsed on and off during engine warm up."
          },
          {
            "id":"maxectglowduringstart",
            "type":2,
            "unit":"°C",
            "scale":0.100000,
            "digits":1,
            "offset":-2731,
            "descr":"If the engine coolant temperature is below this value, the glow plugs will be energised during cranking.",
            "address":4006
          },
          {
            "id":"afterglowruntime",
            "type":2,
            "unit":"s",
            "array":10,
            "input":"runtime",
            "max":300,
            "address":4182
          },
          {
            "id":"afterglowperiod",
            "type":1,
            "unit":"s",
            "scale":0.100000,
            "digits":1,
            "descr":"This is the cycle time of the pulsed after start glow function. For example if this is set to 4 seconds and the duty cycle is configured to 25% then the glow plugs will turn on for 1 second and turn off for 3 seconds before turning on for 1 second again.",
            "address":4168
          },
          {
            "id":"afterglowduty",
            "type":1,
            "unit":"%",
            "max":100,
            "array":160,
            "rows":10,
            "cols":16,
            "descr":"After the engine has started up, if the pulsed after start glow mode is selected, this table specifies the fraction of the glow period that the glow output is switched on.",
            "address":4008
          },
          {
            "id":"idlepwmdivider",
            "type":1,
            "descr":"If the variable frequency PWM is enabled, this is the divider used at idle.",
            "address":4169
          },
          {
            "id":"variablerackfreq",
            "type":8,
            "address":"bits0.25.25",
            "options":"enum_enabled",
            "descr":"Enabling this option lets the ECU PWM the pump rack at a different frequency when the engine is idling. Testing has revealed that the low frequency required to get tight idle control can adversely affect the stability of the rack at higher engine speeds. Running a higher PWM frequency (lower divider value) off idle promotes friction that provides damping of the rack."
          },
          {
            "id":"brakeinput",
            "type":12,
            "options":"map_inputs",
            "descr":"Auxiliary input to receive brake pedal status",
            "address":4202
          },
          {
            "id":"clutchinput",
            "type":12,
            "options":"map_inputs",
            "descr":"Auxiliary input to receive clutch pedal status",
            "address":4204
          },
          {
            "id":"cruisesource",
            "type":9,
            "maxwidth":2,
            "descr":"Starting in firmware version 1.37, the cruise control buttons can be assigned to any input. In older firmware versions this was analog5 only",
            "address":6300
          },
          {
            "id":"cruisebuttonmap",
            "type":2,
            "describedby":"cruisesource",
            "array":4,
            "cols":4,
            "address":6304
          },
          {
            "id":"emapsource",
            "type":9,
            "maxwidth":2,
            "address":4208
          },
          {
            "id":"emapvoltages",
            "type":2,
            "array":2,
            "describedby":"emapsource",
            "address":4212
          },
          {
            "id":"emapvalidrange",
            "type":2,
            "array":2,
            "describedby":"emapsource",
            "address":4216
          },
          {
            "id":"emapvalues",
            "type":2,
            "array":2,
            "unit":"mbar",
            "address":4220
          },
          {
            "id":"emapdefault",
            "type":2,
            "unit":"mbar",
            "address":4224
          },
          {
            "id":"timeropts1",
            "compact":0,
            "type":1,
            "address":4226
          },
          {
            "id":"timerreset1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input sets the timer to zero, regardless of configuration, and holds it at zero while the input is active.",
            "address":4238
          },
          {
            "id":"timeredgereset1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input only has effect when its state changes from 0 to 1. Before it does anything again the state must change back to 0.\r\nIn normal timer mode, when this input changes state from 0 to 1, the timer value is reset to zero. In lap timer mode, the same state change sets the timer value to the time passed since last reset.",
            "address":4246
          },
          {
            "id":"timerenable1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When this input is active, the timer counts up.",
            "address":4230
          },
          {
            "id":"timermode1",
            "compact":4,
            "type":8,
            "address":"timeropts1.1.1",
            "options":[
              "Normal",
              "Lap timer"
            ],
            "descr":"In normal timer mode, the timer continually counts up while the enable input is active. In lap timer mode, the timer value only changes when the edge sensitive reset activates, where it takes the value of the time passed since last reset. In lap timer mode, the enable input is generally not used."
          },
          {
            "id":"timerautoreset1",
            "type":8,
            "compact":4,
            "address":"timeropts1.0.0",
            "options":"enum_enabled",
            "descr":"When enabled, the timer will automatically reset to 0 whenever the enable input deactivates."
          },
          {
            "id":"customlookupsrc1",
            "type":9,
            "compact":0,
            "maxwidth":2,
            "address":4256
          },
          {
            "id":"customlookupcount1",
            "type":1,
            "compact":0,
            "min":1,
            "max":32,
            "address":4272
          },
          {
            "id":"customlookupopts1",
            "type":1,
            "compact":0,
            "address":4276
          },
          {
            "id":"customlookupdecimal1",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4280
          },
          {
            "id":"customlookupsigned1",
            "type":8,
            "address":"customlookupopts1.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"customlookupsigned2",
            "type":8,
            "address":"customlookupopts2.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"customlookupsigned3",
            "type":8,
            "address":"customlookupopts3.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"customlookupsigned4",
            "type":8,
            "address":"customlookupopts4.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"customlookup1axis",
            "type":2,
            "describedby":"customlookupsrc1",
            "array":32,
            "cols":"customlookupcount1",
            "address":4540
          },
          {
            "id":"customlookup2axis",
            "type":2,
            "describedby":"customlookupsrc2",
            "array":32,
            "cols":"customlookupcount2",
            "address":4604
          },
          {
            "id":"customlookup3axis",
            "type":2,
            "describedby":"customlookupsrc3",
            "array":32,
            "cols":"customlookupcount3",
            "address":4668
          },
          {
            "id":"customlookup4axis",
            "type":2,
            "describedby":"customlookupsrc4",
            "array":32,
            "cols":"customlookupcount4",
            "address":4732
          },
          {
            "id":"customlookup1",
            "type":2,
            "array":32,
            "cols":"customlookupcount1",
            "variations":[
              [
                "customlookupsigned1",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "customlookupsigned1",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "customlookupdecimal1",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1
              },
              [
                "customlookupdecimal1",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "customlookupdecimal1",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "customlookupdecimal1",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4284,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"customlookup2",
            "type":2,
            "array":32,
            "cols":"customlookupcount2",
            "variations":[
              [
                "customlookupsigned2",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "customlookupsigned2",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "customlookupdecimal2",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1
              },
              [
                "customlookupdecimal2",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "customlookupdecimal2",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "customlookupdecimal2",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4348,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"customlookup3",
            "type":2,
            "array":32,
            "cols":"customlookupcount3",
            "variations":[
              [
                "customlookupsigned3",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "customlookupsigned3",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "customlookupdecimal3",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1
              },
              [
                "customlookupdecimal3",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "customlookupdecimal3",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "customlookupdecimal3",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4412,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"customlookup4",
            "type":2,
            "array":32,
            "cols":"customlookupcount4",
            "variations":[
              [
                "customlookupsigned4",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "customlookupsigned4",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "customlookupdecimal4",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1
              },
              [
                "customlookupdecimal4",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "customlookupdecimal4",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "customlookupdecimal4",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4476,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"custom2dopts1",
            "type":1,
            "compact":0,
            "address":4796
          },
          {
            "id":"custom2ddecimal1",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4800
          },
          {
            "id":"custom2dsigned1",
            "type":8,
            "address":"custom2dopts1.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"custom2dsigned2",
            "type":8,
            "address":"custom2dopts2.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"custom2dsigned3",
            "type":8,
            "address":"custom2dopts3.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"custom2dsigned4",
            "type":8,
            "address":"custom2dopts4.7.7",
            "options":[
              "Unsigned",
              "Signed"
            ],
            "descr":"If signed, negative numbers are possible. If negative numbers are not necessary, then the function should be unsigned.\r\nChanging between signed and unsigned may require reconfiguring every var picker entry that is using the variable for any purpose."
          },
          {
            "id":"custom2dtable1",
            "type":11,
            "datatype":2,
            "variations":[
              [
                "custom2dsigned1",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "custom2dsigned1",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "custom2ddecimal1",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1,
                "endif":true
              },
              [
                "custom2ddecimal1",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "custom2ddecimal1",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "custom2ddecimal1",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4804,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"custom2dtable2",
            "type":11,
            "datatype":2,
            "variations":[
              [
                "custom2dsigned2",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "custom2dsigned2",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "custom2ddecimal2",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1,
                "endif":true
              },
              [
                "custom2ddecimal2",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "custom2ddecimal2",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "custom2ddecimal2",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4808,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"custom2dtable3",
            "type":11,
            "datatype":2,
            "variations":[
              [
                "custom2dsigned3",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "custom2dsigned3",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "custom2ddecimal3",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1,
                "endif":true
              },
              [
                "custom2ddecimal3",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "custom2ddecimal3",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "custom2ddecimal3",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4812,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"custom2dtable4",
            "type":11,
            "datatype":2,
            "variations":[
              [
                "custom2dsigned4",
                "=",
                "Signed"
              ],
              {
                "sign":1
              },
              [
                "custom2dsigned4",
                "=",
                "Unsigned"
              ],
              {
                "sign":0
              },
              [
                "custom2ddecimal4",
                "=",
                "0"
              ],
              {
                "digits":0,
                "scale":1,
                "endif":true
              },
              [
                "custom2ddecimal4",
                "=",
                "1"
              ],
              {
                "digits":1,
                "scale":0.100000
              },
              [
                "custom2ddecimal4",
                "=",
                "2"
              ],
              {
                "digits":2,
                "scale":0.010000
              },
              [
                "custom2ddecimal4",
                "=",
                "3"
              ],
              {
                "digits":3,
                "scale":0.001000
              }
            ],
            "address":4816,
            "sign":0,
            "digits":0,
            "scale":1
          },
          {
            "id":"airtempsrc",
            "type":9,
            "maxwidth":2,
            "address":4824
          },
          {
            "id":"airtempbpcount",
            "type":1,
            "min":1,
            "max":32,
            "address":4828
          },
          {
            "id":"airtempvoltages",
            "type":2,
            "array":32,
            "describedby":"airtempsrc",
            "cols":"airtempbpcount",
            "address":4894
          },
          {
            "id":"airtempvalidrange",
            "type":2,
            "array":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "address":4958
          },
          {
            "id":"airtempvalues",
            "type":2,
            "array":32,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "cols":"airtempbpcount",
            "address":4830
          },
          {
            "id":"airtempdefault",
            "type":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "address":4962
          },
          {
            "id":"airtempbins",
            "type":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "array":16,
            "input":"airtemp",
            "address":4964
          },
          {
            "id":"airtempcorr",
            "type":2,
            "scale":0.000977,
            "digits":3,
            "array":16,
            "descr":"This function is multiplied by the main fuel limit map as well as the quick spool limit map. It does not affect the general purpose fuel limits.",
            "address":4996
          },
          {
            "id":"startrequest",
            "type":12,
            "options":"map_inputs",
            "descr":"If using the ECU to control the starter, this parameter specifies the input that signals starting should happen. Usually either a switch input or a CAN message",
            "address":5028
          },
          {
            "id":"startoptions",
            "type":1,
            "address":5032
          },
          {
            "id":"start_waitglow",
            "type":8,
            "address":"startoptions.0.0",
            "options":"enum_enabled",
            "descr":"If this setting is enabled, the starter control strategy will not energise the starter until glow pre-heating is complete."
          },
          {
            "id":"starttimeout",
            "type":1,
            "unit":"seconds",
            "digits":1,
            "scale":0.100000,
            "descr":"If the engine has not started within this time after the starter is energised, starting is cancelled.",
            "address":5030
          },
          {
            "id":"startrpmtimeout",
            "type":1,
            "unit":"seconds",
            "digits":1,
            "scale":0.100000,
            "descr":"If the crank position sensor does not pick up any signal within this time after the starter is energised, it is assumed the starter has failed to engage and starting is cancelled.",
            "address":5031
          },
          {
            "id":"torqueoptions",
            "type":1,
            "address":5033
          },
          {
            "id":"torquemodel_enable",
            "type":8,
            "address":"torqueoptions.0.0",
            "options":"enum_enabled",
            "descr":"This option enables the processing of the torque map and torque based fuel limits."
          },
          {
            "id":"torquemodel_twomaps",
            "type":8,
            "address":"torqueoptions.1.1",
            "options":"enum_enabled",
            "descr":"If this option is enabled, the reverse mapping from torque limit to fuel limit is picked from a separate reverse map instead of from the main torque map."
          },
          {
            "id":"torquelimitrequestsrc",
            "maxwidth":2,
            "type":9,
            "descr":"The torque request limit also affects the boost control as long as boost control is set to use the fuelrequestlimited variable for its input and thus is better suited for long-term limits like traction control.\r\nWhen the source is zero there is no limit imposed.",
            "address":5036
          },
          {
            "id":"torquelimitsrc",
            "maxwidth":2,
            "type":9,
            "descr":"The torque limit will maintain an unchanged boost target so it is more suitable for short term limits such as imposed during transmission shifts.\r\nWhen the source is zero there is no limit imposed.",
            "address":5040
          },
          {
            "id":"mintorqueenable",
            "type":12,
            "options":"map_inputs",
            "descr":"Minimum torque is intended for transmission controllers requesting an increase in torque during off throttle downshifts.",
            "address":5690
          },
          {
            "id":"maxtorqueblipvalue",
            "type":2,
            "unit":"Nm",
            "scale":0.200000,
            "digits":1,
            "offset":-1940,
            "descr":"The minimum torque input (torque based throttle blip) will be restricted to this value",
            "address":6282
          },
          {
            "id":"mintorquerequestsrc",
            "type":9,
            "maxwidth":2,
            "descr":"Source for minimum torque (torque blip), usually coming from a transmission controller. Must be scaled appropriately, with a zero point of 1940 and 0.2Nm per count",
            "address":6276
          },
          {
            "id":"maxtorquebliptime",
            "type":2,
            "unit":"ms",
            "descr":"If set to a non-zero value, this value is a fail safe to cancel the minimum torque request if the value hasn't changed for a period of time",
            "address":6280
          },
          {
            "id":"torquemap",
            "type":2,
            "array":256,
            "rows":"torquerpmbincount",
            "cols":"torquefuelbincount",
            "unit":"Nm",
            "scale":0.200000,
            "digits":1,
            "offset":-1940,
            "descr":"It is important that along the fuel axis this map is a reversible function. The torque values are required to increase with increases in fuel for correct operation of the torque model.",
            "address":5044
          },
          {
            "id":"torquerpmbins",
            "type":2,
            "input":"enginespeed",
            "unit":"RPM",
            "array":32,
            "cols":"torquerpmbincount",
            "address":5556
          },
          {
            "id":"torquefuelbins",
            "type":2,
            "input":"fuelqty",
            "unit":"µl",
            "min":0,
            "max":650,
            "scale":0.010000,
            "digits":2,
            "array":32,
            "cols":"torquefuelbincount",
            "address":5620
          },
          {
            "id":"torquerpmbincount",
            "type":1,
            "min":1,
            "max":32,
            "descr":"The product of this value and the torque fuel breakpoint count must be less than or equal to 512.",
            "address":5684
          },
          {
            "id":"torquefuelbincount",
            "type":1,
            "min":1,
            "max":32,
            "descr":"The product of this value and the torque engine speed breakpoint count must be less than or equal to 512.",
            "address":5685
          },
          {
            "id":"torquelimitrequestenable",
            "type":12,
            "options":"map_inputs",
            "descr":"A condition to enable the torque request limit, may not be necessary in all applications.",
            "address":5686
          },
          {
            "id":"torquelimitenable",
            "type":12,
            "options":"map_inputs",
            "descr":"A condition to enable the torque limit, may not be necessary in all applications.",
            "address":5688
          },
          {
            "id":"torquemin",
            "type":2,
            "unit":"Nm",
            "scale":0.200000,
            "digits":1,
            "offset":-1940,
            "descr":"Lower boundary of computed torque values by torque management strategy",
            "address":5692
          },
          {
            "id":"torquemax",
            "type":2,
            "unit":"Nm",
            "scale":0.200000,
            "digits":1,
            "offset":-1940,
            "descr":"Upper boundary of computed torque values by torque management strategy",
            "address":5694
          },
          {
            "id":"torquebincount",
            "type":1,
            "max":32,
            "min":1,
            "address":5696
          },
          {
            "id":"torquebins",
            "type":2,
            "unit":"Nm",
            "scale":0.200000,
            "digits":1,
            "offset":-1940,
            "array":32,
            "cols":"torquebincount",
            "address":5698
          },
          {
            "id":"fuelfromtorquemap",
            "type":2,
            "unit":"µl",
            "min":0,
            "max":650,
            "scale":0.010000,
            "digits":2,
            "array":256,
            "rows":"torquerpmbincount",
            "cols":"torquebincount",
            "descr":"This map, if enabled, is used to translate from torque limit to fuel limit, in case an asymmetrical relationship between reported torque and torque limits is desired.",
            "address":5762
          },
          {
            "id":"fanpwmfreq",
            "type":2,
            "scale":500000,
            "inverse":1,
            "max":"2000",
            "unit":"Hz",
            "reset":1,
            "descr":"If assigned to a PWM output pin, this parameter specifies the PWM frequency for the variable speed cooling fan.",
            "address":6290
          },
          {
            "id":"fanoffduty",
            "type":1,
            "unit":"%",
            "scale":0.390625,
            "descr":"PWM duty cycle of variable speed cooling fan when the fan should be stopped. When the engine is not running the fan will not run.",
            "address":6284
          },
          {
            "id":"fanmaxduty",
            "type":1,
            "unit":"%",
            "scale":0.390625,
            "descr":"PWM duty cycle of variable speed cooling fan when the fan is running at maximum speed.",
            "address":6285
          },
          {
            "id":"fanstarttemp",
            "type":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "descr":"Below this temperature the fan will be stopped.",
            "address":6286
          },
          {
            "id":"fanmaxtemp",
            "type":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "descr":"Above this temperature the fan will run at maximum speed.",
            "address":6288
          },
          {
            "id":"airconinput",
            "type":12,
            "options":"map_inputs",
            "descr":"This input will force the fan to run at a minimum of the specified speed, typically assigned to air conditioning switch.",
            "address":6292
          },
          {
            "id":"fanacspeed",
            "type":1,
            "unit":"%",
            "scale":0.390625,
            "descr":"The speed at which the fan will run at minimum when the air conditioning input is active. Note that this specifies a speed and not PWM duty cycle.",
            "address":6294
          },
          {
            "id":"glowplugcount",
            "type":1,
            "max":8,
            "descr":"Number of glow plugs to monitor. Normally 5 or 6. For glow plug monitoring to work the DSL1 controller must be of serial number 200 or higher, and you must have a Mercedes Benz PWM communication glow plug controller (stock item for OM605 or OM606 turbo engines) connected to connector C pin 4.\r\nIf this parameter is set, and the glow indicator on the instrument cluster is configured to run off the glow indicator output or glow_light variable over CAN,\r\nthen the glow indicator will flash rapidly for a few seconds after heating is done to indicate there is a problem with one or more glow plug or communications with the glow relay are not working.\r\nView controller errors from the Communications menu to see which one of the glow plugs has a problem.\r\n\r\nNote that some older glow plug relays do not fully support this feature and will not turn on if set to monitor the plugs individually. If your glow relay does not engage, try setting this value to 1 to monitor the plugs as a whole or 0 to disable monitoring altogether.",
            "address":6298
          },
          {
            "id":"oilpsrc",
            "type":9,
            "maxwidth":2,
            "address":6452
          },
          {
            "id":"oilpvoltages",
            "type":2,
            "array":2,
            "describedby":"oilpsrc",
            "address":6464
          },
          {
            "id":"oilpvalidrange",
            "type":2,
            "array":2,
            "describedby":"oilpsrc",
            "address":6468
          },
          {
            "id":"oilpvalues",
            "type":2,
            "array":2,
            "unit":"mbar",
            "address":6460
          },
          {
            "id":"oilpdefault",
            "type":2,
            "unit":"mbar",
            "address":6472
          },
          {
            "id":"opspeedbins",
            "type":2,
            "unit":"RPM",
            "input":"enginespeed",
            "array":8,
            "address":6474
          },
          {
            "id":"opyaxsrc",
            "type":9,
            "maxwidth":2,
            "descr":"Variable picker for Y axis of minimum oil pressure function. Normally oil temperature.",
            "address":6456
          },
          {
            "id":"opyaxis",
            "type":2,
            "array":8,
            "describedby":"opyaxsrc",
            "address":6490
          },
          {
            "id":"opminvalue",
            "type":2,
            "unit":"mbar",
            "input":"oilpress",
            "array":64,
            "rows":8,
            "cols":8,
            "address":6506
          },
          {
            "id":"optimeout",
            "type":2,
            "unit":"seconds",
            "scale":0.001000,
            "digits":2,
            "descr":"Time the oil pressure is allowed to be below the minimum value before engine is automatically shut off. A value of zero disables the shut off.",
            "address":6634
          },
          {
            "id":"opcheckminruntime",
            "type":2,
            "unit":"seconds",
            "scale":0.100000,
            "digits":2,
            "descr":"For how long the engine must be running before the oil pressure safety checks become active.",
            "address":6636
          },
          {
            "id":"oiltempsrc",
            "type":9,
            "maxwidth":2,
            "descr":"Variable picker for oil temperature input. Typically one of the analog inputs.",
            "address":6640
          },
          {
            "id":"oiltempbpcount",
            "type":1,
            "min":1,
            "max":32,
            "descr":"Specifies how many data points to use for the oil temperature sensor transfer function.",
            "address":6644
          },
          {
            "id":"oiltempvoltages",
            "type":2,
            "array":32,
            "describedby":"oiltempsrc",
            "cols":"oiltempbpcount",
            "descr":"The input breakpoints of the oil temperature sensor transfer function.",
            "address":6710
          },
          {
            "id":"oiltempvalidrange",
            "type":2,
            "array":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "descr":"Temperatures outside of this range are considered anomalies caused by a defective sensor.",
            "address":6774
          },
          {
            "id":"oiltempvalues",
            "type":2,
            "array":32,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "cols":"oiltempbpcount",
            "descr":"The output values of the oil temperature transfer function.",
            "address":6646
          },
          {
            "id":"oiltempdefault",
            "type":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "descr":"This default value is used if a fault is detected in the oil temperature sensor.",
            "address":6778
          },
          {
            "id":"transtempsrc",
            "type":9,
            "maxwidth":2,
            "address":6312
          },
          {
            "id":"transtempbpcount",
            "type":1,
            "min":1,
            "max":32,
            "address":6316
          },
          {
            "id":"transtempvoltages",
            "type":2,
            "array":32,
            "describedby":"transtempsrc",
            "cols":"transtempbpcount",
            "address":6382
          },
          {
            "id":"transtempvalidrange",
            "type":2,
            "array":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "address":6446
          },
          {
            "id":"transtempvalues",
            "type":2,
            "array":32,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "cols":"transtempbpcount",
            "address":6318
          },
          {
            "id":"transtempdefault",
            "type":2,
            "unit":"°C",
            "offset":-2731,
            "scale":0.100000,
            "digits":1,
            "address":6450
          },
          {
            "id":"oillevelsrc",
            "type":9,
            "maxwidth":2,
            "address":6780
          },
          {
            "id":"oillevelbpcount",
            "type":1,
            "min":2,
            "max":8,
            "address":6784
          },
          {
            "id":"oillevelpoints",
            "type":2,
            "array":8,
            "cols":"oillevelbpcount",
            "describedby":"oillevelsrc",
            "address":6786
          },
          {
            "id":"oillevelfunction",
            "type":1,
            "array":8,
            "cols":"oillevelbpcount",
            "unit":"mm",
            "address":6802
          },
          {
            "id":"oillevelinputrange",
            "type":2,
            "array":2,
            "describedby":"oillevelsrc",
            "address":6810
          },
          {
            "id":"oilleveldefault",
            "type":1,
            "unit":"mm",
            "address":6814
          },
          {
            "id":"oilqualitysrc",
            "type":9,
            "maxwidth":2,
            "address":6816
          },
          {
            "id":"oilqualitybpcount",
            "type":1,
            "min":2,
            "max":8,
            "address":6820
          },
          {
            "id":"oilqualitypoints",
            "type":2,
            "array":8,
            "cols":"oilqualitybpcount",
            "describedby":"oilqualitysrc",
            "address":6822
          },
          {
            "id":"oilqualityfunction",
            "type":1,
            "array":8,
            "cols":"oilqualitybpcount",
            "unit":"%",
            "address":6838
          },
          {
            "id":"oilqualityinputrange",
            "type":2,
            "array":2,
            "describedby":"oillevelsrc",
            "address":6846
          },
          {
            "id":"oilqualitydefault",
            "type":1,
            "unit":"%",
            "address":6850
          },
          {
            "id":"timingfeedbackmode",
            "type":8,
            "options":[
              "Timing feedback",
              "Timing rack position feedback",
              "Custom timing source"
            ],
            "descr":"In timing feedback mode, a needle lift sensor is typically used to pulse a digital input which gets computed against the timing of the crank position sensor.\r\nIn rack position mode the injection timing is inferred based on a pair of inductive sensors like those used for fuel rack position. This requires special hardware to work.",
            "address":6892
          },
          {
            "id":"trackexpfilter_enable",
            "type":8,
            "address":"bits0.29.29",
            "options":"enum_enabled"
          },
          {
            "id":"trackfilter",
            "type":1,
            "min":4,
            "max":32,
            "descr":"The inductance value of each timing rack position sensor is sampled 500 times per second. This setting specifies how many samples are averaged together to produce a clean reading of rack position.\nLess averaging produces a noisier reading which may affect performance of control loop.\nMore averaging produces a cleaner reading but induces a lag in the reading.\nPosition is updated at same rate regardless of averaging value.",
            "address":815
          },
          {
            "id":"track0filterfactor",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of rack position.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the value approaches 100%.",
            "address":3936
          },
          {
            "id":"track1filterfactor",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of rack position.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the value approaches 100%.",
            "address":3938
          },
          {
            "id":"trackpospts",
            "type":2,
            "array":8,
            "input":"trackposition",
            "address":6852
          },
          {
            "id":"timingfromtrackpos",
            "type":2,
            "unit":"°",
            "scale":0.010986,
            "digits":1,
            "array":8,
            "max":359,
            "address":6868
          },
          {
            "id":"track0limits",
            "type":3,
            "array":2,
            "input":"track0",
            "descr":"The value range acceptable for the primary timing rack position sensor. Outside this range a fault is triggered and the rack solenoid power shuts off.",
            "address":20
          },
          {
            "id":"track1limits",
            "type":3,
            "array":2,
            "input":"track1",
            "descr":"The value range acceptable for the secondary timing rack position sensor. Outside this range a fault is triggered and the rack solenoid power shuts off.",
            "address":28
          },
          {
            "id":"customtimingpts",
            "type":2,
            "array":8,
            "describedby":"customtimingsrc",
            "address":6900
          },
          {
            "id":"customtimingsrc",
            "type":9,
            "maxwidth":2,
            "address":6896
          },
          {
            "id":"timingfromcustomsrc",
            "type":2,
            "unit":"°",
            "scale":0.010986,
            "digits":1,
            "array":8,
            "max":359,
            "address":6916
          },
          {
            "id":"triggermode",
            "type":8,
            "options":[
              "Universal",
              "Missing tooth crank angle"
            ],
            "descr":"Most installations should use Universal. Missing tooth crank angle is for engines with a 60-2 or 36-1 trigger where pump angle sensing is required.",
            "address":6884
          },
          {
            "id":"syncratio",
            "type":2,
            "scale":0.000977,
            "digits":2,
            "descr":"Used by the multi tooth decoder, this parameter specifies a ratio between normal tooth and abnormal tooth timing to look for when finding crank sync. The tooth gap before the most recent is multiplied by this value, and the most recent tooth gap must be greater than the result to register a sync (larger ratio makes the strategy less sensitive).",
            "address":6886
          },
          {
            "id":"nminustoothcount",
            "type":1,
            "min":1,
            "descr":"Only has effect when using 'missing tooth' decoder. This is the number of teeth the crank wheel is based on. 36 for a 36-1 wheel, 60 for a 60-2\/58X wheel and so on.",
            "address":6890
          },
          {
            "id":"nminusmissing",
            "type":1,
            "max":2,
            "descr":"Only has effect when using 'missing tooth' decoder. This is the number of teeth missing at one point in the circle. 1 for a 36-1 wheel, 2 for a 60-2\/58X wheel and so on.",
            "address":6891
          },
          {
            "id":"syncangle",
            "min":0,
            "max":719.900000,
            "type":2,
            "unit":"°BTDC",
            "scale":0.010986,
            "digits":1,
            "descr":"In degrees before TDC of cylinder 1, this is the angle at which the primary sync function of the crank trigger is expected to happen.",
            "address":6888
          },
          {
            "id":"runthreshold",
            "type":2,
            "unit":"RPM",
            "input":"enginespeed",
            "descr":"When the engine speed is greater than this number, the engine is considered running and not stopped or cranking.",
            "address":6932
          },
          {
            "id":"idlesyncenable",
            "type":8,
            "address":"bits0.31.31",
            "options":"enum_enabled",
            "descr":"When this option is enabled, the idle service interval should be set to something absurdly long like 200 milliseconds, and from start up, up to 500 RPM above the maximum configured idle speed, the idle service will run after every combustion event."
          },
          {
            "id":"idlerpmpts",
            "type":2,
            "input":"enginespeed",
            "unit":"RPM",
            "array":8,
            "address":576
          },
          {
            "id":"idlerpmPmod",
            "type":2,
            "array":8,
            "digits":3,
            "scale":0.000977,
            "descr":"An idle control modifier based on engine speed, to compensate for differences in engine response at different speeds",
            "address":592
          },
          {
            "id":"idlerpmImod",
            "type":2,
            "array":8,
            "digits":3,
            "scale":0.000977,
            "descr":"An idle control modifier based on engine speed, to compensate for differences in engine response at different speeds",
            "address":608
          },
          {
            "id":"idlerpmDmod",
            "type":2,
            "array":8,
            "digits":3,
            "scale":0.000977,
            "descr":"An idle control modifier based on engine speed, to compensate for differences in engine response at different speeds",
            "address":624
          },
          {
            "id":"customracksrc",
            "type":9,
            "maxwidth":2,
            "address":7456
          },
          {
            "id":"customrackbpcount",
            "type":1,
            "max":16,
            "address":7528
          },
          {
            "id":"customrackpts",
            "type":2,
            "describedby":"customracksrc",
            "array":16,
            "cols":"customrackbpcount",
            "address":7464
          },
          {
            "id":"customrackcurve",
            "type":2,
            "array":16,
            "cols":"customrackbpcount",
            "address":7496
          },
          {
            "id":"customrackrange",
            "type":2,
            "array":2,
            "describedby":"customracksrc",
            "address":7460
          },
          {
            "id":"simplepwmduty1",
            "type":11,
            "datatype":2,
            "unit":"%",
            "scale":0.003052,
            "digits":2,
            "cols":"simplepwmdutyptcount1",
            "compact":0,
            "address":7544
          },
          {
            "id":"simplepwmfreq1",
            "type":11,
            "datatype":2,
            "unit":"Hz",
            "scale":500000,
            "inverse":1,
            "max":"2000",
            "cols":"simplepwmfreqptcount1",
            "compact":0,
            "address":7560
          },
          {
            "id":"simplepwmrefreshinterval1",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"The PWM duty and frequency gets updated at this interval. To disable the function set this value to 0.",
            "address":7529
          },
          {
            "id":"simplepwmenable1",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This input can shut off the PWM output, if you wish to have the PWM output always running select 'Always on'",
            "address":7534
          },
          {
            "id":"governor_enable",
            "type":8,
            "address":"bits0.11.11",
            "options":"enum_enabled",
            "descr":"The high speed governor enables the ECU to regulate engine speed above idle speed for applications that require constant speed operation. The desired speed is set as a function of accelerator position and the fuel request map specifies the maximum fuel, and the govfuelreq variable shows the fuel request after it has been reduced by the governor"
          },
          {
            "id":"governorcondition",
            "type":12,
            "options":"map_inputs",
            "address":7616
          },
          {
            "id":"governorcycletime",
            "type":1,
            "unit":"ms",
            "min":1,
            "max":250,
            "descr":"This parameter specifies the interval at which the governor PID function is evaluated.",
            "address":7614
          },
          {
            "id":"governorspeedsrc",
            "type":9,
            "maxwidth":2,
            "address":7604
          },
          {
            "id":"governorspeed",
            "type":11,
            "datatype":2,
            "describedby":"governorspeedsrc",
            "address":7576
          },
          {
            "id":"governorPgain",
            "type":11,
            "datatype":2,
            "digits":4,
            "scale":0.000313,
            "descr":"The scale is such that a value of 1 results in 1.0 mm3 of fuel added or removed for 1 RPM of error, unless you are operating in larger fuel quantity mode (1300-3250mm3) where the scale is multiplied",
            "address":7580
          },
          {
            "id":"governorIgain",
            "type":11,
            "datatype":2,
            "digits":4,
            "scale":0.000313,
            "address":7584
          },
          {
            "id":"governorDgain",
            "type":11,
            "datatype":2,
            "digits":4,
            "scale":0.000313,
            "address":7588
          },
          {
            "id":"governorPgainmod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.000977,
            "max":31,
            "address":7592
          },
          {
            "id":"governorIgainmod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.000977,
            "max":31,
            "address":7596
          },
          {
            "id":"governorDgainmod",
            "type":11,
            "datatype":2,
            "digits":3,
            "scale":0.000977,
            "max":31,
            "address":7600
          },
          {
            "id":"governorlimiter",
            "type":11,
            "datatype":2,
            "describedby":"governorspeedsrc",
            "address":7608
          },
          {
            "id":"governorlimiterenable",
            "type":12,
            "options":"map_inputs",
            "address":7612
          },
          {
            "id":"gpioondelay1",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1528
          },
          {
            "id":"gpioondelay2",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1530
          },
          {
            "id":"gpioondelay3",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1532
          },
          {
            "id":"gpioondelay4",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1534
          },
          {
            "id":"gpioondelay5",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1536
          },
          {
            "id":"gpioondelay6",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1538
          },
          {
            "id":"gpioondelay7",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1540
          },
          {
            "id":"gpioondelay8",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1542
          },
          {
            "id":"gpioondelay9",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1544
          },
          {
            "id":"gpioondelay10",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1546
          },
          {
            "id":"gpioondelay11",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1548
          },
          {
            "id":"gpioondelay12",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1550
          },
          {
            "id":"gpioondelay13",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1552
          },
          {
            "id":"gpioondelay14",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1554
          },
          {
            "id":"gpioondelay15",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1556
          },
          {
            "id":"gpioondelay16",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1558
          },
          {
            "id":"gpioondelay17",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning on must be met for this period of time before switching state from 0 to 1.",
            "address":1560
          },
          {
            "id":"gpiooffdelay1",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1564
          },
          {
            "id":"gpiooffdelay2",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1566
          },
          {
            "id":"gpiooffdelay3",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1568
          },
          {
            "id":"gpiooffdelay4",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1570
          },
          {
            "id":"gpiooffdelay5",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1572
          },
          {
            "id":"gpiooffdelay6",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1574
          },
          {
            "id":"gpiooffdelay7",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1576
          },
          {
            "id":"gpiooffdelay8",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1578
          },
          {
            "id":"gpiooffdelay9",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1580
          },
          {
            "id":"gpiooffdelay10",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1582
          },
          {
            "id":"gpiooffdelay11",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1584
          },
          {
            "id":"gpiooffdelay12",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1586
          },
          {
            "id":"gpiooffdelay13",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1588
          },
          {
            "id":"gpiooffdelay14",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1590
          },
          {
            "id":"gpiooffdelay15",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1592
          },
          {
            "id":"gpiooffdelay16",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1594
          },
          {
            "id":"gpiooffdelay17",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"If set to a non-zero value, the conditions for turning off must be met for this period of time before switching state from 1 to 0.",
            "address":1596
          },
          {
            "id":"gpiomaxduration1",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1600
          },
          {
            "id":"gpiomaxduration2",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1602
          },
          {
            "id":"gpiomaxduration3",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1604
          },
          {
            "id":"gpiomaxduration4",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1606
          },
          {
            "id":"gpiomaxduration5",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1608
          },
          {
            "id":"gpiomaxduration6",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1610
          },
          {
            "id":"gpiomaxduration7",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1612
          },
          {
            "id":"gpiomaxduration8",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1614
          },
          {
            "id":"gpiomaxduration9",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1616
          },
          {
            "id":"gpiomaxduration10",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1618
          },
          {
            "id":"gpiomaxduration11",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1620
          },
          {
            "id":"gpiomaxduration12",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1622
          },
          {
            "id":"gpiomaxduration13",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1624
          },
          {
            "id":"gpiomaxduration14",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1626
          },
          {
            "id":"gpiomaxduration15",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1628
          },
          {
            "id":"gpiomaxduration16",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1630
          },
          {
            "id":"gpiomaxduration17",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the condition will reset to 0 after a given time, and the logic must return a 0 result before it can retrigger back to 1",
            "address":1632
          },
          {
            "id":"gpiocond1var1",
            "compact":0,
            "type":9,
            "address":824
          },
          {
            "id":"gpiocond1var2",
            "compact":0,
            "type":9,
            "address":828
          },
          {
            "id":"gpiocond1var3",
            "compact":0,
            "type":9,
            "address":832
          },
          {
            "id":"gpiocond1var4",
            "compact":0,
            "type":9,
            "address":836
          },
          {
            "id":"gpiocond1var5",
            "compact":0,
            "type":9,
            "address":840
          },
          {
            "id":"gpiocond1var6",
            "compact":0,
            "type":9,
            "address":844
          },
          {
            "id":"gpiocond1var7",
            "compact":0,
            "type":9,
            "address":848
          },
          {
            "id":"gpiocond1var8",
            "compact":0,
            "type":9,
            "address":852
          },
          {
            "id":"gpiocond1var9",
            "compact":0,
            "type":9,
            "address":856
          },
          {
            "id":"gpiocond1var10",
            "compact":0,
            "type":9,
            "address":860
          },
          {
            "id":"gpiocond1var11",
            "compact":0,
            "type":9,
            "address":864
          },
          {
            "id":"gpiocond1var12",
            "compact":0,
            "type":9,
            "address":868
          },
          {
            "id":"gpiocond1var13",
            "compact":0,
            "type":9,
            "address":872
          },
          {
            "id":"gpiocond1var14",
            "compact":0,
            "type":9,
            "address":876
          },
          {
            "id":"gpiocond1var15",
            "compact":0,
            "type":9,
            "address":880
          },
          {
            "id":"gpiocond1var16",
            "compact":0,
            "type":9,
            "address":884
          },
          {
            "id":"gpiocond1var17",
            "compact":0,
            "type":9,
            "address":888
          },
          {
            "id":"gpiocond1val1",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var1",
            "address":896
          },
          {
            "id":"gpiocond1val2",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var2",
            "address":900
          },
          {
            "id":"gpiocond1val3",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var3",
            "address":904
          },
          {
            "id":"gpiocond1val4",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var4",
            "address":908
          },
          {
            "id":"gpiocond1val5",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var5",
            "address":912
          },
          {
            "id":"gpiocond1val6",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var6",
            "address":916
          },
          {
            "id":"gpiocond1val7",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var7",
            "address":920
          },
          {
            "id":"gpiocond1val8",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var8",
            "address":924
          },
          {
            "id":"gpiocond1val9",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var9",
            "address":928
          },
          {
            "id":"gpiocond1val10",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var10",
            "address":932
          },
          {
            "id":"gpiocond1val11",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var11",
            "address":936
          },
          {
            "id":"gpiocond1val12",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var12",
            "address":940
          },
          {
            "id":"gpiocond1val13",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var13",
            "address":944
          },
          {
            "id":"gpiocond1val14",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var14",
            "address":948
          },
          {
            "id":"gpiocond1val15",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var15",
            "address":952
          },
          {
            "id":"gpiocond1val16",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var16",
            "address":956
          },
          {
            "id":"gpiocond1val17",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond1var17",
            "address":960
          },
          {
            "id":"gpiocond1hyster1",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var1",
            "relative":1,
            "address":968
          },
          {
            "id":"gpiocond1hyster2",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var2",
            "relative":1,
            "address":972
          },
          {
            "id":"gpiocond1hyster3",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var3",
            "relative":1,
            "address":976
          },
          {
            "id":"gpiocond1hyster4",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var4",
            "relative":1,
            "address":980
          },
          {
            "id":"gpiocond1hyster5",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var5",
            "relative":1,
            "address":984
          },
          {
            "id":"gpiocond1hyster6",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var6",
            "relative":1,
            "address":988
          },
          {
            "id":"gpiocond1hyster7",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var7",
            "relative":1,
            "address":992
          },
          {
            "id":"gpiocond1hyster8",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var8",
            "relative":1,
            "address":996
          },
          {
            "id":"gpiocond1hyster9",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var9",
            "relative":1,
            "address":1000
          },
          {
            "id":"gpiocond1hyster10",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var10",
            "relative":1,
            "address":1004
          },
          {
            "id":"gpiocond1hyster11",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var11",
            "relative":1,
            "address":1008
          },
          {
            "id":"gpiocond1hyster12",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var12",
            "relative":1,
            "address":1012
          },
          {
            "id":"gpiocond1hyster13",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var13",
            "relative":1,
            "address":1016
          },
          {
            "id":"gpiocond1hyster14",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var14",
            "relative":1,
            "address":1020
          },
          {
            "id":"gpiocond1hyster15",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var15",
            "relative":1,
            "address":1024
          },
          {
            "id":"gpiocond1hyster16",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var16",
            "relative":1,
            "address":1028
          },
          {
            "id":"gpiocond1hyster17",
            "compact":0,
            "type":3,
            "describedby":"gpiocond1var17",
            "relative":1,
            "address":1032
          },
          {
            "id":"gpiocond1param1",
            "compact":0,
            "type":1,
            "address":1037
          },
          {
            "id":"gpiocond1param2",
            "compact":0,
            "type":1,
            "address":1038
          },
          {
            "id":"gpiocond1param3",
            "compact":0,
            "type":1,
            "address":1039
          },
          {
            "id":"gpiocond1param4",
            "compact":0,
            "type":1,
            "address":1040
          },
          {
            "id":"gpiocond1param5",
            "compact":0,
            "type":1,
            "address":1041
          },
          {
            "id":"gpiocond1param6",
            "compact":0,
            "type":1,
            "address":1042
          },
          {
            "id":"gpiocond1param7",
            "compact":0,
            "type":1,
            "address":1043
          },
          {
            "id":"gpiocond1param8",
            "compact":0,
            "type":1,
            "address":1044
          },
          {
            "id":"gpiocond1param9",
            "compact":0,
            "type":1,
            "address":1045
          },
          {
            "id":"gpiocond1param10",
            "compact":0,
            "type":1,
            "address":1046
          },
          {
            "id":"gpiocond1param11",
            "compact":0,
            "type":1,
            "address":1047
          },
          {
            "id":"gpiocond1param12",
            "compact":0,
            "type":1,
            "address":1048
          },
          {
            "id":"gpiocond1param13",
            "compact":0,
            "type":1,
            "address":1049
          },
          {
            "id":"gpiocond1param14",
            "compact":0,
            "type":1,
            "address":1050
          },
          {
            "id":"gpiocond1param15",
            "compact":0,
            "type":1,
            "address":1051
          },
          {
            "id":"gpiocond1param16",
            "compact":0,
            "type":1,
            "address":1052
          },
          {
            "id":"gpiocond1param17",
            "compact":0,
            "type":1,
            "address":1053
          },
          {
            "id":"gpiocond1type1",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param1.0.2"
          },
          {
            "id":"gpiocond1type2",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param2.0.2"
          },
          {
            "id":"gpiocond1type3",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param3.0.2"
          },
          {
            "id":"gpiocond1type4",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param4.0.2"
          },
          {
            "id":"gpiocond1type5",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param5.0.2"
          },
          {
            "id":"gpiocond1type6",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param6.0.2"
          },
          {
            "id":"gpiocond1type7",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param7.0.2"
          },
          {
            "id":"gpiocond1type8",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param8.0.2"
          },
          {
            "id":"gpiocond1type9",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param9.0.2"
          },
          {
            "id":"gpiocond1type10",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param10.0.2"
          },
          {
            "id":"gpiocond1type11",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param11.0.2"
          },
          {
            "id":"gpiocond1type12",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param12.0.2"
          },
          {
            "id":"gpiocond1type13",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param13.0.2"
          },
          {
            "id":"gpiocond1type14",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param14.0.2"
          },
          {
            "id":"gpiocond1type15",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param15.0.2"
          },
          {
            "id":"gpiocond1type16",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param16.0.2"
          },
          {
            "id":"gpiocond1type17",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond1param17.0.2"
          },
          {
            "id":"gpiocond1and1",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param1.3.4"
          },
          {
            "id":"gpiocond1and2",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param2.3.4"
          },
          {
            "id":"gpiocond1and3",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param3.3.4"
          },
          {
            "id":"gpiocond1and4",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param4.3.4"
          },
          {
            "id":"gpiocond1and5",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param5.3.4"
          },
          {
            "id":"gpiocond1and6",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param6.3.4"
          },
          {
            "id":"gpiocond1and7",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param7.3.4"
          },
          {
            "id":"gpiocond1and8",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param8.3.4"
          },
          {
            "id":"gpiocond1and9",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param9.3.4"
          },
          {
            "id":"gpiocond1and10",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param10.3.4"
          },
          {
            "id":"gpiocond1and11",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param11.3.4"
          },
          {
            "id":"gpiocond1and12",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param12.3.4"
          },
          {
            "id":"gpiocond1and13",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param13.3.4"
          },
          {
            "id":"gpiocond1and14",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param14.3.4"
          },
          {
            "id":"gpiocond1and15",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param15.3.4"
          },
          {
            "id":"gpiocond1and16",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param16.3.4"
          },
          {
            "id":"gpiocond1and17",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond1param17.3.4"
          },
          {
            "id":"gpiocond2var1",
            "compact":0,
            "type":9,
            "address":1060
          },
          {
            "id":"gpiocond2var2",
            "compact":0,
            "type":9,
            "address":1064
          },
          {
            "id":"gpiocond2var3",
            "compact":0,
            "type":9,
            "address":1068
          },
          {
            "id":"gpiocond2var4",
            "compact":0,
            "type":9,
            "address":1072
          },
          {
            "id":"gpiocond2var5",
            "compact":0,
            "type":9,
            "address":1076
          },
          {
            "id":"gpiocond2var6",
            "compact":0,
            "type":9,
            "address":1080
          },
          {
            "id":"gpiocond2var7",
            "compact":0,
            "type":9,
            "address":1084
          },
          {
            "id":"gpiocond2var8",
            "compact":0,
            "type":9,
            "address":1088
          },
          {
            "id":"gpiocond2var9",
            "compact":0,
            "type":9,
            "address":1092
          },
          {
            "id":"gpiocond2var10",
            "compact":0,
            "type":9,
            "address":1096
          },
          {
            "id":"gpiocond2var11",
            "compact":0,
            "type":9,
            "address":1100
          },
          {
            "id":"gpiocond2var12",
            "compact":0,
            "type":9,
            "address":1104
          },
          {
            "id":"gpiocond2var13",
            "compact":0,
            "type":9,
            "address":1108
          },
          {
            "id":"gpiocond2var14",
            "compact":0,
            "type":9,
            "address":1112
          },
          {
            "id":"gpiocond2var15",
            "compact":0,
            "type":9,
            "address":1116
          },
          {
            "id":"gpiocond2var16",
            "compact":0,
            "type":9,
            "address":1120
          },
          {
            "id":"gpiocond2var17",
            "compact":0,
            "type":9,
            "address":1124
          },
          {
            "id":"gpiocond2val1",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var1",
            "address":1132
          },
          {
            "id":"gpiocond2val2",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var2",
            "address":1136
          },
          {
            "id":"gpiocond2val3",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var3",
            "address":1140
          },
          {
            "id":"gpiocond2val4",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var4",
            "address":1144
          },
          {
            "id":"gpiocond2val5",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var5",
            "address":1148
          },
          {
            "id":"gpiocond2val6",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var6",
            "address":1152
          },
          {
            "id":"gpiocond2val7",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var7",
            "address":1156
          },
          {
            "id":"gpiocond2val8",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var8",
            "address":1160
          },
          {
            "id":"gpiocond2val9",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var9",
            "address":1164
          },
          {
            "id":"gpiocond2val10",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var10",
            "address":1168
          },
          {
            "id":"gpiocond2val11",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var11",
            "address":1172
          },
          {
            "id":"gpiocond2val12",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var12",
            "address":1176
          },
          {
            "id":"gpiocond2val13",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var13",
            "address":1180
          },
          {
            "id":"gpiocond2val14",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var14",
            "address":1184
          },
          {
            "id":"gpiocond2val15",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var15",
            "address":1188
          },
          {
            "id":"gpiocond2val16",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var16",
            "address":1192
          },
          {
            "id":"gpiocond2val17",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond2var17",
            "address":1196
          },
          {
            "id":"gpiocond2hyster1",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var1",
            "relative":1,
            "address":1204
          },
          {
            "id":"gpiocond2hyster2",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var2",
            "relative":1,
            "address":1208
          },
          {
            "id":"gpiocond2hyster3",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var3",
            "relative":1,
            "address":1212
          },
          {
            "id":"gpiocond2hyster4",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var4",
            "relative":1,
            "address":1216
          },
          {
            "id":"gpiocond2hyster5",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var5",
            "relative":1,
            "address":1220
          },
          {
            "id":"gpiocond2hyster6",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var6",
            "relative":1,
            "address":1224
          },
          {
            "id":"gpiocond2hyster7",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var7",
            "relative":1,
            "address":1228
          },
          {
            "id":"gpiocond2hyster8",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var8",
            "relative":1,
            "address":1232
          },
          {
            "id":"gpiocond2hyster9",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var9",
            "relative":1,
            "address":1236
          },
          {
            "id":"gpiocond2hyster10",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var10",
            "relative":1,
            "address":1240
          },
          {
            "id":"gpiocond2hyster11",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var11",
            "relative":1,
            "address":1244
          },
          {
            "id":"gpiocond2hyster12",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var12",
            "relative":1,
            "address":1248
          },
          {
            "id":"gpiocond2hyster13",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var13",
            "relative":1,
            "address":1252
          },
          {
            "id":"gpiocond2hyster14",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var14",
            "relative":1,
            "address":1256
          },
          {
            "id":"gpiocond2hyster15",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var15",
            "relative":1,
            "address":1260
          },
          {
            "id":"gpiocond2hyster16",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var16",
            "relative":1,
            "address":1264
          },
          {
            "id":"gpiocond2hyster17",
            "compact":0,
            "type":3,
            "describedby":"gpiocond2var17",
            "relative":1,
            "address":1268
          },
          {
            "id":"gpiocond2param1",
            "compact":0,
            "type":1,
            "address":1273
          },
          {
            "id":"gpiocond2param2",
            "compact":0,
            "type":1,
            "address":1274
          },
          {
            "id":"gpiocond2param3",
            "compact":0,
            "type":1,
            "address":1275
          },
          {
            "id":"gpiocond2param4",
            "compact":0,
            "type":1,
            "address":1276
          },
          {
            "id":"gpiocond2param5",
            "compact":0,
            "type":1,
            "address":1277
          },
          {
            "id":"gpiocond2param6",
            "compact":0,
            "type":1,
            "address":1278
          },
          {
            "id":"gpiocond2param7",
            "compact":0,
            "type":1,
            "address":1279
          },
          {
            "id":"gpiocond2param8",
            "compact":0,
            "type":1,
            "address":1280
          },
          {
            "id":"gpiocond2param9",
            "compact":0,
            "type":1,
            "address":1281
          },
          {
            "id":"gpiocond2param10",
            "compact":0,
            "type":1,
            "address":1282
          },
          {
            "id":"gpiocond2param11",
            "compact":0,
            "type":1,
            "address":1283
          },
          {
            "id":"gpiocond2param12",
            "compact":0,
            "type":1,
            "address":1284
          },
          {
            "id":"gpiocond2param13",
            "compact":0,
            "type":1,
            "address":1285
          },
          {
            "id":"gpiocond2param14",
            "compact":0,
            "type":1,
            "address":1286
          },
          {
            "id":"gpiocond2param15",
            "compact":0,
            "type":1,
            "address":1287
          },
          {
            "id":"gpiocond2param16",
            "compact":0,
            "type":1,
            "address":1288
          },
          {
            "id":"gpiocond2param17",
            "compact":0,
            "type":1,
            "address":1289
          },
          {
            "id":"gpiocond2type1",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param1.0.2"
          },
          {
            "id":"gpiocond2type2",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param2.0.2"
          },
          {
            "id":"gpiocond2type3",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param3.0.2"
          },
          {
            "id":"gpiocond2type4",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param4.0.2"
          },
          {
            "id":"gpiocond2type5",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param5.0.2"
          },
          {
            "id":"gpiocond2type6",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param6.0.2"
          },
          {
            "id":"gpiocond2type7",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param7.0.2"
          },
          {
            "id":"gpiocond2type8",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param8.0.2"
          },
          {
            "id":"gpiocond2type9",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param9.0.2"
          },
          {
            "id":"gpiocond2type10",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param10.0.2"
          },
          {
            "id":"gpiocond2type11",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param11.0.2"
          },
          {
            "id":"gpiocond2type12",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param12.0.2"
          },
          {
            "id":"gpiocond2type13",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param13.0.2"
          },
          {
            "id":"gpiocond2type14",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param14.0.2"
          },
          {
            "id":"gpiocond2type15",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param15.0.2"
          },
          {
            "id":"gpiocond2type16",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param16.0.2"
          },
          {
            "id":"gpiocond2type17",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond2param17.0.2"
          },
          {
            "id":"gpiocond2and1",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param1.3.4"
          },
          {
            "id":"gpiocond2and2",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param2.3.4"
          },
          {
            "id":"gpiocond2and3",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param3.3.4"
          },
          {
            "id":"gpiocond2and4",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param4.3.4"
          },
          {
            "id":"gpiocond2and5",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param5.3.4"
          },
          {
            "id":"gpiocond2and6",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param6.3.4"
          },
          {
            "id":"gpiocond2and7",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param7.3.4"
          },
          {
            "id":"gpiocond2and8",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param8.3.4"
          },
          {
            "id":"gpiocond2and9",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param9.3.4"
          },
          {
            "id":"gpiocond2and10",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param10.3.4"
          },
          {
            "id":"gpiocond2and11",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param11.3.4"
          },
          {
            "id":"gpiocond2and12",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param12.3.4"
          },
          {
            "id":"gpiocond2and13",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param13.3.4"
          },
          {
            "id":"gpiocond2and14",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param14.3.4"
          },
          {
            "id":"gpiocond2and15",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param15.3.4"
          },
          {
            "id":"gpiocond2and16",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param16.3.4"
          },
          {
            "id":"gpiocond2and17",
            "type":8,
            "compact":0,
            "options":"enum_andor",
            "address":"gpiocond2param17.3.4"
          },
          {
            "id":"gpiocond3var1",
            "compact":0,
            "type":9,
            "address":1296
          },
          {
            "id":"gpiocond3var2",
            "compact":0,
            "type":9,
            "address":1300
          },
          {
            "id":"gpiocond3var3",
            "compact":0,
            "type":9,
            "address":1304
          },
          {
            "id":"gpiocond3var4",
            "compact":0,
            "type":9,
            "address":1308
          },
          {
            "id":"gpiocond3var5",
            "compact":0,
            "type":9,
            "address":1312
          },
          {
            "id":"gpiocond3var6",
            "compact":0,
            "type":9,
            "address":1316
          },
          {
            "id":"gpiocond3var7",
            "compact":0,
            "type":9,
            "address":1320
          },
          {
            "id":"gpiocond3var8",
            "compact":0,
            "type":9,
            "address":1324
          },
          {
            "id":"gpiocond3var9",
            "compact":0,
            "type":9,
            "address":1328
          },
          {
            "id":"gpiocond3var10",
            "compact":0,
            "type":9,
            "address":1332
          },
          {
            "id":"gpiocond3var11",
            "compact":0,
            "type":9,
            "address":1336
          },
          {
            "id":"gpiocond3var12",
            "compact":0,
            "type":9,
            "address":1340
          },
          {
            "id":"gpiocond3var13",
            "compact":0,
            "type":9,
            "address":1344
          },
          {
            "id":"gpiocond3var14",
            "compact":0,
            "type":9,
            "address":1348
          },
          {
            "id":"gpiocond3var15",
            "compact":0,
            "type":9,
            "address":1352
          },
          {
            "id":"gpiocond3var16",
            "compact":0,
            "type":9,
            "address":1356
          },
          {
            "id":"gpiocond3var17",
            "compact":0,
            "type":9,
            "address":1360
          },
          {
            "id":"gpiocond3val1",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var1",
            "address":1368
          },
          {
            "id":"gpiocond3val2",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var2",
            "address":1372
          },
          {
            "id":"gpiocond3val3",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var3",
            "address":1376
          },
          {
            "id":"gpiocond3val4",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var4",
            "address":1380
          },
          {
            "id":"gpiocond3val5",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var5",
            "address":1384
          },
          {
            "id":"gpiocond3val6",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var6",
            "address":1388
          },
          {
            "id":"gpiocond3val7",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var7",
            "address":1392
          },
          {
            "id":"gpiocond3val8",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var8",
            "address":1396
          },
          {
            "id":"gpiocond3val9",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var9",
            "address":1400
          },
          {
            "id":"gpiocond3val10",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var10",
            "address":1404
          },
          {
            "id":"gpiocond3val11",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var11",
            "address":1408
          },
          {
            "id":"gpiocond3val12",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var12",
            "address":1412
          },
          {
            "id":"gpiocond3val13",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var13",
            "address":1416
          },
          {
            "id":"gpiocond3val14",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var14",
            "address":1420
          },
          {
            "id":"gpiocond3val15",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var15",
            "address":1424
          },
          {
            "id":"gpiocond3val16",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var16",
            "address":1428
          },
          {
            "id":"gpiocond3val17",
            "compact":0,
            "type":11,
            "datatype":2,
            "describedby":"gpiocond3var17",
            "address":1432
          },
          {
            "id":"gpiocond3hyster1",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var1",
            "relative":1,
            "address":1440
          },
          {
            "id":"gpiocond3hyster2",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var2",
            "relative":1,
            "address":1444
          },
          {
            "id":"gpiocond3hyster3",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var3",
            "relative":1,
            "address":1448
          },
          {
            "id":"gpiocond3hyster4",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var4",
            "relative":1,
            "address":1452
          },
          {
            "id":"gpiocond3hyster5",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var5",
            "relative":1,
            "address":1456
          },
          {
            "id":"gpiocond3hyster6",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var6",
            "relative":1,
            "address":1460
          },
          {
            "id":"gpiocond3hyster7",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var7",
            "relative":1,
            "address":1464
          },
          {
            "id":"gpiocond3hyster8",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var8",
            "relative":1,
            "address":1468
          },
          {
            "id":"gpiocond3hyster9",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var9",
            "relative":1,
            "address":1472
          },
          {
            "id":"gpiocond3hyster10",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var10",
            "relative":1,
            "address":1476
          },
          {
            "id":"gpiocond3hyster11",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var11",
            "relative":1,
            "address":1480
          },
          {
            "id":"gpiocond3hyster12",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var12",
            "relative":1,
            "address":1484
          },
          {
            "id":"gpiocond3hyster13",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var13",
            "relative":1,
            "address":1488
          },
          {
            "id":"gpiocond3hyster14",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var14",
            "relative":1,
            "address":1492
          },
          {
            "id":"gpiocond3hyster15",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var15",
            "relative":1,
            "address":1496
          },
          {
            "id":"gpiocond3hyster16",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var16",
            "relative":1,
            "address":1500
          },
          {
            "id":"gpiocond3hyster17",
            "compact":0,
            "type":3,
            "describedby":"gpiocond3var17",
            "relative":1,
            "address":1504
          },
          {
            "id":"gpiocond3param1",
            "compact":0,
            "type":1,
            "address":1509
          },
          {
            "id":"gpiocond3param2",
            "compact":0,
            "type":1,
            "address":1510
          },
          {
            "id":"gpiocond3param3",
            "compact":0,
            "type":1,
            "address":1511
          },
          {
            "id":"gpiocond3param4",
            "compact":0,
            "type":1,
            "address":1512
          },
          {
            "id":"gpiocond3param5",
            "compact":0,
            "type":1,
            "address":1513
          },
          {
            "id":"gpiocond3param6",
            "compact":0,
            "type":1,
            "address":1514
          },
          {
            "id":"gpiocond3param7",
            "compact":0,
            "type":1,
            "address":1515
          },
          {
            "id":"gpiocond3param8",
            "compact":0,
            "type":1,
            "address":1516
          },
          {
            "id":"gpiocond3param9",
            "compact":0,
            "type":1,
            "address":1517
          },
          {
            "id":"gpiocond3param10",
            "compact":0,
            "type":1,
            "address":1518
          },
          {
            "id":"gpiocond3param11",
            "compact":0,
            "type":1,
            "address":1519
          },
          {
            "id":"gpiocond3param12",
            "compact":0,
            "type":1,
            "address":1520
          },
          {
            "id":"gpiocond3param13",
            "compact":0,
            "type":1,
            "address":1521
          },
          {
            "id":"gpiocond3param14",
            "compact":0,
            "type":1,
            "address":1522
          },
          {
            "id":"gpiocond3param15",
            "compact":0,
            "type":1,
            "address":1523
          },
          {
            "id":"gpiocond3param16",
            "compact":0,
            "type":1,
            "address":1524
          },
          {
            "id":"gpiocond3param17",
            "compact":0,
            "type":1,
            "address":1525
          },
          {
            "id":"gpiocond3type1",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param1.0.2"
          },
          {
            "id":"gpiocond3type2",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param2.0.2"
          },
          {
            "id":"gpiocond3type3",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param3.0.2"
          },
          {
            "id":"gpiocond3type4",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param4.0.2"
          },
          {
            "id":"gpiocond3type5",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param5.0.2"
          },
          {
            "id":"gpiocond3type6",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param6.0.2"
          },
          {
            "id":"gpiocond3type7",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param7.0.2"
          },
          {
            "id":"gpiocond3type8",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param8.0.2"
          },
          {
            "id":"gpiocond3type9",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param9.0.2"
          },
          {
            "id":"gpiocond3type10",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param10.0.2"
          },
          {
            "id":"gpiocond3type11",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param11.0.2"
          },
          {
            "id":"gpiocond3type12",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param12.0.2"
          },
          {
            "id":"gpiocond3type13",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param13.0.2"
          },
          {
            "id":"gpiocond3type14",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param14.0.2"
          },
          {
            "id":"gpiocond3type15",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param15.0.2"
          },
          {
            "id":"gpiocond3type16",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param16.0.2"
          },
          {
            "id":"gpiocond3type17",
            "type":8,
            "compact":0,
            "options":"enum_moreless",
            "address":"gpiocond3param17.0.2"
          },
          {
            "id":"analogfilter1",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2450
          },
          {
            "id":"analogfilter2",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2452
          },
          {
            "id":"analogfilter3",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2454
          },
          {
            "id":"analogfilter4",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2456
          },
          {
            "id":"analogfilter5",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2458
          },
          {
            "id":"analogfilter6",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2460
          },
          {
            "id":"analogfilter7",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2462
          },
          {
            "id":"analogfilter8",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2464
          },
          {
            "id":"analogfilter9",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2466
          },
          {
            "id":"analogfilter10",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2468
          },
          {
            "id":"analogfilter11",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2470
          },
          {
            "id":"analogfilter12",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2472
          },
          {
            "id":"analogfilter13",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2474
          },
          {
            "id":"analogfilter14",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2476
          },
          {
            "id":"analogfilter15",
            "compact":0,
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "digits":2,
            "descr":"This is an exponential decay filter applied on each sample of the analog input.\nA value of zero means no filtering is performed, and the filter becomes gradually more effective as the values approach 100%.\nTypical values 99% up to 99.99%",
            "address":2478
          },
          {
            "id":"ffset1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3592
          },
          {
            "id":"ffset2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3594
          },
          {
            "id":"ffset3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3596
          },
          {
            "id":"ffset4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3598
          },
          {
            "id":"ffset5",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3600
          },
          {
            "id":"ffset6",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3602
          },
          {
            "id":"ffset7",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will if the reset input is not active at the time set the flip flop state to 1 if held for the specified delay time.",
            "address":3604
          },
          {
            "id":"ffreset1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3648
          },
          {
            "id":"ffreset2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3650
          },
          {
            "id":"ffreset3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3652
          },
          {
            "id":"ffreset4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3654
          },
          {
            "id":"ffreset5",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3656
          },
          {
            "id":"ffreset6",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3658
          },
          {
            "id":"ffreset7",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the flip flop state to 0 if held for the specified delay time.",
            "address":3660
          },
          {
            "id":"fftoggle1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3616
          },
          {
            "id":"fftoggle2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3618
          },
          {
            "id":"fftoggle3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3620
          },
          {
            "id":"fftoggle4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3622
          },
          {
            "id":"fftoggle5",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3624
          },
          {
            "id":"fftoggle6",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3626
          },
          {
            "id":"fftoggle7",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will toggle the state of the flip flop if held for the specified delay time. Reactivating the toggle is blocked for the same delay time so if delay is 1 second, the button must hold for 1 second to toggle on and then be released for 1 second before it can be pushed again to toggle off.",
            "address":3628
          },
          {
            "id":"ffsetdelay1",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3607
          },
          {
            "id":"ffsetdelay2",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3608
          },
          {
            "id":"ffsetdelay3",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3609
          },
          {
            "id":"ffsetdelay4",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3610
          },
          {
            "id":"ffsetdelay5",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3611
          },
          {
            "id":"ffsetdelay6",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3612
          },
          {
            "id":"ffsetdelay7",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The set input must be active for this amount of time before the flip flop assumes a value of 1.",
            "address":3613
          },
          {
            "id":"ffresetdelay1",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3663
          },
          {
            "id":"ffresetdelay2",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3664
          },
          {
            "id":"ffresetdelay3",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3665
          },
          {
            "id":"ffresetdelay4",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3666
          },
          {
            "id":"ffresetdelay5",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3667
          },
          {
            "id":"ffresetdelay6",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3668
          },
          {
            "id":"ffresetdelay7",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The reset input must be active for this amount of time before the flip flop assumes a value of 0.",
            "address":3669
          },
          {
            "id":"fftoggleondelay1",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3631
          },
          {
            "id":"fftoggleondelay2",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3632
          },
          {
            "id":"fftoggleondelay3",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3633
          },
          {
            "id":"fftoggleondelay4",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3634
          },
          {
            "id":"fftoggleondelay5",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3635
          },
          {
            "id":"fftoggleondelay6",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3636
          },
          {
            "id":"fftoggleondelay7",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 0, the toggle input must be active for this amount of time before the flip flop assumes a value of 1.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to reset the state to 0.",
            "address":3637
          },
          {
            "id":"fftoggleoffdelay1",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3639
          },
          {
            "id":"fftoggleoffdelay2",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3640
          },
          {
            "id":"fftoggleoffdelay3",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3641
          },
          {
            "id":"fftoggleoffdelay4",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3642
          },
          {
            "id":"fftoggleoffdelay5",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3643
          },
          {
            "id":"fftoggleoffdelay6",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3644
          },
          {
            "id":"fftoggleoffdelay7",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"If the current state is 1, the toggle input must be active for this amount of time before the flip flop assumes a value of 0.\r\nAfter the button is released the same amount of time will pass before it's possible to press it again to set the state to 1.",
            "address":3645
          },
          {
            "id":"fftimeout1",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3680
          },
          {
            "id":"fftimeout2",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3682
          },
          {
            "id":"fftimeout3",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3684
          },
          {
            "id":"fftimeout4",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3686
          },
          {
            "id":"fftimeout5",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3688
          },
          {
            "id":"fftimeout6",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3690
          },
          {
            "id":"fftimeout7",
            "type":2,
            "compact":0,
            "scale":0.100000,
            "digits":1,
            "unit":"s",
            "descr":"Set to zero to allow unlimited on-time. Otherwise the flip flop will self reset to 0 when this duration passes after the last activation of the set or toggle input.",
            "address":3692
          },
          {
            "id":"ffbootstate1",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3671
          },
          {
            "id":"ffbootstate2",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3672
          },
          {
            "id":"ffbootstate3",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3673
          },
          {
            "id":"ffbootstate4",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3674
          },
          {
            "id":"ffbootstate5",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3675
          },
          {
            "id":"ffbootstate6",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3676
          },
          {
            "id":"ffbootstate7",
            "compact":0,
            "type":1,
            "max":1,
            "descr":"This is the state the flip flop assumes when controller powers on.",
            "address":3677
          },
          {
            "id":"countresetinput1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the counter to the configured reset value and prevent any change of value until the reset input releases.",
            "address":3716
          },
          {
            "id":"countresetinput2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the counter to the configured reset value and prevent any change of value until the reset input releases.",
            "address":3718
          },
          {
            "id":"countresetinput3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will reset the counter to the configured reset value and prevent any change of value until the reset input releases.",
            "address":3720
          },
          {
            "id":"upcountinput1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will increment the counter value. If the counter is already at the maximum value no action is taken unless overflow is enabled, in which case the counter assumes a value of zero.",
            "address":3700
          },
          {
            "id":"upcountinput2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will increment the counter value. If the counter is already at the maximum value no action is taken unless overflow is enabled, in which case the counter assumes a value of zero.",
            "address":3702
          },
          {
            "id":"upcountinput3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will increment the counter value. If the counter is already at the maximum value no action is taken unless overflow is enabled, in which case the counter assumes a value of zero.",
            "address":3704
          },
          {
            "id":"downcountinput1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3708
          },
          {
            "id":"downcountinput2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3710
          },
          {
            "id":"downcountinput3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3712
          },
          {
            "id":"counterdebounce1",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The increment or decrement inputs must be active for this amount of time before counter value is altered, and deactive for the same amount of time before the value may be altered again. No delay applies to the reset input in any case.",
            "address":3727
          },
          {
            "id":"counterdebounce2",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The increment or decrement inputs must be active for this amount of time before counter value is altered, and deactive for the same amount of time before the value may be altered again. No delay applies to the reset input in any case.",
            "address":3728
          },
          {
            "id":"counterdebounce3",
            "compact":0,
            "type":1,
            "unit":"s",
            "scale":0.016000,
            "digits":2,
            "descr":"The increment or decrement inputs must be active for this amount of time before counter value is altered, and deactive for the same amount of time before the value may be altered again. No delay applies to the reset input in any case.",
            "address":3729
          },
          {
            "id":"downcountinput1",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3708
          },
          {
            "id":"downcountinput2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3710
          },
          {
            "id":"downcountinput3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input will decrement the counter value. If the counter is already at zero no action is taken unless underflow is enabled, in which case the counter assumes the maximum value.",
            "address":3712
          },
          {
            "id":"counterresetvalue1",
            "compact":0,
            "type":1,
            "descr":"The counter will assume this value when the controller powers on and also if the counter reset input activates.",
            "address":3731
          },
          {
            "id":"counterresetvalue2",
            "compact":0,
            "type":1,
            "descr":"The counter will assume this value when the controller powers on and also if the counter reset input activates.",
            "address":3732
          },
          {
            "id":"counterresetvalue3",
            "compact":0,
            "type":1,
            "descr":"The counter will assume this value when the controller powers on and also if the counter reset input activates.",
            "address":3733
          },
          {
            "id":"countmaxvalue1",
            "compact":0,
            "type":1,
            "descr":"If the counter reaches this value, the increment input is disabled unless overflow is enabled, in which case the value will roll over to zero on increment.",
            "address":3723
          },
          {
            "id":"countmaxvalue2",
            "compact":0,
            "type":1,
            "descr":"If the counter reaches this value, the increment input is disabled unless overflow is enabled, in which case the value will roll over to zero on increment.",
            "address":3724
          },
          {
            "id":"countmaxvalue3",
            "compact":0,
            "type":1,
            "descr":"If the counter reaches this value, the increment input is disabled unless overflow is enabled, in which case the value will roll over to zero on increment.",
            "address":3725
          },
          {
            "id":"countmode1",
            "compact":0,
            "type":8,
            "options":[
              "No overflows",
              "Overflow enabled",
              "Underflow enabled",
              "Overflow and underflow"
            ],
            "address":"counterconf.2.3"
          },
          {
            "id":"countmode2",
            "compact":0,
            "type":8,
            "options":[
              "No overflows",
              "Overflow enabled",
              "Underflow enabled",
              "Overflow and underflow"
            ],
            "address":"counterconf.4.5"
          },
          {
            "id":"countmode3",
            "compact":0,
            "type":8,
            "options":[
              "No overflows",
              "Overflow enabled",
              "Underflow enabled",
              "Overflow and underflow"
            ],
            "address":"counterconf.6.7"
          },
          {
            "id":"latchmode2",
            "compact":0,
            "type":8,
            "address":"latchconfig.2.3",
            "options":[
              "Set while active",
              "Leading edge",
              "Trailing edge",
              "Multiplex"
            ],
            "descr":"This option sets the behaviour of the latch set input.\n'Set while active' means that the latch value is continually updated while the set input is active.\n'Leading edge' means the latch value is updated once when the set input activates.\n'Trailing edge means the latch value is updated when the set input deactivates.\n'Multiplex' means the primary value source is used when the set input is active but the alternate source is used if the set input is inactive. The reset input still activates the reset value but as soon as reset releases the value is picked based on the state of the set input."
          },
          {
            "id":"latchmode3",
            "compact":0,
            "type":8,
            "address":"latchconfig.4.5",
            "options":[
              "Set while active",
              "Leading edge",
              "Trailing edge",
              "Multiplex"
            ],
            "descr":"This option sets the behaviour of the latch set input.\n'Set while active' means that the latch value is continually updated while the set input is active.\n'Leading edge' means the latch value is updated once when the set input activates.\n'Trailing edge means the latch value is updated when the set input deactivates.\n'Multiplex' means the primary value source is used when the set input is active but the alternate source is used if the set input is inactive. The reset input still activates the reset value but as soon as reset releases the value is picked based on the state of the set input."
          },
          {
            "id":"latchmode4",
            "compact":0,
            "type":8,
            "address":"latchconfig.6.7",
            "options":[
              "Set while active",
              "Leading edge",
              "Trailing edge",
              "Multiplex"
            ],
            "descr":"This option sets the behaviour of the latch set input.\n'Set while active' means that the latch value is continually updated while the set input is active.\n'Leading edge' means the latch value is updated once when the set input activates.\n'Trailing edge means the latch value is updated when the set input deactivates.\n'Multiplex' means the primary value source is used when the set input is active but the alternate source is used if the set input is inactive. The reset input still activates the reset value but as soon as reset releases the value is picked based on the state of the set input."
          },
          {
            "id":"gplatchinput2",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken when the set input activates it.",
            "address":3740
          },
          {
            "id":"gplatchinput3",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken when the set input activates it.",
            "address":3744
          },
          {
            "id":"gplatchinput4",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken when the set input activates it.",
            "address":3748
          },
          {
            "id":"gplatchaltinput2",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken if the latch is configured as a multiplex and both set and reset inputs are inactive.",
            "address":3756
          },
          {
            "id":"gplatchaltinput3",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken if the latch is configured as a multiplex and both set and reset inputs are inactive.",
            "address":3760
          },
          {
            "id":"gplatchaltinput4",
            "compact":0,
            "type":9,
            "maxwidth":2,
            "descr":"This selects the input from where the value for the latch is taken if the latch is configured as a multiplex and both set and reset inputs are inactive.",
            "address":3764
          },
          {
            "id":"gplatchset2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When the selected logic input is active, the latch takes the value of the input. If the latch is configured as edge sensitive the the value transfer happens when the input is activated or deactivated. If the latch is not edge sensitive the value transfer happens continually while the input is active.",
            "address":3770
          },
          {
            "id":"gplatchset3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When the selected logic input is active, the latch takes the value of the input. If the latch is configured as edge sensitive the the value transfer happens when the input is activated or deactivated. If the latch is not edge sensitive the value transfer happens continually while the input is active.",
            "address":3772
          },
          {
            "id":"gplatchset4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When the selected logic input is active, the latch takes the value of the input. If the latch is configured as edge sensitive the the value transfer happens when the input is activated or deactivated. If the latch is not edge sensitive the value transfer happens continually while the input is active.",
            "address":3774
          },
          {
            "id":"gplatchreset2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"If the selected logic input is active, the latch takes the default value and the set input is disabled meanwhile.",
            "address":3778
          },
          {
            "id":"gplatchreset3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"If the selected logic input is active, the latch takes the default value and the set input is disabled meanwhile.",
            "address":3780
          },
          {
            "id":"gplatchreset4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"If the selected logic input is active, the latch takes the default value and the set input is disabled meanwhile.",
            "address":3782
          },
          {
            "id":"gplatchdefaultval2",
            "compact":0,
            "type":2,
            "describedby":"gplatchinput2",
            "descr":"The latch assumes this value when the controller is powered on and also when the reset input is activated.",
            "address":3786
          },
          {
            "id":"gplatchdefaultval3",
            "compact":0,
            "type":2,
            "describedby":"gplatchinput3",
            "descr":"The latch assumes this value when the controller is powered on and also when the reset input is activated.",
            "address":3788
          },
          {
            "id":"gplatchdefaultval4",
            "compact":0,
            "type":2,
            "describedby":"gplatchinput4",
            "descr":"The latch assumes this value when the controller is powered on and also when the reset input is activated.",
            "address":3790
          },
          {
            "id":"freqfilter1",
            "compact":0,
            "type":1,
            "unit":"%",
            "scale":0.390625,
            "descr":"This is an exponential decay filter. A value of for example 99% means that for each sample taken, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%",
            "digits":1,
            "address":3995
          },
          {
            "id":"freqfilter2",
            "compact":0,
            "type":1,
            "unit":"%",
            "scale":0.390625,
            "descr":"This is an exponential decay filter. A value of for example 99% means that for each sample taken, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%",
            "digits":1,
            "address":3996
          },
          {
            "id":"timeropts2",
            "compact":0,
            "type":1,
            "address":4227
          },
          {
            "id":"timeropts3",
            "compact":0,
            "type":1,
            "address":4228
          },
          {
            "id":"timeropts4",
            "compact":0,
            "type":1,
            "address":4229
          },
          {
            "id":"timerreset2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input sets the timer to zero, regardless of configuration, and holds it at zero while the input is active.",
            "address":4240
          },
          {
            "id":"timerreset3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input sets the timer to zero, regardless of configuration, and holds it at zero while the input is active.",
            "address":4242
          },
          {
            "id":"timerreset4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input sets the timer to zero, regardless of configuration, and holds it at zero while the input is active.",
            "address":4244
          },
          {
            "id":"timeredgereset2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input only has effect when its state changes from 0 to 1. Before it does anything again the state must change back to 0.\r\nIn normal timer mode, when this input changes state from 0 to 1, the timer value is reset to zero. In lap timer mode, the same state change sets the timer value to the time passed since last reset.",
            "address":4248
          },
          {
            "id":"timeredgereset3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input only has effect when its state changes from 0 to 1. Before it does anything again the state must change back to 0.\r\nIn normal timer mode, when this input changes state from 0 to 1, the timer value is reset to zero. In lap timer mode, the same state change sets the timer value to the time passed since last reset.",
            "address":4250
          },
          {
            "id":"timeredgereset4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"This input only has effect when its state changes from 0 to 1. Before it does anything again the state must change back to 0.\r\nIn normal timer mode, when this input changes state from 0 to 1, the timer value is reset to zero. In lap timer mode, the same state change sets the timer value to the time passed since last reset.",
            "address":4252
          },
          {
            "id":"timerenable2",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When this input is active, the timer counts up.",
            "address":4232
          },
          {
            "id":"timerenable3",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When this input is active, the timer counts up.",
            "address":4234
          },
          {
            "id":"timerenable4",
            "compact":0,
            "type":12,
            "options":"map_inputs",
            "descr":"When this input is active, the timer counts up.",
            "address":4236
          },
          {
            "id":"timermode2",
            "compact":0,
            "type":8,
            "address":"timeropts2.1.1",
            "options":[
              "Normal",
              "Lap timer"
            ],
            "descr":"In normal timer mode, the timer continually counts up while the enable input is active. In lap timer mode, the timer value only changes when the edge sensitive reset activates, where it takes the value of the time passed since last reset. In lap timer mode, the enable input is generally not used."
          },
          {
            "id":"timermode3",
            "compact":0,
            "type":8,
            "address":"timeropts3.1.1",
            "options":[
              "Normal",
              "Lap timer"
            ],
            "descr":"In normal timer mode, the timer continually counts up while the enable input is active. In lap timer mode, the timer value only changes when the edge sensitive reset activates, where it takes the value of the time passed since last reset. In lap timer mode, the enable input is generally not used."
          },
          {
            "id":"timermode4",
            "compact":0,
            "type":8,
            "address":"timeropts4.1.1",
            "options":[
              "Normal",
              "Lap timer"
            ],
            "descr":"In normal timer mode, the timer continually counts up while the enable input is active. In lap timer mode, the timer value only changes when the edge sensitive reset activates, where it takes the value of the time passed since last reset. In lap timer mode, the enable input is generally not used."
          },
          {
            "id":"timerautoreset2",
            "type":8,
            "compact":0,
            "address":"timeropts2.0.0",
            "options":"enum_enabled",
            "descr":"When enabled, the timer will automatically reset to 0 whenever the enable input deactivates."
          },
          {
            "id":"timerautoreset3",
            "type":8,
            "compact":0,
            "address":"timeropts3.0.0",
            "options":"enum_enabled",
            "descr":"When enabled, the timer will automatically reset to 0 whenever the enable input deactivates."
          },
          {
            "id":"timerautoreset4",
            "type":8,
            "compact":0,
            "address":"timeropts4.0.0",
            "options":"enum_enabled",
            "descr":"When enabled, the timer will automatically reset to 0 whenever the enable input deactivates."
          },
          {
            "id":"customlookupsrc2",
            "type":9,
            "compact":0,
            "maxwidth":2,
            "address":4260
          },
          {
            "id":"customlookupsrc3",
            "type":9,
            "compact":0,
            "maxwidth":2,
            "address":4264
          },
          {
            "id":"customlookupsrc4",
            "type":9,
            "compact":0,
            "maxwidth":2,
            "address":4268
          },
          {
            "id":"customlookupcount2",
            "type":1,
            "compact":0,
            "min":1,
            "max":32,
            "address":4273
          },
          {
            "id":"customlookupcount3",
            "type":1,
            "compact":0,
            "min":1,
            "max":32,
            "address":4274
          },
          {
            "id":"customlookupcount4",
            "type":1,
            "compact":0,
            "min":1,
            "max":32,
            "address":4275
          },
          {
            "id":"customlookupopts2",
            "type":1,
            "compact":0,
            "address":4277
          },
          {
            "id":"customlookupopts3",
            "type":1,
            "compact":0,
            "address":4278
          },
          {
            "id":"customlookupopts4",
            "type":1,
            "compact":0,
            "address":4279
          },
          {
            "id":"customlookupdecimal2",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4281
          },
          {
            "id":"customlookupdecimal3",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4282
          },
          {
            "id":"customlookupdecimal4",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4283
          },
          {
            "id":"custom2dopts2",
            "type":1,
            "compact":0,
            "address":4797
          },
          {
            "id":"custom2dopts3",
            "type":1,
            "compact":0,
            "address":4798
          },
          {
            "id":"custom2dopts4",
            "type":1,
            "compact":0,
            "address":4799
          },
          {
            "id":"custom2ddecimal2",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4801
          },
          {
            "id":"custom2ddecimal3",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4802
          },
          {
            "id":"custom2ddecimal4",
            "type":8,
            "compact":0,
            "options":[
              0,
              1,
              2,
              3
            ],
            "descr":"Changing the number of decimal points does not change the function's precision, it just changes the scaling. Unsigned with 0 digits after the decimal point it will support numbers ranging from 0 to 65535, whereas with 2 digits after the decimal point for example the range becomes 0 to 655.35",
            "address":4803
          },
          {
            "id":"simplepwmduty2",
            "type":11,
            "datatype":2,
            "unit":"%",
            "scale":0.003052,
            "digits":2,
            "cols":"simplepwmdutyptcount2",
            "compact":0,
            "address":7548
          },
          {
            "id":"simplepwmduty3",
            "type":11,
            "datatype":2,
            "unit":"%",
            "scale":0.003052,
            "digits":2,
            "cols":"simplepwmdutyptcount3",
            "compact":0,
            "address":7552
          },
          {
            "id":"simplepwmduty4",
            "type":11,
            "datatype":2,
            "unit":"%",
            "scale":0.003052,
            "digits":2,
            "cols":"simplepwmdutyptcount4",
            "compact":0,
            "address":7556
          },
          {
            "id":"simplepwmfreq2",
            "type":11,
            "datatype":2,
            "unit":"Hz",
            "scale":500000,
            "inverse":1,
            "max":"2000",
            "cols":"simplepwmfreqptcount2",
            "compact":0,
            "address":7564
          },
          {
            "id":"simplepwmfreq3",
            "type":11,
            "datatype":2,
            "unit":"Hz",
            "scale":500000,
            "inverse":1,
            "max":"2000",
            "cols":"simplepwmfreqptcount3",
            "compact":0,
            "address":7568
          },
          {
            "id":"simplepwmfreq4",
            "type":11,
            "datatype":2,
            "unit":"Hz",
            "scale":500000,
            "inverse":1,
            "max":"2000",
            "cols":"simplepwmfreqptcount4",
            "compact":0,
            "address":7572
          },
          {
            "id":"simplepwmrefreshinterval2",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"The PWM duty and frequency gets updated at this interval. To disable the function set this value to 0.",
            "address":7530
          },
          {
            "id":"simplepwmrefreshinterval3",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"The PWM duty and frequency gets updated at this interval. To disable the function set this value to 0.",
            "address":7531
          },
          {
            "id":"simplepwmrefreshinterval4",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"The PWM duty and frequency gets updated at this interval. To disable the function set this value to 0.",
            "address":7532
          },
          {
            "id":"simplepwmenable2",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This input can shut off the PWM output, if you wish to have the PWM output always running select 'Always on'",
            "address":7536
          },
          {
            "id":"simplepwmenable3",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This input can shut off the PWM output, if you wish to have the PWM output always running select 'Always on'",
            "address":7538
          },
          {
            "id":"simplepwmenable4",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This input can shut off the PWM output, if you wish to have the PWM output always running select 'Always on'",
            "address":7540
          }
        ]
      },
      {
        "page":1,
        "size":24576,
        "data":[
          {
            "id":"comments",
            "type":13,
            "compressed":1,
            "address":0
          },
          {
            "id":"gpiodescr0",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":4
          },
          {
            "id":"customformulainterval1",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Interval at which user defined math expression is computed, set to 0 to disable the expression.",
            "address":580
          },
          {
            "id":"customformula1",
            "type":7,
            "array":128,
            "compressed":1,
            "onchange":[
              [
                "compileexpression",
                1,
                "customformula1",
                "customformula1compiled"
              ]
            ],
            "address":584
          },
          {
            "id":"customformula2",
            "type":7,
            "array":128,
            "compressed":1,
            "onchange":[
              [
                "compileexpression",
                1,
                "customformula2",
                "customformula2compiled"
              ]
            ],
            "address":712
          },
          {
            "id":"customformula3",
            "type":7,
            "array":128,
            "compressed":1,
            "onchange":[
              [
                "compileexpression",
                1,
                "customformula3",
                "customformula3compiled"
              ]
            ],
            "address":840
          },
          {
            "id":"customformula4",
            "type":7,
            "array":128,
            "compressed":1,
            "onchange":[
              [
                "compileexpression",
                1,
                "customformula4",
                "customformula4compiled"
              ]
            ],
            "address":968
          },
          {
            "id":"customformula1compiled",
            "type":3,
            "array":20,
            "address":1096
          },
          {
            "id":"customformula2compiled",
            "type":3,
            "array":20,
            "address":1176
          },
          {
            "id":"customformula3compiled",
            "type":3,
            "array":20,
            "address":1256
          },
          {
            "id":"customformula4compiled",
            "type":3,
            "array":20,
            "address":1336
          },
          {
            "id":"cantxformat",
            "maxwidth":2,
            "type":9,
            "array":128,
            "verbose":1,
            "rows":"cantxcount",
            "cols":4,
            "descr":"Data to be sent in the standard CAN format, 16 bit little endian.",
            "address":3568
          },
          {
            "id":"cantxinterval",
            "type":8,
            "options":"enum_cantxfreq",
            "array":32,
            "rows":"cantxcount",
            "descr":"Transmission rates of the different CAN groups, by CAN ID.",
            "address":4080
          },
          {
            "id":"cantxaddress",
            "hex":1,
            "type":3,
            "array":32,
            "rows":"cantxcount",
            "address":4112
          },
          {
            "id":"canrxdescr",
            "type":8,
            "array":32,
            "rows":"canrxcount",
            "options":"map_datatypes",
            "address":4368
          },
          {
            "id":"canrxoffset",
            "type":1,
            "array":32,
            "rows":"canrxcount",
            "max":63,
            "descr":"Byte offset in packet to receive data from, with 0 being the first byte. This becomes bit offset when data type is bit so the range is then 0-63.",
            "address":4400
          },
          {
            "id":"canrxbits",
            "type":1,
            "array":64,
            "rows":"canrxcount",
            "cols":2,
            "max":32,
            "descr":"Right shift value, if non-zero, trims away a specified number of least significant bits. Bit width value if non-zero trims away the most significant bits. For example a bit width value of 4 will result in the possible received values being restricted to the range of 0-15.",
            "address":4912
          },
          {
            "id":"canrxaddr",
            "hex":1,
            "type":3,
            "array":32,
            "rows":"canrxcount",
            "address":4240
          },
          {
            "id":"canrxrange",
            "type":3,
            "sign":1,
            "array":64,
            "rows":"canrxcount",
            "cols":2,
            "descr":"If the range is specified as 0 up through 0, no scaling is done. Otherwise, scaling of the output is done using the input range configured here and output range configured in the next map.",
            "address":4432
          },
          {
            "id":"canrxoutput",
            "type":2,
            "array":64,
            "rows":"canrxcount",
            "cols":2,
            "descr":"If an input range is configured, this is the range the output will be scaled to for each of these variables.",
            "address":4688
          },
          {
            "id":"canrxtimeout",
            "type":1,
            "array":32,
            "rows":"canrxcount",
            "unit":"sec",
            "digits":1,
            "scale":0.100000,
            "descr":"If no packet is received for each of these receptors for the configured timeout, an error is flagged and a default value is used instead. Set timeout to zero to disable the timeout.",
            "address":4880
          },
          {
            "id":"canrxdefault",
            "type":2,
            "array":32,
            "rows":"canrxcount",
            "descr":"Default values used on ECU power-on and if the timeout is exceeded for any of these receptors.",
            "address":4816
          },
          {
            "id":"canrxname",
            "type":7,
            "width":32,
            "array":32,
            "rows":"canrxcount",
            "descr":"Text description of each of the CAN receptors. For legibility of the configuration only, although this data is stored in ECU memory, ECU makes no use of it.",
            "address":4976
          },
          {
            "id":"canrxalias",
            "type":7,
            "width":16,
            "array":32,
            "rows":"canrxcount",
            "charset":"abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_",
            "descr":"short name appended to the identifier of the CAN receptor, can not include spaces or special characters other than underscores",
            "address":6000
          },
          {
            "id":"canrxmuxmode",
            "type":8,
            "options":[
              "No multiplexing",
              "8 bit multiplexed",
              "16 bit multiplexed"
            ],
            "array":32,
            "rows":"canrxcount",
            "descr":"Normal, sane users of CAN bus do not use multiplexing, but there are some dumb implementations that are saving CAN IDs by multiplexing the messages, sometimes due to hardware limitations in acceptance filters. If you need to receive data from such a system, the first byte or first two bytes can be compared against the specified multiplexing value before the rest of the CAN frame is decoded. In 16 bit mode the value is treated as little endian, so the value of the first byte is the least significant byte and the value of the second byte is the most significant byte, so the specified multiplexing value should be formed as firstbyte + secondbyte * 256.",
            "address":6640
          },
          {
            "id":"canrxmux",
            "type":2,
            "array":32,
            "rows":"canrxcount",
            "descr":"Value to compare against for multiplexing. If multiplexing mode is set to 8 bit, the first byte of the CAN frame is compared against this value. If multiplexing mode is set to 16 bit, the first two bytes of the CAN frame are treated as a little endian value and compared against this value. If the specified value matches, then the CAN frame is processed and the data is extracted according to the rest of the configuration for this receptor, if it does not match then the CAN frame is ignored.",
            "address":6576
          },
          {
            "id":"customcanaddr",
            "hex":1,
            "type":3,
            "array":32,
            "rows":"customcancount",
            "address":6672
          },
          {
            "id":"customcandata",
            "type":9,
            "array":128,
            "rows":"customcancount",
            "cols":4,
            "verbose":1,
            "address":6800
          },
          {
            "id":"customcanlength",
            "type":1,
            "array":32,
            "rows":"customcancount",
            "max":64,
            "descr":"The number of variables included in each custom CAN group. If greater than 4 then the group will consume configuration slots associated with the next group. For example if group 1 has 6 variables, the 2 extra variables are described by the configuration for the first two variables of group 2, effectively reducing the number of usable groups.",
            "address":7440
          },
          {
            "id":"customcaninterval",
            "type":8,
            "array":32,
            "rows":"customcancount",
            "options":"enum_ccantxfreq",
            "address":7472
          },
          {
            "id":"customcanformat",
            "type":8,
            "array":128,
            "rows":"customcancount",
            "cols":4,
            "options":"map_datatypes",
            "address":7312
          },
          {
            "id":"customcanrange",
            "type":3,
            "sign":1,
            "array":256,
            "rows":"customcancount",
            "cols":8,
            "descr":"If the range is specified as 0 up through 0, no scaling is done. Otherwise, scaling of the output is done using the input range configured here and output range configured in the next map.",
            "address":7504
          },
          {
            "id":"customcanoutput",
            "type":3,
            "sign":1,
            "array":256,
            "rows":"customcancount",
            "cols":8,
            "descr":"If an input range is configured, this is the range the output will be scaled to for each of these variables.",
            "address":8528
          },
          {
            "id":"customcantxconds",
            "type":12,
            "array":32,
            "options":"map_inputs",
            "rows":"customcancount",
            "descr":"These conditions can be used to control whether or not each custom CAN packet is sent. Allows for greater flexibility in packet formatting by allowing multiple definitions for the same CAN ID but using logic to select which one to transmit.",
            "address":9968
          },
          {
            "id":"customcanchecksums",
            "type":8,
            "array":32,
            "options":[
              "None",
              "Honda"
            ],
            "rows":"customcancount",
            "descr":"These are manufacturer specific checksums applied to each CAN packet. Normally not needed but provided for the cases that do.",
            "address":10032
          },
          {
            "id":"customcantxbytes",
            "type":1,
            "array":32,
            "rows":"customcancount",
            "min":1,
            "max":8,
            "descr":"The payload length of the transmitted CAN packets, from 1 and up to 8 bytes.",
            "address":9936
          },
          {
            "id":"customcanfiller",
            "type":1,
            "array":256,
            "rows":"customcancount",
            "cols":8,
            "descr":"Insert any static values that do not change into this table. The CAN packet is initialised with this data before the configured payloads are inserted.",
            "address":9680
          },
          {
            "id":"customcanoffsets",
            "type":1,
            "array":128,
            "rows":"customcancount",
            "cols":4,
            "max":63,
            "descr":"Byte offset in frame where data is inserted (0-7), unless data type is bit, then this is bit offset from 0-63. Data that exceeds end of frame is not transmitted.",
            "address":9552
          },
          {
            "id":"customcanbitshifts",
            "type":1,
            "array":128,
            "rows":"customcancount",
            "cols":4,
            "max":7,
            "descr":"Only possible with 8 bit values, if any of these fields are non-zero then the associated data is left shifted by the specified number of bits and then OR-ed into the buffer, allowing generation of numbers less than 8 bits wide that are not located on a byte boundary.",
            "address":10064
          },
          {
            "id":"customcanbitshort",
            "type":1,
            "array":128,
            "rows":"customcancount",
            "cols":4,
            "max":31,
            "descr":"If set to a non-zero value, the width of the variable is shortened to the desired custom bit width and then OR-ed into the buffer, preserving existing high bits.\r\nFor example a value of 12 will output a 12 bit wide variable.",
            "address":10192
          },
          {
            "id":"canrxfilter",
            "array":32,
            "rows":"canrxcount",
            "type":2,
            "unit":"%",
            "scale":0.001526,
            "descr":"This is an exponential decay filter. A value of for example 99% means that for each packet received, 99% of the difference from the current value is thrown away and the rest added to the current value. The filter becomes exponentially more effective as approaching 100%.\r\nSet to 0 to disable the filter. The filter is primarily useful if receiving data from a noisy unfiltered source.",
            "digits":2,
            "address":6512
          },
          {
            "id":"customcancount",
            "type":1,
            "max":32,
            "min":1,
            "descr":"This parameter specifies how many rows to display in the custom CAN tables.",
            "address":10321
          },
          {
            "id":"canrxcount",
            "type":1,
            "max":32,
            "min":1,
            "descr":"This parameter specifies how many rows to display in the CAN receive tables.",
            "address":10320
          },
          {
            "id":"cantxcount",
            "type":1,
            "max":32,
            "min":1,
            "descr":"This parameter specifies how many rows to display in the CAN broadcast tables.",
            "address":10322
          },
          {
            "id":"canseqoptions1",
            "type":1,
            "compact":0,
            "address":3560
          },
          {
            "id":"canseqid1",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3464
          },
          {
            "id":"canseqselect1",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3496
          },
          {
            "id":"canseqenable1",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3512
          },
          {
            "id":"canseqlength1",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3528
          },
          {
            "id":"canseqdlc1",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3544
          },
          {
            "id":"canseqinterval1",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3536
          },
          {
            "id":"canseqdatafrom1",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3552
          },
          {
            "id":"canseq1",
            "type":1,
            "array":128,
            "rows":"canseqlength1",
            "cols":8,
            "address":1416
          },
          {
            "id":"canseq1alt",
            "type":1,
            "array":128,
            "rows":"canseqlength1",
            "cols":8,
            "address":1544
          },
          {
            "id":"canseq2",
            "type":1,
            "array":128,
            "rows":"canseqlength2",
            "cols":8,
            "address":1672
          },
          {
            "id":"canseq2alt",
            "type":1,
            "array":128,
            "rows":"canseqlength2",
            "cols":8,
            "address":1800
          },
          {
            "id":"canseq3",
            "type":1,
            "array":128,
            "rows":"canseqlength3",
            "cols":8,
            "address":1928
          },
          {
            "id":"canseq3alt",
            "type":1,
            "array":128,
            "rows":"canseqlength3",
            "cols":8,
            "address":2056
          },
          {
            "id":"canseq4",
            "type":1,
            "array":128,
            "rows":"canseqlength4",
            "cols":8,
            "address":2184
          },
          {
            "id":"canseq4alt",
            "type":1,
            "array":128,
            "rows":"canseqlength4",
            "cols":8,
            "address":2312
          },
          {
            "id":"canseq5",
            "type":1,
            "array":128,
            "rows":"canseqlength5",
            "cols":8,
            "address":2440
          },
          {
            "id":"canseq5alt",
            "type":1,
            "array":128,
            "rows":"canseqlength5",
            "cols":8,
            "address":2568
          },
          {
            "id":"canseq6",
            "type":1,
            "array":128,
            "rows":"canseqlength6",
            "cols":8,
            "address":2696
          },
          {
            "id":"canseq6alt",
            "type":1,
            "array":128,
            "rows":"canseqlength6",
            "cols":8,
            "address":2824
          },
          {
            "id":"canseq7",
            "type":1,
            "array":128,
            "rows":"canseqlength7",
            "cols":8,
            "address":2952
          },
          {
            "id":"canseq7alt",
            "type":1,
            "array":128,
            "rows":"canseqlength7",
            "cols":8,
            "address":3080
          },
          {
            "id":"canseq8",
            "type":1,
            "array":128,
            "rows":"canseqlength8",
            "cols":8,
            "address":3208
          },
          {
            "id":"canseq8alt",
            "type":1,
            "array":128,
            "rows":"canseqlength8",
            "cols":8,
            "address":3336
          },
          {
            "id":"obdvin",
            "type":7,
            "array":18,
            "descr":"When an OBD2 request is made to read the car's VIN number, this is the string sent back by the ECU.",
            "address":10323
          },
          {
            "id":"obdid",
            "type":3,
            "hex":1,
            "max":536870911,
            "descr":"The ID to listen for OBD requests on. The standard for the first ECU on the bus is 0x7E0, and the following units go all the way up to 0x7E7",
            "address":10344
          },
          {
            "id":"obdresponseid",
            "type":3,
            "hex":1,
            "max":536870911,
            "descr":"The ID to transmit OBD requests to. The standard for the first ECU on the bus is 0x7E8, and the following units go all the way up to 0x7EF",
            "address":10348
          },
          {
            "id":"customobdcount",
            "type":1,
            "min":1,
            "max":32,
            "descr":"Custom OBD slots used.",
            "address":10352
          },
          {
            "id":"customobdpid",
            "type":1,
            "array":32,
            "rows":"customobdcount",
            "descr":"Specify a value of 0 for all entries that are not to be used.",
            "address":10353
          },
          {
            "id":"customobddata",
            "type":9,
            "array":32,
            "rows":"customobdcount",
            "verbose":1,
            "address":10388
          },
          {
            "id":"customobdformat",
            "type":8,
            "array":32,
            "rows":"customobdcount",
            "options":"map_bedatatypes",
            "address":10516
          },
          {
            "id":"customobdrange",
            "type":3,
            "sign":1,
            "array":64,
            "rows":"customobdcount",
            "cols":2,
            "descr":"If the range is specified as 0 up through 0, no scaling is done. Otherwise, scaling of the output is done using the input range configured here and output range configured in the next map.",
            "address":10548
          },
          {
            "id":"customobdoutput",
            "type":3,
            "sign":1,
            "array":64,
            "rows":"customobdcount",
            "cols":2,
            "descr":"If an input range is configured, this is the range the output will be scaled to for each of these variables.",
            "address":10804
          },
          {
            "id":"canscanstartaddr",
            "min":1,
            "max":536870911,
            "hex":1,
            "type":3,
            "descr":"When a CAN scan is performed, this is the first CAN ID to transmit to.",
            "address":11060
          },
          {
            "id":"canscanendaddr",
            "min":1,
            "max":536870911,
            "hex":1,
            "type":3,
            "descr":"When a CAN scan reaches this ID, the scan is terminated.",
            "address":11064
          },
          {
            "id":"canscaninterval",
            "type":1,
            "unit":"ms",
            "descr":"Frame transmit interval for the CAN scan. Each frame transmitted has an ID one higher than the previous frame.",
            "address":11070
          },
          {
            "id":"canscanlength",
            "type":1,
            "min":1,
            "max":8,
            "descr":"Data length of CAN frames transmitted by the CAN scan function. Normally set to 8 bytes.",
            "address":11071
          },
          {
            "id":"canscancontent",
            "type":1,
            "array":8,
            "cols":"canscanlength",
            "descr":"These bytes make up the message payload of the CAN frames transmitted by the CAN scan function. It may be necessary to try some different payload values before a response is registered from the target device.",
            "address":11072
          },
          {
            "id":"canscanadder",
            "type":1,
            "array":8,
            "cols":"canscanlength",
            "descr":"When setting the CAN scan up to repeat frames before advancing the ID, these bytes can be added to the values prior to repeating.\r\nUpon advancing to the next ID, the data is reset to the specified values.",
            "address":11080
          },
          {
            "id":"canscanoptions",
            "type":2,
            "address":11068
          },
          {
            "id":"canscanbus",
            "type":8,
            "address":"canscanoptions.0.0",
            "options":[
              "CAN 1",
              "CAN 2"
            ]
          },
          {
            "id":"canscanrepeat",
            "type":1,
            "offset":1,
            "descr":"This option specifies number of packets to transmit to each ID before progressing to the next.",
            "address":11088
          },
          {
            "id":"blinkkeypadoptions",
            "type":1,
            "address":11089
          },
          {
            "id":"blinkkeypadenable",
            "type":8,
            "address":"blinkkeypadoptions.0.1",
            "options":[
              "Disabled",
              "CAN 1"
            ]
          },
          {
            "id":"blinkkeypadsize1",
            "type":1,
            "max":15,
            "compact":0,
            "address":11090
          },
          {
            "id":"blinkkeypad1buttonmodes",
            "type":8,
            "array":15,
            "rows":"blinkkeypadsize1",
            "options":"enum_keypadmodes",
            "address":11094
          },
          {
            "id":"blinkkeypad1buttonauxinputs",
            "type":12,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize1",
            "options":"map_inputs",
            "descr":"The auxiliary inputs allow one button to turn on or off multiple channels, as well as the ability to block channels from activating on a condition",
            "address":11110
          },
          {
            "id":"blinkkeypad1lightstates",
            "type":8,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize1",
            "options":"enum_keypadledcolourwithfunctions",
            "address":11170
          },
          {
            "id":"blinkkeypad2buttonmodes",
            "type":8,
            "array":15,
            "rows":"blinkkeypadsize2",
            "options":"enum_keypadmodes",
            "address":11200
          },
          {
            "id":"blinkkeypad2buttonauxinputs",
            "type":12,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize2",
            "options":"map_inputs",
            "descr":"The auxiliary inputs allow one button to turn on or off multiple channels, as well as the ability to block channels from activating on a condition",
            "address":11216
          },
          {
            "id":"blinkkeypad2lightstates",
            "type":8,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize2",
            "options":"enum_keypadledcolourwithfunctions",
            "address":11276
          },
          {
            "id":"blinkkeypad3buttonmodes",
            "type":8,
            "array":15,
            "rows":"blinkkeypadsize3",
            "options":"enum_keypadmodes",
            "address":11306
          },
          {
            "id":"blinkkeypad3buttonauxinputs",
            "type":12,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize3",
            "options":"map_inputs",
            "descr":"The auxiliary inputs allow one button to turn on or off multiple channels, as well as the ability to block channels from activating on a condition",
            "address":11322
          },
          {
            "id":"blinkkeypad3lightstates",
            "type":8,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize3",
            "options":"enum_keypadledcolourwithfunctions",
            "address":11382
          },
          {
            "id":"blinkkeypad4buttonmodes",
            "type":8,
            "array":15,
            "rows":"blinkkeypadsize4",
            "options":"enum_keypadmodes",
            "address":11412
          },
          {
            "id":"blinkkeypad4buttonauxinputs",
            "type":12,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize4",
            "options":"map_inputs",
            "descr":"The auxiliary inputs allow one button to turn on or off multiple channels, as well as the ability to block channels from activating on a condition",
            "address":11428
          },
          {
            "id":"blinkkeypad4lightstates",
            "type":8,
            "array":30,
            "cols":2,
            "rows":"blinkkeypadsize4",
            "options":"enum_keypadledcolourwithfunctions",
            "address":11488
          },
          {
            "id":"keypadcolourfunction1",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11520
          },
          {
            "id":"gpiodescr1",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":36
          },
          {
            "id":"gpiodescr2",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":68
          },
          {
            "id":"gpiodescr3",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":100
          },
          {
            "id":"gpiodescr4",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":132
          },
          {
            "id":"gpiodescr5",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":164
          },
          {
            "id":"gpiodescr6",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":196
          },
          {
            "id":"gpiodescr7",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":228
          },
          {
            "id":"gpiodescr8",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":260
          },
          {
            "id":"gpiodescr9",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":292
          },
          {
            "id":"gpiodescr10",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":324
          },
          {
            "id":"gpiodescr11",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":356
          },
          {
            "id":"gpiodescr12",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":388
          },
          {
            "id":"gpiodescr13",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":420
          },
          {
            "id":"gpiodescr14",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":452
          },
          {
            "id":"gpiodescr15",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":484
          },
          {
            "id":"gpiodescr16",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":516
          },
          {
            "id":"gpiodescr17",
            "type":7,
            "width":32,
            "compact":0,
            "descr":"This field allows you to enter a text description of the general purpose logic, up to 32 characters. This description is stored in the ECU so it is not lost if the configuration file gets lost.",
            "address":548
          },
          {
            "id":"customformulainterval2",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Interval at which user defined math expression is computed, set to 0 to disable the expression.",
            "address":581
          },
          {
            "id":"customformulainterval3",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Interval at which user defined math expression is computed, set to 0 to disable the expression.",
            "address":582
          },
          {
            "id":"customformulainterval4",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Interval at which user defined math expression is computed, set to 0 to disable the expression.",
            "address":583
          },
          {
            "id":"canseqoptions2",
            "type":1,
            "compact":0,
            "address":3561
          },
          {
            "id":"canseqoptions3",
            "type":1,
            "compact":0,
            "address":3562
          },
          {
            "id":"canseqoptions4",
            "type":1,
            "compact":0,
            "address":3563
          },
          {
            "id":"canseqoptions5",
            "type":1,
            "compact":0,
            "address":3564
          },
          {
            "id":"canseqoptions6",
            "type":1,
            "compact":0,
            "address":3565
          },
          {
            "id":"canseqoptions7",
            "type":1,
            "compact":0,
            "address":3566
          },
          {
            "id":"canseqoptions8",
            "type":1,
            "compact":0,
            "address":3567
          },
          {
            "id":"canseqid2",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3468
          },
          {
            "id":"canseqid3",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3472
          },
          {
            "id":"canseqid4",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3476
          },
          {
            "id":"canseqid5",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3480
          },
          {
            "id":"canseqid6",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3484
          },
          {
            "id":"canseqid7",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3488
          },
          {
            "id":"canseqid8",
            "type":3,
            "compact":0,
            "hex":1,
            "address":3492
          },
          {
            "id":"canseqselect2",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3498
          },
          {
            "id":"canseqselect3",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3500
          },
          {
            "id":"canseqselect4",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3502
          },
          {
            "id":"canseqselect5",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3504
          },
          {
            "id":"canseqselect6",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3506
          },
          {
            "id":"canseqselect7",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3508
          },
          {
            "id":"canseqselect8",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"If true, this condition selects the alternate sequence. Switching between sequences is only done when the sequence is starting over from the beginning.",
            "address":3510
          },
          {
            "id":"canseqenable2",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3514
          },
          {
            "id":"canseqenable3",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3516
          },
          {
            "id":"canseqenable4",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3518
          },
          {
            "id":"canseqenable5",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3520
          },
          {
            "id":"canseqenable6",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3522
          },
          {
            "id":"canseqenable7",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3524
          },
          {
            "id":"canseqenable8",
            "type":12,
            "options":"map_inputs",
            "compact":0,
            "descr":"This condition enables transmission of the sequence",
            "address":3526
          },
          {
            "id":"canseqlength2",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3529
          },
          {
            "id":"canseqlength3",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3530
          },
          {
            "id":"canseqlength4",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3531
          },
          {
            "id":"canseqlength5",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3532
          },
          {
            "id":"canseqlength6",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3533
          },
          {
            "id":"canseqlength7",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3534
          },
          {
            "id":"canseqlength8",
            "type":1,
            "compact":0,
            "min":1,
            "max":16,
            "descr":"Number of items in the sequence.",
            "address":3535
          },
          {
            "id":"canseqdlc2",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3545
          },
          {
            "id":"canseqdlc3",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3546
          },
          {
            "id":"canseqdlc4",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3547
          },
          {
            "id":"canseqdlc5",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3548
          },
          {
            "id":"canseqdlc6",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3549
          },
          {
            "id":"canseqdlc7",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3550
          },
          {
            "id":"canseqdlc8",
            "type":1,
            "compact":0,
            "max":8,
            "descr":"Number of data bytes per sent frame",
            "address":3551
          },
          {
            "id":"canseqinterval2",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3537
          },
          {
            "id":"canseqinterval3",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3538
          },
          {
            "id":"canseqinterval4",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3539
          },
          {
            "id":"canseqinterval5",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3540
          },
          {
            "id":"canseqinterval6",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3541
          },
          {
            "id":"canseqinterval7",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3542
          },
          {
            "id":"canseqinterval8",
            "type":1,
            "unit":"ms",
            "compact":0,
            "descr":"Transmission interval in milliseconds. Set to 0 for any sequence that is not being used.",
            "address":3543
          },
          {
            "id":"canseqdatafrom2",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3553
          },
          {
            "id":"canseqdatafrom3",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3554
          },
          {
            "id":"canseqdatafrom4",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3555
          },
          {
            "id":"canseqdatafrom5",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3556
          },
          {
            "id":"canseqdatafrom6",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3557
          },
          {
            "id":"canseqdatafrom7",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3558
          },
          {
            "id":"canseqdatafrom8",
            "type":1,
            "compact":0,
            "descr":"Index of custom CAN transmit definition to use to populate the sequence with data. If the sequence is to contain no data set this to 255.",
            "address":3559
          },
          {
            "id":"blinkkeypadsize2",
            "type":1,
            "max":15,
            "compact":0,
            "address":11091
          },
          {
            "id":"blinkkeypadsize3",
            "type":1,
            "max":15,
            "compact":0,
            "address":11092
          },
          {
            "id":"blinkkeypadsize4",
            "type":1,
            "max":15,
            "compact":0,
            "address":11093
          },
          {
            "id":"keypadcolourfunction2",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11524
          },
          {
            "id":"keypadcolourfunction3",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11528
          },
          {
            "id":"keypadcolourfunction4",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11532
          },
          {
            "id":"keypadcolourfunction5",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11536
          },
          {
            "id":"keypadcolourfunction6",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11540
          },
          {
            "id":"keypadcolourfunction7",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11544
          },
          {
            "id":"keypadcolourfunction8",
            "type":11,
            "datatype":1,
            "compact":0,
            "max":9,
            "descr":"In this function, a value of 0 means the light is off\r\n1: Red, 2: Green, 3: Blue, 4: Yellow, 5: Cyan, 6: Magenta, 7: White, 8: Amber, 9: Yellow\/green",
            "address":11548
          }
        ]
      },
      {
        "page":3,
        "size":24576,
        "data":[
          {
            "id":"userprogramcode",
            "type":13,
            "compressed":1,
            "beforechange":[
              [
                "compileuserprogram",
                2,
                "userprogramcode",
                null,
                "userpgmvalues"
              ],
              [
                "rpc",
                "userprogramstate",
                [
                  0
                ]
              ]
            ],
            "onchange":[
              [
                "rpc",
                "userprogramstate",
                [
                  0
                ]
              ],
              [
                "sleep",
                100,
                [
                  [
                    "compileuserprogram",
                    2,
                    "userprogramcode",
                    "userprogram",
                    "userpgmvalues"
                  ],
                  [
                    "rpc",
                    "userprogramstate",
                    [
                      1
                    ]
                  ]
                ]
              ]
            ],
            "builtinvars":[
              [
                0,
                "callback_1000hz"
              ],
              [
                1,
                "callback_500hz"
              ],
              [
                2,
                "callback_250hz"
              ],
              [
                3,
                "callback_200hz"
              ],
              [
                4,
                "callback_100hz"
              ],
              [
                5,
                "callback_50hz"
              ],
              [
                6,
                "callback_25hz"
              ],
              [
                7,
                "callback_20hz"
              ],
              [
                8,
                "callback_10hz"
              ],
              [
                9,
                "callback_5hz"
              ],
              [
                10,
                "callback_2hz"
              ],
              [
                11,
                "callback_1hz"
              ],
              [
                12,
                "callback_can1rx"
              ],
              [
                14,
                "callback_uart0rx"
              ],
              [
                15,
                "callback_uart3rx"
              ],
              [
                16,
                "userpwmpw1"
              ],
              [
                17,
                "userpwmpw2"
              ],
              [
                18,
                "userpwmpw3"
              ],
              [
                19,
                "userpwmpw4"
              ],
              [
                20,
                "userpwmpw5"
              ],
              [
                21,
                "userpwmpw6"
              ],
              [
                22,
                "userpwmpw7"
              ],
              [
                23,
                "userpwmpw8"
              ],
              [
                32,
                "userpwmperiod1"
              ],
              [
                33,
                "userpwmperiod2"
              ],
              [
                34,
                "userpwmperiod3"
              ],
              [
                35,
                "userpwmperiod4"
              ],
              [
                36,
                "userpwmperiod5"
              ],
              [
                37,
                "userpwmperiod6"
              ],
              [
                38,
                "userpwmperiod7"
              ],
              [
                39,
                "userpwmperiod8"
              ]
            ],
            "programmemory":2048,
            "nvallocation":"usernvdata",
            "builtinfunctions":{
              "sqrt":{
                "opcode":63,
                "arguments":[
                  "uint32 number"
                ],
                "descr":"Returns square root of unsigned 32 bit integer value"
              },
              "can1_tx":{
                "opcode":96,
                "arguments":[
                  "CANID",
                  "dlc",
                  "uint8 data[]"
                ]
              },
              "flexlookup":{
                "opcode":87,
                "arguments":[
                  "uint32 flexinfo"
                ]
              },
              "curvelookup16":{
                "opcode":88,
                "arguments":[
                  "uint16 curve[]",
                  "uint16 axis[]",
                  "uint8 dims",
                  "uint16 input"
                ]
              },
              "curvelookups16":{
                "opcode":89,
                "arguments":[
                  "int16 curve[]",
                  "uint16 axis[]",
                  "uint8 dims",
                  "uint16 input"
                ]
              },
              "curvelookup8":{
                "opcode":90,
                "arguments":[
                  "uint8 curve[]",
                  "uint16 axis[]",
                  "uint8 dims",
                  "uint16 input"
                ]
              },
              "curvelookups8":{
                "opcode":91,
                "arguments":[
                  "int8 curve[]",
                  "uint16 axis[]",
                  "uint8 dims",
                  "uint16 input"
                ]
              },
              "tablelookup":{
                "opcode":92,
                "arguments":[
                  "auto table[]",
                  "(u)int16 xaxis[]",
                  "(u)int16 yaxis[]",
                  " xdims",
                  "uint8 ydims",
                  "auto xvalue",
                  "auto yvalue"
                ],
                "descr":"Table lookup function that automatically detects whether the table is 8 or 16 bit, signed or unsigned, and whether the axis are signed or unsigned"
              },
              "curvelookup":{
                "opcode":93,
                "arguments":[
                  "auto curve[]",
                  "(u)int16 axis[]",
                  "uint8 dims",
                  "auto input"
                ],
                "descr":"Curve lookup function that automatically detects whether the curve is 8 or 16 bit, signed or unsigned, and whether the axis is signed or unsigned"
              },
              "tablelookup16":{
                "opcode":98,
                "arguments":[
                  "uint16 table[]",
                  "uint16 xaxis[]",
                  "uint16 yaxis[]",
                  "uint8 xdims",
                  "uint8 ydims",
                  "uint16 xvalue",
                  "uint16 yvalue"
                ]
              },
              "tablelookup8":{
                "opcode":99,
                "arguments":[
                  "uint8 table[]",
                  "uint16 xaxis[]",
                  "uint16 yaxis[]",
                  "uint8 xdims",
                  "uint8 ydims",
                  "uint16 xvalue",
                  "uint16 yvalue"
                ]
              },
              "tablelookups16":{
                "opcode":100,
                "arguments":[
                  "int16 table[]",
                  "uint16 xaxis[]",
                  "uint16 yaxis[]",
                  "uint8 xdims",
                  "uint8 ydims",
                  "uint16 xvalue",
                  "uint16 yvalue"
                ]
              },
              "tablelookups8":{
                "opcode":101,
                "arguments":[
                  "int8 table[]",
                  "uint16 xaxis[]",
                  "uint16 yaxis[]",
                  "uint8 xdims",
                  "uint8 ydims",
                  "uint16 xvalue",
                  "uint16 yvalue"
                ]
              },
              "linearinterpolate":{
                "opcode":27,
                "arguments":[
                  "int32 outputlow",
                  "int32 outputhigh",
                  "int32 inputlow",
                  "int32 inputhigh",
                  "int32 inputvalue"
                ]
              },
              "linearinterpolateU16":{
                "opcode":28,
                "arguments":[
                  "uint16 outputlow",
                  "uint16 outputhigh",
                  "uint16 inputlow",
                  "uint16 inputhigh",
                  "uint16 inputvalue"
                ]
              },
              "linearinterpolateS16":{
                "opcode":29,
                "arguments":[
                  "int16 outputlow",
                  "int16 outputhigh",
                  "int16 inputlow",
                  "int16 inputhigh",
                  "int16 inputvalue"
                ]
              },
              "varpicker":{
                "opcode":7,
                "arguments":1
              },
              "wraps8":{
                "opcode":32,
                "arguments":1
              },
              "wrapu8":{
                "opcode":33,
                "arguments":1
              },
              "wraps16":{
                "opcode":34,
                "arguments":1
              },
              "wrapu16":{
                "opcode":35,
                "arguments":1
              },
              "getbit":{
                "opcode":102,
                "arguments":1
              },
              "setbit":{
                "opcode":103,
                "arguments":2
              },
              "startlogging":{
                "opcode":104,
                "arguments":1
              },
              "stoplogging":{
                "opcode":105
              },
              "init_uart":{
                "opcode":106,
                "arguments":[
                  "uint8 uart",
                  "uint32 baud"
                ]
              },
              "uart0tx":{
                "opcode":107,
                "arguments":[
                  "uint8 count",
                  "uint8 buffer[]"
                ]
              },
              "uart3tx":{
                "opcode":108,
                "arguments":[
                  "uint8 count",
                  "uint8 buffer[]"
                ]
              },
              "crc8":{
                "opcode":109,
                "arguments":[
                  "uint8 data[]",
                  "uint8 offset",
                  "uint8 length",
                  "uint8 seed",
                  "uint8 poly"
                ]
              },
              "memcopy":{
                "opcode":110,
                "arguments":[
                  "uint8 destination[]",
                  "uint8 source[]",
                  "uint16 length"
                ]
              },
              "offsetcopy":{
                "opcode":111,
                "arguments":[
                  "uint8 destination[]",
                  "uint16 dstoffset",
                  "uint8 source[]",
                  "uint16 srcoffset",
                  "uint16 length"
                ]
              },
              "strcopy":{
                "opcode":112,
                "arguments":[
                  "uint8 destination[]",
                  "uint8 source[]",
                  "uint16 length"
                ]
              },
              "strlen":{
                "opcode":113,
                "arguments":[
                  "uint8 string[]",
                  "uint16 maxlength"
                ]
              },
              "strformat":{
                "opcode":114,
                "arguments":[
                  "uint8 destination[]",
                  "uint16 maxlength",
                  "uint8 formatstring[]",
                  "..."
                ]
              }
            },
            "systemconstants":{
              "caninterfacecount":1,
              "user_out0":32,
              "user_out1":33,
              "user_out2":34,
              "user_out3":35,
              "user_out4":36,
              "user_out5":37,
              "user_out6":38,
              "user_out7":39,
              "user_out8":40,
              "user_out9":41,
              "user_out10":42,
              "user_out11":43,
              "user_out12":44,
              "user_out13":45,
              "user_out14":46,
              "user_out15":47
            },
            "address":0
          },
          {
            "id":"userconftree",
            "type":13,
            "compressed":1,
            "beforechange":[
              [
                "applyuserconfdef",
                "userconftree"
              ]
            ],
            "onmerge":[
              [
                "applyuserconfdef",
                "userconftree"
              ]
            ],
            "address":4
          }
        ]
      },
      {
        "page":4,
        "size":24576,
        "data":[
          {
            "id":"userconf",
            "type":3,
            "array":4096,
            "address":0
          },
          {
            "id":"userconfdef",
            "type":13,
            "compressed":1,
            "onupdate":[
              [
                "applyuserecudef",
                "userconfdef",
                "userconf"
              ]
            ],
            "address":16384
          }
        ]
      },
      {
        "page":5,
        "size":24576,
        "data":[
          {
            "id":"userprogram",
            "type":3,
            "array":4000,
            "address":0
          },
          {
            "id":"userrtdef",
            "type":13,
            "compressed":1,
            "onchange":[
              [
                "applyuserrtdef",
                "userrtdef",
                "userpgmvalues",
                "userrtsize"
              ]
            ],
            "onupdate":[
              [
                "applyuserrtdef",
                "userrtdef",
                "userpgmvalues",
                "userrtsize"
              ]
            ],
            "address":16000
          },
          {
            "id":"userrtsize",
            "type":2,
            "address":16004
          }
        ]
      },
      {
        "page":31,
        "notflash":1,
        "size":2000,
        "data":[
          {
            "id":"fw_build",
            "type":3,
            "readonly":1,
            "address":0
          },
          {
            "id":"def_build",
            "type":3,
            "readonly":1,
            "address":4
          },
          {
            "id":"nvkeypadstate0",
            "type":3,
            "readonly":1,
            "compact":0,
            "address":8
          },
          {
            "id":"nverror0",
            "readonly":1,
            "type":3,
            "address":536
          },
          {
            "id":"nverror1",
            "readonly":1,
            "type":3,
            "address":540
          },
          {
            "id":"nverror2",
            "readonly":1,
            "type":3,
            "address":544
          },
          {
            "id":"nverror3",
            "readonly":1,
            "type":3,
            "address":548
          },
          {
            "id":"usernvdata",
            "type":1,
            "array":512,
            "address":24
          },
          {
            "id":"nvkeypadstate1",
            "type":3,
            "readonly":1,
            "compact":0,
            "address":12
          },
          {
            "id":"nvkeypadstate2",
            "type":3,
            "readonly":1,
            "compact":0,
            "address":16
          },
          {
            "id":"nvkeypadstate3",
            "type":3,
            "readonly":1,
            "compact":0,
            "address":20
          }
        ]
      }
    ],
    "datastream":{
      "streamlength":1024,
      "variables":[
        {
          "id":"time",
          "address":"uptime",
          "scale":0.001000,
          "descr":"This variable counts up the seconds since the ECU was powered on and has a resolution of 1 millisecond.",
          "digits":3,
          "type":3
        },
        {
          "id":"analog0",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":76
        },
        {
          "id":"rack0",
          "type":3,
          "descr":"Primary rack position sensor inductance value in proprietary units.",
          "address":4
        },
        {
          "id":"rack1",
          "type":3,
          "descr":"Secondary rack position sensor inductance value in proprietary units.",
          "address":8
        },
        {
          "id":"track0",
          "type":3,
          "descr":"Primary timing rack position sensor inductance value in proprietary units.",
          "address":12
        },
        {
          "id":"track1",
          "type":3,
          "descr":"Secondary timing rack position sensor inductance value in proprietary units.",
          "address":16
        },
        {
          "id":"trackposition",
          "type":2,
          "descr":"Timing rack position in proprietary units. Computed from the values of track0 and track1 and is a near-linear function of rack position.",
          "address":488
        },
        {
          "id":"supplyvoltage",
          "unit":"V",
          "type":2,
          "digits":2,
          "scale":0.001000,
          "descr":"Power supply input voltage.",
          "address":114
        },
        {
          "id":"map",
          "unit":"mbar",
          "type":2,
          "descr":"Intake Manifold Absolute Pressure in millibars. Normal value at sea level around 1000 with engine off.",
          "address":112
        },
        {
          "id":"coolanttemp",
          "unit":"°C",
          "type":2,
          "scale":0.100000,
          "digits":1,
          "offset":-2731,
          "descr":"Engine coolant temperature.",
          "address":116
        },
        {
          "id":"airtemp",
          "unit":"°C",
          "type":2,
          "scale":0.100000,
          "digits":1,
          "offset":-2731,
          "descr":"Charge air temperature, if such a sensor is fitted and calibrated.",
          "address":118
        },
        {
          "id":"egt",
          "unit":"°C",
          "type":2,
          "scale":0.100000,
          "digits":1,
          "offset":-2731,
          "descr":"Exhaust gas temperature.",
          "address":390
        },
        {
          "id":"error0",
          "type":2,
          "descr":"Errors that disable the engine. If this variable has a non-zero value no fuel will be injected and engine will not run.",
          "address":202
        },
        {
          "id":"error1",
          "type":2,
          "descr":"Errors that have to do with the accelerator pedal. If this variable has a non-zero value the accelerator pedal will be disabled, letting the engine idle only.",
          "address":204
        },
        {
          "id":"error2",
          "type":3,
          "descr":"Errors that may or may not affect performance, depending on the situation.",
          "address":72
        },
        {
          "id":"error_rack0_high",
          "type":0,
          "address":"error0.0"
        },
        {
          "id":"error_rack1_high",
          "address":"error0.1"
        },
        {
          "id":"error_tps_high",
          "address":"error1.0"
        },
        {
          "id":"error_tps_low",
          "address":"error1.1"
        },
        {
          "id":"error_tps_disagrees",
          "address":"error1.2"
        },
        {
          "id":"pedalposition",
          "scale":0.097656,
          "type":2,
          "digits":1,
          "unit":"%",
          "descr":"Accelerator pedal position. If correctly calibrated will be 0% when pedal is all the way up and 100% when pedal is all the way down.",
          "address":124
        },
        {
          "id":"pedalsecondary",
          "scale":0.097656,
          "type":2,
          "digits":1,
          "unit":"%",
          "descr":"Accelerator pedal secondary sensor position. It must be a value greater than pedalposition at all times, and at idle it must be a value lower than specified by the max secondary at idle setting.",
          "address":126
        },
        {
          "id":"rackP",
          "type":2,
          "sign":1,
          "descr":"Rack PID loop P output",
          "address":178
        },
        {
          "id":"rackI",
          "type":2,
          "sign":1,
          "descr":"Rack PID loop I output",
          "address":180
        },
        {
          "id":"rackD",
          "type":2,
          "sign":1,
          "descr":"Rack PID loop D output",
          "address":182
        },
        {
          "id":"rackposition",
          "type":2,
          "descr":"Rack position in proprietary units. Computed from the values of rack0 and rack1 and is a near-linear function of rack position.",
          "address":128
        },
        {
          "id":"rackbasepw",
          "type":2,
          "descr":"Rack solenoid base duty cycle before PID applies.",
          "address":186
        },
        {
          "id":"rackcommand",
          "type":2,
          "descr":"Target rack position for control loop.",
          "address":130
        },
        {
          "id":"fuelrequest",
          "scale":0.010000,
          "digits":1,
          "type":2,
          "unit":"µl",
          "descr":"Fuel quantity as requested through accelerator pedal input, output of Fuel request table.",
          "address":206
        },
        {
          "id":"fuelrequestlimited",
          "type":2,
          "scale":0.010000,
          "digits":2,
          "unit":"µl",
          "descr":"Fuel request after torque limits have been applied.",
          "address":442
        },
        {
          "id":"torquefuelrequestlimit",
          "type":2,
          "scale":0.010000,
          "digits":2,
          "unit":"µl",
          "descr":"Fuel request limit currently imposed by torque management strategy.",
          "address":444
        },
        {
          "id":"torquefuellimit",
          "type":2,
          "scale":0.010000,
          "digits":2,
          "unit":"µl",
          "descr":"Fuel limit currently imposed by torque management strategy.",
          "address":458
        },
        {
          "id":"idlefuelrequest",
          "scale":0.010000,
          "digits":1,
          "type":2,
          "unit":"µl",
          "descr":"Fuel quantity requested by idle control loop. Takes precedence over main fuelrequest if idlefuelrequest is of greater value.",
          "address":132
        },
        {
          "id":"rackpulsewidth",
          "type":2,
          "scale":0.003052,
          "digits":2,
          "unit":"%",
          "descr":"Rack solenoid PWM duty cycle.",
          "address":134
        },
        {
          "id":"ditheramplitude",
          "type":2,
          "scale":0.003052,
          "digits":2,
          "unit":"%",
          "descr":"Dither applied to rack pulse width",
          "address":392
        },
        {
          "id":"enginespeed",
          "unit":"RPM",
          "type":2,
          "descr":"Engine speed",
          "address":120
        },
        {
          "id":"deltarpm",
          "type":2,
          "sign":1,
          "scale":10,
          "unit":"RPM\/sec",
          "descr":"Engine speed rate of change.",
          "address":490
        },
        {
          "id":"idleP",
          "type":2,
          "sign":1,
          "digits":2,
          "scale":0.010000,
          "unit":"µl",
          "descr":"Idle control loop P output",
          "address":188
        },
        {
          "id":"idleI",
          "type":2,
          "sign":1,
          "digits":2,
          "scale":0.010000,
          "unit":"µl",
          "descr":"Idle control loop I output",
          "address":190
        },
        {
          "id":"idlePD",
          "type":2,
          "sign":1,
          "digits":2,
          "scale":0.010000,
          "unit":"µl",
          "descr":"Idle control loop PD map output",
          "address":194
        },
        {
          "id":"idleD",
          "type":2,
          "sign":1,
          "digits":2,
          "scale":0.010000,
          "unit":"µl",
          "descr":"Idle control loop D output",
          "address":192
        },
        {
          "id":"roadspeed",
          "type":2,
          "unit":"km\/h",
          "digits":1,
          "scale":0.100000,
          "descr":"Vehicle speed",
          "address":200
        },
        {
          "id":"roaddistance",
          "type":3,
          "unit":"km",
          "digits":3,
          "expression":"x \/ c(pulseperkm)",
          "descr":"Distance on road covered by vehicle since ECU powered on.",
          "address":32
        },
        {
          "id":"flags0",
          "type":2,
          "descr":"Various flags indicating operation of internal ECU strategy.",
          "address":110
        },
        {
          "id":"cruise_active",
          "type":0,
          "address":"flags0.2",
          "descr":"Flag indicating that the cruise control is active"
        },
        {
          "id":"mainfrequency",
          "type":2,
          "unit":"Hz",
          "descr":"Number of complete processing cycles performed by ECU in one second.",
          "address":210
        },
        {
          "id":"boostpw",
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "type":2,
          "descr":"Boost control PWM duty cycle",
          "address":176
        },
        {
          "id":"boostbaseduty",
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "type":2,
          "descr":"Turbocharger control loop base effort",
          "address":220
        },
        {
          "id":"boostctlcmd",
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "type":2,
          "descr":"Turbocharger control loop commanded effort. Usually identical to wastegate duty cycle unless translation functions are used.",
          "address":142
        },
        {
          "id":"boosttarget",
          "type":2,
          "sign":1,
          "describedby":"boostpressuresource",
          "descr":"Target pressure for turbocharger control loop",
          "address":136
        },
        {
          "id":"boostp2limit",
          "type":2,
          "describedby":"boostparam2picker",
          "descr":"Target value for turbocharger parameter 2 control loop",
          "address":150
        },
        {
          "id":"boostp3limit",
          "type":2,
          "describedby":"boostparam3picker",
          "descr":"Target value for turbocharger parameter 3 control loop",
          "address":152
        },
        {
          "id":"boostP",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop proportional effect",
          "address":212
        },
        {
          "id":"boostPD",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop proportional\/derivative map component",
          "address":214
        },
        {
          "id":"boostI",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop integral effect",
          "address":216
        },
        {
          "id":"boostD",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop derivative effect",
          "address":218
        },
        {
          "id":"boostp2P",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop parameter 2 proportional effect",
          "address":164
        },
        {
          "id":"boostp2I",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop parameter 2 integral effect",
          "address":166
        },
        {
          "id":"boostp2D",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop parameter 2 derivative effect",
          "address":168
        },
        {
          "id":"boostp3P",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop parameter 3 proportional effect",
          "address":170
        },
        {
          "id":"boostp3I",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop parameter 3 integral effect",
          "address":172
        },
        {
          "id":"boostp3D",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger control loop parameter 3 derivative effect",
          "address":174
        },
        {
          "id":"boostp1duty",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger PID control loop parameter 1 output. This is added to boostbaseduty to become boostctlcmd which normally controls the turbocharger.",
          "address":158
        },
        {
          "id":"boostp2duty",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger PID control loop parameter 2 output. Acts as a limiter to boostctlcmd.",
          "address":160
        },
        {
          "id":"boostp3duty",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":1,
          "sign":1,
          "descr":"Turbocharger PID control loop parameter 3 output. Acts as a limiter to boostctlcmd.",
          "address":162
        },
        {
          "id":"boosterror",
          "type":2,
          "sign":1,
          "relative":1,
          "describedby":"boostpressuresource",
          "descr":"The difference between measured pressure and setpoint pressure for the turbocharger control. A positive number indicates measured pressure exceeds setpoint and vice versa.",
          "address":140
        },
        {
          "id":"boostgptrim1",
          "describedby":"boostpressuresource",
          "type":2,
          "sign":1,
          "compact":0,
          "descr":"General purpose pressure target trims for turbocharger boost control.",
          "address":144
        },
        {
          "id":"boostdot",
          "type":2,
          "sign":1,
          "relative":1,
          "describedby":"boostpressuresource",
          "descr":"Derivative of boost pressure since last boost control loop update.",
          "address":138
        },
        {
          "id":"boostp2error",
          "type":2,
          "sign":1,
          "describedby":"boostparam2picker",
          "descr":"The difference between measured value and setpoint for the turbocharger control parameter 2. A positive number indicates measured pressure exceeds setpoint and vice versa.",
          "address":154
        },
        {
          "id":"boostp3error",
          "type":2,
          "sign":1,
          "describedby":"boostparam3picker",
          "descr":"The difference between measured value and setpoint for the turbocharger control parameter 3. A positive number indicates measured pressure exceeds setpoint and vice versa.",
          "address":156
        },
        {
          "id":"overrunfc",
          "address":"flags0.1",
          "descr":"If this flag is 1, then fuel is currently cut off by the overrun fuel cut strategy."
        },
        {
          "id":"fuelqty",
          "unit":"µl",
          "scale":0.010000,
          "digits":1,
          "type":2,
          "descr":"Actual injection quantity after all limits have been applied.",
          "address":222
        },
        {
          "id":"gpin",
          "type":2,
          "descr":"Bit mask of states of digital inputs.",
          "address":224
        },
        {
          "id":"ecutemp",
          "type":2,
          "scale":0.100000,
          "unit":"°C",
          "digits":1,
          "offset":-2731,
          "descr":"ECU board internal temperature.",
          "address":236
        },
        {
          "id":"cruisespeed",
          "type":2,
          "unit":"km\/h",
          "digits":1,
          "scale":0.100000,
          "descr":"Cruise control speed setpoint.",
          "address":238
        },
        {
          "id":"cruiseP",
          "type":2,
          "sign":1,
          "descr":"Cruise control P output",
          "address":230
        },
        {
          "id":"cruiseI",
          "type":2,
          "sign":1,
          "descr":"Cruise control I output",
          "address":232
        },
        {
          "id":"cruiseD",
          "type":2,
          "sign":1,
          "descr":"Cruise control D output",
          "address":234
        },
        {
          "id":"debugval0",
          "compact":8,
          "type":3,
          "devonly":1,
          "ignore":1
        },
        {
          "id":"canrx1",
          "type":1,
          "descr":"A value that counts up every time a CAN packet is received. Rolls over after 255 and starts from 0 again.",
          "address":540
        },
        {
          "id":"canerrcount1",
          "type":1,
          "descr":"CAN bus transmit error state. If the value is not zero it means the CAN bus is either not terminated properly or has no other active receivers.",
          "address":547
        },
        {
          "id":"cansrc0",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.0",
          "descr":"General purpose CAN receive values.",
          "address":240
        },
        {
          "id":"date",
          "type":10,
          "descr":"Date and time of controller real time clock, if fitted with internal data logging option.",
          "address":40
        },
        {
          "id":"logging",
          "type":1,
          "descr":"A value of 1 indicates that the controller is capturing a data log to internal memory.",
          "address":543
        },
        {
          "id":"logseq",
          "type":2,
          "descr":"Sequence number of data log currently being written to controller internal memory.",
          "address":304
        },
        {
          "id":"targetidle",
          "type":2,
          "unit":"RPM",
          "descr":"Idle speed setpoint for control loop",
          "address":306
        },
        {
          "id":"idle_cruiseadder",
          "type":2,
          "unit":"RPM",
          "descr":"Idle speed added by cruise control buttons",
          "address":528
        },
        {
          "id":"effthrottle",
          "type":2,
          "scale":0.097656,
          "digits":1,
          "unit":"%",
          "descr":"Effective throttle input value. Normally same as pedalposition but takes the value of cruisethrottle if cruisethrottle is greater than pedalposition.",
          "address":228
        },
        {
          "id":"cruisethrottle",
          "type":2,
          "scale":0.097656,
          "digits":1,
          "unit":"%",
          "descr":"Throttle input from cruise control",
          "address":226
        },
        {
          "id":"flag_cruise",
          "address":"flags0.2",
          "descr":"A value of 1 indicates the cruise control is currently activated."
        },
        {
          "id":"cruiseswitch",
          "type":1,
          "descr":"Cruise control switch input state. 0 is normal. 1 = cancel. 2 = set\/coast. 3 = resume\/accel.",
          "address":542
        },
        {
          "id":"pwm0duty",
          "type":2,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PWM output duty cycle",
          "address":308
        },
        {
          "id":"pwm1duty",
          "type":2,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PID 1 output duty cycle",
          "address":318
        },
        {
          "id":"pwm1sp",
          "type":2,
          "describedby":"pwm1var",
          "descr":"General purpose PID loop 1 setpoint.",
          "address":316
        },
        {
          "id":"pwm2sp",
          "type":2,
          "describedby":"pwm2var",
          "descr":"General purpose PID loop 2 setpoint.",
          "address":328
        },
        {
          "id":"pwm1P",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PID 1 P value",
          "address":310
        },
        {
          "id":"pwm1I",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PID 1 I value",
          "address":312
        },
        {
          "id":"pwm1D",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PID 1 D value",
          "address":314
        },
        {
          "id":"pwm2duty",
          "type":2,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PID 2 output duty cycle",
          "address":330
        },
        {
          "id":"pwm2P",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpsoe PID 2 P value",
          "address":322
        },
        {
          "id":"pwm2I",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PID 2 I value",
          "address":324
        },
        {
          "id":"pwm2D",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"General purpose PID 2 D value",
          "address":326
        },
        {
          "id":"pumpanglepwm",
          "type":2,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"Pump angle control output duty cycle",
          "address":396
        },
        {
          "id":"pumpangleP",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"Pump angle control P value",
          "address":398
        },
        {
          "id":"pumpangleI",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"Pump angle control I value",
          "address":400
        },
        {
          "id":"pumpangleD",
          "type":2,
          "sign":1,
          "unit":"%",
          "digits":2,
          "scale":0.003052,
          "descr":"Pump angle control D value",
          "address":402
        },
        {
          "id":"outputs",
          "type":3,
          "descr":"Bit mask of general purpose on\/off output values",
          "address":36
        },
        {
          "id":"antistallcount",
          "type":1,
          "descr":"Counter that counts up every time the anti stall strategy is activated.",
          "address":554
        },
        {
          "id":"gplim1",
          "type":2,
          "scale":0.010000,
          "digits":2,
          "compact":0,
          "descr":"General purpose fuel limit value",
          "address":360
        },
        {
          "id":"logrecs",
          "type":1,
          "descr":"When controller is capturing data log to internal memory, this counts up for every record written to the log. Rolls over at 255 and starts from 0 again.",
          "address":545
        },
        {
          "id":"logstatus",
          "type":1,
          "descr":"Error value used for diagnostics of internal data log faults.",
          "address":544
        },
        {
          "id":"glow_heating",
          "type":0,
          "address":"outputs.1",
          "descr":"State of glow plug relay output."
        },
        {
          "id":"glow_light",
          "type":0,
          "address":"outputs.8",
          "descr":"Indicator that glow plugs are preheating. Will flash if starting has been requested and is pending the glow plugs finishing heating."
        },
        {
          "id":"glowdiag",
          "type":2,
          "descr":"Bit mask of faults detected with Mercedes Benz PWM communication glow plug controller.\r\nBits 0 through 7 indicate faults on glow plugs 1 through 8. Bit 15 indicates fault in communication with glow plug controller.",
          "address":464
        },
        {
          "id":"din1",
          "type":0,
          "address":"gpin.0",
          "descr":"Logic state of digital input 1"
        },
        {
          "id":"din2",
          "type":0,
          "address":"gpin.1",
          "descr":"Logic state of digital input 2"
        },
        {
          "id":"din3",
          "type":0,
          "address":"gpin.2",
          "descr":"Logic state of digital input 3"
        },
        {
          "id":"din_vss",
          "type":0,
          "address":"gpin.3",
          "descr":"Logic state of wheelspeed input when used as digital input"
        },
        {
          "id":"gplogic1",
          "type":0,
          "address":"outputs.10",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic2",
          "type":0,
          "address":"outputs.11",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic3",
          "type":0,
          "address":"outputs.12",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic4",
          "type":0,
          "address":"outputs.13",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic5",
          "type":0,
          "address":"outputs.15",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic6",
          "type":0,
          "address":"outputs.16",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic7",
          "type":0,
          "address":"outputs.17",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic8",
          "type":0,
          "address":"outputs.18",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic9",
          "type":0,
          "address":"outputs.20",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic10",
          "type":0,
          "address":"outputs.21",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic11",
          "type":0,
          "address":"outputs.22",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic12",
          "type":0,
          "address":"outputs.23",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic13",
          "type":0,
          "address":"outputs.24",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic14",
          "type":0,
          "address":"outputs.25",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic15",
          "type":0,
          "address":"outputs.26",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"gplogic16",
          "type":0,
          "address":"outputs.27",
          "descr":"State of general purpose logic condition."
        },
        {
          "id":"flipflop1",
          "type":0,
          "compact":8,
          "address":"flipflops.0",
          "descr":"State of flip flop logic"
        },
        {
          "id":"canrxerr",
          "type":2,
          "descr":"Bit mask showing CAN receive inputs that have exceeded their configured timeout without receiving any data.",
          "address":368
        },
        {
          "id":"rackposerror",
          "type":2,
          "sign":1,
          "descr":"Distance between measured rack position and rack control loop target.",
          "address":370
        },
        {
          "id":"canscanaddr",
          "type":3,
          "descr":"CAN ID currently being transmitted to by CAN scanning function",
          "address":44
        },
        {
          "id":"canscan_running",
          "address":"flags0.4",
          "descr":"A value of 1 indicates that a CAN scan is being performed"
        },
        {
          "id":"cantx1",
          "type":1,
          "descr":"This variable counts up every time the ECU transmits a CAN packet. Rolls over at 255 and starts counting from 0 again.",
          "address":541
        },
        {
          "id":"pces",
          "type":2,
          "unit":"RPM",
          "descr":"Filtered engine speed used for lookup in pump characteristic map, if two dimensional pump characterisation is enabled.",
          "address":372
        },
        {
          "id":"fuellimit",
          "unit":"µl",
          "scale":0.010000,
          "digits":1,
          "type":2,
          "descr":"Maximum fuel quantity permitted by fuel limit map.",
          "address":208
        },
        {
          "id":"h2o_active",
          "type":0,
          "address":"outputs.6",
          "descr":"A value of 1 indicates water injection is activated"
        },
        {
          "id":"h2opwmduty",
          "type":1,
          "unit":"%",
          "scale":0.392157,
          "digits":1,
          "descr":"Duty cycle of water injection PWM control",
          "address":548
        },
        {
          "id":"idleerror",
          "type":2,
          "unit":"RPM",
          "sign":1,
          "descr":"Distance between engine speed and idle speed setpoint.",
          "address":198
        },
        {
          "id":"harshfuelreduction",
          "type":2,
          "unit":"µl",
          "digits":2,
          "scale":0.010000,
          "descr":"Quantity subtracted from fuel request by harshness control strategy.",
          "address":376
        },
        {
          "id":"harshcycles",
          "type":1,
          "descr":"Number of oscillations detected within the harshness processing period.",
          "address":549
        },
        {
          "id":"harshseverity",
          "type":2,
          "unit":"RPM",
          "descr":"Severity of oscillations currently detected by harshness control strategy.",
          "address":374
        },
        {
          "id":"fuelpressure",
          "type":2,
          "unit":"bar",
          "scale":0.001000,
          "digits":2,
          "descr":"Fuel feed pressure, if sensor is fitted.",
          "address":378
        },
        {
          "id":"pumpangle",
          "type":2,
          "unit":"°",
          "scale":0.010986,
          "digits":1,
          "descr":"Angle of pump timing impulse before the last engine speed impulse",
          "address":380
        },
        {
          "id":"pumpangletarget",
          "type":2,
          "unit":"°",
          "scale":0.010986,
          "digits":1,
          "descr":"When using pump angle control (typically only on VP37 pumps), this is the target angle of control loop.",
          "address":394
        },
        {
          "id":"gpangletrim1",
          "type":2,
          "sign":1,
          "unit":"°",
          "scale":0.010986,
          "digits":1,
          "descr":"When using pump angle control (typically only on VP37 pumps), this is the general purpose trim 1 value applied to pump angle target.",
          "address":404
        },
        {
          "id":"vssevent",
          "type":3,
          "unit":"µs",
          "descr":"The timing of the last road speed impulse relative to ECU start up",
          "address":24
        },
        {
          "id":"din1event",
          "type":3,
          "unit":"µs",
          "descr":"The timing of the last impulse seen on digital input 1, if configured as a timed input of any sort, relative to ECU start up",
          "address":48
        },
        {
          "id":"din2event",
          "type":3,
          "unit":"µs",
          "descr":"The timing of the last impulse seen on digital input 2, if configured as a timed input of any sort, relative to ECU start up",
          "address":52
        },
        {
          "id":"din3event",
          "type":3,
          "unit":"µs",
          "descr":"The timing of the last impulse seen on digital input 3, if configured as a timed input of any sort, relative to ECU start up",
          "address":56
        },
        {
          "id":"din1interval",
          "type":3,
          "unit":"µs",
          "descr":"The time between the last two impulses seen on digital input 1, if configured as a timed input of any sort",
          "address":60
        },
        {
          "id":"din2interval",
          "type":3,
          "unit":"µs",
          "descr":"The time between the last two impulses seen on digital input 2, if configured as a timed input of any sort",
          "address":64
        },
        {
          "id":"din3interval",
          "type":3,
          "unit":"µs",
          "descr":"The time between the last two impulses seen on digital input 3, if configured as a timed input of any sort",
          "address":68
        },
        {
          "id":"count1",
          "type":1,
          "descr":"Value of general purpose counter function",
          "compact":0,
          "address":550
        },
        {
          "id":"gplatch1",
          "compact":0,
          "type":2,
          "describedby":"gplatchinput1",
          "descr":"Value of general purpose latch function",
          "address":382
        },
        {
          "id":"cel",
          "address":"outputs.3",
          "descr":"A flag indicating the check engine lamp is illuminated"
        },
        {
          "id":"runtime",
          "type":2,
          "unit":"s",
          "digits":3,
          "scale":0.100000,
          "descr":"Time since engine started",
          "address":108
        },
        {
          "id":"emap",
          "type":2,
          "unit":"mbar",
          "descr":"Exhaust manifold pressure in units of absolute pressure, if such sensor is fitted.",
          "address":406
        },
        {
          "id":"ratio_map_emap",
          "type":2,
          "scale":0.000977,
          "digits":3,
          "descr":"The ratio between intake manifold pressure and exhaust manifold pressure.",
          "address":408
        },
        {
          "id":"gptimer1",
          "compact":0,
          "type":2,
          "unit":"s",
          "scale":0.010000,
          "digits":2,
          "descr":"Value of general purpose timer function",
          "address":410
        },
        {
          "id":"customtransfer1",
          "type":2,
          "sign":0,
          "descr":"Output of custom transfer function 1",
          "variations":[
            [
              "customlookupsigned1",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "customlookupsigned1",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "customlookupdecimal1",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "customlookupdecimal1",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "customlookupdecimal1",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "customlookupdecimal1",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":418,
          "digits":0,
          "scale":1
        },
        {
          "id":"customtransfer2",
          "type":2,
          "sign":0,
          "descr":"Output of custom transfer function 2",
          "variations":[
            [
              "customlookupsigned2",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "customlookupsigned2",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "customlookupdecimal2",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "customlookupdecimal2",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "customlookupdecimal2",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "customlookupdecimal2",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":420,
          "digits":0,
          "scale":1
        },
        {
          "id":"customtransfer3",
          "type":2,
          "sign":0,
          "descr":"Output of custom transfer function 3",
          "variations":[
            [
              "customlookupsigned3",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "customlookupsigned3",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "customlookupdecimal3",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "customlookupdecimal3",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "customlookupdecimal3",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "customlookupdecimal3",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":422,
          "digits":0,
          "scale":1
        },
        {
          "id":"customtransfer4",
          "type":2,
          "sign":0,
          "descr":"Output of custom transfer function 4",
          "variations":[
            [
              "customlookupsigned4",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "customlookupsigned4",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "customlookupdecimal4",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "customlookupdecimal4",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "customlookupdecimal4",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "customlookupdecimal4",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":424,
          "digits":0,
          "scale":1
        },
        {
          "id":"customtable1",
          "type":2,
          "sign":0,
          "descr":"Output of custom table 1",
          "variations":[
            [
              "custom2dsigned1",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "custom2dsigned1",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "custom2ddecimal1",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "custom2ddecimal1",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "custom2ddecimal1",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "custom2ddecimal1",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":426,
          "digits":0,
          "scale":1
        },
        {
          "id":"customtable2",
          "type":2,
          "sign":0,
          "descr":"Output of custom table 2",
          "variations":[
            [
              "custom2dsigned2",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "custom2dsigned2",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "custom2ddecimal2",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "custom2ddecimal2",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "custom2ddecimal2",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "custom2ddecimal2",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":428,
          "digits":0,
          "scale":1
        },
        {
          "id":"customtable3",
          "type":2,
          "sign":0,
          "descr":"Output of custom table 3",
          "variations":[
            [
              "custom2dsigned3",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "custom2dsigned3",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "custom2ddecimal3",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "custom2ddecimal3",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "custom2ddecimal3",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "custom2ddecimal3",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":430,
          "digits":0,
          "scale":1
        },
        {
          "id":"customtable4",
          "type":2,
          "sign":0,
          "descr":"Output of custom table 4",
          "variations":[
            [
              "custom2dsigned4",
              "=",
              "Signed"
            ],
            {
              "sign":1
            },
            [
              "custom2dsigned4",
              "=",
              "Unsigned"
            ],
            {
              "sign":0
            },
            [
              "custom2ddecimal4",
              "=",
              "0"
            ],
            {
              "digits":0,
              "scale":1,
              "endif":true
            },
            [
              "custom2ddecimal4",
              "=",
              "1"
            ],
            {
              "digits":1,
              "scale":0.100000
            },
            [
              "custom2ddecimal4",
              "=",
              "2"
            ],
            {
              "digits":2,
              "scale":0.010000
            },
            [
              "custom2ddecimal4",
              "=",
              "3"
            ],
            {
              "digits":3,
              "scale":0.001000
            }
          ],
          "address":432,
          "digits":0,
          "scale":1
        },
        {
          "id":"din1freq",
          "type":2,
          "unit":"Hz",
          "descr":"Frequency of input signal on digital input 1 if configured as a frequency input.",
          "address":434
        },
        {
          "id":"din2freq",
          "type":2,
          "unit":"Hz",
          "descr":"Frequency of input signal on digital input 2 if configured as a frequency input.",
          "address":436
        },
        {
          "id":"din3freq",
          "type":2,
          "unit":"Hz",
          "descr":"Frequency of input signal on digital input 3 if configured as a frequency input.",
          "address":438
        },
        {
          "id":"airtempmult",
          "type":2,
          "scale":0.000977,
          "digits":3,
          "descr":"This is the effect the air temperature multiplier function has on the main fuel limit",
          "address":440
        },
        {
          "id":"start_requested",
          "address":"flags0.6",
          "descr":"Flag indicating that the starter control has registered a request to engage starter and may have engaged starter or is waiting for pre-heating to complete."
        },
        {
          "id":"starter_engaged",
          "address":"outputs.9",
          "descr":"Flag indicating that the starter control is engaging the engine starter output."
        },
        {
          "id":"torquereserve",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"Torque available by current inlet manifold air density (fuel limit).",
          "address":460
        },
        {
          "id":"torqueflags",
          "type":1,
          "descr":"Flags indicating operation of torque model",
          "address":555
        },
        {
          "id":"tq_rqlimited",
          "address":"torqueflags.0",
          "descr":"Boolean indicator that engine torque request is limited by the torque management strategy."
        },
        {
          "id":"tq_limited",
          "address":"torqueflags.1",
          "descr":"Boolean indicator that engine torque is limited by the torque management strategy."
        },
        {
          "id":"tq_blip",
          "address":"torqueflags.2",
          "descr":"Boolean indicator that the torque management strategy is managing the minimum engine torque."
        },
        {
          "id":"torquerequest",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"Torque request computed from fuel request.",
          "address":446
        },
        {
          "id":"torquerequestlimit",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"Torque request limit received from request limit source if the limit is enabled, otherwise zero.",
          "address":448
        },
        {
          "id":"torquerequestlimited",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"Torque request after limits have been applied, same as torque request if no limit is active.",
          "address":450
        },
        {
          "id":"torqueidlerequest",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"Torque produced by idle control. Not used by any ECU strategy but may be needed externally.",
          "address":452
        },
        {
          "id":"torqueactual",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"Torque produced by engine at current fuel quantity as computed by torque model.",
          "address":462
        },
        {
          "id":"torquelimit",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"Torque limit received from limit source if the limit is enabled, otherwise zero.",
          "address":454
        },
        {
          "id":"minimumtorque",
          "type":2,
          "unit":"Nm",
          "scale":0.200000,
          "digits":1,
          "offset":-1940,
          "descr":"If greater than 0, shows a minimum torque requested by an external source such as dual clutch transmission controller.",
          "address":456
        },
        {
          "id":"coolingfan",
          "type":0,
          "address":"outputs.2",
          "descr":"Flag indicating the cooling fan output is on"
        },
        {
          "id":"fuelpump",
          "type":0,
          "address":"outputs.4",
          "descr":"Flag indicating the fuel pump output is on"
        },
        {
          "id":"shutoff",
          "type":0,
          "address":"outputs.7",
          "descr":"Flag indicating the shut off solenoid output is on, it turns off when the engine is not permitted to run due to a fault or engine disable condition."
        },
        {
          "id":"fanspeed",
          "type":1,
          "unit":"%",
          "scale":0.390625,
          "descr":"Power desired of variable speed cooling fan",
          "address":556
        },
        {
          "id":"fanpwmduty",
          "type":1,
          "unit":"%",
          "scale":0.390625,
          "descr":"PWM duty cycle of variable speed cooling fan",
          "address":557
        },
        {
          "id":"userpgmstatus",
          "type":1,
          "descr":"If non-zero, this indicates that a user generated program is running on the ECU.",
          "address":566
        },
        {
          "id":"userpgmerror",
          "type":1,
          "descr":"If non-zero this means the virtual machine has had to exit code execution due to an error in the code.",
          "address":567
        },
        {
          "id":"userflags",
          "type":2,
          "descr":"Flags used for outputs from custom strategies into ECU functions.",
          "address":466
        },
        {
          "id":"userflag0",
          "address":"userflags.0",
          "compact":16,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"uservar1",
          "type":2,
          "sign":1,
          "compact":0,
          "descr":"Output of user defined math expression",
          "address":468
        },
        {
          "id":"userpgmvalues",
          "type":3,
          "array":64,
          "hidden":1,
          "address":568
        },
        {
          "id":"needsburn",
          "type":1,
          "descr":"A boolean indicator that the ECU has unsaved configuration changes in volatile memory.",
          "address":539
        },
        {
          "id":"remotebits",
          "type":1,
          "descr":"Bits that can be toggled by OBD2 commands or from Calibrator",
          "address":558
        },
        {
          "id":"remotebit0",
          "type":0,
          "address":"remotebits.0"
        },
        {
          "id":"remotebit1",
          "type":0,
          "address":"remotebits.1"
        },
        {
          "id":"remotebit2",
          "type":0,
          "address":"remotebits.2"
        },
        {
          "id":"remotebit3",
          "type":0,
          "address":"remotebits.3"
        },
        {
          "id":"remotebit4",
          "type":0,
          "address":"remotebits.4"
        },
        {
          "id":"remotebit5",
          "type":0,
          "address":"remotebits.5"
        },
        {
          "id":"remotebit6",
          "type":0,
          "address":"remotebits.6"
        },
        {
          "id":"remotebit7",
          "type":0,
          "address":"remotebits.7"
        },
        {
          "id":"flipflops",
          "type":1,
          "descr":"Variable keeping the state of all flip flop logic functions.",
          "address":559
        },
        {
          "id":"flipflop1",
          "type":0,
          "address":"flipflops.0",
          "compact":8,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"oilpansensor1",
          "compact":0,
          "unit":"µs",
          "scale":2,
          "type":2,
          "descr":"Output of oil level\/temperature\/quality sensor",
          "address":476
        },
        {
          "id":"oillevel",
          "type":1,
          "unit":"mm",
          "descr":"If the engine is fitted with an oil level sensor, this variable displays the output of it",
          "address":560
        },
        {
          "id":"oilquality",
          "type":1,
          "unit":"%",
          "descr":"If the engine is fitted with an oil quality\/opacity sensor, this variable displays the output of it",
          "address":561
        },
        {
          "id":"oilpress",
          "type":2,
          "unit":"mbar",
          "descr":"Engine oil pressure",
          "address":482
        },
        {
          "id":"oilpress_low",
          "type":0,
          "address":"flags0.9",
          "descr":"A flag that indicates the oil pressure is lower than the specified acceptable minimum."
        },
        {
          "id":"oiltemp",
          "type":2,
          "unit":"°C",
          "offset":-2731,
          "scale":0.100000,
          "digits":1,
          "descr":"Oil temperature, if such sensor is fitted.",
          "address":484
        },
        {
          "id":"transtemp",
          "type":2,
          "unit":"°C",
          "offset":-2731,
          "scale":0.100000,
          "digits":1,
          "descr":"Transmission temperature, if such sensor is fitted.",
          "address":486
        },
        {
          "id":"brakes_active",
          "type":0,
          "address":"flags0.7",
          "descr":"A flag that indicates the brake pedal input is active."
        },
        {
          "id":"clutch_active",
          "type":0,
          "address":"flags0.8",
          "descr":"A flag that indicates the clutch pedal input is active."
        },
        {
          "id":"userpgmvalues",
          "type":3,
          "array":64,
          "hidden":1,
          "address":568
        },
        {
          "id":"synclosscount",
          "type":1,
          "descr":"Counter incremented every time the crank trigger decoder determines there is an error and resets the sync state.",
          "address":563
        },
        {
          "id":"synclossreason",
          "type":8,
          "options":[
            "No sync loss",
            "Not enough pulses before sync",
            "Too many pulses before sync"
          ],
          "descr":"Debugging information to help diagnose sync loss issues",
          "address":564
        },
        {
          "id":"syncstate",
          "type":1,
          "descr":"The current state of the crank trigger sync. Value map:\r\n0: No signal\r\n1: Crank trigger impulses received but not decoded\r\n3: Crankshaft angle known\r\n7: Crankshaft angle as well as cam phase known",
          "address":562
        },
        {
          "id":"crankevent",
          "type":3,
          "unit":"µs",
          "descr":"Timer value updated on each crank trigger impulse",
          "address":20
        },
        {
          "id":"governortarget",
          "type":2,
          "unit":"RPM",
          "descr":"If the high speed governor is active, this value will show the speed it is regulating to",
          "address":508
        },
        {
          "id":"governorerror",
          "type":2,
          "unit":"RPM",
          "sign":1,
          "descr":"If the high speed governor is active, this value shows how far off the desired value the engine is operating. Positive values if the engine speed is excessive, negative if engine speed is too low",
          "address":510
        },
        {
          "id":"govfuelreq",
          "type":2,
          "unit":"mm3",
          "scale":0.010000,
          "digits":2,
          "descr":"Fuel request after it has gone through the high speed govenor",
          "address":512
        },
        {
          "id":"governorP",
          "type":2,
          "sign":1,
          "unit":"mm3",
          "scale":0.010000,
          "digits":2,
          "address":516
        },
        {
          "id":"governorI",
          "type":2,
          "unit":"mm3",
          "scale":0.010000,
          "digits":2,
          "address":514
        },
        {
          "id":"governorD",
          "type":2,
          "sign":1,
          "unit":"mm3",
          "scale":0.010000,
          "digits":2,
          "address":518
        },
        {
          "id":"simplepwmdc1",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":2,
          "descr":"Simple PWM function duty cycle",
          "compact":0,
          "address":492
        },
        {
          "id":"simplepwmf1",
          "type":2,
          "unit":"Hz",
          "scale":500000,
          "inverse":1,
          "descr":"Simple PWM function frequency",
          "compact":0,
          "address":500
        },
        {
          "id":"keypadstate1",
          "compact":0,
          "type":2,
          "descr":"CAN keypad button pressed state on bits 1-15, least significant bit indicates keypad is alive",
          "address":520
        },
        {
          "id":"keypad1.1",
          "compact":15,
          "type":0,
          "address":"keypadstate1.1+",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.1",
          "compact":15,
          "type":0,
          "address":"keypadstate2.1+",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.1",
          "compact":15,
          "type":0,
          "address":"keypadstate3.1+",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.1",
          "compact":15,
          "type":0,
          "address":"keypadstate4.1+",
          "descr":"State of keypad button channel"
        },
        {
          "id":"timerbits",
          "descr":"Bit mask of bits flipped at different intervals",
          "type":1,
          "address":565
        },
        {
          "id":"0hz5",
          "type":0,
          "address":"timerbits.0",
          "descr":"Half hertz cycle function, 1 for one second and 0 for the next second"
        },
        {
          "id":"1hz",
          "type":0,
          "address":"timerbits.1",
          "descr":"One hertz cycle function, 1 for a half second and 0 for the other half"
        },
        {
          "id":"10hz",
          "type":0,
          "address":"timerbits.2",
          "descr":"Ten hertz cycle function, pulses 10 times per second"
        },
        {
          "id":"rack0error",
          "type":2,
          "descr":"Counter that counts up every time the rack position sensor times out or otherwise has an out of range reading",
          "address":530
        },
        {
          "id":"rack1error",
          "type":2,
          "descr":"Counter that counts up every time the rack position sensor times out or otherwise has an out of range reading",
          "address":532
        },
        {
          "id":"track0error",
          "type":2,
          "descr":"Counter that counts up every time the timing rack position sensor times out or otherwise has an out of range reading",
          "address":534
        },
        {
          "id":"track1error",
          "type":2,
          "descr":"Counter that counts up every time the timing rack position sensor times out or otherwise has an out of range reading",
          "address":536
        },
        {
          "id":"analog1",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":78
        },
        {
          "id":"analog2",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":80
        },
        {
          "id":"analog3",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":82
        },
        {
          "id":"analog4",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":84
        },
        {
          "id":"analog5",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":86
        },
        {
          "id":"analog6",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":88
        },
        {
          "id":"analog7",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":90
        },
        {
          "id":"analog8",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":92
        },
        {
          "id":"analog9",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":94
        },
        {
          "id":"analog10",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":96
        },
        {
          "id":"analog11",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":98
        },
        {
          "id":"analog12",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":100
        },
        {
          "id":"analog13",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":102
        },
        {
          "id":"analog14",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":104
        },
        {
          "id":"analog15",
          "scale":0.001221,
          "unit":"V",
          "type":2,
          "digits":3,
          "compact":0,
          "descr":"Analog input voltage",
          "address":106
        },
        {
          "id":"boostgptrim2",
          "describedby":"boostpressuresource",
          "type":2,
          "sign":1,
          "compact":0,
          "descr":"General purpose pressure target trims for turbocharger boost control.",
          "address":146
        },
        {
          "id":"boostgptrim3",
          "describedby":"boostpressuresource",
          "type":2,
          "sign":1,
          "compact":0,
          "descr":"General purpose pressure target trims for turbocharger boost control.",
          "address":148
        },
        {
          "id":"cansrc1",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.1",
          "descr":"General purpose CAN receive values.",
          "address":242
        },
        {
          "id":"cansrc2",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.2",
          "descr":"General purpose CAN receive values.",
          "address":244
        },
        {
          "id":"cansrc3",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.3",
          "descr":"General purpose CAN receive values.",
          "address":246
        },
        {
          "id":"cansrc4",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.4",
          "descr":"General purpose CAN receive values.",
          "address":248
        },
        {
          "id":"cansrc5",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.5",
          "descr":"General purpose CAN receive values.",
          "address":250
        },
        {
          "id":"cansrc6",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.6",
          "descr":"General purpose CAN receive values.",
          "address":252
        },
        {
          "id":"cansrc7",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.7",
          "descr":"General purpose CAN receive values.",
          "address":254
        },
        {
          "id":"cansrc8",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.8",
          "descr":"General purpose CAN receive values.",
          "address":256
        },
        {
          "id":"cansrc9",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.9",
          "descr":"General purpose CAN receive values.",
          "address":258
        },
        {
          "id":"cansrc10",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.10",
          "descr":"General purpose CAN receive values.",
          "address":260
        },
        {
          "id":"cansrc11",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.11",
          "descr":"General purpose CAN receive values.",
          "address":262
        },
        {
          "id":"cansrc12",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.12",
          "descr":"General purpose CAN receive values.",
          "address":264
        },
        {
          "id":"cansrc13",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.13",
          "descr":"General purpose CAN receive values.",
          "address":266
        },
        {
          "id":"cansrc14",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.14",
          "descr":"General purpose CAN receive values.",
          "address":268
        },
        {
          "id":"cansrc15",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.15",
          "descr":"General purpose CAN receive values.",
          "address":270
        },
        {
          "id":"cansrc16",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.16",
          "descr":"General purpose CAN receive values.",
          "address":272
        },
        {
          "id":"cansrc17",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.17",
          "descr":"General purpose CAN receive values.",
          "address":274
        },
        {
          "id":"cansrc18",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.18",
          "descr":"General purpose CAN receive values.",
          "address":276
        },
        {
          "id":"cansrc19",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.19",
          "descr":"General purpose CAN receive values.",
          "address":278
        },
        {
          "id":"cansrc20",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.20",
          "descr":"General purpose CAN receive values.",
          "address":280
        },
        {
          "id":"cansrc21",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.21",
          "descr":"General purpose CAN receive values.",
          "address":282
        },
        {
          "id":"cansrc22",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.22",
          "descr":"General purpose CAN receive values.",
          "address":284
        },
        {
          "id":"cansrc23",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.23",
          "descr":"General purpose CAN receive values.",
          "address":286
        },
        {
          "id":"cansrc24",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.24",
          "descr":"General purpose CAN receive values.",
          "address":288
        },
        {
          "id":"cansrc25",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.25",
          "descr":"General purpose CAN receive values.",
          "address":290
        },
        {
          "id":"cansrc26",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.26",
          "descr":"General purpose CAN receive values.",
          "address":292
        },
        {
          "id":"cansrc27",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.27",
          "descr":"General purpose CAN receive values.",
          "address":294
        },
        {
          "id":"cansrc28",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.28",
          "descr":"General purpose CAN receive values.",
          "address":296
        },
        {
          "id":"cansrc29",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.29",
          "descr":"General purpose CAN receive values.",
          "address":298
        },
        {
          "id":"cansrc30",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.30",
          "descr":"General purpose CAN receive values.",
          "address":300
        },
        {
          "id":"cansrc31",
          "type":2,
          "compact":0,
          "appendname":"canrxalias.31",
          "descr":"General purpose CAN receive values.",
          "address":302
        },
        {
          "id":"gplim2",
          "type":2,
          "scale":0.010000,
          "digits":2,
          "compact":0,
          "descr":"General purpose fuel limit value",
          "address":362
        },
        {
          "id":"gplim3",
          "type":2,
          "scale":0.010000,
          "digits":2,
          "compact":0,
          "descr":"General purpose fuel limit value",
          "address":364
        },
        {
          "id":"gplim4",
          "type":2,
          "scale":0.010000,
          "digits":2,
          "compact":0,
          "descr":"General purpose fuel limit value",
          "address":366
        },
        {
          "id":"flipflop2",
          "type":0,
          "compact":0,
          "address":"flipflops.1",
          "descr":"State of flip flop logic"
        },
        {
          "id":"flipflop3",
          "type":0,
          "compact":0,
          "address":"flipflops.2",
          "descr":"State of flip flop logic"
        },
        {
          "id":"flipflop4",
          "type":0,
          "compact":0,
          "address":"flipflops.3",
          "descr":"State of flip flop logic"
        },
        {
          "id":"flipflop5",
          "type":0,
          "compact":0,
          "address":"flipflops.4",
          "descr":"State of flip flop logic"
        },
        {
          "id":"flipflop6",
          "type":0,
          "compact":0,
          "address":"flipflops.5",
          "descr":"State of flip flop logic"
        },
        {
          "id":"flipflop7",
          "type":0,
          "compact":0,
          "address":"flipflops.6",
          "descr":"State of flip flop logic"
        },
        {
          "id":"flipflop8",
          "type":0,
          "compact":0,
          "address":"flipflops.7",
          "descr":"State of flip flop logic"
        },
        {
          "id":"count2",
          "type":1,
          "descr":"Value of general purpose counter function",
          "compact":0,
          "address":551
        },
        {
          "id":"count3",
          "type":1,
          "descr":"Value of general purpose counter function",
          "compact":0,
          "address":552
        },
        {
          "id":"count4",
          "type":1,
          "descr":"Value of general purpose counter function",
          "compact":0,
          "address":553
        },
        {
          "id":"gplatch2",
          "compact":0,
          "type":2,
          "describedby":"gplatchinput2",
          "descr":"Value of general purpose latch function",
          "address":384
        },
        {
          "id":"gplatch3",
          "compact":0,
          "type":2,
          "describedby":"gplatchinput3",
          "descr":"Value of general purpose latch function",
          "address":386
        },
        {
          "id":"gplatch4",
          "compact":0,
          "type":2,
          "describedby":"gplatchinput4",
          "descr":"Value of general purpose latch function",
          "address":388
        },
        {
          "id":"gptimer2",
          "compact":0,
          "type":2,
          "unit":"s",
          "scale":0.010000,
          "digits":2,
          "descr":"Value of general purpose timer function",
          "address":412
        },
        {
          "id":"gptimer3",
          "compact":0,
          "type":2,
          "unit":"s",
          "scale":0.010000,
          "digits":2,
          "descr":"Value of general purpose timer function",
          "address":414
        },
        {
          "id":"gptimer4",
          "compact":0,
          "type":2,
          "unit":"s",
          "scale":0.010000,
          "digits":2,
          "descr":"Value of general purpose timer function",
          "address":416
        },
        {
          "id":"userflag1",
          "address":"userflags.1",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag2",
          "address":"userflags.2",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag3",
          "address":"userflags.3",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag4",
          "address":"userflags.4",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag5",
          "address":"userflags.5",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag6",
          "address":"userflags.6",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag7",
          "address":"userflags.7",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag8",
          "address":"userflags.8",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag9",
          "address":"userflags.9",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag10",
          "address":"userflags.10",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag11",
          "address":"userflags.11",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag12",
          "address":"userflags.12",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag13",
          "address":"userflags.13",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag14",
          "address":"userflags.14",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"userflag15",
          "address":"userflags.15",
          "compact":0,
          "descr":"Flags used for outputs from custom strategies into ECU functions."
        },
        {
          "id":"uservar2",
          "type":2,
          "sign":1,
          "compact":0,
          "descr":"Output of user defined math expression",
          "address":470
        },
        {
          "id":"uservar3",
          "type":2,
          "sign":1,
          "compact":0,
          "descr":"Output of user defined math expression",
          "address":472
        },
        {
          "id":"uservar4",
          "type":2,
          "sign":1,
          "compact":0,
          "descr":"Output of user defined math expression",
          "address":474
        },
        {
          "id":"flipflop2",
          "type":0,
          "address":"flipflops.1",
          "compact":0,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"flipflop3",
          "type":0,
          "address":"flipflops.2",
          "compact":0,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"flipflop4",
          "type":0,
          "address":"flipflops.3",
          "compact":0,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"flipflop5",
          "type":0,
          "address":"flipflops.4",
          "compact":0,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"flipflop6",
          "type":0,
          "address":"flipflops.5",
          "compact":0,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"flipflop7",
          "type":0,
          "address":"flipflops.6",
          "compact":0,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"flipflop8",
          "type":0,
          "address":"flipflops.7",
          "compact":0,
          "descr":"State of flip flop logic function"
        },
        {
          "id":"oilpansensor2",
          "compact":0,
          "unit":"µs",
          "scale":2,
          "type":2,
          "descr":"Output of oil level\/temperature\/quality sensor",
          "address":478
        },
        {
          "id":"oilpansensor3",
          "compact":0,
          "unit":"µs",
          "scale":2,
          "type":2,
          "descr":"Output of oil level\/temperature\/quality sensor",
          "address":480
        },
        {
          "id":"simplepwmdc2",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":2,
          "descr":"Simple PWM function duty cycle",
          "compact":0,
          "address":494
        },
        {
          "id":"simplepwmdc3",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":2,
          "descr":"Simple PWM function duty cycle",
          "compact":0,
          "address":496
        },
        {
          "id":"simplepwmdc4",
          "type":2,
          "unit":"%",
          "scale":0.003052,
          "digits":2,
          "descr":"Simple PWM function duty cycle",
          "compact":0,
          "address":498
        },
        {
          "id":"simplepwmf2",
          "type":2,
          "unit":"Hz",
          "scale":500000,
          "inverse":1,
          "descr":"Simple PWM function frequency",
          "compact":0,
          "address":502
        },
        {
          "id":"simplepwmf3",
          "type":2,
          "unit":"Hz",
          "scale":500000,
          "inverse":1,
          "descr":"Simple PWM function frequency",
          "compact":0,
          "address":504
        },
        {
          "id":"simplepwmf4",
          "type":2,
          "unit":"Hz",
          "scale":500000,
          "inverse":1,
          "descr":"Simple PWM function frequency",
          "compact":0,
          "address":506
        },
        {
          "id":"keypadstate2",
          "compact":0,
          "type":2,
          "descr":"CAN keypad button pressed state on bits 1-15, least significant bit indicates keypad is alive",
          "address":522
        },
        {
          "id":"keypadstate3",
          "compact":0,
          "type":2,
          "descr":"CAN keypad button pressed state on bits 1-15, least significant bit indicates keypad is alive",
          "address":524
        },
        {
          "id":"keypadstate4",
          "compact":0,
          "type":2,
          "descr":"CAN keypad button pressed state on bits 1-15, least significant bit indicates keypad is alive",
          "address":526
        },
        {
          "id":"keypad1.2",
          "compact":0,
          "type":0,
          "address":"keypadstate1.2",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.3",
          "compact":0,
          "type":0,
          "address":"keypadstate1.3",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.4",
          "compact":0,
          "type":0,
          "address":"keypadstate1.4",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.5",
          "compact":0,
          "type":0,
          "address":"keypadstate1.5",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.6",
          "compact":0,
          "type":0,
          "address":"keypadstate1.6",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.7",
          "compact":0,
          "type":0,
          "address":"keypadstate1.7",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.8",
          "compact":0,
          "type":0,
          "address":"keypadstate1.8",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.9",
          "compact":0,
          "type":0,
          "address":"keypadstate1.9",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.10",
          "compact":0,
          "type":0,
          "address":"keypadstate1.10",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.11",
          "compact":0,
          "type":0,
          "address":"keypadstate1.11",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.12",
          "compact":0,
          "type":0,
          "address":"keypadstate1.12",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.13",
          "compact":0,
          "type":0,
          "address":"keypadstate1.13",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.14",
          "compact":0,
          "type":0,
          "address":"keypadstate1.14",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad1.15",
          "compact":0,
          "type":0,
          "address":"keypadstate1.15",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.2",
          "compact":0,
          "type":0,
          "address":"keypadstate2.2",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.3",
          "compact":0,
          "type":0,
          "address":"keypadstate2.3",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.4",
          "compact":0,
          "type":0,
          "address":"keypadstate2.4",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.5",
          "compact":0,
          "type":0,
          "address":"keypadstate2.5",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.6",
          "compact":0,
          "type":0,
          "address":"keypadstate2.6",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.7",
          "compact":0,
          "type":0,
          "address":"keypadstate2.7",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.8",
          "compact":0,
          "type":0,
          "address":"keypadstate2.8",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.9",
          "compact":0,
          "type":0,
          "address":"keypadstate2.9",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.10",
          "compact":0,
          "type":0,
          "address":"keypadstate2.10",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.11",
          "compact":0,
          "type":0,
          "address":"keypadstate2.11",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.12",
          "compact":0,
          "type":0,
          "address":"keypadstate2.12",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.13",
          "compact":0,
          "type":0,
          "address":"keypadstate2.13",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.14",
          "compact":0,
          "type":0,
          "address":"keypadstate2.14",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad2.15",
          "compact":0,
          "type":0,
          "address":"keypadstate2.15",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.2",
          "compact":0,
          "type":0,
          "address":"keypadstate3.2",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.3",
          "compact":0,
          "type":0,
          "address":"keypadstate3.3",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.4",
          "compact":0,
          "type":0,
          "address":"keypadstate3.4",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.5",
          "compact":0,
          "type":0,
          "address":"keypadstate3.5",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.6",
          "compact":0,
          "type":0,
          "address":"keypadstate3.6",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.7",
          "compact":0,
          "type":0,
          "address":"keypadstate3.7",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.8",
          "compact":0,
          "type":0,
          "address":"keypadstate3.8",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.9",
          "compact":0,
          "type":0,
          "address":"keypadstate3.9",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.10",
          "compact":0,
          "type":0,
          "address":"keypadstate3.10",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.11",
          "compact":0,
          "type":0,
          "address":"keypadstate3.11",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.12",
          "compact":0,
          "type":0,
          "address":"keypadstate3.12",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.13",
          "compact":0,
          "type":0,
          "address":"keypadstate3.13",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.14",
          "compact":0,
          "type":0,
          "address":"keypadstate3.14",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad3.15",
          "compact":0,
          "type":0,
          "address":"keypadstate3.15",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.2",
          "compact":0,
          "type":0,
          "address":"keypadstate4.2",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.3",
          "compact":0,
          "type":0,
          "address":"keypadstate4.3",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.4",
          "compact":0,
          "type":0,
          "address":"keypadstate4.4",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.5",
          "compact":0,
          "type":0,
          "address":"keypadstate4.5",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.6",
          "compact":0,
          "type":0,
          "address":"keypadstate4.6",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.7",
          "compact":0,
          "type":0,
          "address":"keypadstate4.7",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.8",
          "compact":0,
          "type":0,
          "address":"keypadstate4.8",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.9",
          "compact":0,
          "type":0,
          "address":"keypadstate4.9",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.10",
          "compact":0,
          "type":0,
          "address":"keypadstate4.10",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.11",
          "compact":0,
          "type":0,
          "address":"keypadstate4.11",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.12",
          "compact":0,
          "type":0,
          "address":"keypadstate4.12",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.13",
          "compact":0,
          "type":0,
          "address":"keypadstate4.13",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.14",
          "compact":0,
          "type":0,
          "address":"keypadstate4.14",
          "descr":"State of keypad button channel"
        },
        {
          "id":"keypad4.15",
          "compact":0,
          "type":0,
          "address":"keypadstate4.15",
          "descr":"State of keypad button channel"
        }
      ]
    },
    "remoteprocedures":{
      "outputtest":{
        "cmd":"OT",
        "args":[
          1,
          1
        ],
        "returns":[
          3
        ]
      },
      "startlogging":{
        "description":"Manually start internal controller logging",
        "cmd":"LT"
      },
      "stoplogging":{
        "description":"Halt internal data log",
        "cmd":"SL"
      },
      "startscan":{
        "description":"Start CAN scan",
        "cmd":"SS"
      },
      "endscan":{
        "description":"Halt CAN scan",
        "cmd":"HS"
      },
      "prscan":{
        "description":"Resume CAN scan",
        "cmd":"RS"
      },
      "canxmit":{
        "cmd":"CX",
        "args":[
          1,
          3,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1
        ]
      },
      "ccantest":{
        "cmd":"CT",
        "args":[
          1
        ],
        "returns":[
          3,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1,
          1
        ]
      },
      "userprogramstate":{
        "cmd":"UP",
        "args":[
          1
        ]
      },
      "remotebit":{
        "cmd":"RB",
        "returns":[
          1
        ],
        "args":[
          1,
          1
        ]
      },
      "initcan":{
        "cmd":"CI"
      }
    },
    "scripts":{
      "opentestdialog":{
        "description":"Output test dialog",
        "script":[
          "dialog",
          {
            "title":"Output test mode",
            "id":"outputtester",
            "xsize":800,
            "ysize":200,
            "noresize":true,
            "bgcolor":"0xCCCCCC",
            "fgcolor":"0x000000"
          },
          [
            {
              "size":[
                50,
                30
              ],
              "position":[
                0,
                0
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":0,
              "activecolour":"green",
              "falsetext":"Output 1",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  0,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                50,
                0
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":1,
              "activecolour":"green",
              "falsetext":"Output 2",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  1,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                100,
                0
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":2,
              "activecolour":"green",
              "falsetext":"Output 3",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  2,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                150,
                0
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":3,
              "activecolour":"green",
              "falsetext":"Output 4",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  3,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                0,
                30
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":4,
              "activecolour":"green",
              "falsetext":"Output 5",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  4,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                50,
                30
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":5,
              "activecolour":"green",
              "falsetext":"Output 6",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  5,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                100,
                30
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":6,
              "activecolour":"green",
              "falsetext":"Output 7",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  6,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                150,
                30
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":7,
              "activecolour":"green",
              "falsetext":"Output 8",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  7,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                0,
                60
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":8,
              "activecolour":"green",
              "falsetext":"Output 9",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  8,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                50,
                60
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":9,
              "activecolour":"green",
              "falsetext":"Output 10",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  9,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                100,
                60
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":10,
              "activecolour":"green",
              "falsetext":"Output 11",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  10,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            },
            {
              "size":[
                50,
                30
              ],
              "position":[
                150,
                60
              ],
              "type":"indicator",
              "scriptvar":"tmostate0",
              "condition":"b",
              "parameter":11,
              "activecolour":"green",
              "falsetext":"Output 12",
              "onclick":[
                "rpc",
                "outputtest",
                [
                  11,
                  2,
                  [
                    "tmostate0"
                  ]
                ]
              ]
            }
          ]
        ]
      },
      "canscan_interactive":{
        "description":"Interactive CAN scan",
        "script":[
          [
            "rpc",
            "startscan"
          ],
          [
            "onexit",
            [
              [
                "rpc",
                "endscan"
              ],
              [
                "alert",
                "Scan ended at address %s",
                "canscanaddr"
              ]
            ]
          ],
          [
            "statusdialog"
          ],
          [
            "sleep",
            200,
            [
              "while",
              "rt(\"canscan_running\") > 0",
              [
                "status",
                "Transmitting on address %s",
                "canscanaddr"
              ]
            ]
          ]
        ]
      },
      "ccanpreview":{
        "description":"Custom CAN preview tool",
        "script":[
          "dialog",
          {
            "title":"Custom CAN previewer",
            "id":"ccantester",
            "xsize":700,
            "ysize":115,
            "noresize":true,
            "bgcolor":"0xCCCCCC",
            "fgcolor":"0x000000"
          },
          [
            {
              "size":[
                25,
                20
              ],
              "position":[
                0,
                0
              ],
              "type":"static",
              "caption":"CAN ID"
            },
            {
              "size":[
                20,
                20
              ],
              "position":[
                25,
                0
              ],
              "type":"static",
              "caption":"length"
            },
            {
              "size":[
                20,
                20
              ],
              "position":[
                100,
                0
              ],
              "type":"static",
              "caption":"data"
            },
            {
              "size":[
                20,
                20
              ],
              "position":[
                180,
                0
              ],
              "type":"static",
              "caption":"offset"
            },
            {
              "size":[
                200,
                40
              ],
              "position":[
                0,
                60
              ],
              "type":"static",
              "caption":"Enter line number from the custom CAN configuration in the offset field and click fetch.\r\nLine 0 is at the bottom, counting upwards."
            },
            {
              "wid":"ccoffset",
              "size":[
                20,
                40
              ],
              "position":[
                180,
                20
              ],
              "type":"edit"
            },
            {
              "wid":"getpreview",
              "caption":"Fetch",
              "size":[
                20,
                40
              ],
              "position":[
                160,
                20
              ],
              "type":"button",
              "onclick":[
                "rpc",
                "ccantest",
                [
                  "widgetval(ccoffset)",
                  [
                    "cccanid",
                    "ccplen",
                    "ccb0",
                    "ccb1",
                    "ccb2",
                    "ccb3",
                    "ccb4",
                    "ccb5",
                    "ccb6",
                    "ccb7"
                  ]
                ],
                [
                  [
                    "settext",
                    "cccanid",
                    "%s",
                    "cccanid"
                  ],
                  [
                    "settext",
                    "ccplen",
                    "%s",
                    "ccplen"
                  ],
                  [
                    "settext",
                    "ccb0",
                    "%s",
                    "ccb0"
                  ],
                  [
                    "settext",
                    "ccb1",
                    "%s",
                    "ccb1"
                  ],
                  [
                    "settext",
                    "ccb2",
                    "%s",
                    "ccb2"
                  ],
                  [
                    "settext",
                    "ccb3",
                    "%s",
                    "ccb3"
                  ],
                  [
                    "settext",
                    "ccb4",
                    "%s",
                    "ccb4"
                  ],
                  [
                    "settext",
                    "ccb5",
                    "%s",
                    "ccb5"
                  ],
                  [
                    "settext",
                    "ccb6",
                    "%s",
                    "ccb6"
                  ],
                  [
                    "settext",
                    "ccb7",
                    "%s",
                    "ccb7"
                  ]
                ]
              ]
            },
            {
              "wid":"cccanid",
              "size":[
                30,
                40
              ],
              "position":[
                0,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccplen",
              "size":[
                10,
                40
              ],
              "position":[
                30,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb0",
              "size":[
                15,
                40
              ],
              "position":[
                40,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb1",
              "size":[
                15,
                40
              ],
              "position":[
                55,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb2",
              "size":[
                15,
                40
              ],
              "position":[
                70,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb3",
              "size":[
                15,
                40
              ],
              "position":[
                85,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb4",
              "size":[
                15,
                40
              ],
              "position":[
                100,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb5",
              "size":[
                15,
                40
              ],
              "position":[
                115,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb6",
              "size":[
                15,
                40
              ],
              "position":[
                130,
                20
              ],
              "type":"edit",
              "readonly":true
            },
            {
              "wid":"ccb7",
              "size":[
                15,
                40
              ],
              "position":[
                145,
                20
              ],
              "type":"edit",
              "readonly":true
            }
          ]
        ]
      },
      "cantoolbox":{
        "description":"CAN transmit tool",
        "script":[
          "dialog",
          {
            "title":"CAN transmit tool",
            "xsize":700,
            "ysize":230,
            "bgcolor":"0xCCCCCC",
            "fgcolor":"0x000000"
          },
          [
            {
              "size":[
                25,
                10
              ],
              "position":[
                0,
                0
              ],
              "type":"static",
              "caption":"CAN ID"
            },
            {
              "size":[
                20,
                10
              ],
              "position":[
                25,
                0
              ],
              "type":"static",
              "caption":"length"
            },
            {
              "size":[
                20,
                10
              ],
              "position":[
                100,
                0
              ],
              "type":"static",
              "caption":"data"
            },
            {
              "wid":"xmit1",
              "caption":"Transmit",
              "size":[
                40,
                20
              ],
              "position":[
                160,
                10
              ],
              "type":"button",
              "onclick":[
                "rpc",
                "canxmit",
                [
                  0,
                  "widgetval(canid1)",
                  "widgetval(plen1)",
                  "widgetval(b10)",
                  "widgetval(b11)",
                  "widgetval(b12)",
                  "widgetval(b13)",
                  "widgetval(b14)",
                  "widgetval(b15)",
                  "widgetval(b16)",
                  "widgetval(b17)"
                ]
              ]
            },
            {
              "wid":"canid1",
              "size":[
                30,
                20
              ],
              "position":[
                0,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"plen1",
              "size":[
                10,
                20
              ],
              "position":[
                30,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b10",
              "size":[
                15,
                20
              ],
              "position":[
                40,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b11",
              "size":[
                15,
                20
              ],
              "position":[
                55,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b12",
              "size":[
                15,
                20
              ],
              "position":[
                70,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b13",
              "size":[
                15,
                20
              ],
              "position":[
                85,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b14",
              "size":[
                15,
                20
              ],
              "position":[
                100,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b15",
              "size":[
                15,
                20
              ],
              "position":[
                115,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b16",
              "size":[
                15,
                20
              ],
              "position":[
                130,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"b17",
              "size":[
                15,
                20
              ],
              "position":[
                145,
                10
              ],
              "type":"edit"
            },
            {
              "wid":"xmit2",
              "caption":"Transmit",
              "size":[
                40,
                20
              ],
              "position":[
                160,
                30
              ],
              "type":"button",
              "onclick":[
                "rpc",
                "canxmit",
                [
                  0,
                  "widgetval(canid2)",
                  "widgetval(plen2)",
                  "widgetval(b20)",
                  "widgetval(b21)",
                  "widgetval(b22)",
                  "widgetval(b23)",
                  "widgetval(b24)",
                  "widgetval(b25)",
                  "widgetval(b26)",
                  "widgetval(b27)"
                ]
              ]
            },
            {
              "wid":"canid2",
              "size":[
                30,
                20
              ],
              "position":[
                0,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"plen2",
              "size":[
                10,
                20
              ],
              "position":[
                30,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b20",
              "size":[
                15,
                20
              ],
              "position":[
                40,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b21",
              "size":[
                15,
                20
              ],
              "position":[
                55,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b22",
              "size":[
                15,
                20
              ],
              "position":[
                70,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b23",
              "size":[
                15,
                20
              ],
              "position":[
                85,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b24",
              "size":[
                15,
                20
              ],
              "position":[
                100,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b25",
              "size":[
                15,
                20
              ],
              "position":[
                115,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b26",
              "size":[
                15,
                20
              ],
              "position":[
                130,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"b27",
              "size":[
                15,
                20
              ],
              "position":[
                145,
                30
              ],
              "type":"edit"
            },
            {
              "wid":"xmit3",
              "caption":"Transmit",
              "size":[
                40,
                20
              ],
              "position":[
                160,
                50
              ],
              "type":"button",
              "onclick":[
                "rpc",
                "canxmit",
                [
                  0,
                  "widgetval(canid3)",
                  "widgetval(plen3)",
                  "widgetval(b30)",
                  "widgetval(b31)",
                  "widgetval(b32)",
                  "widgetval(b33)",
                  "widgetval(b34)",
                  "widgetval(b35)",
                  "widgetval(b36)",
                  "widgetval(b37)"
                ]
              ]
            },
            {
              "wid":"canid3",
              "size":[
                30,
                20
              ],
              "position":[
                0,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"plen3",
              "size":[
                10,
                20
              ],
              "position":[
                30,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b30",
              "size":[
                15,
                20
              ],
              "position":[
                40,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b31",
              "size":[
                15,
                20
              ],
              "position":[
                55,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b32",
              "size":[
                15,
                20
              ],
              "position":[
                70,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b33",
              "size":[
                15,
                20
              ],
              "position":[
                85,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b34",
              "size":[
                15,
                20
              ],
              "position":[
                100,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b35",
              "size":[
                15,
                20
              ],
              "position":[
                115,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b36",
              "size":[
                15,
                20
              ],
              "position":[
                130,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"b37",
              "size":[
                15,
                20
              ],
              "position":[
                145,
                50
              ],
              "type":"edit"
            },
            {
              "wid":"xmit4",
              "caption":"Transmit",
              "size":[
                40,
                20
              ],
              "position":[
                160,
                70
              ],
              "type":"button",
              "onclick":[
                "rpc",
                "canxmit",
                [
                  0,
                  "widgetval(canid4)",
                  "widgetval(plen4)",
                  "widgetval(b40)",
                  "widgetval(b41)",
                  "widgetval(b42)",
                  "widgetval(b43)",
                  "widgetval(b44)",
                  "widgetval(b45)",
                  "widgetval(b46)",
                  "widgetval(b47)"
                ]
              ]
            },
            {
              "wid":"canid4",
              "size":[
                30,
                20
              ],
              "position":[
                0,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"plen4",
              "size":[
                10,
                20
              ],
              "position":[
                30,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b40",
              "size":[
                15,
                20
              ],
              "position":[
                40,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b41",
              "size":[
                15,
                20
              ],
              "position":[
                55,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b42",
              "size":[
                15,
                20
              ],
              "position":[
                70,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b43",
              "size":[
                15,
                20
              ],
              "position":[
                85,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b44",
              "size":[
                15,
                20
              ],
              "position":[
                100,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b45",
              "size":[
                15,
                20
              ],
              "position":[
                115,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b46",
              "size":[
                15,
                20
              ],
              "position":[
                130,
                70
              ],
              "type":"edit"
            },
            {
              "wid":"b47",
              "size":[
                15,
                20
              ],
              "position":[
                145,
                70
              ],
              "type":"edit"
            }
          ]
        ]
      },
      "appautocal":{
        "description":"Accelerator pedal sensor auto calibration",
        "script":[
          "appautocal",
          2
        ]
      }
    },
    "errorlist":{
      "error0":[
        [
          0,
          "Primary rack position sensor high (open circuit)"
        ],
        [
          1,
          "Rack reference sensor high (open circuit)"
        ],
        [
          2,
          "Primary rack position sensor low (short to ground)"
        ],
        [
          3,
          "Rack reference sensor low (short to ground)"
        ],
        [
          4,
          "Engine shut down due to lack of oil pressure"
        ],
        [
          6,
          "Rack position below target position"
        ],
        [
          7,
          "Rack position exceeding target position"
        ],
        [
          11,
          "Engine disabled due to test mode"
        ],
        [
          12,
          "Configuration error"
        ],
        [
          13,
          "Firmware crashed"
        ],
        [
          14,
          "Interrupt crashed"
        ],
        [
          15,
          "Priority interrupt crashed"
        ]
      ],
      "error1":[
        [
          0,
          "Throttle pedal voltage high"
        ],
        [
          1,
          "Throttle pedal voltage low"
        ],
        [
          2,
          "Throttle sensors disagree"
        ],
        [
          3,
          "Secondary throttle sensor out of range"
        ]
      ],
      "error2":[
        [
          0,
          "MAP sensor voltage low"
        ],
        [
          1,
          "MAP sensor voltage high"
        ],
        [
          2,
          "Coolant temp sensor open circuit"
        ],
        [
          3,
          "Coolant temp sensor short circuit"
        ],
        [
          4,
          "Loss of CAN input data"
        ],
        [
          5,
          "Fuel pressure sensor low voltage (short to ground)"
        ],
        [
          6,
          "Fuel pressure sensor high voltage (open circuit or short to supply)"
        ],
        [
          7,
          "Fuel feed pressure too low"
        ],
        [
          8,
          "Fuel feed pressure too high"
        ],
        [
          9,
          "Exhaust temperature sensor low value"
        ],
        [
          10,
          "Exhaust temperature sensor high value"
        ],
        [
          11,
          "Exhaust temperature excessive"
        ],
        [
          12,
          "EMAP sensor low voltage (short to ground)"
        ],
        [
          13,
          "EMAP sensor high voltage (open circuit or short to supply)"
        ],
        [
          14,
          "Charge air temperature sensor low voltage (short to ground)"
        ],
        [
          15,
          "Charge air temperature sensor high voltage (open circuit or short to supply)"
        ],
        [
          16,
          "Engine oil pressure sensor low voltage (short to ground)"
        ],
        [
          17,
          "Engine oil pressure sensor high voltage (open circuit or short to supply)"
        ],
        [
          18,
          "Engine oil temperature sensor low value"
        ],
        [
          19,
          "Engine oil temperature sensor high value"
        ],
        [
          20,
          "Engine oil level sensor low input"
        ],
        [
          21,
          "Engine oil level sensor high input"
        ],
        [
          22,
          "Engine oil quality sensor low input"
        ],
        [
          23,
          "Engine oil quality sensor high input"
        ],
        [
          24,
          "Transmission temperature sensor low value"
        ],
        [
          25,
          "Transmission temperature sensor high value"
        ],
        [
          26,
          "Primary timing rack position sensor high (open circuit)"
        ],
        [
          27,
          "Timing rack reference sensor high (open circuit)"
        ],
        [
          28,
          "Primary timing rack position sensor low (short to ground)"
        ],
        [
          29,
          "Timing rack reference sensor low (short to ground)"
        ]
      ],
      "glowdiag":[
        [
          0,
          "Glow plug 1 defective"
        ],
        [
          1,
          "Glow plug 2 defective"
        ],
        [
          2,
          "Glow plug 3 defective"
        ],
        [
          3,
          "Glow plug 4 defective"
        ],
        [
          4,
          "Glow plug 5 defective"
        ],
        [
          5,
          "Glow plug 6 defective"
        ],
        [
          6,
          "Glow plug 7 defective"
        ],
        [
          7,
          "Glow plug 8 defective"
        ],
        [
          14,
          "One or more glow plugs defective"
        ],
        [
          15,
          "Glow plug controller defective"
        ]
      ]
    },
    "scopechannels":[
      [
        0,
        "crank"
      ],
      [
        10,
        "sync"
      ],
      [
        40,
        "debug 0"
      ],
      [
        41,
        "debug 1"
      ],
      [
        42,
        "debug 2"
      ],
      [
        43,
        "debug 3"
      ],
      [
        44,
        "debug 4"
      ],
      [
        45,
        "debug 5"
      ],
      [
        46,
        "debug 6"
      ],
      [
        47,
        "debug 7"
      ],
      [
        48,
        "digital in 1"
      ],
      [
        49,
        "vehicle speed"
      ],
      [
        50,
        "digital in 2"
      ],
      [
        51,
        "digital in 3"
      ]
    ],
    "presets":[
      {
        "category":"Thermistors",
        "data":[
          {
            "name":"Bosch coolant temperature sensor",
            "data":{
              "coolantadc":[
                0.000000,
                0.283272,
                0.570207,
                0.859584,
                1.153845,
                1.451769,
                1.753356,
                2.058606,
                2.368740,
                2.682537,
                2.999997,
                3.322341,
                3.648348,
                3.979239,
                4.315014,
                4.655673
              ],
              "coolantvalues":[
                154.000000,
                91.000000,
                68.000000,
                54.000000,
                45.000000,
                37.000000,
                31.000000,
                25.000000,
                19.000000,
                13.000000,
                8.000000,
                2.000000,
                -4.000000,
                -10.000000,
                -19.000000,
                -32.000000
              ]
            }
          },
          {
            "name":"GM coolant temperature sensor",
            "data":{
              "coolantadc":[
                4.857138,
                4.733817,
                4.529910,
                4.223439,
                3.800973,
                3.280827,
                2.711841,
                2.152623,
                1.654455,
                1.242978,
                0.923076,
                0.683760,
                0.506715,
                0.377289,
                0.283272,
                0.000000
              ],
              "coolantvalues":[
                -40.000000,
                -30.000000,
                -20.000000,
                -10.000000,
                0.000000,
                10.000000,
                20.000000,
                30.000000,
                40.000000,
                50.000000,
                60.000000,
                70.000000,
                80.000000,
                90.000000,
                100.000000,
                150.000000
              ]
            }
          }
        ]
      },
      {
        "category":"Accelerator pedal sensors",
        "data":[
          {
            "name":"W210 OM60x 6 wire sensor",
            "data":{
              "throttlerange":[
                0.350000,
                3.500000
              ],
              "throttlelimits":[
                0.200000,
                4.800000
              ],
              "secondarythrottle":[
                1.500000,
                3.500000
              ],
              "secondaryrange":[
                100,
                30
              ],
              "maxsecondaryatidle":31
            }
          },
          {
            "name":"W210 petrol\/CDI 5 wire sensor p\/n A0125423317",
            "data":{
              "throttlerange":[
                0.400000,
                4.750000
              ],
              "throttlelimits":[
                0.200000,
                4.900000
              ],
              "secondarythrottle":[
                0.160000,
                2.200000
              ],
              "secondaryrange":[
                10,
                100
              ],
              "maxsecondaryatidle":25
            }
          }
        ]
      },
      {
        "category":"Multi function sensors",
        "data":[
          {
            "name":"Mercedes Benz CDI oil pan level\/temperature sensor",
            "description":"Note that digital input 1 has too strong of a pull up resistor for these sensors, necessitating the removal of R85 (4.7k resistor, marked 4701). If you have the IO expansion board you can use digital input 2 instead and have no problems",
            "data":{
              "din1function":"Mercedes CDI oil pan sensor",
              "oiltempsrc":"oilpansensor1",
              "oiltempbpcount":2,
              "oiltempvoltages":[
                0.000000,
                100000.000000
              ],
              "oiltempvalues":[
                -97.600000,
                190.000000
              ],
              "oiltempvalidrange":[
                -40.000000,
                150.000000
              ],
              "oiltempdefault":150,
              "oillevelsrc":"oilpansensor2",
              "oillevelbpcount":2,
              "oillevelpoints":[
                32000.000000,
                52000.000000
              ],
              "oillevelfunction":[
                0.000000,
                200.000000
              ],
              "oillevelinputrange":[
                20000.000000,
                60000.000000
              ],
              "oilleveldefault":0,
              "oilqualitysrc":"oilpansensor3",
              "oilqualitybpcount":2,
              "oilqualitypoints":[
                30000.000000,
                38000.000000
              ],
              "oilqualityfunction":[
                0.000000,
                100.000000
              ],
              "oilqualityinputrange":[
                10000.000000,
                100000.000000
              ],
              "oilqualitydefault":0
            }
          }
        ]
      },
      {
        "category":"CAN bus presets",
        "data":[
          {
            "name":"Ole Fejer's 722.6 controller integration",
            "data":{
              "canmode":"500kbit",
              "canbcenable":"Enabled",
              "cantxformat":[
                "effthrottle",
                "rackposition",
                "map",
                "enginespeed"
              ],
              "cantxaddress":[
                "0x12345"
              ],
              "cantxinterval":[
                "20Hz"
              ]
            }
          },
          {
            "name":"W210 instrument cluster integration",
            "description":"Enables the function of the rev counter, speedometer and coolant temperature gauge of the W210 cluster receiving CAN data from the DSL1.\nIf the speedometer is fed data from ABS system, disable the broadcast of address 512.",
            "data":{
              "canmode":"500kbit",
              "customcanenable":"Enabled",
              "customcaninterval":[
                "20Hz",
                "20Hz",
                "10Hz"
              ],
              "customcanaddr":[
                "0x200",
                "0x308",
                "0x608"
              ],
              "customcanlength":[
                1,
                1,
                1
              ],
              "customcantxbytes":[
                8,
                8,
                8
              ],
              "customcanoffsets":[
                4,
                0,
                0,
                0,
                1,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "customcanfiller":[
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                10,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
              ],
              "customcantxconds":[
                "Always on",
                "Always on",
                "Always on"
              ],
              "customcandata":[
                "roadspeed",
                "const_zero",
                "const_zero",
                "const_zero",
                "enginespeed",
                "glow_heating",
                "const_zero",
                "const_zero",
                "coolanttemp",
                "const_zero",
                "const_zero",
                "const_zero"
              ],
              "customcanformat":[
                "u16be",
                "u16be",
                "u16be",
                "u16be",
                "u16be",
                "u8",
                "u16be",
                "u16be",
                "u8",
                "u8",
                "u16be",
                "u16be"
              ],
              "customcanrange":[
                0.000000,
                4800.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                1.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                2331.000000,
                4731.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ],
              "customcanoutput":[
                0.000000,
                15488.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                8.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                240.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000,
                0.000000
              ]
            }
          }
        ]
      }
    ],
    "documentation":{
      "cruise":"By default the cruise control uses analog input 5 (connector A pin 6)\r\nwhich has a 22k pull-up and expects three switch inputs to be wired.\r\nThe set switch uses a 22k series resistor to ground.\r\nThe resume switch uses a 10k series resistor and the disable switch\r\nuses no series resistor.\r\n\r\nThe cruise control can be based off engine speed instead of vehicle speed\r\nand this is useful for manual transmission cars that have no vehicle speed\r\nsignal or have a poor quality vehicle speed signal.\r\n\r\nThere is a smoothing filter provided to slow down throttle changes by the cruise control. If used, more gain on the control parameters may be necessary.\r\n",
      "customstrategy":"The custom strategies allow the user to write and install applications that run on the ECU.\r\n\r\nFor more information see https:\/\/controls.is\/manuals\/customstrategy.pdf\r\n",
      "flipflop":"The flip flop logic provides the ability to use momentary switches and logic conditions to control ECU functions that take a logic input.\r\nIf the reset input is active, the other inputs have no effect.\r\nIf the set input is active, the toggle input has no effect.\r\nThe toggle input is blocked after activation for the same amount of time as the delay specified for the last performed action. If toggling on with a delay of 1 second, the switch must be released for 1 second after toggling before it becomes possible to toggle off.\r\n\r\nAs the general purpose logic conditions can be intertwined with the flip flop gates, it becomes possible to create functions to change mapping behaviour when cruise control switch is held during power on (when time < 2 seconds AND cruiseswitch = 2) or something similar with any ECU sensor input such as throttle position.\r\n\r\nThe flip flops have a user configurable power-on state.\r\n",
      "gpcounters":"The general purpose counters facilitate the use of momentary switches to adjust ECU functions. This may include calibration switching, gear selection or similar functions. \r\nCan also be used to keep track of laps driven if a beacon is present or perform any other low speed counting function as the maximum value of these counters is 255 (but through the programmable logic they can be chained, triggering one to count up when another overflows.) \r\nThe maximum counting rate is once every 32 milliseconds.\r\n",
      "gplatches":"The latch funcions provide a facility to copy a value from any input on command and provide that value as an input to any other function.\r\nUseful for periodically updating a displayed value, for sampling the state of a counter before resetting, for copying the current engine speed over to the rev limit or a number of similar tasks.\r\nCan also be used in multiplex mode to switch between two value sources, for example select a spare sensor if fault detected.\r\n",
      "h2o":"The water\/methanol injection control which can also be used to control nitrous oxide provides two outputs.\r\nOne output is the activation output which can be used to switch on the pump and the other output is the PWM output which can be used to modulate the flow using a solenoid valve or modulate the pump speed using a solid state relay.\r\n\r\nTwo modes of operation with a water injection system are possible.\r\nOne mode is for power enhancement at full throttle only. In this mode the system will typically be enabled only at full throttle and the activation parameters tuned to start the water injection as soon as the engine speed and boost pressure allow for combusting the full amount. In this mode only the activation output is used.\r\nIn the other mode, water injection is used to enhance fuel economy as well as maximum power or to provide charge air cooling. In this mode the flow is variable using either a solenoid that meters the fluid to the spray nozzles or by varying the speed of the pump using a solid state relay. In this mode, the PWM output is used to provide a variance output and the activation output is optionally used to activate the system.\r\n\r\n",
      "harsh":"The harshness index works by monitoring the engine speed over the last 32\r\ncycles that the harshness monitor has run. If the harshness monitor has a run\r\ninterval of 100 milliseconds for example the speed is monitored over a 3200ms rolling period, re-evaluated every 100 milliseconds.\r\nThe oscillation count evaluates how often the speed consecutively goes above\r\nand below the average speed during the period by an amount greater than configured as tolerable.\r\nThe oscillation severity takes the derivative of two consecutive samples and notes the greatest speed increase across two samples.\r\n\r\nCorrective action for excess oscillations is done by a reduction of injected fuel quantity by an amount configured in the harshness reaction map.\r\n\r\n",
      "idle":"For good idle control, the rack control must be rather well tuned and responsive. Poor rack response makes idle control impossible.\r\n\r\nMax\/min I values are provided to prevent integrator wind-up when the idle control is out of range (engine under power).\r\n\r\n",
      "rackcontrol":"The rack control parameters work as follows.\r\n\r\nPWM frequency divider sets the PWM switching frequency of the rack drive circuit.\r\nThe frequency becomes 2197 \/ (divider + 1) so a value of zero gives the maximum frequency of 2197Hz. Values from 29 through 50 have been known to work well,\r\na higher divider value gives a lower frequency and thus more vibration induced in the rack. Vibration helps overcome stiction by keeping the rack in motion, allowing finer control.\r\n\r\nRack position feedback averaging cycles sets how often the rack position is updated. The position sensing runs at a 1ms interval and the indicated position is updated after each averaging cycle, so a value of 16 here updates the rack position every 16 milliseconds. Larger values give a more stable position indication but also slow down the control system's ability to react.\r\n\r\nRack solenoid base duty cycle is a function that converts desired rack position to a starting point in duty cycle from where the feedback loop works.\r\nSetting this table up with values close to the duty cycle needed to hold the rack at any given position makes it possible to get good control with less feedback required (makes the control more proactive rather than purely reactive).\r\n\r\nThe rack position request is a function that translates fuel quantity to rack position. The purpose is to both linearise the rack control in relation to torque control as well as abstract the rack travel numbers into meaningful units.\r\n\r\nThe rack position modifier functions let you adjust the PID gains based on how far off commanded position the rack is. This helps fine tune behaveour when on target without upsetting response when off target.\r\n\r\nEngine rev limit is a speed at which fuel quantity request becomes zero, a hard limit. Fuelling is resumed when engine speed has dropped 200RPM below the limit.\r\n",
      "vss":"For the vehicle speed sensors, two methods of noise averaging are provided.\r\nOne is the exponential decay smoothing filter and the other is pulse averaging.\r\nThe exponential decay smoothing filter works by reducing the change from the last value recorded by the amount specified.\r\nThe pulse averaging filter works by only updating the speed every so many pulses, and is especially useful to reject speed variations that happen due to uneven sensor tooth spacing.\r\nBoth can be used together. Large values in the smoothing filter cause slow response at lower speeds while large values in the pulse averaging cause infrequent updates of the recorded speed. Using both filters together enables using smaller values in each netting a clean signal with good response.\r\n"
    }
  },
  "gaugepanel":[
    {
      "id":"enginespeed",
      "range":[
        0.000000,
        5000.000000
      ],
      "limits":[
        1.000000,
        4000.000000
      ],
      "size":[
        25,
        50
      ],
      "position":[
        0,
        0
      ],
      "type":"gauge"
    },
    {
      "id":"pedalposition",
      "range":[
        0.000000,
        100.000000
      ],
      "size":[
        25,
        50
      ],
      "position":[
        0,
        50
      ],
      "type":"gauge"
    },
    {
      "id":"rackposition",
      "size":[
        25,
        50
      ],
      "position":[
        25,
        0
      ],
      "type":"gauge"
    },
    {
      "id":"rackcommand",
      "size":[
        25,
        50
      ],
      "position":[
        25,
        50
      ],
      "type":"gauge"
    },
    {
      "id":"coolanttemp",
      "range":[
        -20.000000,
        100.000000
      ],
      "limits":[
        -40.000000,
        100.000000
      ],
      "size":[
        25,
        50
      ],
      "position":[
        50,
        0
      ],
      "type":"gauge"
    },
    {
      "id":"map",
      "range":[
        500.000000,
        3000.000000
      ],
      "limits":[
        500.000000,
        3000.000000
      ],
      "size":[
        25,
        50
      ],
      "position":[
        50,
        50
      ],
      "type":"gauge"
    },
    {
      "id":"supplyvoltage",
      "range":[
        5.000000,
        15.000000
      ],
      "limits":[
        11.000000,
        15.000000
      ],
      "size":[
        25,
        50
      ],
      "position":[
        75,
        0
      ],
      "type":"gauge"
    },
    {
      "id":"rackpulsewidth",
      "range":[
        0.000000,
        32767.000000
      ],
      "limits":[
        0.000000,
        25000.000000
      ],
      "size":[
        25,
        50
      ],
      "position":[
        75,
        50
      ],
      "type":"gauge"
    }
  ],
  "minbuild":"2025-10-28 00:00",
  "keyshortcuts":{
    "F5":[
      "edit",
      "fuelrequestmap"
    ],
    "F6":[
      "edit",
      "maxfuel"
    ],
    "F7":[
      "edit",
      "boostmap"
    ]
  },
  "comments":"",
  "windowlayout":{
    "tabs":[
    ]
  }
}