;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;   Modular Simulator Controller System - Generic Setup Recommendations   ;;;
;;;                                                                         ;;;
;;;   Author:     Oliver Juwig (TheBigO)                                    ;;;
;;;   License:    (2026) Creative Commons - BY-NC-SA                        ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[?Battery.Depletion.Low.Correction != 0] =>
		(Prove: changeSetting(Electronics.MGUK.Delivery, 1, ?Battery.Depletion.Low.Correction))

[?Battery.Depletion.High.Correction != 0] =>
		(Prove: changeSetting(Electronics.MGUK.Delivery, -1, ?Battery.Depletion.High.Correction))
		
[?Tyre.Temperatures.Hot.Front.Around.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Front, 1, ?Tyre.Temperatures.Hot.Front.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Front.Left, 0.5, ?Tyre.Temperatures.Hot.Front.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Front.Right, 0.5, ?Tyre.Temperatures.Hot.Front.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Front.Left, -0.25, ?Tyre.Temperatures.Hot.Front.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Front.Right, -0.25, ?Tyre.Temperatures.Hot.Front.Around.Correction))

[?Tyre.Temperatures.Hot.Rear.Around.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Rear, 1, ?Tyre.Temperatures.Hot.Rear.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Rear.Left, 0.5, ?Tyre.Temperatures.Hot.Rear.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Rear.Right, 0.5, ?Tyre.Temperatures.Hot.Rear.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Left, -0.25, ?Tyre.Temperatures.Hot.Rear.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Right, -0.25, ?Tyre.Temperatures.Hot.Rear.Around.Correction))

[?Tyre.Temperatures.Cold.Front.Around.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Front, -1, ?Tyre.Temperatures.Cold.Front.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Front.Left, -0.5, ?Tyre.Temperatures.Cold.Front.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Front.Right, -0.5, ?Tyre.Temperatures.Cold.Front.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Front.Left, 0.25, ?Tyre.Temperatures.Cold.Front.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Front.Right, 0.25, ?Tyre.Temperatures.Cold.Front.Around.Correction))

[?Tyre.Temperatures.Cold.Rear.Around.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Rear, -1, ?Tyre.Temperatures.Cold.Rear.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Rear.Left, -0.5, ?Tyre.Temperatures.Cold.Rear.Around.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Rear.Right, -0.5, ?Tyre.Temperatures.Cold.Rear.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Left, 0.25, ?Tyre.Temperatures.Cold.Rear.Around.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Right, 0.25, ?Tyre.Temperatures.Cold.Rear.Around.Correction))

{All: [?Tyre.Temperatures.Hot.Front.Around.Correction != 0], [?Tyre.Temperatures.Hot.Front.Around.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Front.Left, -0.5, ?Tyre.Temperatures.Hot.Front.Around.Correction)),
		(Prove: changeSetting(Geometry.Toe.Front.Right, -0.5, ?Tyre.Temperatures.Hot.Front.Around.Correction))
		
{All: [?Tyre.Temperatures.Hot.Rear.Around.Correction != 0], [?Tyre.Temperatures.Hot.Rear.Around.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Rear.Left, 0.5, ?Tyre.Temperatures.Hot.Rear.Around.Correction)),
		(Prove: changeSetting(Geometry.Toe.Rear.Right, 0.5, ?Tyre.Temperatures.Hot.Rear.Around.Correction))

{All: [?Tyre.Temperatures.Cold.Front.Around.Correction != 0], [?Tyre.Temperatures.Cold.Front.Around.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Front.Left, 0.5, ?Tyre.Temperatures.Cold.Front.Around.Correction)),
		(Prove: changeSetting(Geometry.Toe.Front.Right, 0.5, ?Tyre.Temperatures.Cold.Front.Around.Correction))
		
{All: [?Tyre.Temperatures.Cold.Rear.Around.Correction != 0], [?Tyre.Temperatures.Cold.Rear.Around.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Rear.Left, -0.5, ?Tyre.Temperatures.Cold.Rear.Around.Correction)),
		(Prove: changeSetting(Geometry.Toe.Rear.Right, -0.5, ?Tyre.Temperatures.Cold.Rear.Around.Correction))

{All: [?Tyre.Temperatures.Hot.Front.Inner.Correction != 0], [?Tyre.Temperatures.Hot.Front.Inner.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Front.Left, -0.5, ?Tyre.Temperatures.Hot.Front.Inner.Correction)),
		(Prove: changeSetting(Geometry.Toe.Front.Right, -0.5, ?Tyre.Temperatures.Hot.Front.Inner.Correction))

