Index: src/mlx/gates.py
===================================================================
--- src/mlx/gates.py	(revision 1105)
+++ src/mlx/gates.py	(revision 1151)
@@ -133,5 +133,5 @@
 #--------------------------------------------------------------------------------------
 
-def getAvilableIf(othersAvailable = []):
+def getAvailableIf(othersAvailable = []):
     """Get a function that determines if a gate is available based on the
     statuses of other gates."""
@@ -145,27 +145,83 @@
 lhbpGates = Gates()
 
-lhbpGates.add(Gate("1", "1", "S"))
-lhbpGates.add(Gate("2", "1", "S"))
-lhbpGates.add(Gate("3", "1", "S"))
-lhbpGates.add(Gate("4", "1", "S"))
-lhbpGates.add(Gate("5", "1", "S"))
-lhbpGates.add(Gate("6", "1", "S"))
-lhbpGates.add(Gate("25", "1", "S"))
-lhbpGates.add(Gate("26", "1", "S"))
-lhbpGates.add(Gate("27", "1", "S"))
-lhbpGates.addSpace()
+lhbpGates.add(Gate("R101", "1", "S"))
+lhbpGates.add(Gate("R102", "1", "S"))
+lhbpGates.add(Gate("R103", "1", "S"))
+lhbpGates.add(Gate("R104", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R105"])))
+lhbpGates.add(Gate("R105", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R104", "R106"])))
+lhbpGates.add(Gate("R106", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R105", "R108"])))
+lhbpGates.add(Gate("R107", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R108"])))
+lhbpGates.add(Gate("R108", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R106", "R107"])))
+
+lhbpGates.addSpace()
+lhbpGates.add(Gate("R110", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R111"])))
+lhbpGates.add(Gate("R111", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R110", "R112"])))
+lhbpGates.add(Gate("R112", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R111"])))
+lhbpGates.add(Gate("R113", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R112", "R114"])))
+lhbpGates.add(Gate("R114", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R113"])))
+lhbpGates.add(Gate("R115", "1", "S"))
+lhbpGates.add(Gate("R116", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R117"])))
+lhbpGates.add(Gate("R117", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R116", "R117A"])))
+lhbpGates.add(Gate("R117A", "1", "S",
+                   availableFn = getAvailableIf(othersAvailable = ["R116", "R117"])))
+lhbpGates.addNewColumn()
+
+lhbpGates.add(Gate("G150", "1", "S"))
+lhbpGates.add(Gate("G151", "1", "S"))
+lhbpGates.add(Gate("G152", "1", "S"))
+lhbpGates.add(Gate("G153", "1", "S"))
+lhbpGates.add(Gate("G154", "1", "S"))
+lhbpGates.add(Gate("G155", "1", "S"))
+
+lhbpGates.addSpace()
+lhbpGates.add(Gate("G170", "1", "S"))
+lhbpGates.add(Gate("G171", "1", "S"))
+lhbpGates.add(Gate("G172", "1", "S"))
+lhbpGates.addNewColumn()
 
 lhbpGates.add(Gate("31", "2B", "G"))
 lhbpGates.add(Gate("32", "2B", "G"))
 lhbpGates.add(Gate("33", "2B", "G"))
-lhbpGates.addNewColumn()
-
-lhbpGates.add(Gate("34", "2B", "G"))
-lhbpGates.add(Gate("35", "2B", "G"))
-lhbpGates.add(Gate("36", "2B", "G"))
+lhbpGates.add(Gate("34", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["34L", "34R"])))
+lhbpGates.add(Gate("34L", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["34", "34R"])))
+lhbpGates.add(Gate("34R", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["34L", "34"])))
+lhbpGates.add(Gate("35", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["35L", "35R"])))
+lhbpGates.add(Gate("35L", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["35", "35R"])))
+lhbpGates.add(Gate("35R", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["35L", "35"])))
+lhbpGates.add(Gate("36", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["36L", "36R"])))
+lhbpGates.add(Gate("36L", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["36", "36R"])))
+lhbpGates.add(Gate("36R", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["36L", "36"])))
+lhbpGates.addSpace()
+
 lhbpGates.add(Gate("37", "2B", "G"))
 lhbpGates.add(Gate("38", "2B", "G"))
-lhbpGates.add(Gate("39", "2B", "G"))
-lhbpGates.addSpace()
+lhbpGates.add(Gate("39", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["37L", "37R"])))
+lhbpGates.add(Gate("39L", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["37", "37R"])))
+lhbpGates.add(Gate("39R", "2B", "G",
+                   availableFn = getAvailableIf(othersAvailable = ["37L", "37"])))
+lhbpGates.addNewColumn()
 
 lhbpGates.add(Gate("42", "2A", "G"))
@@ -173,35 +229,17 @@
 lhbpGates.add(Gate("44", "2A", "G"))
 lhbpGates.add(Gate("45", "2A", "G"))
-lhbpGates.addNewColumn()
-
-lhbpGates.add(Gate("107", "1", "S"))
-lhbpGates.add(Gate("108", "1", "S"))
-lhbpGates.add(Gate("109", "1", "S"))
-lhbpGates.add(Gate("R110", "1", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R111"])))
-lhbpGates.add(Gate("R111", "1", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R110", "R112"])))
-lhbpGates.add(Gate("R112", "1", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R111"])))
-lhbpGates.add(Gate("R113", "1", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R114"])))
-lhbpGates.add(Gate("R114", "1", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R113"])))
-lhbpGates.add(Gate("R115", "1", "S"))
-lhbpGates.add(Gate("R116", "1", "S"))
-lhbpGates.add(Gate("R117", "1", "S"))
-lhbpGates.addNewColumn()
+lhbpGates.addSpace()
 
 lhbpGates.add(Gate("R210", "2A", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R212A"]),
+                   availableFn = getAvailableIf(othersAvailable = ["R212A"]),
                    taxiThrough = True))
 lhbpGates.add(Gate("R211", "2A", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R212A"]),
+                   availableFn = getAvailableIf(othersAvailable = ["R212A"]),
                    taxiThrough = True))
 lhbpGates.add(Gate("R212", "2A", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R212A"]),
+                   availableFn = getAvailableIf(othersAvailable = ["R212A"]),
                    taxiThrough = True))
 lhbpGates.add(Gate("R212A", "2A", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R210", "R211", "R212"]),
+                   availableFn = getAvailableIf(othersAvailable = ["R210", "R211", "R212"]),
                    taxiThrough = True))
 lhbpGates.addSpace()
@@ -213,5 +251,5 @@
 lhbpGates.addSpace()
 
-lhbpGates.add(Gate("R224", "2A", "R"))
+lhbpGates.add(Gate("R224", "2A", "S"))
 lhbpGates.add(Gate("R225", "2A", "S"))
 lhbpGates.add(Gate("R226", "2A", "S"))
@@ -222,4 +260,5 @@
 lhbpGates.add(Gate("R271", "2A", "S"))
 lhbpGates.add(Gate("R272", "2A", "S"))
+lhbpGates.add(Gate("R273", "2A", "S"))
 lhbpGates.add(Gate("R274", "2A", "S"))
 lhbpGates.add(Gate("R275", "2A", "S"))
@@ -227,10 +266,10 @@
 lhbpGates.add(Gate("R277", "2A", "S"))
 lhbpGates.add(Gate("R278", "2A", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R278A"]),
+                   availableFn = getAvailableIf(othersAvailable = ["R278A"]),
                    taxiThrough = True))
 lhbpGates.add(Gate("R278A", "2A", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R278", "R279"]),
+                   availableFn = getAvailableIf(othersAvailable = ["R278", "R279"]),
                    taxiThrough = True))
 lhbpGates.add(Gate("R279", "2A", "S",
-                   availableFn = getAvilableIf(othersAvailable = ["R278A"]),
-                   taxiThrough = True))
+                   availableFn = getAvailableIf(othersAvailable = ["R278A"]),
+                   taxiThrough = True))
