{
  "schema": "digital-logic-sim-web/1",
  "storageId": "nand2tetris-native-nand2tetris-computer-lab",
  "name": "nand2tetris-computer-lab",
  "createdAt": "2026-08-11T00:00:00.000Z",
  "updatedAt": "2026-08-11T00:00:00.000Z",
  "root": {
    "id": "root",
    "name": "Nand2Tetris Computer Lab",
    "type": "custom",
    "kind": "custom",
    "size": {
      "x": 1400,
      "y": 900
    },
    "colour": "#202b3a",
    "nameLocation": "top",
    "inputPins": [],
    "outputPins": [],
    "instances": [
      {
        "id": "reset",
        "name": "IN-1",
        "position": {
          "x": -23670,
          "y": -60
        },
        "rotation": 0,
        "label": "RESET",
        "internalData": {},
        "linkedBusPairId": null,
        "outputPinColours": {}
      },
      {
        "id": "clock",
        "name": "IN-1",
        "position": {
          "x": -23670,
          "y": 60
        },
        "rotation": 0,
        "label": "CLOCK",
        "internalData": {},
        "linkedBusPairId": null,
        "outputPinColours": {}
      },
      {
        "id": "computer",
        "name": "N2T COMPUTER",
        "position": {
          "x": 0,
          "y": 0
        },
        "rotation": 0,
        "label": "Hack Computer",
        "internalData": {},
        "linkedBusPairId": null,
        "outputPinColours": {}
      },
      {
        "id": "pc",
        "name": "OUT-16",
        "position": {
          "x": 23670,
          "y": -120
        },
        "rotation": 0,
        "label": "PC",
        "internalData": {},
        "linkedBusPairId": null,
        "outputPinColours": {}
      },
      {
        "id": "address",
        "name": "OUT-16",
        "position": {
          "x": 23670,
          "y": 0
        },
        "rotation": 0,
        "label": "ADDRESS M",
        "internalData": {},
        "linkedBusPairId": null,
        "outputPinColours": {}
      },
      {
        "id": "memory",
        "name": "OUT-16",
        "position": {
          "x": 23670,
          "y": 120
        },
        "rotation": 0,
        "label": "MEMORY OUT",
        "internalData": {},
        "linkedBusPairId": null,
        "outputPinColours": {}
      }
    ],
    "wires": [
      {
        "id": "reset",
        "source": {
          "owner": "reset",
          "pin": "0"
        },
        "target": {
          "owner": "computer",
          "pin": "reset"
        },
        "points": [],
        "colour": null
      },
      {
        "id": "clock",
        "source": {
          "owner": "clock",
          "pin": "0"
        },
        "target": {
          "owner": "computer",
          "pin": "clock"
        },
        "points": [],
        "colour": null
      },
      {
        "id": "pc",
        "source": {
          "owner": "computer",
          "pin": "pc"
        },
        "target": {
          "owner": "pc",
          "pin": "0"
        },
        "points": [],
        "colour": null
      },
      {
        "id": "address",
        "source": {
          "owner": "computer",
          "pin": "addressM"
        },
        "target": {
          "owner": "address",
          "pin": "0"
        },
        "points": [],
        "colour": null
      },
      {
        "id": "memory",
        "source": {
          "owner": "computer",
          "pin": "memoryOut"
        },
        "target": {
          "owner": "memory",
          "pin": "0"
        },
        "points": [],
        "colour": null
      }
    ],
    "junctions": [],
    "displays": [],
    "annotations": [
      {
        "id": "computer-note",
        "type": "text",
        "text": "The bundled ROM starts at zero, so this is intentionally a quiet machine until a program is loaded into ROM32K. Open the composite in X-ray mode to follow the CPU, ROM, and memory contracts.",
        "position": {
          "x": -500,
          "y": -10880
        },
        "width": 1000,
        "height": 100,
        "fontSize": 13,
        "colour": "#d7eaff",
        "background": "#2f3338"
      }
    ]
  },
  "customChips": {
    "N2T A REGISTER": {
      "id": "chip-n2t-a-register",
      "name": "N2T A REGISTER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#9b8653",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -1320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -1320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -1320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -1220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -1220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -1220,
            "y": 120
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "register",
          "name": "N2T REGISTER",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "register",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-a-register",
          "type": "text",
          "text": "The A register stores addresses and A-instruction values.",
          "position": {
            "x": -240,
            "y": -4290
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1320,
          "y": -4220,
          "w": 2640,
          "h": 8440
        }
      }
    },
    "N2T ADD16": {
      "id": "chip-n2t-add16",
      "name": "N2T ADD16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "input",
          "x": -1240,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "input",
          "x": -1240,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "cin",
          "name": "CIN",
          "bits": 1,
          "direction": "input",
          "x": -1240,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1240,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "cout",
          "name": "COUT",
          "bits": 1,
          "direction": "output",
          "x": 1240,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-16",
          "position": {
            "x": -1140,
            "y": -120
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-16",
          "position": {
            "x": -1140,
            "y": 0
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-cin",
          "name": "IN-1",
          "position": {
            "x": -1140,
            "y": 120
          },
          "rotation": 0,
          "label": "CIN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cin",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1140,
            "y": -60
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-cout",
          "name": "OUT-1",
          "position": {
            "x": 1140,
            "y": 60
          },
          "rotation": 0,
          "label": "COUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cout",
          "outputPinColours": {}
        },
        {
          "id": "split-a",
          "name": "16-1BIT",
          "position": {
            "x": -950,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "split-b",
          "name": "16-1BIT",
          "position": {
            "x": -950,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 950,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-0",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -3300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-1",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -2860
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-2",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -2420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-3",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -1980
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-4",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -1540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-5",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -1100
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-6",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-7",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": -220
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-8",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 220
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-9",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-10",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 1100
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-11",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 1540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-12",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 1980
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-13",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 2420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-14",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 2860
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "adder-15",
          "name": "N2T FULL ADDER",
          "position": {
            "x": 0,
            "y": 3300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-source",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "split-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-source",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "split-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-0",
          "source": {
            "owner": "split-a",
            "pin": "16"
          },
          "target": {
            "owner": "adder-0",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-0",
          "source": {
            "owner": "split-b",
            "pin": "16"
          },
          "target": {
            "owner": "adder-0",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cin",
          "source": {
            "owner": "interface-input-cin",
            "pin": "0"
          },
          "target": {
            "owner": "adder-0",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-0",
          "source": {
            "owner": "adder-0",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-1",
          "source": {
            "owner": "split-a",
            "pin": "15"
          },
          "target": {
            "owner": "adder-1",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-1",
          "source": {
            "owner": "split-b",
            "pin": "15"
          },
          "target": {
            "owner": "adder-1",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-1",
          "source": {
            "owner": "adder-0",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-1",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-1",
          "source": {
            "owner": "adder-1",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-2",
          "source": {
            "owner": "split-a",
            "pin": "14"
          },
          "target": {
            "owner": "adder-2",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-2",
          "source": {
            "owner": "split-b",
            "pin": "14"
          },
          "target": {
            "owner": "adder-2",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-2",
          "source": {
            "owner": "adder-1",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-2",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-2",
          "source": {
            "owner": "adder-2",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-3",
          "source": {
            "owner": "split-a",
            "pin": "13"
          },
          "target": {
            "owner": "adder-3",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-3",
          "source": {
            "owner": "split-b",
            "pin": "13"
          },
          "target": {
            "owner": "adder-3",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-3",
          "source": {
            "owner": "adder-2",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-3",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-3",
          "source": {
            "owner": "adder-3",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-4",
          "source": {
            "owner": "split-a",
            "pin": "12"
          },
          "target": {
            "owner": "adder-4",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-4",
          "source": {
            "owner": "split-b",
            "pin": "12"
          },
          "target": {
            "owner": "adder-4",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-4",
          "source": {
            "owner": "adder-3",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-4",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-4",
          "source": {
            "owner": "adder-4",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-5",
          "source": {
            "owner": "split-a",
            "pin": "11"
          },
          "target": {
            "owner": "adder-5",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-5",
          "source": {
            "owner": "split-b",
            "pin": "11"
          },
          "target": {
            "owner": "adder-5",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-5",
          "source": {
            "owner": "adder-4",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-5",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-5",
          "source": {
            "owner": "adder-5",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-6",
          "source": {
            "owner": "split-a",
            "pin": "10"
          },
          "target": {
            "owner": "adder-6",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-6",
          "source": {
            "owner": "split-b",
            "pin": "10"
          },
          "target": {
            "owner": "adder-6",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-6",
          "source": {
            "owner": "adder-5",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-6",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-6",
          "source": {
            "owner": "adder-6",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-7",
          "source": {
            "owner": "split-a",
            "pin": "9"
          },
          "target": {
            "owner": "adder-7",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-7",
          "source": {
            "owner": "split-b",
            "pin": "9"
          },
          "target": {
            "owner": "adder-7",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-7",
          "source": {
            "owner": "adder-6",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-7",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-7",
          "source": {
            "owner": "adder-7",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-8",
          "source": {
            "owner": "split-a",
            "pin": "8"
          },
          "target": {
            "owner": "adder-8",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-8",
          "source": {
            "owner": "split-b",
            "pin": "8"
          },
          "target": {
            "owner": "adder-8",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-8",
          "source": {
            "owner": "adder-7",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-8",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-8",
          "source": {
            "owner": "adder-8",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-9",
          "source": {
            "owner": "split-a",
            "pin": "7"
          },
          "target": {
            "owner": "adder-9",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-9",
          "source": {
            "owner": "split-b",
            "pin": "7"
          },
          "target": {
            "owner": "adder-9",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-9",
          "source": {
            "owner": "adder-8",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-9",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-9",
          "source": {
            "owner": "adder-9",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-10",
          "source": {
            "owner": "split-a",
            "pin": "6"
          },
          "target": {
            "owner": "adder-10",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-10",
          "source": {
            "owner": "split-b",
            "pin": "6"
          },
          "target": {
            "owner": "adder-10",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-10",
          "source": {
            "owner": "adder-9",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-10",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-10",
          "source": {
            "owner": "adder-10",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-11",
          "source": {
            "owner": "split-a",
            "pin": "5"
          },
          "target": {
            "owner": "adder-11",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-11",
          "source": {
            "owner": "split-b",
            "pin": "5"
          },
          "target": {
            "owner": "adder-11",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-11",
          "source": {
            "owner": "adder-10",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-11",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-11",
          "source": {
            "owner": "adder-11",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-12",
          "source": {
            "owner": "split-a",
            "pin": "4"
          },
          "target": {
            "owner": "adder-12",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-12",
          "source": {
            "owner": "split-b",
            "pin": "4"
          },
          "target": {
            "owner": "adder-12",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-12",
          "source": {
            "owner": "adder-11",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-12",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-12",
          "source": {
            "owner": "adder-12",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-13",
          "source": {
            "owner": "split-a",
            "pin": "3"
          },
          "target": {
            "owner": "adder-13",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-13",
          "source": {
            "owner": "split-b",
            "pin": "3"
          },
          "target": {
            "owner": "adder-13",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-13",
          "source": {
            "owner": "adder-12",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-13",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-13",
          "source": {
            "owner": "adder-13",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-14",
          "source": {
            "owner": "split-a",
            "pin": "2"
          },
          "target": {
            "owner": "adder-14",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-14",
          "source": {
            "owner": "split-b",
            "pin": "2"
          },
          "target": {
            "owner": "adder-14",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-14",
          "source": {
            "owner": "adder-13",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-14",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-14",
          "source": {
            "owner": "adder-14",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-15",
          "source": {
            "owner": "split-a",
            "pin": "1"
          },
          "target": {
            "owner": "adder-15",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-15",
          "source": {
            "owner": "split-b",
            "pin": "1"
          },
          "target": {
            "owner": "adder-15",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry-15",
          "source": {
            "owner": "adder-14",
            "pin": "carry"
          },
          "target": {
            "owner": "adder-15",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum-15",
          "source": {
            "owner": "adder-15",
            "pin": "sum"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cout",
          "source": {
            "owner": "adder-15",
            "pin": "carry"
          },
          "target": {
            "owner": "interface-output-cout",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-add16",
          "type": "text",
          "text": "A ripple-carry 16-bit adder. The least-significant full adder receives CIN.",
          "position": {
            "x": -240,
            "y": -3610
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "cin",
            "instanceId": "interface-input-cin",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "cout",
            "instanceId": "interface-output-cout",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1240,
          "y": -3540,
          "w": 2480,
          "h": 7080
        }
      }
    },
    "N2T ALU-CONTROL": {
      "id": "chip-n2t-alu-control",
      "name": "N2T ALU-CONTROL",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "instruction",
          "name": "INSTRUCTION",
          "bits": 16,
          "direction": "input",
          "x": -770,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "zx",
          "name": "ZX",
          "bits": 1,
          "direction": "output",
          "x": 770,
          "y": -300,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "nx",
          "name": "NX",
          "bits": 1,
          "direction": "output",
          "x": 770,
          "y": -180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "zy",
          "name": "ZY",
          "bits": 1,
          "direction": "output",
          "x": 770,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "ny",
          "name": "NY",
          "bits": 1,
          "direction": "output",
          "x": 770,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "f",
          "name": "F",
          "bits": 1,
          "direction": "output",
          "x": 770,
          "y": 180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "no",
          "name": "NO",
          "bits": 1,
          "direction": "output",
          "x": 770,
          "y": 300,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-instruction",
          "name": "IN-16",
          "position": {
            "x": -670,
            "y": 0
          },
          "rotation": 0,
          "label": "INSTRUCTION",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "instruction",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-zx",
          "name": "OUT-1",
          "position": {
            "x": 670,
            "y": -300
          },
          "rotation": 0,
          "label": "ZX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zx",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-nx",
          "name": "OUT-1",
          "position": {
            "x": 670,
            "y": -180
          },
          "rotation": 0,
          "label": "NX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "nx",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-zy",
          "name": "OUT-1",
          "position": {
            "x": 670,
            "y": -60
          },
          "rotation": 0,
          "label": "ZY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zy",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-ny",
          "name": "OUT-1",
          "position": {
            "x": 670,
            "y": 60
          },
          "rotation": 0,
          "label": "NY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "ny",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-f",
          "name": "OUT-1",
          "position": {
            "x": 670,
            "y": 180
          },
          "rotation": 0,
          "label": "F",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "f",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-no",
          "name": "OUT-1",
          "position": {
            "x": 670,
            "y": 300
          },
          "rotation": 0,
          "label": "NO",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "no",
          "outputPinColours": {}
        },
        {
          "id": "decoder",
          "name": "N2T CONTROL-SIGNAL-DECODER",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "decoder",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zx",
          "source": {
            "owner": "decoder",
            "pin": "zx"
          },
          "target": {
            "owner": "interface-output-zx",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "nx",
          "source": {
            "owner": "decoder",
            "pin": "nx"
          },
          "target": {
            "owner": "interface-output-nx",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zy",
          "source": {
            "owner": "decoder",
            "pin": "zy"
          },
          "target": {
            "owner": "interface-output-zy",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ny",
          "source": {
            "owner": "decoder",
            "pin": "ny"
          },
          "target": {
            "owner": "interface-output-ny",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "f",
          "source": {
            "owner": "decoder",
            "pin": "f"
          },
          "target": {
            "owner": "interface-output-f",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "no",
          "source": {
            "owner": "decoder",
            "pin": "no"
          },
          "target": {
            "owner": "interface-output-no",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-alu-control",
          "type": "text",
          "text": "The comp field becomes the six control signals consumed by the ALU.",
          "position": {
            "x": -240,
            "y": -1030
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "instruction",
            "instanceId": "interface-input-instruction",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "zx",
            "instanceId": "interface-output-zx",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "nx",
            "instanceId": "interface-output-nx",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "zy",
            "instanceId": "interface-output-zy",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "ny",
            "instanceId": "interface-output-ny",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "f",
            "instanceId": "interface-output-f",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "no",
            "instanceId": "interface-output-no",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -770,
          "y": -960,
          "w": 1540,
          "h": 1920
        }
      }
    },
    "N2T ALU": {
      "id": "chip-n2t-alu",
      "name": "N2T ALU",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 980,
        "y": 620
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "x",
          "name": "X",
          "bits": 16,
          "direction": "input",
          "x": -6120,
          "y": -420,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "y",
          "name": "Y",
          "bits": 16,
          "direction": "input",
          "x": -6120,
          "y": -300,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "zx",
          "name": "ZX",
          "bits": 1,
          "direction": "input",
          "x": -6120,
          "y": -180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "nx",
          "name": "NX",
          "bits": 1,
          "direction": "input",
          "x": -6120,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "zy",
          "name": "ZY",
          "bits": 1,
          "direction": "input",
          "x": -6120,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "ny",
          "name": "NY",
          "bits": 1,
          "direction": "input",
          "x": -6120,
          "y": 180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "f",
          "name": "F",
          "bits": 1,
          "direction": "input",
          "x": -6120,
          "y": 300,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "no",
          "name": "NO",
          "bits": 1,
          "direction": "input",
          "x": -6120,
          "y": 420,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 6120,
          "y": -180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "zr",
          "name": "ZR",
          "bits": 1,
          "direction": "output",
          "x": 6120,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "ng",
          "name": "NG",
          "bits": 1,
          "direction": "output",
          "x": 6120,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "carry",
          "name": "CARRY",
          "bits": 1,
          "direction": "output",
          "x": 6120,
          "y": 180,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-x",
          "name": "IN-16",
          "position": {
            "x": -6020,
            "y": -420
          },
          "rotation": 0,
          "label": "X",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "x",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-y",
          "name": "IN-16",
          "position": {
            "x": -6020,
            "y": -300
          },
          "rotation": 0,
          "label": "Y",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "y",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-zx",
          "name": "IN-1",
          "position": {
            "x": -6020,
            "y": -180
          },
          "rotation": 0,
          "label": "ZX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zx",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-nx",
          "name": "IN-1",
          "position": {
            "x": -6020,
            "y": -60
          },
          "rotation": 0,
          "label": "NX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "nx",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-zy",
          "name": "IN-1",
          "position": {
            "x": -6020,
            "y": 60
          },
          "rotation": 0,
          "label": "ZY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zy",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-ny",
          "name": "IN-1",
          "position": {
            "x": -6020,
            "y": 180
          },
          "rotation": 0,
          "label": "NY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "ny",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-f",
          "name": "IN-1",
          "position": {
            "x": -6020,
            "y": 300
          },
          "rotation": 0,
          "label": "F",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "f",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-no",
          "name": "IN-1",
          "position": {
            "x": -6020,
            "y": 420
          },
          "rotation": 0,
          "label": "NO",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "no",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 6020,
            "y": -180
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-zr",
          "name": "OUT-1",
          "position": {
            "x": 6020,
            "y": -60
          },
          "rotation": 0,
          "label": "ZR",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zr",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-ng",
          "name": "OUT-1",
          "position": {
            "x": 6020,
            "y": 60
          },
          "rotation": 0,
          "label": "NG",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "ng",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-carry",
          "name": "OUT-1",
          "position": {
            "x": 6020,
            "y": 180
          },
          "rotation": 0,
          "label": "CARRY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "carry",
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0-16",
          "position": {
            "x": -5860,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "x-zero",
          "name": "N2T MUX16",
          "position": {
            "x": -4920,
            "y": -3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "x-not",
          "name": "N2T NOT16",
          "position": {
            "x": -3560,
            "y": -1000
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "x-normal",
          "name": "N2T MUX16",
          "position": {
            "x": -2200,
            "y": -3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "y-zero",
          "name": "N2T MUX16",
          "position": {
            "x": -4920,
            "y": 3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "y-not",
          "name": "N2T NOT16",
          "position": {
            "x": -3560,
            "y": 1000
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "y-normal",
          "name": "N2T MUX16",
          "position": {
            "x": -2200,
            "y": 3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "and",
          "name": "N2T AND16",
          "position": {
            "x": -80,
            "y": -3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "add",
          "name": "N2T ADD16",
          "position": {
            "x": -80,
            "y": 1000
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "function",
          "name": "N2T MUX16",
          "position": {
            "x": 2040,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-out",
          "name": "N2T NOT16",
          "position": {
            "x": 3400,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "output",
          "name": "N2T MUX16",
          "position": {
            "x": 4760,
            "y": -680
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero-split",
          "name": "16-8BIT",
          "position": {
            "x": 3400,
            "y": 1000
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero-high",
          "name": "N2T OR8WAY",
          "position": {
            "x": 4760,
            "y": 3160
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero-low",
          "name": "N2T OR8WAY",
          "position": {
            "x": 4760,
            "y": 3960
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero-detect",
          "name": "OR",
          "position": {
            "x": 5700,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero-not",
          "name": "NOT",
          "position": {
            "x": 5860,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "split-out",
          "name": "16-1BIT",
          "position": {
            "x": 4760,
            "y": 3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "x",
          "source": {
            "owner": "interface-input-x",
            "pin": "0"
          },
          "target": {
            "owner": "x-zero",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-x",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "x-zero",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zx",
          "source": {
            "owner": "interface-input-zx",
            "pin": "0"
          },
          "target": {
            "owner": "x-zero",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "x-mux-not",
          "source": {
            "owner": "x-zero",
            "pin": "out"
          },
          "target": {
            "owner": "x-not",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "x-to-normal",
          "source": {
            "owner": "x-zero",
            "pin": "out"
          },
          "target": {
            "owner": "x-normal",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "x-not-to-normal",
          "source": {
            "owner": "x-not",
            "pin": "out"
          },
          "target": {
            "owner": "x-normal",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "nx",
          "source": {
            "owner": "interface-input-nx",
            "pin": "0"
          },
          "target": {
            "owner": "x-normal",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "y",
          "source": {
            "owner": "interface-input-y",
            "pin": "0"
          },
          "target": {
            "owner": "y-zero",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-y",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "y-zero",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zy",
          "source": {
            "owner": "interface-input-zy",
            "pin": "0"
          },
          "target": {
            "owner": "y-zero",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "y-mux-not",
          "source": {
            "owner": "y-zero",
            "pin": "out"
          },
          "target": {
            "owner": "y-not",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "y-to-normal",
          "source": {
            "owner": "y-zero",
            "pin": "out"
          },
          "target": {
            "owner": "y-normal",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "y-not-to-normal",
          "source": {
            "owner": "y-not",
            "pin": "out"
          },
          "target": {
            "owner": "y-normal",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ny",
          "source": {
            "owner": "interface-input-ny",
            "pin": "0"
          },
          "target": {
            "owner": "y-normal",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "x-and",
          "source": {
            "owner": "x-normal",
            "pin": "out"
          },
          "target": {
            "owner": "and",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "y-and",
          "source": {
            "owner": "y-normal",
            "pin": "out"
          },
          "target": {
            "owner": "and",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "x-add",
          "source": {
            "owner": "x-normal",
            "pin": "out"
          },
          "target": {
            "owner": "add",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "y-add",
          "source": {
            "owner": "y-normal",
            "pin": "out"
          },
          "target": {
            "owner": "add",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "and-function",
          "source": {
            "owner": "and",
            "pin": "out"
          },
          "target": {
            "owner": "function",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "add-function",
          "source": {
            "owner": "add",
            "pin": "out"
          },
          "target": {
            "owner": "function",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "f",
          "source": {
            "owner": "interface-input-f",
            "pin": "0"
          },
          "target": {
            "owner": "function",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "function-not",
          "source": {
            "owner": "function",
            "pin": "out"
          },
          "target": {
            "owner": "not-out",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "function-output",
          "source": {
            "owner": "function",
            "pin": "out"
          },
          "target": {
            "owner": "output",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "not-output",
          "source": {
            "owner": "not-out",
            "pin": "out"
          },
          "target": {
            "owner": "output",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "no",
          "source": {
            "owner": "interface-input-no",
            "pin": "0"
          },
          "target": {
            "owner": "output",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "output",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "output-zero",
          "source": {
            "owner": "output",
            "pin": "out"
          },
          "target": {
            "owner": "zero-split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-high-source",
          "source": {
            "owner": "zero-split",
            "pin": "1"
          },
          "target": {
            "owner": "zero-high",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-low-source",
          "source": {
            "owner": "zero-split",
            "pin": "2"
          },
          "target": {
            "owner": "zero-low",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-high-detect",
          "source": {
            "owner": "zero-high",
            "pin": "out"
          },
          "target": {
            "owner": "zero-detect",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-low-detect",
          "source": {
            "owner": "zero-low",
            "pin": "out"
          },
          "target": {
            "owner": "zero-detect",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-detect-not",
          "source": {
            "owner": "zero-detect",
            "pin": "2"
          },
          "target": {
            "owner": "zero-not",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zr",
          "source": {
            "owner": "zero-not",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-zr",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out-split",
          "source": {
            "owner": "output",
            "pin": "out"
          },
          "target": {
            "owner": "split-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ng",
          "source": {
            "owner": "split-out",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-ng",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry",
          "source": {
            "owner": "add",
            "pin": "cout"
          },
          "target": {
            "owner": "interface-output-carry",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-alu",
          "type": "text",
          "text": "Hack-style ALU control: zero/negate each operand, choose AND or ADD, then optionally negate the result.",
          "position": {
            "x": -240,
            "y": -7210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "x",
            "instanceId": "interface-input-x",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "y",
            "instanceId": "interface-input-y",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "zx",
            "instanceId": "interface-input-zx",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "nx",
            "instanceId": "interface-input-nx",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "zy",
            "instanceId": "interface-input-zy",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "ny",
            "instanceId": "interface-input-ny",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "f",
            "instanceId": "interface-input-f",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "no",
            "instanceId": "interface-input-no",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "zr",
            "instanceId": "interface-output-zr",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "ng",
            "instanceId": "interface-output-ng",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "carry",
            "instanceId": "interface-output-carry",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -6120,
          "y": -7140,
          "w": 12240,
          "h": 14280
        }
      }
    },
    "N2T AND": {
      "id": "chip-n2t-and",
      "name": "N2T AND",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 340,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 240,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "nand",
          "name": "NAND",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not",
          "name": "NOT",
          "position": {
            "x": 80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "nand-not",
          "source": {
            "owner": "nand",
            "pin": "2"
          },
          "target": {
            "owner": "not",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "not",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-and",
          "type": "text",
          "text": "AND = NOT(NAND).",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -340,
          "y": -140,
          "w": 680,
          "h": 280
        }
      }
    },
    "N2T AND16": {
      "id": "chip-n2t-and16",
      "name": "N2T AND16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 480,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 380,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "split-a",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "split-b",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-0",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-1",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-2",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-3",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-4",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-5",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-6",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-7",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-8",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-9",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-10",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-11",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-12",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-13",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-14",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-15",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-source",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "split-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-source",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "split-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-0",
          "source": {
            "owner": "split-a",
            "pin": "16"
          },
          "target": {
            "owner": "gate-0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-0",
          "source": {
            "owner": "split-b",
            "pin": "16"
          },
          "target": {
            "owner": "gate-0",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-0",
          "source": {
            "owner": "gate-0",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-1",
          "source": {
            "owner": "split-a",
            "pin": "15"
          },
          "target": {
            "owner": "gate-1",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-1",
          "source": {
            "owner": "split-b",
            "pin": "15"
          },
          "target": {
            "owner": "gate-1",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-1",
          "source": {
            "owner": "gate-1",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-2",
          "source": {
            "owner": "split-a",
            "pin": "14"
          },
          "target": {
            "owner": "gate-2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-2",
          "source": {
            "owner": "split-b",
            "pin": "14"
          },
          "target": {
            "owner": "gate-2",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-2",
          "source": {
            "owner": "gate-2",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-3",
          "source": {
            "owner": "split-a",
            "pin": "13"
          },
          "target": {
            "owner": "gate-3",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-3",
          "source": {
            "owner": "split-b",
            "pin": "13"
          },
          "target": {
            "owner": "gate-3",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-3",
          "source": {
            "owner": "gate-3",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-4",
          "source": {
            "owner": "split-a",
            "pin": "12"
          },
          "target": {
            "owner": "gate-4",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-4",
          "source": {
            "owner": "split-b",
            "pin": "12"
          },
          "target": {
            "owner": "gate-4",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-4",
          "source": {
            "owner": "gate-4",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-5",
          "source": {
            "owner": "split-a",
            "pin": "11"
          },
          "target": {
            "owner": "gate-5",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-5",
          "source": {
            "owner": "split-b",
            "pin": "11"
          },
          "target": {
            "owner": "gate-5",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-5",
          "source": {
            "owner": "gate-5",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-6",
          "source": {
            "owner": "split-a",
            "pin": "10"
          },
          "target": {
            "owner": "gate-6",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-6",
          "source": {
            "owner": "split-b",
            "pin": "10"
          },
          "target": {
            "owner": "gate-6",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-6",
          "source": {
            "owner": "gate-6",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-7",
          "source": {
            "owner": "split-a",
            "pin": "9"
          },
          "target": {
            "owner": "gate-7",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-7",
          "source": {
            "owner": "split-b",
            "pin": "9"
          },
          "target": {
            "owner": "gate-7",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-7",
          "source": {
            "owner": "gate-7",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-8",
          "source": {
            "owner": "split-a",
            "pin": "8"
          },
          "target": {
            "owner": "gate-8",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-8",
          "source": {
            "owner": "split-b",
            "pin": "8"
          },
          "target": {
            "owner": "gate-8",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-8",
          "source": {
            "owner": "gate-8",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-9",
          "source": {
            "owner": "split-a",
            "pin": "7"
          },
          "target": {
            "owner": "gate-9",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-9",
          "source": {
            "owner": "split-b",
            "pin": "7"
          },
          "target": {
            "owner": "gate-9",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-9",
          "source": {
            "owner": "gate-9",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-10",
          "source": {
            "owner": "split-a",
            "pin": "6"
          },
          "target": {
            "owner": "gate-10",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-10",
          "source": {
            "owner": "split-b",
            "pin": "6"
          },
          "target": {
            "owner": "gate-10",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-10",
          "source": {
            "owner": "gate-10",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-11",
          "source": {
            "owner": "split-a",
            "pin": "5"
          },
          "target": {
            "owner": "gate-11",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-11",
          "source": {
            "owner": "split-b",
            "pin": "5"
          },
          "target": {
            "owner": "gate-11",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-11",
          "source": {
            "owner": "gate-11",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-12",
          "source": {
            "owner": "split-a",
            "pin": "4"
          },
          "target": {
            "owner": "gate-12",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-12",
          "source": {
            "owner": "split-b",
            "pin": "4"
          },
          "target": {
            "owner": "gate-12",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-12",
          "source": {
            "owner": "gate-12",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-13",
          "source": {
            "owner": "split-a",
            "pin": "3"
          },
          "target": {
            "owner": "gate-13",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-13",
          "source": {
            "owner": "split-b",
            "pin": "3"
          },
          "target": {
            "owner": "gate-13",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-13",
          "source": {
            "owner": "gate-13",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-14",
          "source": {
            "owner": "split-a",
            "pin": "2"
          },
          "target": {
            "owner": "gate-14",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-14",
          "source": {
            "owner": "split-b",
            "pin": "2"
          },
          "target": {
            "owner": "gate-14",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-14",
          "source": {
            "owner": "gate-14",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-15",
          "source": {
            "owner": "split-a",
            "pin": "1"
          },
          "target": {
            "owner": "gate-15",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-15",
          "source": {
            "owner": "split-b",
            "pin": "1"
          },
          "target": {
            "owner": "gate-15",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-15",
          "source": {
            "owner": "gate-15",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-out",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-and16",
          "type": "text",
          "text": "Sixteen one-bit AND chips operate in parallel.",
          "position": {
            "x": -240,
            "y": -1050
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -480,
          "y": -980,
          "w": 960,
          "h": 1960
        }
      }
    },
    "N2T BIT": {
      "id": "chip-n2t-bit",
      "name": "N2T BIT",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#9b8653",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 1,
          "direction": "input",
          "x": -700,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -700,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -700,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 700,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-1",
          "position": {
            "x": -600,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -600,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -600,
            "y": 120
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 600,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "mux",
          "name": "N2T MUX",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "dff",
          "name": "DFF",
          "position": {
            "x": 440,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "stored",
          "source": {
            "owner": "dff",
            "pin": "2"
          },
          "target": {
            "owner": "mux",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "mux",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "mux",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "next",
          "source": {
            "owner": "mux",
            "pin": "out"
          },
          "target": {
            "owner": "dff",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "dff",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "dff",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-bit",
          "type": "text",
          "text": "A one-bit state cell: LOAD selects new input data; otherwise the DFF feeds its own stored value back.",
          "position": {
            "x": -240,
            "y": -310
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -700,
          "y": -240,
          "w": 1400,
          "h": 480
        }
      }
    },
    "N2T BUFFER": {
      "id": "chip-n2t-buffer",
      "name": "N2T BUFFER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 1,
          "direction": "input",
          "x": -180,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 180,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-1",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 80,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "direct",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-buffer",
          "type": "text",
          "text": "A direct signal path, useful when making the data flow explicit.",
          "position": {
            "x": -240,
            "y": -150
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -180,
          "y": -80,
          "w": 360,
          "h": 160
        }
      }
    },
    "N2T COMPARE16": {
      "id": "chip-n2t-compare16",
      "name": "N2T COMPARE16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "input",
          "x": -4180,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "input",
          "x": -4180,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "equal",
          "name": "EQ",
          "bits": 1,
          "direction": "output",
          "x": 4180,
          "y": -120,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "negative",
          "name": "NEG",
          "bits": 1,
          "direction": "output",
          "x": 4180,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "greater",
          "name": "GT",
          "bits": 1,
          "direction": "output",
          "x": 4180,
          "y": 120,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-16",
          "position": {
            "x": -4080,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-16",
          "position": {
            "x": -4080,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-equal",
          "name": "OUT-1",
          "position": {
            "x": 4080,
            "y": -120
          },
          "rotation": 0,
          "label": "EQ",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "equal",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-negative",
          "name": "OUT-1",
          "position": {
            "x": 4080,
            "y": 0
          },
          "rotation": 0,
          "label": "NEG",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "negative",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-greater",
          "name": "OUT-1",
          "position": {
            "x": 4080,
            "y": 120
          },
          "rotation": 0,
          "label": "GT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "greater",
          "outputPinColours": {}
        },
        {
          "id": "sub",
          "name": "N2T SUB16",
          "position": {
            "x": -580,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or",
          "name": "N2T OR16",
          "position": {
            "x": 3340,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-eq",
          "name": "NOT",
          "position": {
            "x": 3920,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "16-1BIT",
          "position": {
            "x": 3340,
            "y": 1000
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gt",
          "name": "OR",
          "position": {
            "x": 3920,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "sub",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "sub",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sub-or",
          "source": {
            "owner": "sub",
            "pin": "out"
          },
          "target": {
            "owner": "or",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sub-split",
          "source": {
            "owner": "sub",
            "pin": "out"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-not",
          "source": {
            "owner": "or",
            "pin": "out"
          },
          "target": {
            "owner": "not-eq",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "neg",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-negative",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "eq",
          "source": {
            "owner": "not-eq",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-equal",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "not-neg",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "gt",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "not-eq",
          "source": {
            "owner": "not-eq",
            "pin": "1"
          },
          "target": {
            "owner": "gt",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "greater",
          "source": {
            "owner": "gt",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-greater",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-compare16",
          "type": "text",
          "text": "A compact comparison landmark: subtraction exposes equality and sign; GT is a simple unsigned-oriented flag.",
          "position": {
            "x": -240,
            "y": -3790
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "equal",
            "instanceId": "interface-output-equal",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "negative",
            "instanceId": "interface-output-negative",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "greater",
            "instanceId": "interface-output-greater",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -4180,
          "y": -3720,
          "w": 8360,
          "h": 7440
        }
      }
    },
    "N2T COMPUTER": {
      "id": "chip-n2t-computer",
      "name": "N2T COMPUTER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 860,
        "y": 600
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -23570,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -23570,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "outM",
          "name": "OUT M",
          "bits": 16,
          "direction": "output",
          "x": 23570,
          "y": -240,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "addressM",
          "name": "ADDRESS M",
          "bits": 15,
          "direction": "output",
          "x": 23570,
          "y": -120,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "writeM",
          "name": "WRITE M",
          "bits": 1,
          "direction": "output",
          "x": 23570,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "pc",
          "name": "PC",
          "bits": 15,
          "direction": "output",
          "x": 23570,
          "y": 120,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "memoryOut",
          "name": "MEMORY OUT",
          "bits": 16,
          "direction": "output",
          "x": 23570,
          "y": 240,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -23470,
            "y": -60
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -23470,
            "y": 60
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-outm",
          "name": "OUT-16",
          "position": {
            "x": 23470,
            "y": -240
          },
          "rotation": 0,
          "label": "OUT M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "outM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-addressm",
          "name": "OUT-16",
          "position": {
            "x": 23470,
            "y": -120
          },
          "rotation": 0,
          "label": "ADDRESS M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "addressM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-writem",
          "name": "OUT-1",
          "position": {
            "x": 23470,
            "y": 0
          },
          "rotation": 0,
          "label": "WRITE M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "writeM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-pc",
          "name": "OUT-16",
          "position": {
            "x": 23470,
            "y": 120
          },
          "rotation": 0,
          "label": "PC",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "pc",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-memoryout",
          "name": "OUT-16",
          "position": {
            "x": 23470,
            "y": 240
          },
          "rotation": 0,
          "label": "MEMORY OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "memoryOut",
          "outputPinColours": {}
        },
        {
          "id": "cpu",
          "name": "N2T CPU",
          "position": {
            "x": -4040,
            "y": 150
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "rom",
          "name": "N2T INSTRUCTION-ROM",
          "position": {
            "x": -4040,
            "y": -8520
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bus",
          "name": "N2T CPU-MEMORY-BUS",
          "position": {
            "x": 15510,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "N2T CPU-MEMORY",
          "position": {
            "x": 19550,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "reset-cpu",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "cpu",
            "pin": "reset"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-cpu",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "cpu",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset-memory",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "reset"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-memory",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc-rom",
          "source": {
            "owner": "cpu",
            "pin": "pc"
          },
          "target": {
            "owner": "rom",
            "pin": "address"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "rom-cpu",
          "source": {
            "owner": "rom",
            "pin": "out"
          },
          "target": {
            "owner": "cpu",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cpu-out-bus",
          "source": {
            "owner": "cpu",
            "pin": "outM"
          },
          "target": {
            "owner": "bus",
            "pin": "cpuOutM"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cpu-address-bus",
          "source": {
            "owner": "cpu",
            "pin": "addressM"
          },
          "target": {
            "owner": "bus",
            "pin": "cpuAddress"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cpu-write-bus",
          "source": {
            "owner": "cpu",
            "pin": "writeM"
          },
          "target": {
            "owner": "bus",
            "pin": "cpuWrite"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "memory-out-bus",
          "source": {
            "owner": "memory",
            "pin": "out"
          },
          "target": {
            "owner": "bus",
            "pin": "memoryOut"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "bus-memory-in",
          "source": {
            "owner": "bus",
            "pin": "memoryIn"
          },
          "target": {
            "owner": "memory",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "bus-memory-address",
          "source": {
            "owner": "bus",
            "pin": "memoryAddress"
          },
          "target": {
            "owner": "memory",
            "pin": "address"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "bus-memory-load",
          "source": {
            "owner": "bus",
            "pin": "memoryLoad"
          },
          "target": {
            "owner": "memory",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "bus-cpu-in",
          "source": {
            "owner": "bus",
            "pin": "cpuInM"
          },
          "target": {
            "owner": "cpu",
            "pin": "inM"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "outM",
          "source": {
            "owner": "cpu",
            "pin": "outM"
          },
          "target": {
            "owner": "interface-output-outm",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "addressM",
          "source": {
            "owner": "cpu",
            "pin": "addressM"
          },
          "target": {
            "owner": "interface-output-addressm",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "writeM",
          "source": {
            "owner": "cpu",
            "pin": "writeM"
          },
          "target": {
            "owner": "interface-output-writem",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc",
          "source": {
            "owner": "cpu",
            "pin": "pc"
          },
          "target": {
            "owner": "interface-output-pc",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "memoryOut",
          "source": {
            "owner": "memory",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-memoryout",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-computer",
          "type": "text",
          "text": "The complete Hack-shaped boundary: instruction ROM, CPU, and data memory are connected as one inspectable computer.",
          "position": {
            "x": -240,
            "y": -10810
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "outM",
            "instanceId": "interface-output-outm",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "addressM",
            "instanceId": "interface-output-addressm",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "writeM",
            "instanceId": "interface-output-writem",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "pc",
            "instanceId": "interface-output-pc",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "memoryOut",
            "instanceId": "interface-output-memoryout",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -23570,
          "y": -10740,
          "w": 47140,
          "h": 21480
        }
      }
    },
    "N2T CONSTANT-GENERATOR": {
      "id": "chip-n2t-constant-generator",
      "name": "N2T CONSTANT-GENERATOR",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 700,
        "y": 440
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "instruction",
          "name": "INSTRUCTION",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "constant",
          "name": "CONSTANT",
          "bits": 16,
          "direction": "output",
          "x": 480,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "isA",
          "name": "IS A",
          "bits": 1,
          "direction": "output",
          "x": 480,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-instruction",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": 0
          },
          "rotation": 0,
          "label": "INSTRUCTION",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "instruction",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-constant",
          "name": "OUT-16",
          "position": {
            "x": 380,
            "y": -60
          },
          "rotation": 0,
          "label": "CONSTANT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "constant",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-isa",
          "name": "OUT-1",
          "position": {
            "x": 380,
            "y": 60
          },
          "rotation": 0,
          "label": "IS A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "isA",
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0",
          "position": {
            "x": 0,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "is-a",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-0",
          "source": {
            "owner": "split",
            "pin": "16"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-1",
          "source": {
            "owner": "split",
            "pin": "15"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-2",
          "source": {
            "owner": "split",
            "pin": "14"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-3",
          "source": {
            "owner": "split",
            "pin": "13"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-4",
          "source": {
            "owner": "split",
            "pin": "12"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-5",
          "source": {
            "owner": "split",
            "pin": "11"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-6",
          "source": {
            "owner": "split",
            "pin": "10"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-7",
          "source": {
            "owner": "split",
            "pin": "9"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-8",
          "source": {
            "owner": "split",
            "pin": "8"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-9",
          "source": {
            "owner": "split",
            "pin": "7"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-10",
          "source": {
            "owner": "split",
            "pin": "6"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-11",
          "source": {
            "owner": "split",
            "pin": "5"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-12",
          "source": {
            "owner": "split",
            "pin": "4"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-13",
          "source": {
            "owner": "split",
            "pin": "3"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-14",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-high-zero",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-constant",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "opcode",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "is-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-a",
          "source": {
            "owner": "is-a",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-isa",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-constant-generator",
          "type": "text",
          "text": "An A-instruction carries a 15-bit literal; the generator widens it to a 16-bit data word and exposes the opcode test.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "instruction",
            "instanceId": "interface-input-instruction",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "constant",
            "instanceId": "interface-output-constant",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "isA",
            "instanceId": "interface-output-isa",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -480,
          "y": -142,
          "w": 960,
          "h": 284
        }
      }
    },
    "N2T CONTROL-SIGNAL-DECODER": {
      "id": "chip-n2t-control-signal-decoder",
      "name": "N2T CONTROL-SIGNAL-DECODER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 600
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "instruction",
          "name": "INSTRUCTION",
          "bits": 16,
          "direction": "input",
          "x": -570,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "isC",
          "name": "IS C",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": -840,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "isA",
          "name": "IS A",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": -720,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": -600,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "zx",
          "name": "ZX",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": -480,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "nx",
          "name": "NX",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": -360,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "zy",
          "name": "ZY",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": -240,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "ny",
          "name": "NY",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": -120,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "f",
          "name": "F",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "no",
          "name": "NO",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 120,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "destA",
          "name": "DEST A",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 240,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "destD",
          "name": "DEST D",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 360,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "destM",
          "name": "DEST M",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 480,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "jump2",
          "name": "J2",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 600,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "jump1",
          "name": "J1",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 720,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "jump0",
          "name": "J0",
          "bits": 1,
          "direction": "output",
          "x": 570,
          "y": 840,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-instruction",
          "name": "IN-16",
          "position": {
            "x": -470,
            "y": 0
          },
          "rotation": 0,
          "label": "INSTRUCTION",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "instruction",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-isc",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": -840
          },
          "rotation": 0,
          "label": "IS C",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "isC",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-isa",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": -720
          },
          "rotation": 0,
          "label": "IS A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "isA",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-a",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": -600
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-zx",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": -480
          },
          "rotation": 0,
          "label": "ZX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zx",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-nx",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": -360
          },
          "rotation": 0,
          "label": "NX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "nx",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-zy",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": -240
          },
          "rotation": 0,
          "label": "ZY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zy",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-ny",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": -120
          },
          "rotation": 0,
          "label": "NY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "ny",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-f",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 0
          },
          "rotation": 0,
          "label": "F",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "f",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-no",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 120
          },
          "rotation": 0,
          "label": "NO",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "no",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-desta",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 240
          },
          "rotation": 0,
          "label": "DEST A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "destA",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-destd",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 360
          },
          "rotation": 0,
          "label": "DEST D",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "destD",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-destm",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 480
          },
          "rotation": 0,
          "label": "DEST M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "destM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-jump2",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 600
          },
          "rotation": 0,
          "label": "J2",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "jump2",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-jump1",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 720
          },
          "rotation": 0,
          "label": "J1",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "jump1",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-jump0",
          "name": "OUT-1",
          "position": {
            "x": 470,
            "y": 840
          },
          "rotation": 0,
          "label": "J0",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "jump0",
          "outputPinColours": {}
        },
        {
          "id": "decoder",
          "name": "N2T INSTRUCTION DECODER",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-c",
          "name": "NOT",
          "position": {
            "x": 310,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "decoder",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-c-not",
          "source": {
            "owner": "decoder",
            "pin": "isC"
          },
          "target": {
            "owner": "not-c",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-isC",
          "source": {
            "owner": "decoder",
            "pin": "isC"
          },
          "target": {
            "owner": "interface-output-isc",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-a",
          "source": {
            "owner": "decoder",
            "pin": "a"
          },
          "target": {
            "owner": "interface-output-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-zx",
          "source": {
            "owner": "decoder",
            "pin": "zx"
          },
          "target": {
            "owner": "interface-output-zx",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-nx",
          "source": {
            "owner": "decoder",
            "pin": "nx"
          },
          "target": {
            "owner": "interface-output-nx",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-zy",
          "source": {
            "owner": "decoder",
            "pin": "zy"
          },
          "target": {
            "owner": "interface-output-zy",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-ny",
          "source": {
            "owner": "decoder",
            "pin": "ny"
          },
          "target": {
            "owner": "interface-output-ny",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-f",
          "source": {
            "owner": "decoder",
            "pin": "f"
          },
          "target": {
            "owner": "interface-output-f",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-no",
          "source": {
            "owner": "decoder",
            "pin": "no"
          },
          "target": {
            "owner": "interface-output-no",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-destA",
          "source": {
            "owner": "decoder",
            "pin": "destA"
          },
          "target": {
            "owner": "interface-output-desta",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-destD",
          "source": {
            "owner": "decoder",
            "pin": "destD"
          },
          "target": {
            "owner": "interface-output-destd",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-destM",
          "source": {
            "owner": "decoder",
            "pin": "destM"
          },
          "target": {
            "owner": "interface-output-destm",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-jump2",
          "source": {
            "owner": "decoder",
            "pin": "jump2"
          },
          "target": {
            "owner": "interface-output-jump2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-jump1",
          "source": {
            "owner": "decoder",
            "pin": "jump1"
          },
          "target": {
            "owner": "interface-output-jump1",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-jump0",
          "source": {
            "owner": "decoder",
            "pin": "jump0"
          },
          "target": {
            "owner": "interface-output-jump0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-a",
          "source": {
            "owner": "not-c",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-isa",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-control-signal-decoder",
          "type": "text",
          "text": "The raw instruction fields plus the complementary A-instruction signal used by control paths.",
          "position": {
            "x": -240,
            "y": -990
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "instruction",
            "instanceId": "interface-input-instruction",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "isC",
            "instanceId": "interface-output-isc",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "isA",
            "instanceId": "interface-output-isa",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "a",
            "instanceId": "interface-output-a",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "zx",
            "instanceId": "interface-output-zx",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "nx",
            "instanceId": "interface-output-nx",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "zy",
            "instanceId": "interface-output-zy",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "ny",
            "instanceId": "interface-output-ny",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "f",
            "instanceId": "interface-output-f",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "no",
            "instanceId": "interface-output-no",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "destA",
            "instanceId": "interface-output-desta",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "destD",
            "instanceId": "interface-output-destd",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "destM",
            "instanceId": "interface-output-destm",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "jump2",
            "instanceId": "interface-output-jump2",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "jump1",
            "instanceId": "interface-output-jump1",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "jump0",
            "instanceId": "interface-output-jump0",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -570,
          "y": -920,
          "w": 1140,
          "h": 1840
        }
      }
    },
    "N2T COUNTER": {
      "id": "chip-n2t-counter",
      "name": "N2T COUNTER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 720,
        "y": 440
      },
      "colour": "#9b8653",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -4780,
          "y": -180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -4780,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "inc",
          "name": "INC",
          "bits": 1,
          "direction": "input",
          "x": -4780,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -4780,
          "y": 180,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 4780,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -4680,
            "y": -180
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -4680,
            "y": -60
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-inc",
          "name": "IN-1",
          "position": {
            "x": -4680,
            "y": 60
          },
          "rotation": 0,
          "label": "INC",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "inc",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -4680,
            "y": 180
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 4680,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "current",
          "name": "N2T REGISTER16",
          "position": {
            "x": 3260,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "increment",
          "name": "N2T INC16",
          "position": {
            "x": -3060,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "load-mux",
          "name": "N2T MUX16",
          "position": {
            "x": -660,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "inc-mux",
          "name": "N2T MUX16",
          "position": {
            "x": 1060,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "one",
          "name": "CONST-1",
          "position": {
            "x": 3260,
            "y": -4240
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "current-increment",
          "source": {
            "owner": "current",
            "pin": "out"
          },
          "target": {
            "owner": "increment",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "current-load",
          "source": {
            "owner": "current",
            "pin": "out"
          },
          "target": {
            "owner": "load-mux",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in-load",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "load-mux",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-select",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "load-mux",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-inc",
          "source": {
            "owner": "load-mux",
            "pin": "out"
          },
          "target": {
            "owner": "inc-mux",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "increment-inc",
          "source": {
            "owner": "increment",
            "pin": "out"
          },
          "target": {
            "owner": "inc-mux",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "inc-select",
          "source": {
            "owner": "interface-input-inc",
            "pin": "0"
          },
          "target": {
            "owner": "inc-mux",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "next-register",
          "source": {
            "owner": "inc-mux",
            "pin": "out"
          },
          "target": {
            "owner": "current",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "always-load",
          "source": {
            "owner": "one",
            "pin": "0"
          },
          "target": {
            "owner": "current",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-register",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "current",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "current",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-counter",
          "type": "text",
          "text": "A register that holds its value, loads a word, or increments it on the next clock.",
          "position": {
            "x": -240,
            "y": -4390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "inc",
            "instanceId": "interface-input-inc",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -4780,
          "y": -4320,
          "w": 9560,
          "h": 8640
        }
      }
    },
    "N2T CPU-MEMORY-BUS": {
      "id": "chip-n2t-cpu-memory-bus",
      "name": "N2T CPU-MEMORY-BUS",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 800,
        "y": 440
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "cpuOutM",
          "name": "CPU OUT M",
          "bits": 16,
          "direction": "input",
          "x": -180,
          "y": -180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "cpuAddress",
          "name": "CPU ADDRESS",
          "bits": 15,
          "direction": "input",
          "x": -180,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "cpuWrite",
          "name": "CPU WRITE",
          "bits": 1,
          "direction": "input",
          "x": -180,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "memoryOut",
          "name": "MEMORY OUT",
          "bits": 16,
          "direction": "input",
          "x": -180,
          "y": 180,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "memoryIn",
          "name": "MEMORY IN",
          "bits": 16,
          "direction": "output",
          "x": 180,
          "y": -180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "memoryAddress",
          "name": "MEMORY ADDRESS",
          "bits": 15,
          "direction": "output",
          "x": 180,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "memoryLoad",
          "name": "MEMORY LOAD",
          "bits": 1,
          "direction": "output",
          "x": 180,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "cpuInM",
          "name": "CPU IN M",
          "bits": 16,
          "direction": "output",
          "x": 180,
          "y": 180,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-cpuoutm",
          "name": "IN-16",
          "position": {
            "x": -80,
            "y": -180
          },
          "rotation": 0,
          "label": "CPU OUT M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cpuOutM",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-cpuaddress",
          "name": "IN-16",
          "position": {
            "x": -80,
            "y": -60
          },
          "rotation": 0,
          "label": "CPU ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cpuAddress",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-cpuwrite",
          "name": "IN-1",
          "position": {
            "x": -80,
            "y": 60
          },
          "rotation": 0,
          "label": "CPU WRITE",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cpuWrite",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-memoryout",
          "name": "IN-16",
          "position": {
            "x": -80,
            "y": 180
          },
          "rotation": 0,
          "label": "MEMORY OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "memoryOut",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-memoryin",
          "name": "OUT-16",
          "position": {
            "x": 80,
            "y": -180
          },
          "rotation": 0,
          "label": "MEMORY IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "memoryIn",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-memoryaddress",
          "name": "OUT-16",
          "position": {
            "x": 80,
            "y": -60
          },
          "rotation": 0,
          "label": "MEMORY ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "memoryAddress",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-memoryload",
          "name": "OUT-1",
          "position": {
            "x": 80,
            "y": 60
          },
          "rotation": 0,
          "label": "MEMORY LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "memoryLoad",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-cpuinm",
          "name": "OUT-16",
          "position": {
            "x": 80,
            "y": 180
          },
          "rotation": 0,
          "label": "CPU IN M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cpuInM",
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "cpu-out-memory-in",
          "source": {
            "owner": "interface-input-cpuoutm",
            "pin": "0"
          },
          "target": {
            "owner": "interface-output-memoryin",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cpu-address-memory-address",
          "source": {
            "owner": "interface-input-cpuaddress",
            "pin": "0"
          },
          "target": {
            "owner": "interface-output-memoryaddress",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cpu-write-memory-load",
          "source": {
            "owner": "interface-input-cpuwrite",
            "pin": "0"
          },
          "target": {
            "owner": "interface-output-memoryload",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "memory-out-cpu-in",
          "source": {
            "owner": "interface-input-memoryout",
            "pin": "0"
          },
          "target": {
            "owner": "interface-output-cpuinm",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-cpu-memory-bus",
          "type": "text",
          "text": "The explicit data/control boundary between CPU and memory devices.",
          "position": {
            "x": -240,
            "y": -330
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "cpuOutM",
            "instanceId": "interface-input-cpuoutm",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "cpuAddress",
            "instanceId": "interface-input-cpuaddress",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "cpuWrite",
            "instanceId": "interface-input-cpuwrite",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "memoryOut",
            "instanceId": "interface-input-memoryout",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "memoryIn",
            "instanceId": "interface-output-memoryin",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "memoryAddress",
            "instanceId": "interface-output-memoryaddress",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "memoryLoad",
            "instanceId": "interface-output-memoryload",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "cpuInM",
            "instanceId": "interface-output-cpuinm",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -180,
          "y": -260,
          "w": 360,
          "h": 520
        }
      }
    },
    "N2T CPU-MEMORY": {
      "id": "chip-n2t-cpu-memory",
      "name": "N2T CPU-MEMORY",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 1200,
        "y": 900
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 15,
          "direction": "input",
          "x": -3820,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -3820,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -3820,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -3820,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -3820,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 3820,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-16",
          "position": {
            "x": -3720,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -3720,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -3720,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -3720,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -3720,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 3720,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "decoder",
          "name": "N2T MEMORY-ADDRESS-DECODER",
          "position": {
            "x": -2370,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "ram",
          "name": "N2T RAM16K",
          "position": {
            "x": -750,
            "y": -380
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "screen",
          "name": "N2T SCREEN",
          "position": {
            "x": -750,
            "y": 300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "keyboard",
          "name": "N2T KEYBOARD",
          "position": {
            "x": -750,
            "y": 740
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0-16",
          "position": {
            "x": -160,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "ram-load",
          "name": "AND",
          "position": {
            "x": -750,
            "y": -780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "screen-load",
          "name": "AND",
          "position": {
            "x": -320,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "ram-select",
          "name": "N2T MUX16",
          "position": {
            "x": 780,
            "y": -7120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "screen-select",
          "name": "N2T MUX16",
          "position": {
            "x": 780,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "keyboard-select",
          "name": "N2T MUX16",
          "position": {
            "x": 780,
            "y": 7120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "ram-screen",
          "name": "N2T OR16",
          "position": {
            "x": 2140,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "all-devices",
          "name": "N2T OR16",
          "position": {
            "x": 3140,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address-decoder",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "decoder",
            "pin": "address"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "address-ram",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "ram",
            "pin": "address"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "address-screen",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "screen",
            "pin": "address"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in-ram",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "ram",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in-screen",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "screen",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset-ram",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "ram",
            "pin": "reset"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset-screen",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "screen",
            "pin": "reset"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-ram",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "ram",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-screen",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "screen",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-ram",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "ram-load",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "select-ram-load",
          "source": {
            "owner": "decoder",
            "pin": "ram"
          },
          "target": {
            "owner": "ram-load",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram-load-device",
          "source": {
            "owner": "ram-load",
            "pin": "2"
          },
          "target": {
            "owner": "ram",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-screen",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "screen-load",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "select-screen-load",
          "source": {
            "owner": "decoder",
            "pin": "screen"
          },
          "target": {
            "owner": "screen-load",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen-load-device",
          "source": {
            "owner": "screen-load",
            "pin": "2"
          },
          "target": {
            "owner": "screen",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram-zero",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "ram-select",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram-data",
          "source": {
            "owner": "ram",
            "pin": "out"
          },
          "target": {
            "owner": "ram-select",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram-select",
          "source": {
            "owner": "decoder",
            "pin": "ram"
          },
          "target": {
            "owner": "ram-select",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen-zero",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "screen-select",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen-data",
          "source": {
            "owner": "screen",
            "pin": "out"
          },
          "target": {
            "owner": "screen-select",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen-select",
          "source": {
            "owner": "decoder",
            "pin": "screen"
          },
          "target": {
            "owner": "screen-select",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard-zero",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "keyboard-select",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard-data",
          "source": {
            "owner": "keyboard",
            "pin": "out"
          },
          "target": {
            "owner": "keyboard-select",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard-select",
          "source": {
            "owner": "decoder",
            "pin": "keyboard"
          },
          "target": {
            "owner": "keyboard-select",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram-screen-ram",
          "source": {
            "owner": "ram-select",
            "pin": "out"
          },
          "target": {
            "owner": "ram-screen",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram-screen-screen",
          "source": {
            "owner": "screen-select",
            "pin": "out"
          },
          "target": {
            "owner": "ram-screen",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "all-devices-left",
          "source": {
            "owner": "ram-screen",
            "pin": "out"
          },
          "target": {
            "owner": "all-devices",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "all-devices-right",
          "source": {
            "owner": "keyboard-select",
            "pin": "out"
          },
          "target": {
            "owner": "all-devices",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "all-devices",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-cpu-memory",
          "type": "text",
          "text": "A composed memory map: the decoder enables RAM, screen, or keyboard data and the selected device is returned to the CPU.",
          "position": {
            "x": -240,
            "y": -10770
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -3820,
          "y": -10700,
          "w": 7640,
          "h": 21400
        }
      }
    },
    "N2T CPU": {
      "id": "chip-n2t-cpu",
      "name": "N2T CPU",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 1500,
        "y": 900
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "inM",
          "name": "IN M",
          "bits": 16,
          "direction": "input",
          "x": -19330,
          "y": -180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "instruction",
          "name": "INSTRUCTION",
          "bits": 16,
          "direction": "input",
          "x": -19330,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -19330,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -19330,
          "y": 180,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "outM",
          "name": "OUT M",
          "bits": 16,
          "direction": "output",
          "x": 19330,
          "y": -180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "writeM",
          "name": "WRITE M",
          "bits": 1,
          "direction": "output",
          "x": 19330,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "addressM",
          "name": "ADDRESS M",
          "bits": 15,
          "direction": "output",
          "x": 19330,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "pc",
          "name": "PC",
          "bits": 15,
          "direction": "output",
          "x": 19330,
          "y": 180,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-inm",
          "name": "IN-16",
          "position": {
            "x": -19230,
            "y": -180
          },
          "rotation": 0,
          "label": "IN M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "inM",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-instruction",
          "name": "IN-16",
          "position": {
            "x": -19230,
            "y": -60
          },
          "rotation": 0,
          "label": "INSTRUCTION",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "instruction",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -19230,
            "y": 60
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -19230,
            "y": 180
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-outm",
          "name": "OUT-16",
          "position": {
            "x": 19230,
            "y": -180
          },
          "rotation": 0,
          "label": "OUT M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "outM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-writem",
          "name": "OUT-1",
          "position": {
            "x": 19230,
            "y": -60
          },
          "rotation": 0,
          "label": "WRITE M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "writeM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-addressm",
          "name": "OUT-16",
          "position": {
            "x": 19230,
            "y": 60
          },
          "rotation": 0,
          "label": "ADDRESS M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "addressM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-pc",
          "name": "OUT-16",
          "position": {
            "x": 19230,
            "y": 180
          },
          "rotation": 0,
          "label": "PC",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "pc",
          "outputPinColours": {}
        },
        {
          "id": "signals",
          "name": "N2T CONTROL-SIGNAL-DECODER",
          "position": {
            "x": -18560,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "alu-control",
          "name": "N2T ALU-CONTROL",
          "position": {
            "x": -17100,
            "y": -980
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "write-control",
          "name": "N2T WRITE-DESTINATION-CONTROL",
          "position": {
            "x": -17100,
            "y": 980
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "jump-control",
          "name": "N2T JUMP-CONTROL",
          "position": {
            "x": -8000,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "constant",
          "name": "N2T CONSTANT-GENERATOR",
          "position": {
            "x": -15730,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "a-input",
          "name": "N2T MUX16",
          "position": {
            "x": -14370,
            "y": -3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "a-register",
          "name": "N2T A REGISTER",
          "position": {
            "x": -12170,
            "y": -4240
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "d-register",
          "name": "N2T D REGISTER",
          "position": {
            "x": -12170,
            "y": 4240
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "y-select",
          "name": "N2T MUX16",
          "position": {
            "x": -14370,
            "y": 3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "alu",
          "name": "N2T ALU",
          "position": {
            "x": 970,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-jump",
          "name": "NOT",
          "position": {
            "x": 7190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "pc",
          "name": "N2T PC",
          "position": {
            "x": 13210,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "signals-instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "signals",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-control-instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "alu-control",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "write-control-instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "write-control",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-control-instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "jump-control",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "constant",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "constant-a",
          "source": {
            "owner": "constant",
            "pin": "constant"
          },
          "target": {
            "owner": "a-input",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-a",
          "source": {
            "owner": "alu",
            "pin": "out"
          },
          "target": {
            "owner": "a-input",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-c-a",
          "source": {
            "owner": "signals",
            "pin": "isC"
          },
          "target": {
            "owner": "a-input",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-input-register",
          "source": {
            "owner": "a-input",
            "pin": "out"
          },
          "target": {
            "owner": "a-register",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-a-register",
          "source": {
            "owner": "write-control",
            "pin": "loadA"
          },
          "target": {
            "owner": "a-register",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-a-register",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "a-register",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-y-select",
          "source": {
            "owner": "a-register",
            "pin": "out"
          },
          "target": {
            "owner": "y-select",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "memory-y-select",
          "source": {
            "owner": "interface-input-inm",
            "pin": "0"
          },
          "target": {
            "owner": "y-select",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-bit-y-select",
          "source": {
            "owner": "signals",
            "pin": "a"
          },
          "target": {
            "owner": "y-select",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "d-alu",
          "source": {
            "owner": "d-register",
            "pin": "out"
          },
          "target": {
            "owner": "alu",
            "pin": "x"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "y-alu",
          "source": {
            "owner": "y-select",
            "pin": "out"
          },
          "target": {
            "owner": "alu",
            "pin": "y"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-control-zx",
          "source": {
            "owner": "alu-control",
            "pin": "zx"
          },
          "target": {
            "owner": "alu",
            "pin": "zx"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-control-nx",
          "source": {
            "owner": "alu-control",
            "pin": "nx"
          },
          "target": {
            "owner": "alu",
            "pin": "nx"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-control-zy",
          "source": {
            "owner": "alu-control",
            "pin": "zy"
          },
          "target": {
            "owner": "alu",
            "pin": "zy"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-control-ny",
          "source": {
            "owner": "alu-control",
            "pin": "ny"
          },
          "target": {
            "owner": "alu",
            "pin": "ny"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-control-f",
          "source": {
            "owner": "alu-control",
            "pin": "f"
          },
          "target": {
            "owner": "alu",
            "pin": "f"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-control-no",
          "source": {
            "owner": "alu-control",
            "pin": "no"
          },
          "target": {
            "owner": "alu",
            "pin": "no"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-d-register",
          "source": {
            "owner": "alu",
            "pin": "out"
          },
          "target": {
            "owner": "d-register",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-d-register",
          "source": {
            "owner": "write-control",
            "pin": "loadD"
          },
          "target": {
            "owner": "d-register",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-d-register",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "d-register",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "alu-out-m",
          "source": {
            "owner": "alu",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-outm",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "write-m",
          "source": {
            "owner": "write-control",
            "pin": "writeM"
          },
          "target": {
            "owner": "interface-output-writem",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "address-m",
          "source": {
            "owner": "a-register",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-addressm",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-zr",
          "source": {
            "owner": "alu",
            "pin": "zr"
          },
          "target": {
            "owner": "jump-control",
            "pin": "zr"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-ng",
          "source": {
            "owner": "alu",
            "pin": "ng"
          },
          "target": {
            "owner": "jump-control",
            "pin": "ng"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-not",
          "source": {
            "owner": "jump-control",
            "pin": "jump"
          },
          "target": {
            "owner": "not-jump",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc-in",
          "source": {
            "owner": "alu",
            "pin": "out"
          },
          "target": {
            "owner": "pc",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc-load",
          "source": {
            "owner": "jump-control",
            "pin": "jump"
          },
          "target": {
            "owner": "pc",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc-inc",
          "source": {
            "owner": "not-jump",
            "pin": "1"
          },
          "target": {
            "owner": "pc",
            "pin": "inc"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc-reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "pc",
            "pin": "reset"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc-clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "pc",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "pc-out",
          "source": {
            "owner": "pc",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-pc",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-cpu",
          "type": "text",
          "text": "A composed Hack CPU: instruction fields drive the ALU, registers, write enables, jump logic, and program counter.",
          "position": {
            "x": -240,
            "y": -8570
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "inM",
            "instanceId": "interface-input-inm",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "instruction",
            "instanceId": "interface-input-instruction",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "outM",
            "instanceId": "interface-output-outm",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "writeM",
            "instanceId": "interface-output-writem",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "addressM",
            "instanceId": "interface-output-addressm",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "pc",
            "instanceId": "interface-output-pc",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -19330,
          "y": -8500,
          "w": 38660,
          "h": 17000
        }
      }
    },
    "N2T D REGISTER": {
      "id": "chip-n2t-d-register",
      "name": "N2T D REGISTER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#9b8653",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -1320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -1320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -1320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -1220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -1220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -1220,
            "y": 120
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "register",
          "name": "N2T REGISTER",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "register",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-d-register",
          "type": "text",
          "text": "The D register stores general-purpose computation results.",
          "position": {
            "x": -240,
            "y": -4290
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1320,
          "y": -4220,
          "w": 2640,
          "h": 8440
        }
      }
    },
    "N2T DMUX": {
      "id": "chip-n2t-dmux",
      "name": "N2T DMUX",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel",
          "name": "SEL",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "output",
          "x": 340,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "output",
          "x": 340,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": -60
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 60
          },
          "rotation": 0,
          "label": "SEL",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-a",
          "name": "OUT-1",
          "position": {
            "x": 240,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-b",
          "name": "OUT-1",
          "position": {
            "x": 240,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "not-sel",
          "name": "NOT",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "left",
          "name": "AND",
          "position": {
            "x": 80,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "right",
          "name": "AND",
          "position": {
            "x": 80,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "sel-not",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "not-sel",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in-left",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "left",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "not-left",
          "source": {
            "owner": "not-sel",
            "pin": "1"
          },
          "target": {
            "owner": "left",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in-right",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "right",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-right",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "right",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "left-out",
          "source": {
            "owner": "left",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "right-out",
          "source": {
            "owner": "right",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-dmux",
          "type": "text",
          "text": "The input is routed to exactly one output according to SEL.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel",
            "instanceId": "interface-input-sel",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "a",
            "instanceId": "interface-output-a",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "b",
            "instanceId": "interface-output-b",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -340,
          "y": -140,
          "w": 680,
          "h": 280
        }
      }
    },
    "N2T DMUX16": {
      "id": "chip-n2t-dmux16",
      "name": "N2T DMUX16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -760,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel",
          "name": "SEL",
          "bits": 1,
          "direction": "input",
          "x": -760,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "output",
          "x": 760,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "output",
          "x": 760,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -660,
            "y": -60
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel",
          "name": "IN-1",
          "position": {
            "x": -660,
            "y": 60
          },
          "rotation": 0,
          "label": "SEL",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-a",
          "name": "OUT-16",
          "position": {
            "x": 660,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-b",
          "name": "OUT-16",
          "position": {
            "x": 660,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "16-1BIT",
          "position": {
            "x": -470,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge-a",
          "name": "1-16BIT",
          "position": {
            "x": 470,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge-b",
          "name": "1-16BIT",
          "position": {
            "x": 470,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-0",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -2400
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-1",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -2080
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-2",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -1760
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-3",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -1440
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-4",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -1120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-5",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -800
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-6",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -480
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-7",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": -160
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-8",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 160
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-9",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 480
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-10",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 800
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-11",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 1120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-12",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 1440
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-13",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 1760
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-14",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 2080
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "demux-15",
          "name": "N2T DMUX",
          "position": {
            "x": 0,
            "y": 2400
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "source",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-0",
          "source": {
            "owner": "split",
            "pin": "16"
          },
          "target": {
            "owner": "demux-0",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-0",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-0",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-0",
          "source": {
            "owner": "demux-0",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-0",
          "source": {
            "owner": "demux-0",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-1",
          "source": {
            "owner": "split",
            "pin": "15"
          },
          "target": {
            "owner": "demux-1",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-1",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-1",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-1",
          "source": {
            "owner": "demux-1",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-1",
          "source": {
            "owner": "demux-1",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-2",
          "source": {
            "owner": "split",
            "pin": "14"
          },
          "target": {
            "owner": "demux-2",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-2",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-2",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-2",
          "source": {
            "owner": "demux-2",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-2",
          "source": {
            "owner": "demux-2",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-3",
          "source": {
            "owner": "split",
            "pin": "13"
          },
          "target": {
            "owner": "demux-3",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-3",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-3",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-3",
          "source": {
            "owner": "demux-3",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-3",
          "source": {
            "owner": "demux-3",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-4",
          "source": {
            "owner": "split",
            "pin": "12"
          },
          "target": {
            "owner": "demux-4",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-4",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-4",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-4",
          "source": {
            "owner": "demux-4",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-4",
          "source": {
            "owner": "demux-4",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-5",
          "source": {
            "owner": "split",
            "pin": "11"
          },
          "target": {
            "owner": "demux-5",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-5",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-5",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-5",
          "source": {
            "owner": "demux-5",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-5",
          "source": {
            "owner": "demux-5",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-6",
          "source": {
            "owner": "split",
            "pin": "10"
          },
          "target": {
            "owner": "demux-6",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-6",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-6",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-6",
          "source": {
            "owner": "demux-6",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-6",
          "source": {
            "owner": "demux-6",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-7",
          "source": {
            "owner": "split",
            "pin": "9"
          },
          "target": {
            "owner": "demux-7",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-7",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-7",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-7",
          "source": {
            "owner": "demux-7",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-7",
          "source": {
            "owner": "demux-7",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-8",
          "source": {
            "owner": "split",
            "pin": "8"
          },
          "target": {
            "owner": "demux-8",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-8",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-8",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-8",
          "source": {
            "owner": "demux-8",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-8",
          "source": {
            "owner": "demux-8",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-9",
          "source": {
            "owner": "split",
            "pin": "7"
          },
          "target": {
            "owner": "demux-9",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-9",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-9",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-9",
          "source": {
            "owner": "demux-9",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-9",
          "source": {
            "owner": "demux-9",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-10",
          "source": {
            "owner": "split",
            "pin": "6"
          },
          "target": {
            "owner": "demux-10",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-10",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-10",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-10",
          "source": {
            "owner": "demux-10",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-10",
          "source": {
            "owner": "demux-10",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-11",
          "source": {
            "owner": "split",
            "pin": "5"
          },
          "target": {
            "owner": "demux-11",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-11",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-11",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-11",
          "source": {
            "owner": "demux-11",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-11",
          "source": {
            "owner": "demux-11",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-12",
          "source": {
            "owner": "split",
            "pin": "4"
          },
          "target": {
            "owner": "demux-12",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-12",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-12",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-12",
          "source": {
            "owner": "demux-12",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-12",
          "source": {
            "owner": "demux-12",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-13",
          "source": {
            "owner": "split",
            "pin": "3"
          },
          "target": {
            "owner": "demux-13",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-13",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-13",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-13",
          "source": {
            "owner": "demux-13",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-13",
          "source": {
            "owner": "demux-13",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-14",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "demux-14",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-14",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-14",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-14",
          "source": {
            "owner": "demux-14",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-14",
          "source": {
            "owner": "demux-14",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-15",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "demux-15",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-15",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "demux-15",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-15",
          "source": {
            "owner": "demux-15",
            "pin": "a"
          },
          "target": {
            "owner": "merge-a",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-15",
          "source": {
            "owner": "demux-15",
            "pin": "b"
          },
          "target": {
            "owner": "merge-b",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out-a",
          "source": {
            "owner": "merge-a",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out-b",
          "source": {
            "owner": "merge-b",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-dmux16",
          "type": "text",
          "text": "Sixteen one-bit demultiplexers distribute one word to one of two 16-bit lanes.",
          "position": {
            "x": -240,
            "y": -2650
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel",
            "instanceId": "interface-input-sel",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "a",
            "instanceId": "interface-output-a",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "b",
            "instanceId": "interface-output-b",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -760,
          "y": -2580,
          "w": 1520,
          "h": 5160
        }
      }
    },
    "N2T DMUX4WAY": {
      "id": "chip-n2t-dmux4way",
      "name": "N2T DMUX4WAY",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 1,
          "direction": "input",
          "x": -900,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel0",
          "name": "SEL 0",
          "bits": 1,
          "direction": "input",
          "x": -900,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel1",
          "name": "SEL 1",
          "bits": 1,
          "direction": "input",
          "x": -900,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "output",
          "x": 900,
          "y": -180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "output",
          "x": 900,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "c",
          "name": "C",
          "bits": 1,
          "direction": "output",
          "x": 900,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "d",
          "name": "D",
          "bits": 1,
          "direction": "output",
          "x": 900,
          "y": 180,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-1",
          "position": {
            "x": -800,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel0",
          "name": "IN-1",
          "position": {
            "x": -800,
            "y": 0
          },
          "rotation": 0,
          "label": "SEL 0",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel0",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel1",
          "name": "IN-1",
          "position": {
            "x": -800,
            "y": 120
          },
          "rotation": 0,
          "label": "SEL 1",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel1",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-a",
          "name": "OUT-1",
          "position": {
            "x": 800,
            "y": -180
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-b",
          "name": "OUT-1",
          "position": {
            "x": 800,
            "y": -60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-c",
          "name": "OUT-1",
          "position": {
            "x": 800,
            "y": 60
          },
          "rotation": 0,
          "label": "C",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "c",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-d",
          "name": "OUT-1",
          "position": {
            "x": 800,
            "y": 180
          },
          "rotation": 0,
          "label": "D",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "d",
          "outputPinColours": {}
        },
        {
          "id": "first",
          "name": "N2T DMUX",
          "position": {
            "x": -360,
            "y": -160
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "second",
          "name": "N2T DMUX",
          "position": {
            "x": -360,
            "y": 160
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "low",
          "name": "N2T DMUX",
          "position": {
            "x": 360,
            "y": -160
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "high",
          "name": "N2T DMUX",
          "position": {
            "x": 360,
            "y": 160
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel1-first",
          "source": {
            "owner": "interface-input-sel1",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "first-low",
          "source": {
            "owner": "first",
            "pin": "a"
          },
          "target": {
            "owner": "low",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "first-high",
          "source": {
            "owner": "first",
            "pin": "b"
          },
          "target": {
            "owner": "high",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-low",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "low",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-high",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "high",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a",
          "source": {
            "owner": "low",
            "pin": "a"
          },
          "target": {
            "owner": "interface-output-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "low",
            "pin": "b"
          },
          "target": {
            "owner": "interface-output-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "c",
          "source": {
            "owner": "high",
            "pin": "a"
          },
          "target": {
            "owner": "interface-output-c",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "d",
          "source": {
            "owner": "high",
            "pin": "b"
          },
          "target": {
            "owner": "interface-output-d",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-dmux4way",
          "type": "text",
          "text": "A decoder tree: SEL 1 selects a pair, then SEL 0 selects inside the pair.",
          "position": {
            "x": -240,
            "y": -410
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel0",
            "instanceId": "interface-input-sel0",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel1",
            "instanceId": "interface-input-sel1",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "a",
            "instanceId": "interface-output-a",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "b",
            "instanceId": "interface-output-b",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "c",
            "instanceId": "interface-output-c",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "d",
            "instanceId": "interface-output-d",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -900,
          "y": -340,
          "w": 1800,
          "h": 680
        }
      }
    },
    "N2T DMUX8WAY": {
      "id": "chip-n2t-dmux8way",
      "name": "N2T DMUX8WAY",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 1,
          "direction": "input",
          "x": -1460,
          "y": -180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel0",
          "name": "SEL 0",
          "bits": 1,
          "direction": "input",
          "x": -1460,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel1",
          "name": "SEL 1",
          "bits": 1,
          "direction": "input",
          "x": -1460,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel2",
          "name": "SEL 2",
          "bits": 1,
          "direction": "input",
          "x": -1460,
          "y": 180,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": -420,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": -300,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "c",
          "name": "C",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": -180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "d",
          "name": "D",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "e",
          "name": "E",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "f",
          "name": "F",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": 180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "g",
          "name": "G",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": 300,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "h",
          "name": "H",
          "bits": 1,
          "direction": "output",
          "x": 1460,
          "y": 420,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-1",
          "position": {
            "x": -1360,
            "y": -180
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel0",
          "name": "IN-1",
          "position": {
            "x": -1360,
            "y": -60
          },
          "rotation": 0,
          "label": "SEL 0",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel0",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel1",
          "name": "IN-1",
          "position": {
            "x": -1360,
            "y": 60
          },
          "rotation": 0,
          "label": "SEL 1",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel1",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel2",
          "name": "IN-1",
          "position": {
            "x": -1360,
            "y": 180
          },
          "rotation": 0,
          "label": "SEL 2",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel2",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-a",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": -420
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-b",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": -300
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-c",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": -180
          },
          "rotation": 0,
          "label": "C",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "c",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-d",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": -60
          },
          "rotation": 0,
          "label": "D",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "d",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-e",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": 60
          },
          "rotation": 0,
          "label": "E",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "e",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-f",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": 180
          },
          "rotation": 0,
          "label": "F",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "f",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-g",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": 300
          },
          "rotation": 0,
          "label": "G",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "g",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-h",
          "name": "OUT-1",
          "position": {
            "x": 1360,
            "y": 420
          },
          "rotation": 0,
          "label": "H",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "h",
          "outputPinColours": {}
        },
        {
          "id": "first",
          "name": "N2T DMUX",
          "position": {
            "x": -920,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "group-a",
          "name": "N2T DMUX4WAY",
          "position": {
            "x": 360,
            "y": -360
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "group-b",
          "name": "N2T DMUX4WAY",
          "position": {
            "x": 360,
            "y": 360
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel2-first",
          "source": {
            "owner": "interface-input-sel2",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "first-a",
          "source": {
            "owner": "first",
            "pin": "a"
          },
          "target": {
            "owner": "group-a",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "first-b",
          "source": {
            "owner": "first",
            "pin": "b"
          },
          "target": {
            "owner": "group-b",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-0",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "group-a",
            "pin": "sel0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel1-0",
          "source": {
            "owner": "interface-input-sel1",
            "pin": "0"
          },
          "target": {
            "owner": "group-a",
            "pin": "sel1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-1",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "group-b",
            "pin": "sel0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel1-1",
          "source": {
            "owner": "interface-input-sel1",
            "pin": "0"
          },
          "target": {
            "owner": "group-b",
            "pin": "sel1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-a-a",
          "source": {
            "owner": "group-a",
            "pin": "a"
          },
          "target": {
            "owner": "interface-output-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-a-b",
          "source": {
            "owner": "group-a",
            "pin": "b"
          },
          "target": {
            "owner": "interface-output-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-a-c",
          "source": {
            "owner": "group-a",
            "pin": "c"
          },
          "target": {
            "owner": "interface-output-c",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-a-d",
          "source": {
            "owner": "group-a",
            "pin": "d"
          },
          "target": {
            "owner": "interface-output-d",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-b-e",
          "source": {
            "owner": "group-b",
            "pin": "a"
          },
          "target": {
            "owner": "interface-output-e",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-b-f",
          "source": {
            "owner": "group-b",
            "pin": "b"
          },
          "target": {
            "owner": "interface-output-f",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-b-g",
          "source": {
            "owner": "group-b",
            "pin": "c"
          },
          "target": {
            "owner": "interface-output-g",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "group-b-h",
          "source": {
            "owner": "group-b",
            "pin": "d"
          },
          "target": {
            "owner": "interface-output-h",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-dmux8way",
          "type": "text",
          "text": "An 8-way decoder composed from two stages of one-bit and four-way routing.",
          "position": {
            "x": -240,
            "y": -810
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel0",
            "instanceId": "interface-input-sel0",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel1",
            "instanceId": "interface-input-sel1",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel2",
            "instanceId": "interface-input-sel2",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "a",
            "instanceId": "interface-output-a",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "b",
            "instanceId": "interface-output-b",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "c",
            "instanceId": "interface-output-c",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "d",
            "instanceId": "interface-output-d",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "e",
            "instanceId": "interface-output-e",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "f",
            "instanceId": "interface-output-f",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "g",
            "instanceId": "interface-output-g",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "h",
            "instanceId": "interface-output-h",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1460,
          "y": -740,
          "w": 2920,
          "h": 1480
        }
      }
    },
    "N2T FULL ADDER": {
      "id": "chip-n2t-full-adder",
      "name": "N2T FULL ADDER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -820,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -820,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "cin",
          "name": "CIN",
          "bits": 1,
          "direction": "input",
          "x": -820,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "sum",
          "name": "SUM",
          "bits": 1,
          "direction": "output",
          "x": 820,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "carry",
          "name": "CARRY",
          "bits": 1,
          "direction": "output",
          "x": 820,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -720,
            "y": -120
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -720,
            "y": 0
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-cin",
          "name": "IN-1",
          "position": {
            "x": -720,
            "y": 120
          },
          "rotation": 0,
          "label": "CIN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cin",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-sum",
          "name": "OUT-1",
          "position": {
            "x": 720,
            "y": -60
          },
          "rotation": 0,
          "label": "SUM",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sum",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-carry",
          "name": "OUT-1",
          "position": {
            "x": 720,
            "y": 60
          },
          "rotation": 0,
          "label": "CARRY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "carry",
          "outputPinColours": {}
        },
        {
          "id": "first",
          "name": "N2T HALF ADDER",
          "position": {
            "x": -360,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "second",
          "name": "N2T HALF ADDER",
          "position": {
            "x": 200,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or",
          "name": "OR",
          "position": {
            "x": 560,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "first-sum",
          "source": {
            "owner": "first",
            "pin": "sum"
          },
          "target": {
            "owner": "second",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cin",
          "source": {
            "owner": "interface-input-cin",
            "pin": "0"
          },
          "target": {
            "owner": "second",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "first-carry",
          "source": {
            "owner": "first",
            "pin": "carry"
          },
          "target": {
            "owner": "or",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "second-carry",
          "source": {
            "owner": "second",
            "pin": "carry"
          },
          "target": {
            "owner": "or",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum",
          "source": {
            "owner": "second",
            "pin": "sum"
          },
          "target": {
            "owner": "interface-output-sum",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry",
          "source": {
            "owner": "or",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-carry",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-full-adder",
          "type": "text",
          "text": "Two half adders plus OR combine the carry paths.",
          "position": {
            "x": -240,
            "y": -270
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "cin",
            "instanceId": "interface-input-cin",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "sum",
            "instanceId": "interface-output-sum",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "carry",
            "instanceId": "interface-output-carry",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -820,
          "y": -200,
          "w": 1640,
          "h": 400
        }
      }
    },
    "N2T HALF ADDER": {
      "id": "chip-n2t-half-adder",
      "name": "N2T HALF ADDER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -260,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -260,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "sum",
          "name": "SUM",
          "bits": 1,
          "direction": "output",
          "x": 260,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "carry",
          "name": "CARRY",
          "bits": 1,
          "direction": "output",
          "x": 260,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -160,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -160,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-sum",
          "name": "OUT-1",
          "position": {
            "x": 160,
            "y": -60
          },
          "rotation": 0,
          "label": "SUM",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sum",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-carry",
          "name": "OUT-1",
          "position": {
            "x": 160,
            "y": 60
          },
          "rotation": 0,
          "label": "CARRY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "carry",
          "outputPinColours": {}
        },
        {
          "id": "xor",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "and",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-xor",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "xor",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-xor",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "xor",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-and",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "and",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-and",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "and",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sum",
          "source": {
            "owner": "xor",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-sum",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "carry",
          "source": {
            "owner": "and",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-carry",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-half-adder",
          "type": "text",
          "text": "SUM is XOR; CARRY is AND.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "sum",
            "instanceId": "interface-output-sum",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "carry",
            "instanceId": "interface-output-carry",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -260,
          "y": -140,
          "w": 520,
          "h": 280
        }
      }
    },
    "N2T INC16": {
      "id": "chip-n2t-inc16",
      "name": "N2T INC16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -1520,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1520,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -1420,
            "y": 0
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1420,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0-16",
          "position": {
            "x": -1260,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "one",
          "name": "CONST-1",
          "position": {
            "x": -1260,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "add",
          "name": "N2T ADD16",
          "position": {
            "x": 80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "add",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-b",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "add",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "one-cin",
          "source": {
            "owner": "one",
            "pin": "0"
          },
          "target": {
            "owner": "add",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "add",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-inc16",
          "type": "text",
          "text": "Increment is addition by one, with a 16-bit zero as the second operand.",
          "position": {
            "x": -240,
            "y": -3650
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1520,
          "y": -3580,
          "w": 3040,
          "h": 7160
        }
      }
    },
    "N2T INSTRUCTION DECODER": {
      "id": "chip-n2t-instruction-decoder",
      "name": "N2T INSTRUCTION DECODER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 700,
        "y": 560
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "instruction",
          "name": "INSTRUCTION",
          "bits": 16,
          "direction": "input",
          "x": -290,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "isC",
          "name": "IS C",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": -780,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": -660,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "zx",
          "name": "ZX",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": -540,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "nx",
          "name": "NX",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": -420,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "zy",
          "name": "ZY",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": -300,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "ny",
          "name": "NY",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": -180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "f",
          "name": "F",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "no",
          "name": "NO",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "destA",
          "name": "DEST A",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": 180,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "destD",
          "name": "DEST D",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": 300,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "destM",
          "name": "DEST M",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": 420,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "jump2",
          "name": "J2",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": 540,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "jump1",
          "name": "J1",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": 660,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "jump0",
          "name": "J0",
          "bits": 1,
          "direction": "output",
          "x": 290,
          "y": 780,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-instruction",
          "name": "IN-16",
          "position": {
            "x": -190,
            "y": 0
          },
          "rotation": 0,
          "label": "INSTRUCTION",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "instruction",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-isc",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": -780
          },
          "rotation": 0,
          "label": "IS C",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "isC",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-a",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": -660
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-zx",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": -540
          },
          "rotation": 0,
          "label": "ZX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zx",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-nx",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": -420
          },
          "rotation": 0,
          "label": "NX",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "nx",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-zy",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": -300
          },
          "rotation": 0,
          "label": "ZY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zy",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-ny",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": -180
          },
          "rotation": 0,
          "label": "NY",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "ny",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-f",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": -60
          },
          "rotation": 0,
          "label": "F",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "f",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-no",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": 60
          },
          "rotation": 0,
          "label": "NO",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "no",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-desta",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": 180
          },
          "rotation": 0,
          "label": "DEST A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "destA",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-destd",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": 300
          },
          "rotation": 0,
          "label": "DEST D",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "destD",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-destm",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": 420
          },
          "rotation": 0,
          "label": "DEST M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "destM",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-jump2",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": 540
          },
          "rotation": 0,
          "label": "J2",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "jump2",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-jump1",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": 660
          },
          "rotation": 0,
          "label": "J1",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "jump1",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-jump0",
          "name": "OUT-1",
          "position": {
            "x": 190,
            "y": 780
          },
          "rotation": 0,
          "label": "J0",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "jump0",
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "16-1BIT",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-isC",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-isc",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-a",
          "source": {
            "owner": "split",
            "pin": "4"
          },
          "target": {
            "owner": "interface-output-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-zx",
          "source": {
            "owner": "split",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-zx",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-nx",
          "source": {
            "owner": "split",
            "pin": "6"
          },
          "target": {
            "owner": "interface-output-nx",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-zy",
          "source": {
            "owner": "split",
            "pin": "7"
          },
          "target": {
            "owner": "interface-output-zy",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-ny",
          "source": {
            "owner": "split",
            "pin": "8"
          },
          "target": {
            "owner": "interface-output-ny",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-f",
          "source": {
            "owner": "split",
            "pin": "9"
          },
          "target": {
            "owner": "interface-output-f",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-no",
          "source": {
            "owner": "split",
            "pin": "10"
          },
          "target": {
            "owner": "interface-output-no",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-destA",
          "source": {
            "owner": "split",
            "pin": "11"
          },
          "target": {
            "owner": "interface-output-desta",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-destD",
          "source": {
            "owner": "split",
            "pin": "12"
          },
          "target": {
            "owner": "interface-output-destd",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-destM",
          "source": {
            "owner": "split",
            "pin": "13"
          },
          "target": {
            "owner": "interface-output-destm",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-jump2",
          "source": {
            "owner": "split",
            "pin": "14"
          },
          "target": {
            "owner": "interface-output-jump2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-jump1",
          "source": {
            "owner": "split",
            "pin": "15"
          },
          "target": {
            "owner": "interface-output-jump1",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "field-jump0",
          "source": {
            "owner": "split",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-jump0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-instruction-decoder",
          "type": "text",
          "text": "The instruction bit positions are surfaced as named control signals for the CPU.",
          "position": {
            "x": -240,
            "y": -930
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "instruction",
            "instanceId": "interface-input-instruction",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "isC",
            "instanceId": "interface-output-isc",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "a",
            "instanceId": "interface-output-a",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "zx",
            "instanceId": "interface-output-zx",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "nx",
            "instanceId": "interface-output-nx",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "zy",
            "instanceId": "interface-output-zy",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "ny",
            "instanceId": "interface-output-ny",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "f",
            "instanceId": "interface-output-f",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "no",
            "instanceId": "interface-output-no",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "destA",
            "instanceId": "interface-output-desta",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "destD",
            "instanceId": "interface-output-destd",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "destM",
            "instanceId": "interface-output-destm",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "jump2",
            "instanceId": "interface-output-jump2",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "jump1",
            "instanceId": "interface-output-jump1",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "jump0",
            "instanceId": "interface-output-jump0",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -290,
          "y": -860,
          "w": 580,
          "h": 1720
        }
      }
    },
    "N2T INSTRUCTION-REGISTER": {
      "id": "chip-n2t-instruction-register",
      "name": "N2T INSTRUCTION-REGISTER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -1520,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -1520,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -1520,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1520,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -1420,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -1420,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -1420,
            "y": 120
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1420,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "register",
          "name": "N2T REGISTER16",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "register",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-instruction-register",
          "type": "text",
          "text": "A clocked instruction latch for laboratories that want to separate fetch from decode.",
          "position": {
            "x": -240,
            "y": -4330
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1520,
          "y": -4260,
          "w": 3040,
          "h": 8520
        }
      }
    },
    "N2T INSTRUCTION-ROM": {
      "id": "chip-n2t-instruction-rom",
      "name": "N2T INSTRUCTION-ROM",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 15,
          "direction": "input",
          "x": -530,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 530,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-16",
          "position": {
            "x": -430,
            "y": 0
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 430,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "rom",
          "name": "N2T ROM32K",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "rom",
            "pin": "address"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "rom",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-instruction-rom",
          "type": "text",
          "text": "The instruction-memory boundary: the program counter addresses a read-only 16-bit word.",
          "position": {
            "x": -240,
            "y": -200
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -530,
          "y": -130,
          "w": 1060,
          "h": 260
        }
      }
    },
    "N2T JUMP-CONTROL": {
      "id": "chip-n2t-jump-control",
      "name": "N2T JUMP-CONTROL",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 900,
        "y": 620
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "instruction",
          "name": "INSTRUCTION",
          "bits": 16,
          "direction": "input",
          "x": -2810,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "zr",
          "name": "ZR",
          "bits": 1,
          "direction": "input",
          "x": -2810,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "ng",
          "name": "NG",
          "bits": 1,
          "direction": "input",
          "x": -2810,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "jump",
          "name": "JUMP",
          "bits": 1,
          "direction": "output",
          "x": 2810,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-instruction",
          "name": "IN-16",
          "position": {
            "x": -2710,
            "y": -120
          },
          "rotation": 0,
          "label": "INSTRUCTION",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "instruction",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-zr",
          "name": "IN-1",
          "position": {
            "x": -2710,
            "y": 0
          },
          "rotation": 0,
          "label": "ZR",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "zr",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-ng",
          "name": "IN-1",
          "position": {
            "x": -2710,
            "y": 120
          },
          "rotation": 0,
          "label": "NG",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "ng",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-jump",
          "name": "OUT-1",
          "position": {
            "x": 2710,
            "y": 0
          },
          "rotation": 0,
          "label": "JUMP",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "jump",
          "outputPinColours": {}
        },
        {
          "id": "decoder",
          "name": "N2T CONTROL-SIGNAL-DECODER",
          "position": {
            "x": -2040,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-zr",
          "name": "NOT",
          "position": {
            "x": -1370,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-ng",
          "name": "NOT",
          "position": {
            "x": -1370,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "positive",
          "name": "AND",
          "position": {
            "x": -1050,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "non-positive",
          "name": "OR",
          "position": {
            "x": -1050,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "conditions",
          "name": "N2T MUX8WAY",
          "position": {
            "x": 750,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "is-c",
          "name": "AND",
          "position": {
            "x": 2550,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0",
          "position": {
            "x": -1210,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "one",
          "name": "CONST-1",
          "position": {
            "x": -1210,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "decoder",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zr",
          "source": {
            "owner": "interface-input-zr",
            "pin": "0"
          },
          "target": {
            "owner": "not-zr",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ng",
          "source": {
            "owner": "interface-input-ng",
            "pin": "0"
          },
          "target": {
            "owner": "not-ng",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "positive-not-zr",
          "source": {
            "owner": "not-zr",
            "pin": "1"
          },
          "target": {
            "owner": "positive",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "positive-not-ng",
          "source": {
            "owner": "not-ng",
            "pin": "1"
          },
          "target": {
            "owner": "positive",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "non-positive-ng",
          "source": {
            "owner": "interface-input-ng",
            "pin": "0"
          },
          "target": {
            "owner": "non-positive",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "non-positive-zr",
          "source": {
            "owner": "interface-input-zr",
            "pin": "0"
          },
          "target": {
            "owner": "non-positive",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-000",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "conditions",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-001",
          "source": {
            "owner": "positive",
            "pin": "2"
          },
          "target": {
            "owner": "conditions",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-010",
          "source": {
            "owner": "interface-input-zr",
            "pin": "0"
          },
          "target": {
            "owner": "conditions",
            "pin": "c"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-011",
          "source": {
            "owner": "not-ng",
            "pin": "1"
          },
          "target": {
            "owner": "conditions",
            "pin": "d"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-100",
          "source": {
            "owner": "interface-input-ng",
            "pin": "0"
          },
          "target": {
            "owner": "conditions",
            "pin": "e"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-101",
          "source": {
            "owner": "not-zr",
            "pin": "1"
          },
          "target": {
            "owner": "conditions",
            "pin": "f"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-110",
          "source": {
            "owner": "non-positive",
            "pin": "2"
          },
          "target": {
            "owner": "conditions",
            "pin": "g"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump-111",
          "source": {
            "owner": "one",
            "pin": "0"
          },
          "target": {
            "owner": "conditions",
            "pin": "h"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "select-0",
          "source": {
            "owner": "decoder",
            "pin": "jump0"
          },
          "target": {
            "owner": "conditions",
            "pin": "sel0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "select-1",
          "source": {
            "owner": "decoder",
            "pin": "jump1"
          },
          "target": {
            "owner": "conditions",
            "pin": "sel1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "select-2",
          "source": {
            "owner": "decoder",
            "pin": "jump2"
          },
          "target": {
            "owner": "conditions",
            "pin": "sel2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-c",
          "source": {
            "owner": "decoder",
            "pin": "isC"
          },
          "target": {
            "owner": "is-c",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "condition-result",
          "source": {
            "owner": "conditions",
            "pin": "out"
          },
          "target": {
            "owner": "is-c",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "jump",
          "source": {
            "owner": "is-c",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-jump",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-jump-control",
          "type": "text",
          "text": "Jump bits select one of the eight Hack conditions; A-instructions are forced not to jump.",
          "position": {
            "x": -240,
            "y": -1090
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "instruction",
            "instanceId": "interface-input-instruction",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "zr",
            "instanceId": "interface-input-zr",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "ng",
            "instanceId": "interface-input-ng",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "jump",
            "instanceId": "interface-output-jump",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -2810,
          "y": -1020,
          "w": 5620,
          "h": 2040
        }
      }
    },
    "N2T KEYBOARD": {
      "id": "chip-n2t-keyboard",
      "name": "N2T KEYBOARD",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 200,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 100,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "keyboard",
          "name": "KEYBOARD",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "out",
          "source": {
            "owner": "keyboard",
            "pin": "0"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-keyboard",
          "type": "text",
          "text": "The keyboard boundary exposes a 16-bit key code to the computer.",
          "position": {
            "x": -240,
            "y": -150
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -200,
          "y": -80,
          "w": 400,
          "h": 160
        }
      }
    },
    "N2T MEMORY-ADDRESS-DECODER": {
      "id": "chip-n2t-memory-address-decoder",
      "name": "N2T MEMORY-ADDRESS-DECODER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 1000,
        "y": 700
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 15,
          "direction": "input",
          "x": -1250,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "ram",
          "name": "RAM",
          "bits": 1,
          "direction": "output",
          "x": 1250,
          "y": -120,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "screen",
          "name": "SCREEN",
          "bits": 1,
          "direction": "output",
          "x": 1250,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "keyboard",
          "name": "KEYBOARD",
          "bits": 1,
          "direction": "output",
          "x": 1250,
          "y": 120,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-16",
          "position": {
            "x": -1150,
            "y": 0
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-ram",
          "name": "OUT-1",
          "position": {
            "x": 1150,
            "y": -120
          },
          "rotation": 0,
          "label": "RAM",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "ram",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-screen",
          "name": "OUT-1",
          "position": {
            "x": 1150,
            "y": 0
          },
          "rotation": 0,
          "label": "SCREEN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "screen",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-keyboard",
          "name": "OUT-1",
          "position": {
            "x": 1150,
            "y": 120
          },
          "rotation": 0,
          "label": "KEYBOARD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "keyboard",
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "16-1BIT",
          "position": {
            "x": -960,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-ram-bit",
          "name": "NOT",
          "position": {
            "x": -770,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-screen-bit",
          "name": "NOT",
          "position": {
            "x": -770,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "screen",
          "name": "AND",
          "position": {
            "x": -290,
            "y": -180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "keyboard-base",
          "name": "AND",
          "position": {
            "x": -290,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "keyboard",
          "name": "AND",
          "position": {
            "x": 190,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-zero",
          "name": "NOT",
          "position": {
            "x": -290,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-1",
          "name": "OR",
          "position": {
            "x": -770,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-2",
          "name": "OR",
          "position": {
            "x": -610,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-3",
          "name": "OR",
          "position": {
            "x": -450,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-4",
          "name": "OR",
          "position": {
            "x": -290,
            "y": 180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-5",
          "name": "OR",
          "position": {
            "x": -130,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-6",
          "name": "OR",
          "position": {
            "x": 30,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-7",
          "name": "OR",
          "position": {
            "x": 190,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-8",
          "name": "OR",
          "position": {
            "x": 350,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-9",
          "name": "OR",
          "position": {
            "x": 510,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-10",
          "name": "OR",
          "position": {
            "x": 670,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-11",
          "name": "OR",
          "position": {
            "x": 830,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "lower-address-or-12",
          "name": "OR",
          "position": {
            "x": 990,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "lower-address-a-1",
          "source": {
            "owner": "split",
            "pin": "16"
          },
          "target": {
            "owner": "lower-address-or-1",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-1",
          "source": {
            "owner": "split",
            "pin": "15"
          },
          "target": {
            "owner": "lower-address-or-1",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-2",
          "source": {
            "owner": "lower-address-or-1",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-2",
          "source": {
            "owner": "split",
            "pin": "14"
          },
          "target": {
            "owner": "lower-address-or-2",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-3",
          "source": {
            "owner": "lower-address-or-2",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-3",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-3",
          "source": {
            "owner": "split",
            "pin": "13"
          },
          "target": {
            "owner": "lower-address-or-3",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-4",
          "source": {
            "owner": "lower-address-or-3",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-4",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-4",
          "source": {
            "owner": "split",
            "pin": "12"
          },
          "target": {
            "owner": "lower-address-or-4",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-5",
          "source": {
            "owner": "lower-address-or-4",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-5",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-5",
          "source": {
            "owner": "split",
            "pin": "11"
          },
          "target": {
            "owner": "lower-address-or-5",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-6",
          "source": {
            "owner": "lower-address-or-5",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-6",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-6",
          "source": {
            "owner": "split",
            "pin": "10"
          },
          "target": {
            "owner": "lower-address-or-6",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-7",
          "source": {
            "owner": "lower-address-or-6",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-7",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-7",
          "source": {
            "owner": "split",
            "pin": "9"
          },
          "target": {
            "owner": "lower-address-or-7",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-8",
          "source": {
            "owner": "lower-address-or-7",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-8",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-8",
          "source": {
            "owner": "split",
            "pin": "8"
          },
          "target": {
            "owner": "lower-address-or-8",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-9",
          "source": {
            "owner": "lower-address-or-8",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-9",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-9",
          "source": {
            "owner": "split",
            "pin": "7"
          },
          "target": {
            "owner": "lower-address-or-9",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-10",
          "source": {
            "owner": "lower-address-or-9",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-10",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-10",
          "source": {
            "owner": "split",
            "pin": "6"
          },
          "target": {
            "owner": "lower-address-or-10",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-11",
          "source": {
            "owner": "lower-address-or-10",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-11",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-11",
          "source": {
            "owner": "split",
            "pin": "5"
          },
          "target": {
            "owner": "lower-address-or-11",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-a-12",
          "source": {
            "owner": "lower-address-or-11",
            "pin": "2"
          },
          "target": {
            "owner": "lower-address-or-12",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address-b-12",
          "source": {
            "owner": "split",
            "pin": "4"
          },
          "target": {
            "owner": "lower-address-or-12",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram-bit",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "not-ram-bit",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen-bit",
          "source": {
            "owner": "split",
            "pin": "3"
          },
          "target": {
            "owner": "not-screen-bit",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "ram",
          "source": {
            "owner": "not-ram-bit",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-ram",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen-high",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "screen",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen-low",
          "source": {
            "owner": "not-screen-bit",
            "pin": "1"
          },
          "target": {
            "owner": "screen",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "screen",
          "source": {
            "owner": "screen",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-screen",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard-high",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "keyboard-base",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard-mid",
          "source": {
            "owner": "split",
            "pin": "3"
          },
          "target": {
            "owner": "keyboard-base",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard-base-zero",
          "source": {
            "owner": "keyboard-base",
            "pin": "2"
          },
          "target": {
            "owner": "keyboard",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard-lower-zero",
          "source": {
            "owner": "lower-zero",
            "pin": "1"
          },
          "target": {
            "owner": "keyboard",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "lower-address",
          "source": {
            "owner": "lower-address-or-12",
            "pin": "2"
          },
          "target": {
            "owner": "lower-zero",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "keyboard",
          "source": {
            "owner": "keyboard",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-keyboard",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-memory-address-decoder",
          "type": "text",
          "text": "Hack address ranges: bit 14 selects the upper device space, bit 13 separates screen from keyboard, and lower bits identify the keyboard address.",
          "position": {
            "x": -240,
            "y": -330
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "ram",
            "instanceId": "interface-output-ram",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "screen",
            "instanceId": "interface-output-screen",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "keyboard",
            "instanceId": "interface-output-keyboard",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1250,
          "y": -260,
          "w": 2500,
          "h": 520
        }
      }
    },
    "N2T MEMORY": {
      "id": "chip-n2t-memory",
      "name": "N2T MEMORY",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 15,
          "direction": "input",
          "x": -340,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -340,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 340,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-16",
          "position": {
            "x": -240,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -240,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 240,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "MEMORY",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "memory",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-memory",
          "type": "text",
          "text": "The Hack memory boundary: address, data, load, reset, and clock.",
          "position": {
            "x": -240,
            "y": -390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -340,
          "y": -320,
          "w": 680,
          "h": 640
        }
      }
    },
    "N2T MUX": {
      "id": "chip-n2t-mux",
      "name": "N2T MUX",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -420,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -420,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel",
          "name": "SEL",
          "bits": 1,
          "direction": "input",
          "x": -420,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 420,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -320,
            "y": -120
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -320,
            "y": 0
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel",
          "name": "IN-1",
          "position": {
            "x": -320,
            "y": 120
          },
          "rotation": 0,
          "label": "SEL",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 320,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "not-sel",
          "name": "NOT",
          "position": {
            "x": -160,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "left",
          "name": "AND",
          "position": {
            "x": 0,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "right",
          "name": "AND",
          "position": {
            "x": 0,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or",
          "name": "OR",
          "position": {
            "x": 160,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "sel-not",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "not-sel",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "left",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "not-left",
          "source": {
            "owner": "not-sel",
            "pin": "1"
          },
          "target": {
            "owner": "left",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "right",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-right",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "right",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "left-or",
          "source": {
            "owner": "left",
            "pin": "2"
          },
          "target": {
            "owner": "or",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "right-or",
          "source": {
            "owner": "right",
            "pin": "2"
          },
          "target": {
            "owner": "or",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "or",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-mux",
          "type": "text",
          "text": "SEL=0 routes A; SEL=1 routes B.",
          "position": {
            "x": -240,
            "y": -270
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel",
            "instanceId": "interface-input-sel",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -420,
          "y": -200,
          "w": 840,
          "h": 400
        }
      }
    },
    "N2T MUX16": {
      "id": "chip-n2t-mux16",
      "name": "N2T MUX16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "input",
          "x": -840,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "input",
          "x": -840,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel",
          "name": "SEL",
          "bits": 1,
          "direction": "input",
          "x": -840,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 840,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-16",
          "position": {
            "x": -740,
            "y": -120
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-16",
          "position": {
            "x": -740,
            "y": 0
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel",
          "name": "IN-1",
          "position": {
            "x": -740,
            "y": 120
          },
          "rotation": 0,
          "label": "SEL",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 740,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "split-a",
          "name": "16-1BIT",
          "position": {
            "x": -550,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "split-b",
          "name": "16-1BIT",
          "position": {
            "x": -550,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 550,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-0",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -3300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-1",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -2860
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-2",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -2420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-3",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -1980
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-4",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -1540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-5",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -1100
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-6",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-7",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": -220
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-8",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 220
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-9",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-10",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 1100
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-11",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 1540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-12",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 1980
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-13",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 2420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-14",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 2860
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "mux-15",
          "name": "N2T MUX",
          "position": {
            "x": 0,
            "y": 3300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-source",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "split-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-source",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "split-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-0",
          "source": {
            "owner": "split-a",
            "pin": "16"
          },
          "target": {
            "owner": "mux-0",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-0",
          "source": {
            "owner": "split-b",
            "pin": "16"
          },
          "target": {
            "owner": "mux-0",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-0",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-0",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-0",
          "source": {
            "owner": "mux-0",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-1",
          "source": {
            "owner": "split-a",
            "pin": "15"
          },
          "target": {
            "owner": "mux-1",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-1",
          "source": {
            "owner": "split-b",
            "pin": "15"
          },
          "target": {
            "owner": "mux-1",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-1",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-1",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-1",
          "source": {
            "owner": "mux-1",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-2",
          "source": {
            "owner": "split-a",
            "pin": "14"
          },
          "target": {
            "owner": "mux-2",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-2",
          "source": {
            "owner": "split-b",
            "pin": "14"
          },
          "target": {
            "owner": "mux-2",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-2",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-2",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-2",
          "source": {
            "owner": "mux-2",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-3",
          "source": {
            "owner": "split-a",
            "pin": "13"
          },
          "target": {
            "owner": "mux-3",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-3",
          "source": {
            "owner": "split-b",
            "pin": "13"
          },
          "target": {
            "owner": "mux-3",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-3",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-3",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-3",
          "source": {
            "owner": "mux-3",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-4",
          "source": {
            "owner": "split-a",
            "pin": "12"
          },
          "target": {
            "owner": "mux-4",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-4",
          "source": {
            "owner": "split-b",
            "pin": "12"
          },
          "target": {
            "owner": "mux-4",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-4",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-4",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-4",
          "source": {
            "owner": "mux-4",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-5",
          "source": {
            "owner": "split-a",
            "pin": "11"
          },
          "target": {
            "owner": "mux-5",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-5",
          "source": {
            "owner": "split-b",
            "pin": "11"
          },
          "target": {
            "owner": "mux-5",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-5",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-5",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-5",
          "source": {
            "owner": "mux-5",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-6",
          "source": {
            "owner": "split-a",
            "pin": "10"
          },
          "target": {
            "owner": "mux-6",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-6",
          "source": {
            "owner": "split-b",
            "pin": "10"
          },
          "target": {
            "owner": "mux-6",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-6",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-6",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-6",
          "source": {
            "owner": "mux-6",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-7",
          "source": {
            "owner": "split-a",
            "pin": "9"
          },
          "target": {
            "owner": "mux-7",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-7",
          "source": {
            "owner": "split-b",
            "pin": "9"
          },
          "target": {
            "owner": "mux-7",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-7",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-7",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-7",
          "source": {
            "owner": "mux-7",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-8",
          "source": {
            "owner": "split-a",
            "pin": "8"
          },
          "target": {
            "owner": "mux-8",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-8",
          "source": {
            "owner": "split-b",
            "pin": "8"
          },
          "target": {
            "owner": "mux-8",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-8",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-8",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-8",
          "source": {
            "owner": "mux-8",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-9",
          "source": {
            "owner": "split-a",
            "pin": "7"
          },
          "target": {
            "owner": "mux-9",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-9",
          "source": {
            "owner": "split-b",
            "pin": "7"
          },
          "target": {
            "owner": "mux-9",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-9",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-9",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-9",
          "source": {
            "owner": "mux-9",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-10",
          "source": {
            "owner": "split-a",
            "pin": "6"
          },
          "target": {
            "owner": "mux-10",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-10",
          "source": {
            "owner": "split-b",
            "pin": "6"
          },
          "target": {
            "owner": "mux-10",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-10",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-10",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-10",
          "source": {
            "owner": "mux-10",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-11",
          "source": {
            "owner": "split-a",
            "pin": "5"
          },
          "target": {
            "owner": "mux-11",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-11",
          "source": {
            "owner": "split-b",
            "pin": "5"
          },
          "target": {
            "owner": "mux-11",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-11",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-11",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-11",
          "source": {
            "owner": "mux-11",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-12",
          "source": {
            "owner": "split-a",
            "pin": "4"
          },
          "target": {
            "owner": "mux-12",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-12",
          "source": {
            "owner": "split-b",
            "pin": "4"
          },
          "target": {
            "owner": "mux-12",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-12",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-12",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-12",
          "source": {
            "owner": "mux-12",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-13",
          "source": {
            "owner": "split-a",
            "pin": "3"
          },
          "target": {
            "owner": "mux-13",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-13",
          "source": {
            "owner": "split-b",
            "pin": "3"
          },
          "target": {
            "owner": "mux-13",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-13",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-13",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-13",
          "source": {
            "owner": "mux-13",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-14",
          "source": {
            "owner": "split-a",
            "pin": "2"
          },
          "target": {
            "owner": "mux-14",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-14",
          "source": {
            "owner": "split-b",
            "pin": "2"
          },
          "target": {
            "owner": "mux-14",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-14",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-14",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-14",
          "source": {
            "owner": "mux-14",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-15",
          "source": {
            "owner": "split-a",
            "pin": "1"
          },
          "target": {
            "owner": "mux-15",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-15",
          "source": {
            "owner": "split-b",
            "pin": "1"
          },
          "target": {
            "owner": "mux-15",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel-15",
          "source": {
            "owner": "interface-input-sel",
            "pin": "0"
          },
          "target": {
            "owner": "mux-15",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-15",
          "source": {
            "owner": "mux-15",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-mux16",
          "type": "text",
          "text": "A sixteen-lane MUX with one shared selection signal.",
          "position": {
            "x": -240,
            "y": -3610
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel",
            "instanceId": "interface-input-sel",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -840,
          "y": -3540,
          "w": 1680,
          "h": 7080
        }
      }
    },
    "N2T MUX4WAY": {
      "id": "chip-n2t-mux4way",
      "name": "N2T MUX4WAY",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -1060,
          "y": -300,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -1060,
          "y": -180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "c",
          "name": "C",
          "bits": 1,
          "direction": "input",
          "x": -1060,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "d",
          "name": "D",
          "bits": 1,
          "direction": "input",
          "x": -1060,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel0",
          "name": "SEL 0",
          "bits": 1,
          "direction": "input",
          "x": -1060,
          "y": 180,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel1",
          "name": "SEL 1",
          "bits": 1,
          "direction": "input",
          "x": -1060,
          "y": 300,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 1060,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -960,
            "y": -300
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -960,
            "y": -180
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-c",
          "name": "IN-1",
          "position": {
            "x": -960,
            "y": -60
          },
          "rotation": 0,
          "label": "C",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "c",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-d",
          "name": "IN-1",
          "position": {
            "x": -960,
            "y": 60
          },
          "rotation": 0,
          "label": "D",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "d",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel0",
          "name": "IN-1",
          "position": {
            "x": -960,
            "y": 180
          },
          "rotation": 0,
          "label": "SEL 0",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel0",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel1",
          "name": "IN-1",
          "position": {
            "x": -960,
            "y": 300
          },
          "rotation": 0,
          "label": "SEL 1",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel1",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 960,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "left",
          "name": "N2T MUX",
          "position": {
            "x": -440,
            "y": -220
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "right",
          "name": "N2T MUX",
          "position": {
            "x": -440,
            "y": 220
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "final",
          "name": "N2T MUX",
          "position": {
            "x": 440,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "left",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "left",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "c",
          "source": {
            "owner": "interface-input-c",
            "pin": "0"
          },
          "target": {
            "owner": "right",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "d",
          "source": {
            "owner": "interface-input-d",
            "pin": "0"
          },
          "target": {
            "owner": "right",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-left",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "left",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-right",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "right",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "left-final",
          "source": {
            "owner": "left",
            "pin": "out"
          },
          "target": {
            "owner": "final",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "right-final",
          "source": {
            "owner": "right",
            "pin": "out"
          },
          "target": {
            "owner": "final",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel1-final",
          "source": {
            "owner": "interface-input-sel1",
            "pin": "0"
          },
          "target": {
            "owner": "final",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "final",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-mux4way",
          "type": "text",
          "text": "A two-level selection tree; SEL 0 chooses inside each pair and SEL 1 chooses the pair.",
          "position": {
            "x": -240,
            "y": -530
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "c",
            "instanceId": "interface-input-c",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "d",
            "instanceId": "interface-input-d",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel0",
            "instanceId": "interface-input-sel0",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel1",
            "instanceId": "interface-input-sel1",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1060,
          "y": -460,
          "w": 2120,
          "h": 920
        }
      }
    },
    "N2T MUX8WAY": {
      "id": "chip-n2t-mux8way",
      "name": "N2T MUX8WAY",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 520
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": -600,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": -480,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "c",
          "name": "C",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": -360,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "d",
          "name": "D",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "e",
          "name": "E",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "f",
          "name": "F",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "g",
          "name": "G",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "h",
          "name": "H",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel0",
          "name": "SEL 0",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": 360,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel1",
          "name": "SEL 1",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": 480,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "sel2",
          "name": "SEL 2",
          "bits": 1,
          "direction": "input",
          "x": -1700,
          "y": 600,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 1700,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": -600
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": -480
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-c",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": -360
          },
          "rotation": 0,
          "label": "C",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "c",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-d",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": -240
          },
          "rotation": 0,
          "label": "D",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "d",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-e",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": -120
          },
          "rotation": 0,
          "label": "E",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "e",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-f",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": 0
          },
          "rotation": 0,
          "label": "F",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "f",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-g",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": 120
          },
          "rotation": 0,
          "label": "G",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "g",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-h",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": 240
          },
          "rotation": 0,
          "label": "H",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "h",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel0",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": 360
          },
          "rotation": 0,
          "label": "SEL 0",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel0",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel1",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": 480
          },
          "rotation": 0,
          "label": "SEL 1",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel1",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-sel2",
          "name": "IN-1",
          "position": {
            "x": -1600,
            "y": 600
          },
          "rotation": 0,
          "label": "SEL 2",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "sel2",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 1600,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "first",
          "name": "N2T MUX4WAY",
          "position": {
            "x": -440,
            "y": -480
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "second",
          "name": "N2T MUX4WAY",
          "position": {
            "x": -440,
            "y": 480
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "final",
          "name": "N2T MUX",
          "position": {
            "x": 1080,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-first",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-first",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "c-first",
          "source": {
            "owner": "interface-input-c",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "c"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "d-first",
          "source": {
            "owner": "interface-input-d",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "d"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "e-second",
          "source": {
            "owner": "interface-input-e",
            "pin": "0"
          },
          "target": {
            "owner": "second",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "f-second",
          "source": {
            "owner": "interface-input-f",
            "pin": "0"
          },
          "target": {
            "owner": "second",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "g-second",
          "source": {
            "owner": "interface-input-g",
            "pin": "0"
          },
          "target": {
            "owner": "second",
            "pin": "c"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "h-second",
          "source": {
            "owner": "interface-input-h",
            "pin": "0"
          },
          "target": {
            "owner": "second",
            "pin": "d"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-0",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "sel0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel1-0",
          "source": {
            "owner": "interface-input-sel1",
            "pin": "0"
          },
          "target": {
            "owner": "first",
            "pin": "sel1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel0-1",
          "source": {
            "owner": "interface-input-sel0",
            "pin": "0"
          },
          "target": {
            "owner": "second",
            "pin": "sel0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel1-1",
          "source": {
            "owner": "interface-input-sel1",
            "pin": "0"
          },
          "target": {
            "owner": "second",
            "pin": "sel1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "first-final",
          "source": {
            "owner": "first",
            "pin": "out"
          },
          "target": {
            "owner": "final",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "second-final",
          "source": {
            "owner": "second",
            "pin": "out"
          },
          "target": {
            "owner": "final",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "sel2-final",
          "source": {
            "owner": "interface-input-sel2",
            "pin": "0"
          },
          "target": {
            "owner": "final",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "final",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-mux8way",
          "type": "text",
          "text": "An 8-way multiplexer composed from two 4-way multiplexers and one final selector.",
          "position": {
            "x": -240,
            "y": -1050
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "c",
            "instanceId": "interface-input-c",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "d",
            "instanceId": "interface-input-d",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "e",
            "instanceId": "interface-input-e",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "f",
            "instanceId": "interface-input-f",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "g",
            "instanceId": "interface-input-g",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "h",
            "instanceId": "interface-input-h",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel0",
            "instanceId": "interface-input-sel0",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel1",
            "instanceId": "interface-input-sel1",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "sel2",
            "instanceId": "interface-input-sel2",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1700,
          "y": -980,
          "w": 3400,
          "h": 1960
        }
      }
    },
    "N2T NAND": {
      "id": "chip-n2t-nand",
      "name": "N2T NAND",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -260,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -260,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 260,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -160,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -160,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 160,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "nand",
          "name": "NAND",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "nand",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-nand",
          "type": "text",
          "text": "The primitive used as the construction starting point for the Nand2Tetris hardware track.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -260,
          "y": -140,
          "w": 520,
          "h": 280
        }
      }
    },
    "N2T NEG16": {
      "id": "chip-n2t-neg16",
      "name": "N2T NEG16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -1940,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1940,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -1840,
            "y": 0
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1840,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "not",
          "name": "N2T NOT16",
          "position": {
            "x": -1260,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0-16",
          "position": {
            "x": -1260,
            "y": 940
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "one",
          "name": "CONST-1",
          "position": {
            "x": -1260,
            "y": 1060
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "add",
          "name": "N2T ADD16",
          "position": {
            "x": 500,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "source",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "not",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "not-add",
          "source": {
            "owner": "not",
            "pin": "out"
          },
          "target": {
            "owner": "add",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-add",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "add",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "one-add",
          "source": {
            "owner": "one",
            "pin": "0"
          },
          "target": {
            "owner": "add",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "add",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-neg16",
          "type": "text",
          "text": "Two's-complement negation: invert every bit, then add one.",
          "position": {
            "x": -240,
            "y": -3650
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1940,
          "y": -3580,
          "w": 3880,
          "h": 7160
        }
      }
    },
    "N2T NOR": {
      "id": "chip-n2t-nor",
      "name": "N2T NOR",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 340,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 240,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "or",
          "name": "OR",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not",
          "name": "NOT",
          "position": {
            "x": 80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "or",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "or",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-not",
          "source": {
            "owner": "or",
            "pin": "2"
          },
          "target": {
            "owner": "not",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "not",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-nor",
          "type": "text",
          "text": "NOR is the inversion of the NAND-derived OR.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -340,
          "y": -140,
          "w": 680,
          "h": 280
        }
      }
    },
    "N2T NOT": {
      "id": "chip-n2t-not",
      "name": "N2T NOT",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 1,
          "direction": "input",
          "x": -260,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 260,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-1",
          "position": {
            "x": -160,
            "y": 0
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 160,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "nand",
          "name": "NAND",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in-copy",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "nand",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-not",
          "type": "text",
          "text": "NOT is NAND with the same signal connected to both inputs.",
          "position": {
            "x": -240,
            "y": -150
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -260,
          "y": -80,
          "w": 520,
          "h": 160
        }
      }
    },
    "N2T NOT16": {
      "id": "chip-n2t-not16",
      "name": "N2T NOT16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 480,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": 0
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 380,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-0",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-1",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-2",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-3",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-4",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-5",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-6",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-7",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-8",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-9",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-10",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-11",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-12",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-13",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-14",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-15",
          "name": "NOT",
          "position": {
            "x": 0,
            "y": 900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "source",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-0",
          "source": {
            "owner": "split",
            "pin": "16"
          },
          "target": {
            "owner": "gate-0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-0",
          "source": {
            "owner": "gate-0",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-1",
          "source": {
            "owner": "split",
            "pin": "15"
          },
          "target": {
            "owner": "gate-1",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-1",
          "source": {
            "owner": "gate-1",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-2",
          "source": {
            "owner": "split",
            "pin": "14"
          },
          "target": {
            "owner": "gate-2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-2",
          "source": {
            "owner": "gate-2",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-3",
          "source": {
            "owner": "split",
            "pin": "13"
          },
          "target": {
            "owner": "gate-3",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-3",
          "source": {
            "owner": "gate-3",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-4",
          "source": {
            "owner": "split",
            "pin": "12"
          },
          "target": {
            "owner": "gate-4",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-4",
          "source": {
            "owner": "gate-4",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-5",
          "source": {
            "owner": "split",
            "pin": "11"
          },
          "target": {
            "owner": "gate-5",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-5",
          "source": {
            "owner": "gate-5",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-6",
          "source": {
            "owner": "split",
            "pin": "10"
          },
          "target": {
            "owner": "gate-6",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-6",
          "source": {
            "owner": "gate-6",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-7",
          "source": {
            "owner": "split",
            "pin": "9"
          },
          "target": {
            "owner": "gate-7",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-7",
          "source": {
            "owner": "gate-7",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-8",
          "source": {
            "owner": "split",
            "pin": "8"
          },
          "target": {
            "owner": "gate-8",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-8",
          "source": {
            "owner": "gate-8",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-9",
          "source": {
            "owner": "split",
            "pin": "7"
          },
          "target": {
            "owner": "gate-9",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-9",
          "source": {
            "owner": "gate-9",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-10",
          "source": {
            "owner": "split",
            "pin": "6"
          },
          "target": {
            "owner": "gate-10",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-10",
          "source": {
            "owner": "gate-10",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-11",
          "source": {
            "owner": "split",
            "pin": "5"
          },
          "target": {
            "owner": "gate-11",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-11",
          "source": {
            "owner": "gate-11",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-12",
          "source": {
            "owner": "split",
            "pin": "4"
          },
          "target": {
            "owner": "gate-12",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-12",
          "source": {
            "owner": "gate-12",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-13",
          "source": {
            "owner": "split",
            "pin": "3"
          },
          "target": {
            "owner": "gate-13",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-13",
          "source": {
            "owner": "gate-13",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-14",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "gate-14",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-14",
          "source": {
            "owner": "gate-14",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-15",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "gate-15",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-15",
          "source": {
            "owner": "gate-15",
            "pin": "1"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-out",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-not16",
          "type": "text",
          "text": "Sixteen one-bit NOT chips share the same construction pattern.",
          "position": {
            "x": -240,
            "y": -1050
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -480,
          "y": -980,
          "w": 960,
          "h": 1960
        }
      }
    },
    "N2T OR": {
      "id": "chip-n2t-or",
      "name": "N2T OR",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 340,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 240,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "not-a",
          "name": "NOT",
          "position": {
            "x": -80,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not-b",
          "name": "NOT",
          "position": {
            "x": -80,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "nand",
          "name": "NAND",
          "position": {
            "x": 80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "not-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "not-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "na-nand",
          "source": {
            "owner": "not-a",
            "pin": "1"
          },
          "target": {
            "owner": "nand",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "nb-nand",
          "source": {
            "owner": "not-b",
            "pin": "1"
          },
          "target": {
            "owner": "nand",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "nand",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-or",
          "type": "text",
          "text": "OR follows from De Morgan: NOT(NOT A NAND NOT B).",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -340,
          "y": -140,
          "w": 680,
          "h": 280
        }
      }
    },
    "N2T OR16": {
      "id": "chip-n2t-or16",
      "name": "N2T OR16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 480,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 380,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "split-a",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "split-b",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-0",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-1",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-2",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-3",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-4",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-5",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-6",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-7",
          "name": "OR",
          "position": {
            "x": 0,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-8",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-9",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-10",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-11",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-12",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-13",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-14",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-15",
          "name": "OR",
          "position": {
            "x": 0,
            "y": 900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-source",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "split-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-source",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "split-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-0",
          "source": {
            "owner": "split-a",
            "pin": "16"
          },
          "target": {
            "owner": "gate-0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-0",
          "source": {
            "owner": "split-b",
            "pin": "16"
          },
          "target": {
            "owner": "gate-0",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-0",
          "source": {
            "owner": "gate-0",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-1",
          "source": {
            "owner": "split-a",
            "pin": "15"
          },
          "target": {
            "owner": "gate-1",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-1",
          "source": {
            "owner": "split-b",
            "pin": "15"
          },
          "target": {
            "owner": "gate-1",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-1",
          "source": {
            "owner": "gate-1",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-2",
          "source": {
            "owner": "split-a",
            "pin": "14"
          },
          "target": {
            "owner": "gate-2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-2",
          "source": {
            "owner": "split-b",
            "pin": "14"
          },
          "target": {
            "owner": "gate-2",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-2",
          "source": {
            "owner": "gate-2",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-3",
          "source": {
            "owner": "split-a",
            "pin": "13"
          },
          "target": {
            "owner": "gate-3",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-3",
          "source": {
            "owner": "split-b",
            "pin": "13"
          },
          "target": {
            "owner": "gate-3",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-3",
          "source": {
            "owner": "gate-3",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-4",
          "source": {
            "owner": "split-a",
            "pin": "12"
          },
          "target": {
            "owner": "gate-4",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-4",
          "source": {
            "owner": "split-b",
            "pin": "12"
          },
          "target": {
            "owner": "gate-4",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-4",
          "source": {
            "owner": "gate-4",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-5",
          "source": {
            "owner": "split-a",
            "pin": "11"
          },
          "target": {
            "owner": "gate-5",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-5",
          "source": {
            "owner": "split-b",
            "pin": "11"
          },
          "target": {
            "owner": "gate-5",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-5",
          "source": {
            "owner": "gate-5",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-6",
          "source": {
            "owner": "split-a",
            "pin": "10"
          },
          "target": {
            "owner": "gate-6",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-6",
          "source": {
            "owner": "split-b",
            "pin": "10"
          },
          "target": {
            "owner": "gate-6",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-6",
          "source": {
            "owner": "gate-6",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-7",
          "source": {
            "owner": "split-a",
            "pin": "9"
          },
          "target": {
            "owner": "gate-7",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-7",
          "source": {
            "owner": "split-b",
            "pin": "9"
          },
          "target": {
            "owner": "gate-7",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-7",
          "source": {
            "owner": "gate-7",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-8",
          "source": {
            "owner": "split-a",
            "pin": "8"
          },
          "target": {
            "owner": "gate-8",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-8",
          "source": {
            "owner": "split-b",
            "pin": "8"
          },
          "target": {
            "owner": "gate-8",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-8",
          "source": {
            "owner": "gate-8",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-9",
          "source": {
            "owner": "split-a",
            "pin": "7"
          },
          "target": {
            "owner": "gate-9",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-9",
          "source": {
            "owner": "split-b",
            "pin": "7"
          },
          "target": {
            "owner": "gate-9",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-9",
          "source": {
            "owner": "gate-9",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-10",
          "source": {
            "owner": "split-a",
            "pin": "6"
          },
          "target": {
            "owner": "gate-10",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-10",
          "source": {
            "owner": "split-b",
            "pin": "6"
          },
          "target": {
            "owner": "gate-10",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-10",
          "source": {
            "owner": "gate-10",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-11",
          "source": {
            "owner": "split-a",
            "pin": "5"
          },
          "target": {
            "owner": "gate-11",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-11",
          "source": {
            "owner": "split-b",
            "pin": "5"
          },
          "target": {
            "owner": "gate-11",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-11",
          "source": {
            "owner": "gate-11",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-12",
          "source": {
            "owner": "split-a",
            "pin": "4"
          },
          "target": {
            "owner": "gate-12",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-12",
          "source": {
            "owner": "split-b",
            "pin": "4"
          },
          "target": {
            "owner": "gate-12",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-12",
          "source": {
            "owner": "gate-12",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-13",
          "source": {
            "owner": "split-a",
            "pin": "3"
          },
          "target": {
            "owner": "gate-13",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-13",
          "source": {
            "owner": "split-b",
            "pin": "3"
          },
          "target": {
            "owner": "gate-13",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-13",
          "source": {
            "owner": "gate-13",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-14",
          "source": {
            "owner": "split-a",
            "pin": "2"
          },
          "target": {
            "owner": "gate-14",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-14",
          "source": {
            "owner": "split-b",
            "pin": "2"
          },
          "target": {
            "owner": "gate-14",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-14",
          "source": {
            "owner": "gate-14",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-15",
          "source": {
            "owner": "split-a",
            "pin": "1"
          },
          "target": {
            "owner": "gate-15",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-15",
          "source": {
            "owner": "split-b",
            "pin": "1"
          },
          "target": {
            "owner": "gate-15",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-15",
          "source": {
            "owner": "gate-15",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-out",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-or16",
          "type": "text",
          "text": "Sixteen one-bit OR chips operate in parallel.",
          "position": {
            "x": -240,
            "y": -1050
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -480,
          "y": -980,
          "w": 960,
          "h": 1960
        }
      }
    },
    "N2T OR8WAY": {
      "id": "chip-n2t-or8way",
      "name": "N2T OR8WAY",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#5c8d78",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 8,
          "direction": "input",
          "x": -530,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 530,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-8",
          "position": {
            "x": -430,
            "y": 0
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 430,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "8-1BIT",
          "position": {
            "x": -240,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or-0-0",
          "name": "OR",
          "position": {
            "x": -50,
            "y": -180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or-0-2",
          "name": "OR",
          "position": {
            "x": -50,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or-0-4",
          "name": "OR",
          "position": {
            "x": -50,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or-0-6",
          "name": "OR",
          "position": {
            "x": -50,
            "y": 180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or-1-0",
          "name": "OR",
          "position": {
            "x": 110,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or-1-2",
          "name": "OR",
          "position": {
            "x": 110,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "or-2-0",
          "name": "OR",
          "position": {
            "x": 270,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "source",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-a-0-0",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "or-0-0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-b-0-0",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "or-0-0",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-a-0-2",
          "source": {
            "owner": "split",
            "pin": "3"
          },
          "target": {
            "owner": "or-0-2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-b-0-2",
          "source": {
            "owner": "split",
            "pin": "4"
          },
          "target": {
            "owner": "or-0-2",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-a-0-4",
          "source": {
            "owner": "split",
            "pin": "5"
          },
          "target": {
            "owner": "or-0-4",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-b-0-4",
          "source": {
            "owner": "split",
            "pin": "6"
          },
          "target": {
            "owner": "or-0-4",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-a-0-6",
          "source": {
            "owner": "split",
            "pin": "7"
          },
          "target": {
            "owner": "or-0-6",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-b-0-6",
          "source": {
            "owner": "split",
            "pin": "8"
          },
          "target": {
            "owner": "or-0-6",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-a-1-0",
          "source": {
            "owner": "or-0-0",
            "pin": "2"
          },
          "target": {
            "owner": "or-1-0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-b-1-0",
          "source": {
            "owner": "or-0-2",
            "pin": "2"
          },
          "target": {
            "owner": "or-1-0",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-a-1-2",
          "source": {
            "owner": "or-0-4",
            "pin": "2"
          },
          "target": {
            "owner": "or-1-2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-b-1-2",
          "source": {
            "owner": "or-0-6",
            "pin": "2"
          },
          "target": {
            "owner": "or-1-2",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-a-2-0",
          "source": {
            "owner": "or-1-0",
            "pin": "2"
          },
          "target": {
            "owner": "or-2-0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-b-2-0",
          "source": {
            "owner": "or-1-2",
            "pin": "2"
          },
          "target": {
            "owner": "or-2-0",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "result",
          "source": {
            "owner": "or-2-0",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-or8way",
          "type": "text",
          "text": "An 8-input OR tree built from the one-bit OR chip.",
          "position": {
            "x": -240,
            "y": -330
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -530,
          "y": -260,
          "w": 1060,
          "h": 520
        }
      }
    },
    "N2T PC": {
      "id": "chip-n2t-pc",
      "name": "N2T PC",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 720,
        "y": 440
      },
      "colour": "#9b8653",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -5920,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -5920,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "inc",
          "name": "INC",
          "bits": 1,
          "direction": "input",
          "x": -5920,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -5920,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -5920,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 5920,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -5820,
            "y": -240
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -5820,
            "y": -120
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-inc",
          "name": "IN-1",
          "position": {
            "x": -5820,
            "y": 0
          },
          "rotation": 0,
          "label": "INC",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "inc",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -5820,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -5820,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 5820,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "counter",
          "name": "N2T COUNTER",
          "position": {
            "x": 940,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "reset-mux",
          "name": "N2T MUX16",
          "position": {
            "x": -4720,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0-16",
          "position": {
            "x": -5660,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "load-or-reset",
          "name": "OR",
          "position": {
            "x": -4720,
            "y": 3560
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in-reset",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "reset-mux",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-reset",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "reset-mux",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset-select",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "reset-mux",
            "pin": "sel"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "next-counter",
          "source": {
            "owner": "reset-mux",
            "pin": "out"
          },
          "target": {
            "owner": "counter",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-or",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "load-or-reset",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset-or",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "load-or-reset",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "counter-load",
          "source": {
            "owner": "load-or-reset",
            "pin": "2"
          },
          "target": {
            "owner": "counter",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "counter-inc",
          "source": {
            "owner": "interface-input-inc",
            "pin": "0"
          },
          "target": {
            "owner": "counter",
            "pin": "inc"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "counter-clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "counter",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "counter",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-pc",
          "type": "text",
          "text": "The program counter is a counter with a reset path; RESET selects zero before LOAD and INC.",
          "position": {
            "x": -240,
            "y": -4430
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "inc",
            "instanceId": "interface-input-inc",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -5920,
          "y": -4360,
          "w": 11840,
          "h": 8720
        }
      }
    },
    "N2T RAM16K": {
      "id": "chip-n2t-ram16k",
      "name": "N2T RAM16K",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 14,
          "direction": "input",
          "x": -320,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-16",
          "position": {
            "x": -220,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "RAM16K",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "memory",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-ram16k",
          "type": "text",
          "text": "RAM4K banks selected by the upper address bits.",
          "position": {
            "x": -240,
            "y": -390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -320,
          "y": -320,
          "w": 640,
          "h": 640
        }
      }
    },
    "N2T RAM4K": {
      "id": "chip-n2t-ram4k",
      "name": "N2T RAM4K",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 12,
          "direction": "input",
          "x": -320,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-8",
          "position": {
            "x": -220,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "RAM4K",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "memory",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-ram4k",
          "type": "text",
          "text": "RAM512 banks selected by the upper address bits.",
          "position": {
            "x": -240,
            "y": -390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -320,
          "y": -320,
          "w": 640,
          "h": 640
        }
      }
    },
    "N2T RAM512": {
      "id": "chip-n2t-ram512",
      "name": "N2T RAM512",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 9,
          "direction": "input",
          "x": -320,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-8",
          "position": {
            "x": -220,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "RAM512",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "memory",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-ram512",
          "type": "text",
          "text": "RAM64 banks selected by the upper address bits.",
          "position": {
            "x": -240,
            "y": -390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -320,
          "y": -320,
          "w": 640,
          "h": 640
        }
      }
    },
    "N2T RAM64": {
      "id": "chip-n2t-ram64",
      "name": "N2T RAM64",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 6,
          "direction": "input",
          "x": -320,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-4",
          "position": {
            "x": -220,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "RAM64",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "memory",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-ram64",
          "type": "text",
          "text": "RAM8 banks selected by the upper address bits.",
          "position": {
            "x": -240,
            "y": -390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -320,
          "y": -320,
          "w": 640,
          "h": 640
        }
      }
    },
    "N2T RAM8": {
      "id": "chip-n2t-ram8",
      "name": "N2T RAM8",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 3,
          "direction": "input",
          "x": -320,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -320,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-4",
          "position": {
            "x": -220,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -220,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "RAM8",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "memory",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-ram8",
          "type": "text",
          "text": "Eight 16-bit registers addressed by three bits.",
          "position": {
            "x": -240,
            "y": -390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -320,
          "y": -320,
          "w": 640,
          "h": 640
        }
      }
    },
    "N2T REGISTER": {
      "id": "chip-n2t-register",
      "name": "N2T REGISTER",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#9b8653",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -1120,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -1120,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -1120,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1120,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -1020,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -1020,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -1020,
            "y": 120
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1020,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "split",
          "name": "16-1BIT",
          "position": {
            "x": -830,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 830,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-0",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -3900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-1",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -3380
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-2",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -2860
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-3",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -2340
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-4",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -1820
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-5",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -1300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-6",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-7",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": -260
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-8",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 260
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-9",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-10",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 1300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-11",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 1820
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-12",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 2340
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-13",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 2860
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-14",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 3380
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "bit-15",
          "name": "N2T BIT",
          "position": {
            "x": 0,
            "y": 3900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "split",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-0",
          "source": {
            "owner": "split",
            "pin": "16"
          },
          "target": {
            "owner": "bit-0",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-0",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-0",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-0",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-0",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-0",
          "source": {
            "owner": "bit-0",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-1",
          "source": {
            "owner": "split",
            "pin": "15"
          },
          "target": {
            "owner": "bit-1",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-1",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-1",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-1",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-1",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-1",
          "source": {
            "owner": "bit-1",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-2",
          "source": {
            "owner": "split",
            "pin": "14"
          },
          "target": {
            "owner": "bit-2",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-2",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-2",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-2",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-2",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-2",
          "source": {
            "owner": "bit-2",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-3",
          "source": {
            "owner": "split",
            "pin": "13"
          },
          "target": {
            "owner": "bit-3",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-3",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-3",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-3",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-3",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-3",
          "source": {
            "owner": "bit-3",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-4",
          "source": {
            "owner": "split",
            "pin": "12"
          },
          "target": {
            "owner": "bit-4",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-4",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-4",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-4",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-4",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-4",
          "source": {
            "owner": "bit-4",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-5",
          "source": {
            "owner": "split",
            "pin": "11"
          },
          "target": {
            "owner": "bit-5",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-5",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-5",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-5",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-5",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-5",
          "source": {
            "owner": "bit-5",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-6",
          "source": {
            "owner": "split",
            "pin": "10"
          },
          "target": {
            "owner": "bit-6",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-6",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-6",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-6",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-6",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-6",
          "source": {
            "owner": "bit-6",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-7",
          "source": {
            "owner": "split",
            "pin": "9"
          },
          "target": {
            "owner": "bit-7",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-7",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-7",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-7",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-7",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-7",
          "source": {
            "owner": "bit-7",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-8",
          "source": {
            "owner": "split",
            "pin": "8"
          },
          "target": {
            "owner": "bit-8",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-8",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-8",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-8",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-8",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-8",
          "source": {
            "owner": "bit-8",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-9",
          "source": {
            "owner": "split",
            "pin": "7"
          },
          "target": {
            "owner": "bit-9",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-9",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-9",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-9",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-9",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-9",
          "source": {
            "owner": "bit-9",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-10",
          "source": {
            "owner": "split",
            "pin": "6"
          },
          "target": {
            "owner": "bit-10",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-10",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-10",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-10",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-10",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-10",
          "source": {
            "owner": "bit-10",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-11",
          "source": {
            "owner": "split",
            "pin": "5"
          },
          "target": {
            "owner": "bit-11",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-11",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-11",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-11",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-11",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-11",
          "source": {
            "owner": "bit-11",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-12",
          "source": {
            "owner": "split",
            "pin": "4"
          },
          "target": {
            "owner": "bit-12",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-12",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-12",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-12",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-12",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-12",
          "source": {
            "owner": "bit-12",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-13",
          "source": {
            "owner": "split",
            "pin": "3"
          },
          "target": {
            "owner": "bit-13",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-13",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-13",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-13",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-13",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-13",
          "source": {
            "owner": "bit-13",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-14",
          "source": {
            "owner": "split",
            "pin": "2"
          },
          "target": {
            "owner": "bit-14",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-14",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-14",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-14",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-14",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-14",
          "source": {
            "owner": "bit-14",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "split-15",
          "source": {
            "owner": "split",
            "pin": "1"
          },
          "target": {
            "owner": "bit-15",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-15",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "bit-15",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock-15",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "bit-15",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-15",
          "source": {
            "owner": "bit-15",
            "pin": "out"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-register",
          "type": "text",
          "text": "Sixteen BIT cells in parallel form the 16-bit register.",
          "position": {
            "x": -240,
            "y": -4250
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1120,
          "y": -4180,
          "w": 2240,
          "h": 8360
        }
      }
    },
    "N2T REGISTER16": {
      "id": "chip-n2t-register16",
      "name": "N2T REGISTER16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#9b8653",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -1320,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -1320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -1320,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 1320,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -1220,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -1220,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -1220,
            "y": 120
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 1220,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "register",
          "name": "N2T REGISTER",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "load"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "register",
            "pin": "clock"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "register",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-register16",
          "type": "text",
          "text": "The named 16-bit register landmark, composed from sixteen one-bit BIT cells.",
          "position": {
            "x": -240,
            "y": -4290
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -1320,
          "y": -4220,
          "w": 2640,
          "h": 8440
        }
      }
    },
    "N2T ROM32K": {
      "id": "chip-n2t-rom32k",
      "name": "N2T ROM32K",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#857654",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 15,
          "direction": "input",
          "x": -330,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 330,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-16",
          "position": {
            "x": -230,
            "y": 0
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 230,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "rom",
          "name": "ROM32K",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "rom",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "rom",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-rom32k",
          "type": "text",
          "text": "Read-only 32K x 16-bit instruction storage.",
          "position": {
            "x": -240,
            "y": -160
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -330,
          "y": -90,
          "w": 660,
          "h": 180
        }
      }
    },
    "N2T SCREEN": {
      "id": "chip-n2t-screen",
      "name": "N2T SCREEN",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "address",
          "name": "ADDRESS",
          "bits": 13,
          "direction": "input",
          "x": -330,
          "y": -240,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "in",
          "name": "IN",
          "bits": 16,
          "direction": "input",
          "x": -330,
          "y": -120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "load",
          "name": "LOAD",
          "bits": 1,
          "direction": "input",
          "x": -330,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "reset",
          "name": "RESET",
          "bits": 1,
          "direction": "input",
          "x": -330,
          "y": 120,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "clock",
          "name": "CLOCK",
          "bits": 1,
          "direction": "input",
          "x": -330,
          "y": 240,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 330,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-address",
          "name": "IN-16",
          "position": {
            "x": -230,
            "y": -240
          },
          "rotation": 0,
          "label": "ADDRESS",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "address",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-in",
          "name": "IN-16",
          "position": {
            "x": -230,
            "y": -120
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-load",
          "name": "IN-1",
          "position": {
            "x": -230,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "load",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-reset",
          "name": "IN-1",
          "position": {
            "x": -230,
            "y": 120
          },
          "rotation": 0,
          "label": "RESET",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "reset",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-clock",
          "name": "IN-1",
          "position": {
            "x": -230,
            "y": 240
          },
          "rotation": 0,
          "label": "CLOCK",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "clock",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 230,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "memory",
          "name": "SCREEN",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "address",
          "source": {
            "owner": "interface-input-address",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load",
          "source": {
            "owner": "interface-input-load",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "reset",
          "source": {
            "owner": "interface-input-reset",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "clock",
          "source": {
            "owner": "interface-input-clock",
            "pin": "0"
          },
          "target": {
            "owner": "memory",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "memory",
            "pin": "5"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-screen",
          "type": "text",
          "text": "A memory-mapped 16-bit screen surface. The engine owns the pixel storage contract.",
          "position": {
            "x": -240,
            "y": -390
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "address",
            "instanceId": "interface-input-address",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "load",
            "instanceId": "interface-input-load",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "reset",
            "instanceId": "interface-input-reset",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "clock",
            "instanceId": "interface-input-clock",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -330,
          "y": -320,
          "w": 660,
          "h": 640
        }
      }
    },
    "N2T SUB16": {
      "id": "chip-n2t-sub16",
      "name": "N2T SUB16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#967451",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "input",
          "x": -3400,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "input",
          "x": -3400,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 3400,
          "y": -60,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "cout",
          "name": "COUT",
          "bits": 1,
          "direction": "output",
          "x": 3400,
          "y": 60,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-16",
          "position": {
            "x": -3300,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-16",
          "position": {
            "x": -3300,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 3300,
            "y": -60
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-cout",
          "name": "OUT-1",
          "position": {
            "x": 3300,
            "y": 60
          },
          "rotation": 0,
          "label": "COUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "cout",
          "outputPinColours": {}
        },
        {
          "id": "neg-b",
          "name": "N2T NEG16",
          "position": {
            "x": -1260,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "zero",
          "name": "CONST-0",
          "position": {
            "x": -1260,
            "y": 3600
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "add",
          "name": "N2T ADD16",
          "position": {
            "x": 1960,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "add",
            "pin": "a"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "neg-b",
            "pin": "in"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "neg-add",
          "source": {
            "owner": "neg-b",
            "pin": "out"
          },
          "target": {
            "owner": "add",
            "pin": "b"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "zero-add",
          "source": {
            "owner": "zero",
            "pin": "0"
          },
          "target": {
            "owner": "add",
            "pin": "cin"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "add",
            "pin": "out"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "cout",
          "source": {
            "owner": "add",
            "pin": "cout"
          },
          "target": {
            "owner": "interface-output-cout",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-sub16",
          "type": "text",
          "text": "Subtraction uses two's-complement negation and addition: A + (-B).",
          "position": {
            "x": -240,
            "y": -3750
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "cout",
            "instanceId": "interface-output-cout",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -3400,
          "y": -3680,
          "w": 6800,
          "h": 7360
        }
      }
    },
    "N2T TRI-STATE": {
      "id": "chip-n2t-tri-state",
      "name": "N2T TRI-STATE",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "in",
          "name": "IN",
          "bits": 1,
          "direction": "input",
          "x": -260,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "enable",
          "name": "ENABLE",
          "bits": 1,
          "direction": "input",
          "x": -260,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 260,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-in",
          "name": "IN-1",
          "position": {
            "x": -160,
            "y": -60
          },
          "rotation": 0,
          "label": "IN",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "in",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-enable",
          "name": "IN-1",
          "position": {
            "x": -160,
            "y": 60
          },
          "rotation": 0,
          "label": "ENABLE",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "enable",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 160,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "tri",
          "name": "3-STATE BUFFER",
          "position": {
            "x": 0,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "in",
          "source": {
            "owner": "interface-input-in",
            "pin": "0"
          },
          "target": {
            "owner": "tri",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "enable",
          "source": {
            "owner": "interface-input-enable",
            "pin": "0"
          },
          "target": {
            "owner": "tri",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "tri",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-tri-state",
          "type": "text",
          "text": "A controlled output driver: disabled means the output releases the shared line.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "in",
            "instanceId": "interface-input-in",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "enable",
            "instanceId": "interface-input-enable",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -260,
          "y": -140,
          "w": 520,
          "h": 280
        }
      }
    },
    "N2T WRITE-DESTINATION-CONTROL": {
      "id": "chip-n2t-write-destination-control",
      "name": "N2T WRITE-DESTINATION-CONTROL",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 760,
        "y": 440
      },
      "colour": "#7358ad",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "instruction",
          "name": "INSTRUCTION",
          "bits": 16,
          "direction": "input",
          "x": -850,
          "y": 0,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "loadA",
          "name": "LOAD A",
          "bits": 1,
          "direction": "output",
          "x": 850,
          "y": -120,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "loadD",
          "name": "LOAD D",
          "bits": 1,
          "direction": "output",
          "x": 850,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        },
        {
          "id": "writeM",
          "name": "WRITE M",
          "bits": 1,
          "direction": "output",
          "x": 850,
          "y": 120,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-instruction",
          "name": "IN-16",
          "position": {
            "x": -750,
            "y": 0
          },
          "rotation": 0,
          "label": "INSTRUCTION",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "instruction",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-loada",
          "name": "OUT-1",
          "position": {
            "x": 750,
            "y": -120
          },
          "rotation": 0,
          "label": "LOAD A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "loadA",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-loadd",
          "name": "OUT-1",
          "position": {
            "x": 750,
            "y": 0
          },
          "rotation": 0,
          "label": "LOAD D",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "loadD",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-writem",
          "name": "OUT-1",
          "position": {
            "x": 750,
            "y": 120
          },
          "rotation": 0,
          "label": "WRITE M",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "writeM",
          "outputPinColours": {}
        },
        {
          "id": "decoder",
          "name": "N2T CONTROL-SIGNAL-DECODER",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "load-a",
          "name": "OR",
          "position": {
            "x": 590,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "load-d",
          "name": "AND",
          "position": {
            "x": 590,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "write-m",
          "name": "AND",
          "position": {
            "x": 590,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "instruction",
          "source": {
            "owner": "interface-input-instruction",
            "pin": "0"
          },
          "target": {
            "owner": "decoder",
            "pin": "instruction"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-a-load",
          "source": {
            "owner": "decoder",
            "pin": "isA"
          },
          "target": {
            "owner": "load-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "dest-a-load",
          "source": {
            "owner": "decoder",
            "pin": "destA"
          },
          "target": {
            "owner": "load-a",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-c-load",
          "source": {
            "owner": "decoder",
            "pin": "isC"
          },
          "target": {
            "owner": "load-d",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "dest-d-load",
          "source": {
            "owner": "decoder",
            "pin": "destD"
          },
          "target": {
            "owner": "load-d",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "is-c-write",
          "source": {
            "owner": "decoder",
            "pin": "isC"
          },
          "target": {
            "owner": "write-m",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "dest-m-write",
          "source": {
            "owner": "decoder",
            "pin": "destM"
          },
          "target": {
            "owner": "write-m",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-a",
          "source": {
            "owner": "load-a",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-loada",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "load-d",
          "source": {
            "owner": "load-d",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-loadd",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "write-m",
          "source": {
            "owner": "write-m",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-writem",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-write-destination-control",
          "type": "text",
          "text": "Destination bits become safe register and memory enables; A-instructions always load A.",
          "position": {
            "x": -240,
            "y": -1030
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "instruction",
            "instanceId": "interface-input-instruction",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "loadA",
            "instanceId": "interface-output-loada",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "loadD",
            "instanceId": "interface-output-loadd",
            "pinId": "0",
            "direction": "output"
          },
          {
            "publicId": "writeM",
            "instanceId": "interface-output-writem",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -850,
          "y": -960,
          "w": 1700,
          "h": 1920
        }
      }
    },
    "N2T XNOR": {
      "id": "chip-n2t-xnor",
      "name": "N2T XNOR",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 340,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 240,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "xor",
          "name": "XOR",
          "position": {
            "x": -80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "not",
          "name": "NOT",
          "position": {
            "x": 80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "xor",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "xor",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "xor-not",
          "source": {
            "owner": "xor",
            "pin": "2"
          },
          "target": {
            "owner": "not",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "not",
            "pin": "1"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-xnor",
          "type": "text",
          "text": "XNOR is XOR followed by NOT.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -340,
          "y": -140,
          "w": 680,
          "h": 280
        }
      }
    },
    "N2T XOR": {
      "id": "chip-n2t-xor",
      "name": "N2T XOR",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 440
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 1,
          "direction": "input",
          "x": -340,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 1,
          "direction": "output",
          "x": 340,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-1",
          "position": {
            "x": -240,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-1",
          "position": {
            "x": 240,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "or",
          "name": "OR",
          "position": {
            "x": -80,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "nand",
          "name": "NAND",
          "position": {
            "x": -80,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "and",
          "name": "AND",
          "position": {
            "x": 80,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-or",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "or",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-or",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "or",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-nand",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-nand",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "nand",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "or-and",
          "source": {
            "owner": "or",
            "pin": "2"
          },
          "target": {
            "owner": "and",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "nand-and",
          "source": {
            "owner": "nand",
            "pin": "2"
          },
          "target": {
            "owner": "and",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "out",
          "source": {
            "owner": "and",
            "pin": "2"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-xor",
          "type": "text",
          "text": "XOR = (A OR B) AND NOT(A AND B), expressed using the NAND-derived parts.",
          "position": {
            "x": -240,
            "y": -210
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -340,
          "y": -140,
          "w": 680,
          "h": 280
        }
      }
    },
    "N2T XOR16": {
      "id": "chip-n2t-xor16",
      "name": "N2T XOR16",
      "type": "custom",
      "kind": "custom",
      "size": {
        "x": 640,
        "y": 560
      },
      "colour": "#706aa4",
      "nameLocation": "top",
      "inputPins": [
        {
          "id": "a",
          "name": "A",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": -60,
          "valueDisplay": "off",
          "colour": "gray"
        },
        {
          "id": "b",
          "name": "B",
          "bits": 16,
          "direction": "input",
          "x": -480,
          "y": 60,
          "valueDisplay": "off",
          "colour": "gray"
        }
      ],
      "outputPins": [
        {
          "id": "out",
          "name": "OUT",
          "bits": 16,
          "direction": "output",
          "x": 480,
          "y": 0,
          "valueDisplay": "off",
          "colour": "green"
        }
      ],
      "instances": [
        {
          "id": "interface-input-a",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": -60
          },
          "rotation": 0,
          "label": "A",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "a",
          "outputPinColours": {}
        },
        {
          "id": "interface-input-b",
          "name": "IN-16",
          "position": {
            "x": -380,
            "y": 60
          },
          "rotation": 0,
          "label": "B",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "b",
          "outputPinColours": {}
        },
        {
          "id": "interface-output-out",
          "name": "OUT-16",
          "position": {
            "x": 380,
            "y": 0
          },
          "rotation": 0,
          "label": "OUT",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": "out",
          "outputPinColours": {}
        },
        {
          "id": "split-a",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": -120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "split-b",
          "name": "16-1BIT",
          "position": {
            "x": -190,
            "y": 120
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "merge",
          "name": "1-16BIT",
          "position": {
            "x": 190,
            "y": 0
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-0",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-1",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-2",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-3",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-4",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-5",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-6",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-7",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": -60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-8",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 60
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-9",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 180
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-10",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 300
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-11",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 420
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-12",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 540
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-13",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 660
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-14",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 780
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        },
        {
          "id": "gate-15",
          "name": "XOR",
          "position": {
            "x": 0,
            "y": 900
          },
          "rotation": 0,
          "label": "",
          "internalData": {},
          "linkedBusPairId": null,
          "interfaceId": null,
          "outputPinColours": {}
        }
      ],
      "wires": [
        {
          "id": "a-source",
          "source": {
            "owner": "interface-input-a",
            "pin": "0"
          },
          "target": {
            "owner": "split-a",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-source",
          "source": {
            "owner": "interface-input-b",
            "pin": "0"
          },
          "target": {
            "owner": "split-b",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-0",
          "source": {
            "owner": "split-a",
            "pin": "16"
          },
          "target": {
            "owner": "gate-0",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-0",
          "source": {
            "owner": "split-b",
            "pin": "16"
          },
          "target": {
            "owner": "gate-0",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-0",
          "source": {
            "owner": "gate-0",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-1",
          "source": {
            "owner": "split-a",
            "pin": "15"
          },
          "target": {
            "owner": "gate-1",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-1",
          "source": {
            "owner": "split-b",
            "pin": "15"
          },
          "target": {
            "owner": "gate-1",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-1",
          "source": {
            "owner": "gate-1",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-2",
          "source": {
            "owner": "split-a",
            "pin": "14"
          },
          "target": {
            "owner": "gate-2",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-2",
          "source": {
            "owner": "split-b",
            "pin": "14"
          },
          "target": {
            "owner": "gate-2",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-2",
          "source": {
            "owner": "gate-2",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "2"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-3",
          "source": {
            "owner": "split-a",
            "pin": "13"
          },
          "target": {
            "owner": "gate-3",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-3",
          "source": {
            "owner": "split-b",
            "pin": "13"
          },
          "target": {
            "owner": "gate-3",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-3",
          "source": {
            "owner": "gate-3",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "3"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-4",
          "source": {
            "owner": "split-a",
            "pin": "12"
          },
          "target": {
            "owner": "gate-4",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-4",
          "source": {
            "owner": "split-b",
            "pin": "12"
          },
          "target": {
            "owner": "gate-4",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-4",
          "source": {
            "owner": "gate-4",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "4"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-5",
          "source": {
            "owner": "split-a",
            "pin": "11"
          },
          "target": {
            "owner": "gate-5",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-5",
          "source": {
            "owner": "split-b",
            "pin": "11"
          },
          "target": {
            "owner": "gate-5",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-5",
          "source": {
            "owner": "gate-5",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "5"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-6",
          "source": {
            "owner": "split-a",
            "pin": "10"
          },
          "target": {
            "owner": "gate-6",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-6",
          "source": {
            "owner": "split-b",
            "pin": "10"
          },
          "target": {
            "owner": "gate-6",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-6",
          "source": {
            "owner": "gate-6",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "6"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-7",
          "source": {
            "owner": "split-a",
            "pin": "9"
          },
          "target": {
            "owner": "gate-7",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-7",
          "source": {
            "owner": "split-b",
            "pin": "9"
          },
          "target": {
            "owner": "gate-7",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-7",
          "source": {
            "owner": "gate-7",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "7"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-8",
          "source": {
            "owner": "split-a",
            "pin": "8"
          },
          "target": {
            "owner": "gate-8",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-8",
          "source": {
            "owner": "split-b",
            "pin": "8"
          },
          "target": {
            "owner": "gate-8",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-8",
          "source": {
            "owner": "gate-8",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "8"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-9",
          "source": {
            "owner": "split-a",
            "pin": "7"
          },
          "target": {
            "owner": "gate-9",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-9",
          "source": {
            "owner": "split-b",
            "pin": "7"
          },
          "target": {
            "owner": "gate-9",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-9",
          "source": {
            "owner": "gate-9",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "9"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-10",
          "source": {
            "owner": "split-a",
            "pin": "6"
          },
          "target": {
            "owner": "gate-10",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-10",
          "source": {
            "owner": "split-b",
            "pin": "6"
          },
          "target": {
            "owner": "gate-10",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-10",
          "source": {
            "owner": "gate-10",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "10"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-11",
          "source": {
            "owner": "split-a",
            "pin": "5"
          },
          "target": {
            "owner": "gate-11",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-11",
          "source": {
            "owner": "split-b",
            "pin": "5"
          },
          "target": {
            "owner": "gate-11",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-11",
          "source": {
            "owner": "gate-11",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "11"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-12",
          "source": {
            "owner": "split-a",
            "pin": "4"
          },
          "target": {
            "owner": "gate-12",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-12",
          "source": {
            "owner": "split-b",
            "pin": "4"
          },
          "target": {
            "owner": "gate-12",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-12",
          "source": {
            "owner": "gate-12",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "12"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-13",
          "source": {
            "owner": "split-a",
            "pin": "3"
          },
          "target": {
            "owner": "gate-13",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-13",
          "source": {
            "owner": "split-b",
            "pin": "3"
          },
          "target": {
            "owner": "gate-13",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-13",
          "source": {
            "owner": "gate-13",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "13"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-14",
          "source": {
            "owner": "split-a",
            "pin": "2"
          },
          "target": {
            "owner": "gate-14",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-14",
          "source": {
            "owner": "split-b",
            "pin": "2"
          },
          "target": {
            "owner": "gate-14",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-14",
          "source": {
            "owner": "gate-14",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "14"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "a-15",
          "source": {
            "owner": "split-a",
            "pin": "1"
          },
          "target": {
            "owner": "gate-15",
            "pin": "0"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "b-15",
          "source": {
            "owner": "split-b",
            "pin": "1"
          },
          "target": {
            "owner": "gate-15",
            "pin": "1"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-15",
          "source": {
            "owner": "gate-15",
            "pin": "2"
          },
          "target": {
            "owner": "merge",
            "pin": "15"
          },
          "points": [],
          "colour": null
        },
        {
          "id": "merge-out",
          "source": {
            "owner": "merge",
            "pin": "16"
          },
          "target": {
            "owner": "interface-output-out",
            "pin": "0"
          },
          "points": [],
          "colour": null
        }
      ],
      "junctions": [],
      "displays": [],
      "annotations": [
        {
          "id": "annotation-n2t-xor16",
          "type": "text",
          "text": "Sixteen one-bit XOR chips operate in parallel.",
          "position": {
            "x": -240,
            "y": -1050
          },
          "width": 480,
          "height": 70,
          "fontSize": 11,
          "colour": "#d7eaff",
          "background": "#2f3338"
        }
      ],
      "interfaceBindings": {
        "inputs": [
          {
            "publicId": "a",
            "instanceId": "interface-input-a",
            "pinId": "0",
            "direction": "input"
          },
          {
            "publicId": "b",
            "instanceId": "interface-input-b",
            "pinId": "0",
            "direction": "input"
          }
        ],
        "outputs": [
          {
            "publicId": "out",
            "instanceId": "interface-output-out",
            "pinId": "0",
            "direction": "output"
          }
        ]
      },
      "fit": {
        "version": 1,
        "bounds": {
          "x": -480,
          "y": -980,
          "w": 960,
          "h": 1960
        }
      }
    }
  },
  "collections": [
    {
      "name": "LOGIC",
      "chips": [
        "AND",
        "OR",
        "NOT",
        "NAND",
        "NOR",
        "XOR",
        "XNOR",
        "BUFFER"
      ]
    },
    {
      "name": "BASIC",
      "chips": [
        "CLOCK",
        "PULSE",
        "KEY",
        "3-STATE BUFFER",
        "DFF",
        "CONST-0",
        "CONST-1",
        "CONST-0-16",
        "CONST-1-16"
      ]
    },
    {
      "name": "IN/OUT",
      "chips": [
        "IN-1",
        "IN-4",
        "IN-8",
        "IN-16",
        "OUT-1",
        "OUT-4",
        "OUT-8",
        "OUT-16"
      ]
    },
    {
      "name": "MERGE/SPLIT",
      "chips": [
        "1-4BIT",
        "1-8BIT",
        "4-8BIT",
        "1-16BIT",
        "8-16BIT",
        "4-1BIT",
        "8-4BIT",
        "8-1BIT",
        "16-8BIT",
        "16-1BIT"
      ]
    },
    {
      "name": "BUS",
      "chips": [
        "BUS-1",
        "BUS-4",
        "BUS-8"
      ]
    },
    {
      "name": "DISPLAY",
      "chips": [
        "7-SEGMENT",
        "DOT DISPLAY",
        "RGB DISPLAY",
        "LED"
      ]
    },
    {
      "name": "MEMORY",
      "chips": [
        "ROM 256x16",
        "dev.RAM-8",
        "RAM8",
        "RAM64",
        "RAM512",
        "RAM4K",
        "RAM16K",
        "ROM32K",
        "MEMORY",
        "SCREEN",
        "KEYBOARD",
        "REGISTER-16",
        "PROGRAM COUNTER"
      ]
    },
    {
      "name": "AUDIO",
      "chips": [
        "BUZZER"
      ]
    }
  ],
  "collectionOrder": [
    "LOGIC",
    "BASIC",
    "IN/OUT",
    "MERGE/SPLIT",
    "BUS",
    "DISPLAY",
    "MEMORY",
    "AUDIO",
    "CUSTOM"
  ],
  "starred": [
    "IN/OUT",
    "NAND"
  ],
  "settings": {
    "snapping": true,
    "straightWires": false,
    "grid": true,
    "simulationPaused": true,
    "stepsPerSecond": 8,
    "stepsPerClock": 8
  },
  "inputValues": {},
  "keyValues": {},
  "variant": "native-primitives",
  "sourceTrack": "nand2tetris"
}