{All: [?Tyre.Temperatures.Hot.Rear.Inner.Correction != 0], [?Tyre.Temperatures.Hot.Rear.Inner.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Rear.Left, 0.5, ?Tyre.Temperatures.Hot.Rear.Inner.Correction)),
		(Prove: changeSetting(Geometry.Toe.Rear.Right, 0.5, ?Tyre.Temperatures.Hot.Rear.Inner.Correction))
		
{All: [?Tyre.Temperatures.Cold.Front.Inner.Correction != 0], [?Tyre.Temperatures.Cold.Front.Inner.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Front.Left, 0.5, ?Tyre.Temperatures.Cold.Front.Inner.Correction)),
		(Prove: changeSetting(Geometry.Toe.Front.Right, 0.5, ?Tyre.Temperatures.Cold.Front.Inner.Correction))

{All: [?Tyre.Temperatures.Cold.Rear.Inner.Correction != 0], [?Tyre.Temperatures.Cold.Rear.Inner.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Rear.Left, -0.5, ?Tyre.Temperatures.Cold.Rear.Inner.Correction)),
		(Prove: changeSetting(Geometry.Toe.Rear.Right, -0.5, ?Tyre.Temperatures.Cold.Rear.Inner.Correction))

{All: [?Tyre.Temperatures.Hot.Front.Outer.Correction != 0], [?Tyre.Temperatures.Hot.Front.Outer.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Front.Left, -0.5, ?Tyre.Temperatures.Hot.Front.Outer.Correction)),
		(Prove: changeSetting(Geometry.Toe.Front.Right, -0.5, ?Tyre.Temperatures.Hot.Front.Outer.Correction))

{All: [?Tyre.Temperatures.Hot.Rear.Outer.Correction != 0], [?Tyre.Temperatures.Hot.Rear.Outer.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Rear.Left, 0.5, ?Tyre.Temperatures.Hot.Rear.Outer.Correction)),
		(Prove: changeSetting(Geometry.Toe.Rear.Right, 0.5, ?Tyre.Temperatures.Hot.Rear.Outer.Correction))
		
{All: [?Tyre.Temperatures.Cold.Front.Outer.Correction != 0], [?Tyre.Temperatures.Cold.Front.Outer.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Front.Left, 0.5, ?Tyre.Temperatures.Cold.Front.Outer.Correction)),
		(Prove: changeSetting(Geometry.Toe.Front.Right, 0.5, ?Tyre.Temperatures.Cold.Front.Outer.Correction))

{All: [?Tyre.Temperatures.Cold.Rear.Outer.Correction != 0], [?Tyre.Temperatures.Cold.Rear.Outer.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe.Rear.Left, -0.5, ?Tyre.Temperatures.Cold.Rear.Outer.Correction)),
		(Prove: changeSetting(Geometry.Toe.Rear.Right, -0.5, ?Tyre.Temperatures.Cold.Rear.Outer.Correction))

[?Tyre.Temperatures.Hot.Front.Inner.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Front.Left, -0.5, ?Tyre.Temperatures.Hot.Front.Inner.Correction)),
		(Prove: changeSetting(Geometry.Camber.Front.Right, -0.5, ?Tyre.Temperatures.Hot.Front.Inner.Correction))
		
[?Tyre.Temperatures.Hot.Front.Outer.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Front.Left, 0.5, ?Tyre.Temperatures.Hot.Front.Outer.Correction)),
		(Prove: changeSetting(Geometry.Camber.Front.Right, 0.5, ?Tyre.Temperatures.Hot.Front.Outer.Correction))
		
[?Tyre.Temperatures.Hot.Rear.Inner.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Rear.Left, -0.5, ?Tyre.Temperatures.Hot.Rear.Inner.Correction)),
		(Prove: changeSetting(Geometry.Camber.Rear.Right, -0.5, ?Tyre.Temperatures.Hot.Rear.Inner.Correction))
		
[?Tyre.Temperatures.Hot.Rear.Outer.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Rear.Left, 0.5, ?Tyre.Temperatures.Hot.Rear.Outer.Correction)),
		(Prove: changeSetting(Geometry.Camber.Rear.Right, 0.5, ?Tyre.Temperatures.Hot.Rear.Outer.Correction))

[?Tyre.Temperatures.Cold.Front.Inner.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Front.Left, 0.5, ?Tyre.Temperatures.Cold.Front.Inner.Correction)),
		(Prove: changeSetting(Geometry.Camber.Front.Right, 0.5, ?Tyre.Temperatures.Cold.Front.Inner.Correction))
		
[?Tyre.Temperatures.Cold.Front.Outer.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Front.Left, -0.5, ?Tyre.Temperatures.Cold.Front.Outer.Correction)),
		(Prove: changeSetting(Geometry.Camber.Front.Right, -0.5, ?Tyre.Temperatures.Cold.Front.Outer.Correction))
		
[?Tyre.Temperatures.Cold.Rear.Inner.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Rear.Left, 0.5, ?Tyre.Temperatures.Cold.Rear.Inner.Correction)),
		(Prove: changeSetting(Geometry.Camber.Rear.Right, 0.5, ?Tyre.Temperatures.Cold.Rear.Inner.Correction))
		
[?Tyre.Temperatures.Cold.Rear.Outer.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Rear.Left, -0.5, ?Tyre.Temperatures.Cold.Rear.Outer.Correction)),
		(Prove: changeSetting(Geometry.Camber.Rear.Right, -0.5, ?Tyre.Temperatures.Cold.Rear.Outer.Correction))

[?Tyre.Wear.Front.Inner.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Front.Left, -1, ?Tyre.Wear.Front.Inner.Correction)),
		(Prove: changeSetting(Geometry.Camber.Front.Right, -1, ?Tyre.Wear.Front.Inner.Correction))

[?Tyre.Wear.Front.Middle.Correction != 0] =>
		(Prove: changeSetting(Tyre.Pressure.Front.Left, -1, ?Tyre.Wear.Front.Middle.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Front.Left, -1, ?Tyre.Wear.Front.Middle.Correction))

[?Tyre.Wear.Front.Outer.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Front.Left, 1, ?Tyre.Wear.Front.Outer.Correction)),
		(Prove: changeSetting(Geometry.Camber.Front.Right, 1, ?Tyre.Wear.Front.Outer.Correction))

[?Tyre.Wear.Rear.Inner.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Rear.Left, -1, ?Tyre.Wear.Rear.Inner.Correction)),
		(Prove: changeSetting(Geometry.Camber.Rear.Right, -1, ?Tyre.Wear.Rear.Inner.Correction))

[?Tyre.Wear.Rear.Middle.Correction != 0] =>
		(Prove: changeSetting(Tyre.Pressure.Rear.Left, -1, ?Tyre.Wear.Rear.Middle.Correction)),
		(Prove: changeSetting(Tyre.Pressure.Rear.Left, -1, ?Tyre.Wear.Rear.Middle.Correction))

[?Tyre.Wear.Rear.Outer.Correction != 0] =>
		(Prove: changeSetting(Geometry.Camber.Rear.Left, 1, ?Tyre.Wear.Rear.Outer.Correction)),
		(Prove: changeSetting(Geometry.Camber.Rear.Right, 1, ?Tyre.Wear.Rear.Outer.Correction))

[?Brake.Performance.Straight.Correction != 0] =>
		(Prove: changeSetting(Electronics.ABS, -1, ?Brake.Performance.Straight.Correction)),
		(Prove: changeSetting(Geometry.Camber, [Front.Left, Front.Right, Rear.Left, Rear.Right], 1, ?Brake.Performance.Straight.Correction)),
		(Prove: changeSetting(Brake.Balance, -1, ?Brake.Performance.Straight.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, -0.5, ?Brake.Performance.Straight.Correction))

{All: [?Brake.Performance.Straight.Correction != 0], [?Brake.Performance.Straight.Value > 50]} =>
		(Prove: changeSetting(Geometry.Camber, [Front.Left, Front.Right, Rear.Left, Rear.Right], 1, ?Brake.Performance.Straight.Correction))

[?Brake.LockUp.Correction != 0] =>
		(Prove: changeSetting(Electronics.ABS, 2, ?Brake.LockUp.Correction)),
		(Prove: changeSetting(Brake.Pressure, -1, ?Brake.LockUp.Correction))

[?Brake.Stability.Straight.Correction != 0] =>
		(Prove: changeSetting(Brake.Balance, 1, ?Brake.Stability.Straight.Correction))
		
{All: [?Brake.Stability.Straight.Correction != 0], [?Brake.Stability.Straight.Value > 0]} =>
		(Prove: changeSetting(Damper.Compression.Slow, [Front.Left, Front.Right], 0.5, ?Brake.Stability.Straight.Correction)),
		(Prove: changeSetting(Damper.Rebound.Slow, [Rear.Left, Rear.Right], 0.5, ?Brake.Stability.Straight.Correction)),
		(Prove: changeSetting(Differential.Coast, 1.0, ?Brake.Stability.Straight.Correction)),
		(Prove: changeSetting(Damper.Compression.Slow.Front.Heave, -0.25, ?Brake.Stability.Straight.Correction)),
		(Prove: changeSetting(Damper.Compression.Slow.Rear.Heave, -0.25, ?Brake.Stability.Straight.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Front.Heave, -0.5, ?Brake.Stability.Straight.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Heave, -0.5, ?Brake.Stability.Straight.Correction))

[?Brake.Stability.Corner.Fast.Correction != 0] =>
		(Prove: changeSetting(Damper.Compression.Slow, [Front.Left, Front.Right], 0.5, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Damper.Rebound.Slow, [Rear.Left, Rear.Right], 0.5, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, -0.5, ?Brake.Stability.Corner.Fast.Correction))

{All: [?Brake.Stability.Corner.Fast.Correction != 0], [?Brake.Stability.Corner.Fast.Value > 50]} =>
		(Prove: changeSetting(Electronics.ABS, 0.5, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Brake.Balance, 0.5, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], -1, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 0.5, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Differential.Coast, -1.0, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Damper.Compression.Slow.Front.Heave, 0.75, ?Brake.Stability.Corner.Fast.Correction)),
		(Prove: changeSetting(Damper.Rebound.Slow.Rear.Heave, -0.5, ?Brake.Stability.Corner.Fast.Correction))

[?Brake.Stability.Corner.Slow.Correction != 0] =>
		(Prove: changeSetting(Electronics.ABS, 1, ?Brake.Stability.Corner.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Front, 0.5, ?Brake.Stability.Corner.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Rear, -0.25, ?Brake.Stability.Corner.Slow.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, -0.25, ?Brake.Stability.Corner.Slow.Correction))

{All: [?Brake.Stability.Corner.Slow.Correction != 0], [?Brake.Stability.Corner.Slow.Value > 50]} =>
		(Prove: changeSetting(Damper.Compression.Slow, [Front.Left, Front.Right], -0.25, ?Brake.Stability.Corner.Slow.Correction)),
		(Prove: changeSetting(Damper.Compression.Slow, [Rear.Left, Rear.Right], -0.5, ?Brake.Stability.Corner.Slow.Correction)),
		(Prove: changeSetting(Differential.Coast, -0.5, ?Brake.Stability.Corner.Corner.Correction))	

[?Brake.Temperatures.Hot.Front.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Front, 1, ?Brake.Temperatures.Hot.Front.Correction))
		
[?Brake.Temperatures.Hot.Rear.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Rear, 1, ?Brake.Temperatures.Hot.Rear.Correction))

[?Brake.Temperatures.Cold.Front.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Front, -1, ?Brake.Temperatures.Cold.Front.Correction))
		
[?Brake.Temperatures.Cold.Rear.Correction != 0] =>
		(Prove: changeSetting(Brake.Duct.Rear, -1, ?Brake.Temperatures.Cold.Rear.Correction))

[?Engine.Temperatures.Hot.Water.Correction != 0] =>
		(Prove: changeSetting(Radiator.Blanket.Water, -1, ?Engine.Temperatures.Hot.Water.Correction))

[?Engine.Temperatures.Hot.Oil.Correction != 0] =>
		(Prove: changeSetting(Radiator.Blanket.Oil, -1, ?Engine.Temperatures.Hot.Oil.Correction))

[?Engine.Temperatures.Cold.Water.Correction != 0] =>
		(Prove: changeSetting(Radiator.Blanket.Water, 1, ?Engine.Temperatures.Cold.Water.Correction))

[?Engine.Temperatures.Cold.Oil.Correction != 0] =>
		(Prove: changeSetting(Radiator.Blanket.Oil, 1, ?Engine.Temperatures.Cold.Oil.Correction))

[?Suspension.Sway.Correction != 0] =>
		(Prove: changeSetting(Damper.Compression.Slow, [Front.Left, Front.Right, Rear.Left, Rear.Right], 1, ?Suspension.Sway.Correction)),
		(Prove: changeSetting(Damper.Rebound.Slow, [Front.Left, Front.Right, Rear.Left, Rear.Right], 0.5, ?Suspension.Sway.Correction))

{All: [?Suspension.Sway.Correction != 0], [?Suspension.Sway.Value > 50]} =>
		(Prove: changeSetting(Damper.Compression.Slow, [Front.Left, Front.Right, Rear.Left, Rear.Right], 1, ?Suspension.Sway.Correction)),
		(Prove: changeSetting(Damper.Rebound.Slow, [Front.Left, Front.Right, Rear.Left, Rear.Right], 0.5, ?Suspension.Sway.Correction)),
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right, Rear.Left, Rear.Right], 0.5, ?Suspension.Sway.Correction)),
		(Prove: changeSetting(AntiRollBar, [Front, Rear], 2, ?Suspension.Sway.Correction))
		
[?Suspension.Bottom.Out.Front.Correction != 0] =>
		(Prove: changeSetting(Aero.Height.Front, 1, ?Suspension.Bottom.Out.Front.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, 1, ?Suspension.Bottom.Out.Front.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, 1, ?Suspension.Bottom.Out.Front.Correction))
		
{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  [?Suspension.Bottom.Out.Front.Value > 33]} =>
		(Prove: changeSetting(Damper.Compression.Fast, [Front.Left, Front.Right], 0.5, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  {Prove: settingAvailable(Damper.Compression.Fast.Front.Heave)},
	  [?Suspension.Bottom.Out.Front.Value > 33]} =>
		(Prove: changeSetting(Damper.Compression.Fast.Front.Heave, 0.5, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  {None: {Prove: settingAvailable(Damper.Compression.Fast.Front.Heave)}},
	  [?Suspension.Bottom.Out.Front.Value > 50]} =>
		(Prove: changeSetting(Damper.Compression.Fast, [Front.Left, Front.Right], 1.0, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  {Prove: settingAvailable(Damper.Compression.Fast.Front.Heave)},
	  [?Suspension.Bottom.Out.Front.Value > 50]} =>
		(Prove: changeSetting(Damper.Compression.Fast.Front.Heave, 1.0, ?Suspension.Bottom.Out.Front.Correction))
		
{All: [?Suspension.Bottom.Out.Front.Correction != 0], [?Suspension.Bottom.Out.Front.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], 0.5, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  {None: {Prove: settingAvailable(Spring.Rate.Front.Heave)}},
	  [?Suspension.Bottom.Out.Front.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], 1.0, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  {Prove: settingAvailable(Spring.Rate.Front.Heave)},
	  [?Suspension.Bottom.Out.Front.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate.Front.Heave, 1.0, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  [?Suspension.Bottom.Out.Front.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 1.0, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  [?Suspension.Bottom.Out.Front.Value > 60]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  [?Suspension.Bottom.Out.Front.Value > 75]} =>
		(Prove: changeSetting(Bumpstop.Range.Front.Heave, 0.5, ?Suspension.Bottom.Out.Front.Correction)),
		(Prove: changeSetting(Spring.Rate.Front.Heave, 1.0, ?Suspension.Bottom.Out.Front.Correction))

{All: [?Suspension.Bottom.Out.Front.Correction != 0],
	  [?Suspension.Bottom.Out.Front.Value > 80]} =>
		(Prove: changeSetting(Bumpstop.Range.Front.Heave, 1.0, ?Suspension.Bottom.Out.Front.Correction)),
		(Prove: changeSetting(Bumpstop.Rate.Front.Heave, 1.0, ?Suspension.Bottom.Out.Front.Correction))
		
[?Suspension.Bottom.Out.Rear.Correction != 0] =>
		(Prove: changeSetting(Aero.Height.Rear, 1, ?Suspension.Bottom.Out.Rear.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, 1, ?Suspension.Bottom.Out.Rear.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, 1, ?Suspension.Bottom.Out.Rear.Correction))
		
{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  [?Suspension.Bottom.Out.Rear.Value > 33]} =>
		(Prove: changeSetting(Damper.Compression.Fast, [Rear.Left, Rear.Right], 0.5, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  {Prove: settingAvailable(Damper.Compression.Fast.Rear.Heave)},
	  [?Suspension.Bottom.Out.Rear.Value > 33]} =>
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Heave, 0.5, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  {None: {Prove: settingAvailable(Damper.Compression.Fast.Rear.Heave)}},
	  [?Suspension.Bottom.Out.Rear.Value > 50]} =>
		(Prove: changeSetting(Damper.Compression.Fast, [Rear.Left, Rear.Right], 1.0, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  {Prove: settingAvailable(Damper.Compression.Fast.Rear.Heave)},
	  [?Suspension.Bottom.Out.Rear.Value > 50]} =>
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Heave, 1.0, ?Suspension.Bottom.Out.Rear.Correction))
		
{All: [?Suspension.Bottom.Out.Rear.Correction != 0], [?Suspension.Bottom.Out.Rear.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Rear.Left, Rear.Right], 0.5, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  {None: {Prove: settingAvailable(Spring.Rate.Rear.Heave)}},
	  [?Suspension.Bottom.Out.Rear.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Rear.Left, Rear.Right], 1.0, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  [?Suspension.Bottom.Out.Rear.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Rate, [Rear.Left, Rear.Right], 1.0, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  [?Suspension.Bottom.Out.Rear.Value > 60]} =>
		(Prove: changeSetting(Bumpstop.Range, [Rear.Left, Rear.Right], 1, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  [?Suspension.Bottom.Out.Rear.Value > 75]} =>
		(Prove: changeSetting(Bumpstop.Range.Front.Heave, 0.5, ?Suspension.Bottom.Out.Front.Correction)),
		(Prove: changeSetting(Spring.Rate.Rear.Heave, 1.0, ?Suspension.Bottom.Out.Rear.Correction))

{All: [?Suspension.Bottom.Out.Rear.Correction != 0],
	  [?Suspension.Bottom.Out.Rear.Value > 80]} =>
		(Prove: changeSetting(Bumpstop.Range.Front.Heave, 1.0, ?Suspension.Bottom.Out.Front.Correction)),
		(Prove: changeSetting(Bumpstop.Rate.Rear.Heave, 1.0, ?Suspension.Bottom.Out.Rear.Correction))

[?Curbs.Stability.Correction != 0] =>
		(Prove: changeSetting(Damper.Compression.Fast, [Front.Left, Front.Right, Rear.Left, Rear.Right], -1, ?Curbs.Stability.Correction)),
		(Prove: changeSetting(Damper.Rebound.Fast, [Front.Left, Front.Right, Rear.Left, Rear.Right], 0.5, ?Curbs.Stability.Correction))
		
{All: [?Curbs.Stability.Correction != 0], [?Curbs.Stability.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Curbs.Stability.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], -1, ?Curbs.Stability.Correction)),
		(Prove: changeSetting(AntiRollBar, [Front, Rear], -1, ?Curbs.Stability.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Front.Heave, -0.5, ?Curbs.Stability.Correction)),
		(Prove: changeSetting(Damper.Compression.Fast.Rear.Heave, -0.5, ?Curbs.Stability.Correction))

[?Speed.Straight.Correction != 0] =>
		(Prove: changeSetting(Aero.Wing.Rear, -1, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, -1, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, -1, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, -1, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, -1, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, -1, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Electronics.Turbo, 1.0, ?Speed.Straight.Correction))

{All: [?Speed.Straight.Correction != 0], [?Speed.Straight.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate.Front.Heave, -0.5, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Spring.Rate.Rear.Heave, -0.5, ?Speed.Straight.Correction)),
		(Prove: changeSetting(Electronics.Turbo, 1.0, ?Speed.Straight.Correction))
		
[?Speed.Corner.Slow.Correction != 0] =>
		(Prove: changeSetting(AntiRollBar.Front, -0.5, ?Speed.Corner.Slow.Correction)),
		(Prove: changeSetting(Geometry.Camber, [Rear.Left, Rear.Right], 0.5, ?Speed.Corner.Slow.Correction)),
		(Prove: changeSetting(Differential.Preload, 1, ?Speed.Corner.Slow.Correction))
		
{All: [?Speed.Corner.Slow.Correction != 0], [?Speed.Corner.Slow.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Rear.Left, Rear.Right], 1, ?Speed.Corner.Slow.Correction)),
		(Prove: changeSetting(Damper.Compression.Slow, [Front.Left, Front.Right], 0.5, ?Speed.Corner.Slow.Correction)),
		(Prove: changeSetting(Damper.Compression.Slow, [Rear.Left, Rear.Right], -0.5, ?Speed.Corner.Slow.Correction)),
		(Prove: changeSetting(Damper.Rebound.Slow, [Rear.Left, Rear.Right], 1, ?Speed.Corner.Slow.Correction))
		
[?Speed.Corner.Fast.Correction != 0] =>
		(Prove: changeSetting(Aero.Wing.Rear, 1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, 1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, 1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Splitter.Front, 1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front, 1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Left, 1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Right, 1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, -1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front, -1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, -1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, -1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, -1, ?Speed.Corner.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, -1, ?Speed.Corner.Fast.Correction))

{All: [?Speed.Corner.Fast.Correction != 0], [?Speed.Corner.Fast.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right, Rear.Left, Rear.Right], 0.5, ?Speed.Corner.Fast.Correction))

[?Understeer.General.Correction != 0] =>
		(Prove: changeSetting(AntiRollBar.Front, -1, ?Understeer.General.Correction))

{All: [?Understeer.General.Correction != 0], [?Understeer.General.Value > 50]} =>
		(Prove: changeSetting(Geometry.Camber, [Front.Left, Front.Right], 1, ?Understeer.General.Correction)),
		(Prove: changeSetting(Geometry.Camber, [Rear.Left, Rear.Right], -1, ?Understeer.General.Correction)),
		(Prove: changeSetting(Geometry.Toe, [Rear.Left, Rear.Right], 0.5, ?Understeer.General.Correction))

[?Oversteer.General.Correction != 0] =>
		(Prove: changeSetting(AntiRollBar.Rear, -1, ?Oversteer.General.Correction)),
		(Prove: changeSetting(Electronics.Turbo, -0.5, ?Oversteer.General.Correction))

{All: [?Oversteer.General.Correction != 0], [?Oversteer.General.Value > 50]} =>
		(Prove: changeSetting(Geometry.Camber, [Front.Left, Front.Right], -1, ?Oversteer.General.Correction)),
		(Prove: changeSetting(Geometry.Camber, [Rear.Left, Rear.Right], 1, ?Oversteer.General.Correction)),
		(Prove: changeSetting(Geometry.Toe, [Rear.Left, Rear.Right], -0.5, ?Oversteer.General.Correction)),
		(Prove: changeSetting(Electronics.Turbo, -0.5, ?Oversteer.General.Correction))

[?Understeer.Corner.Entry.Slow.Correction != 0] =>
		(Prove: changeSetting(Brake.Balance, -1, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Front, -0.5, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Differential.Preload, -1, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, 0.25, ?Understeer.Corner.Entry.Slow.Correction))
		
{All: [?Understeer.Corner.Entry.Slow.Correction != 0], [?Understeer.Corner.Entry.Slow.Value > 50]} =>
		(Prove: changeSetting(Geometry.Caster, [Left, Right], 0.25, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Geometry.Toe, [Front.Left, Front.Right], 0.5, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Differential.Coast, -0.5, ?Understeer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, 0.25, ?Understeer.Corner.Entry.Slow.Correction))
		
[?Oversteer.Corner.Entry.Slow.Correction != 0] =>
		(Prove: changeSetting(Brake.Balance, 0.5, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Front, 1, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Rear, -0.5, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, -0.25, ?Oversteer.Corner.Entry.Slow.Correction))

{All: [?Oversteer.Corner.Entry.Slow.Correction != 0], [?Oversteer.Corner.Entry.Slow.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe, [Front.Left, Front.Right], -0.5, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], -1, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Differential.Coast, 0.5, ?Oversteer.Corner.Entry.Slow.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, -0.25, ?Oversteer.Corner.Entry.Slow.Correction))

[?Understeer.Corner.Entry.Fast.Correction != 0] =>
		(Prove: changeSetting(Brake.Balance, -0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear, -0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, -0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, -0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front, 1, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Left, 1, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Right, 1, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Splitter.Front, 1, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, 0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front, -0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, 0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, 0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, -0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, -0.5, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, -0.25, ?Understeer.Corner.Entry.Fast.Correction))

{All: [?Understeer.Corner.Entry.Fast.Correction != 0], [?Understeer.Corner.Entry.Fast.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe, [Front.Left, Front.Right], 0.25, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Differential.Coast, -1.0, ?Understeer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, -0.25, ?Understeer.Corner.Entry.Fast.Correction))

[?Oversteer.Corner.Entry.Fast.Correction != 0] =>
		(Prove: changeSetting(Brake.Balance, 1, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear, 1, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, 1, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, 1, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front, -0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Left, -0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Right, -0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Splitter.Front, -0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, -0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front, 0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, -0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, -0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, 0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, 0.5, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, 0.25, ?Oversteer.Corner.Entry.Fast.Correction))

{All: [?Oversteer.Corner.Entry.Fast.Correction != 0], [?Oversteer.Corner.Entry.Fast.Value > 50]} =>
		(Prove: changeSetting(Geometry.Toe, [Front.Left, Front.Right], -0.25, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], -1, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Differential.Coast, 1.0, ?Oversteer.Corner.Entry.Fast.Correction)),
		(Prove: changeSetting(Electronics.MGUK.Recovery, 0.25, ?Oversteer.Corner.Entry.Fast.Correction))

[?Understeer.Corner.Apex.Slow.Correction != 0] =>
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Apex.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Front, -0.5, ?Understeer.Corner.Apex.Slow.Correction)),
		(Prove: changeSetting(Differential.Preload, -1, ?Understeer.Corner.Apex.Slow.Correction))
		
{All: [?Understeer.Corner.Apex.Slow.Correction != 0], [?Understeer.Corner.Apex.Slow.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Understeer.Corner.Apex.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Apex.Slow.Correction)),
		(Prove: changeSetting(Differential.Coast, -0.5, ?Understeer.Corner.Apex.Slow.Correction))

[?Oversteer.Corner.Apex.Slow.Correction != 0] =>
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Apex.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Front, 0.5, ?Oversteer.Corner.Apex.Slow.Correction)),
		(Prove: changeSetting(Differential.Preload, 0.5, ?Oversteer.Corner.Apex.Slow.Correction))
		
{All: [?Oversteer.Corner.Apex.Slow.Correction != 0], [?Oversteer.Corner.Apex.Slow.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], -1, ?Oversteer.Corner.Apex.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Apex.Slow.Correction))

[?Understeer.Corner.Apex.Fast.Correction != 0] =>
		(Prove: changeSetting(Aero.Wing.Rear, -0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, -0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, -0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front, 1, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Left, 1, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Right, 1, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Splitter.Front, 1, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, 0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front, -0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, 0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, 0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, -0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, -0.5, ?Understeer.Corner.Apex.Fast.Correction))

{All: [?Understeer.Corner.Apex.Fast.Correction != 0], [?Understeer.Corner.Apex.Fast.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Differential.Preload, -0.5, ?Understeer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Differential.Coast, -1.0, ?Understeer.Corner.Apex.Fast.Correction))

[?Oversteer.Corner.Apex.Fast.Correction != 0] =>
		(Prove: changeSetting(Aero.Wing.Rear, 1, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, 1, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, 1, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front, -0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Left, -0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Right, -0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Splitter.Front, -0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, -0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front, 0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, -0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, -0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, 0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, 0.5, ?Oversteer.Corner.Apex.Fast.Correction))

{All: [?Oversteer.Corner.Apex.Fast.Correction != 0], [?Oversteer.Corner.Apex.Fast.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], -1, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Differential.Preload, 0.5, ?Oversteer.Corner.Apex.Fast.Correction)),
		(Prove: changeSetting(Differential.Coast, 1.0, ?Oversteer.Corner.Apex.Fast.Correction))

[?Understeer.Corner.Exit.Slow.Correction != 0] =>
		(Prove: changeSetting(Electronics.TC, -1, ?Understeer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Rear, 0.5, ?Understeer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Differential.Preload, 0.5, ?Understeer.Corner.Exit.Slow.Correction))
		
{All: [?Understeer.Corner.Exit.Slow.Correction != 0], [?Understeer.Corner.Exit.Slow.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Understeer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Differential.Power, -0.5, ?Understeer.Corner.Exit.Slow.Correction))
		
[?Oversteer.Corner.Exit.Slow.Correction != 0] =>
		(Prove: changeSetting(Electronics.TC, 1, ?Oversteer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(AntiRollBar.Rear, -0.5, ?Oversteer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Differential.Preload, -0.5, ?Oversteer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Electronics.Turbo, -1.0, ?Oversteer.Corner.Exit.Slow.Correction))

{All: [?Oversteer.Corner.Exit.Slow.Correction != 0], [?Oversteer.Corner.Exit.Slow.Value > 50]} =>
		(Prove: changeSetting(Spring.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], -1, ?Oversteer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Differential.Power, 0.5, ?Oversteer.Corner.Exit.Slow.Correction)),
		(Prove: changeSetting(Electronics.Turbo, -1.0, ?Oversteer.Corner.Exit.Slow.Correction))

[?Understeer.Corner.Exit.Fast.Correction != 0] =>
		(Prove: changeSetting(Electronics.TC, -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear, -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front, 1, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Left, 1, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Right, 1, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Splitter.Front, 1, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, 0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front, -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, 0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, 0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Differential.Preload, 0.5, ?Understeer.Corner.Exit.Fast.Correction))

{All: [?Understeer.Corner.Exit.Fast.Correction != 0], [?Understeer.Corner.Exit.Fast.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], 1, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], -1, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Rear.Left, Rear.Right], -0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Rear.Left, Rear.Right], 0.5, ?Understeer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Differential.Power, -1.0, ?Understeer.Corner.Exit.Fast.Correction))

[?Oversteer.Corner.Exit.Fast.Correction != 0] =>
		(Prove: changeSetting(Electronics.TC, 0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear, 1, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Left, 1, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Rear.Right, 1, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Left, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Wing.Front.Right, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Splitter.Front, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front, 0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Left, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Rear.Right, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Left, 0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Aero.Height.Front.Right, 0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Differential.Preload, -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Electronics.Turbo, -0.25, ?Oversteer.Corner.Exit.Fast.Correction))

{All: [?Oversteer.Corner.Exit.Fast.Correction != 0], [?Oversteer.Corner.Exit.Fast.Value > 50]} =>
		(Prove: changeSetting(Bumpstop.Range, [Front.Left, Front.Right], -1, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Front.Left, Front.Right], 1, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Range, [Rear.Left, Rear.Right], 0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Bumpstop.Rate, [Rear.Left, Rear.Right], -0.5, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Differential.Power, 1.0, ?Oversteer.Corner.Exit.Fast.Correction)),
		(Prove: changeSetting(Electronics.Turbo, -0.25, ?Oversteer.Corner.Exit.Fast.Correction))