{
    "nodes": [
        {
            "datums": [
                {
                    "expr": "0",
                    "name": "xmin",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "0",
                    "name": "ymin",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "0",
                    "name": "zmin",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "10",
                    "name": "xmax",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "7",
                    "name": "ymax",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "4",
                    "name": "zmax",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -323,
                -193
            ],
            "name": "c0",
            "script": [
                "import fab",
                "",
                "title('Cube (corner)')",
                "",
                "input('xmin', float)",
                "input('ymin', float)",
                "input('zmin', float)",
                "input('xmax', float)",
                "input('ymax', float)",
                "input('zmax', float)",
                "",
                "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))",
                "",
                "# UI",
                "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),",
                "                  (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)",
                "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),",
                "                  (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)",
                "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),",
                "                  (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)",
                "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),",
                "                  (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)",
                "sb.ui.point(xmin, ymin, zmin)",
                "sb.ui.point(xmax, ymax, zmax)",
                ""
            ],
            "uid": 1
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__1.__6]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__4.__6]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                -304,
                101
            ],
            "name": "d0",
            "script": [
                "import fab.types",
                "",
                "title('Difference')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a & ~b)",
                ""
            ],
            "uid": 2
        },
        {
            "datums": [
                {
                    "expr": "c2.xmin+1",
                    "name": "xmin",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "c2.ymin+1",
                    "name": "ymin",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "c2.zmin",
                    "name": "zmin",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "c2.xmax-1",
                    "name": "xmax",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "c2.ymax-1",
                    "name": "ymax",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "c2.zmin+1.5",
                    "name": "zmax",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3',float('2.000000'),float('2.000000'),float('1.500000'),float('7.500000'),float('4.500000'),float('3.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                244,
                -190
            ],
            "name": "c1",
            "script": [
                "import fab",
                "",
                "title('Cube (corner)')",
                "",
                "input('xmin', float)",
                "input('ymin', float)",
                "input('zmin', float)",
                "input('xmax', float)",
                "input('ymax', float)",
                "input('zmax', float)",
                "",
                "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))",
                "",
                "# UI",
                "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),",
                "                  (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)",
                "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),",
                "                  (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)",
                "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),",
                "                  (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)",
                "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),",
                "                  (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)",
                "sb.ui.point(xmin, ymin, zmin)",
                "sb.ui.point(xmax, ymax, zmax)",
                ""
            ],
            "uid": 3
        },
        {
            "datums": [
                {
                    "expr": "1",
                    "name": "xmin",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "1",
                    "name": "ymin",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "c0.zmax - 2.5",
                    "name": "zmin",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "c2.xmin + 7.5",
                    "name": "xmax",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "c2.ymin + 4.5",
                    "name": "ymax",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "c0.zmax+1",
                    "name": "zmax",
                    "type": "float",
                    "uid": 5
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5',float('1.000000'),float('1.000000'),float('1.500000'),float('8.500000'),float('5.500000'),float('5.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 6
                }
            ],
            "inspector": [
                -44,
                -195
            ],
            "name": "c2",
            "script": [
                "import fab",
                "",
                "title('Cube (corner)')",
                "",
                "input('xmin', float)",
                "input('ymin', float)",
                "input('zmin', float)",
                "input('xmax', float)",
                "input('ymax', float)",
                "input('zmax', float)",
                "",
                "output('shape', fab.shapes.cube(xmin, xmax, ymin, ymax, zmin, zmax))",
                "",
                "# UI",
                "sb.ui.wireframe([(xmin, ymin, zmin), (xmax, ymin, zmin),",
                "                  (xmax, ymax, zmin), (xmin, ymax, zmin)], close=True)",
                "sb.ui.wireframe([(xmin, ymin, zmax), (xmax, ymin, zmax),",
                "                  (xmax, ymax, zmax), (xmin, ymax, zmax)], close=True)",
                "sb.ui.wireframe([(xmin, ymin, zmin), (xmin, ymax, zmin),",
                "                  (xmin, ymax, zmax), (xmin, ymin, zmax)], close=True)",
                "sb.ui.wireframe([(xmax, ymin, zmin), (xmax, ymax, zmin),",
                "                  (xmax, ymax, zmax), (xmax, ymin, zmax)], close=True)",
                "sb.ui.point(xmin, ymin, zmin)",
                "sb.ui.point(xmax, ymax, zmax)",
                ""
            ],
            "uid": 4
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__10.__2]",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0012fab.types.Shape('aaaaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf1.5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "out",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                }
            ],
            "inspector": [
                529.85311400162595,
                673.61171082377223
            ],
            "name": "m0",
            "script": [
                "import fab",
                "",
                "title('Mesh (.stl)')",
                "",
                "input('shape', fab.types.Shape)",
                "output('out', shape)",
                "",
                "sb.export.stl(shape)",
                ""
            ],
            "uid": 12
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__3.__6]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__2.__2]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('iam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                -26.698025124112931,
                98.57732353518621
            ],
            "name": "u2",
            "script": [
                "import fab.types",
                "",
                "title('Union')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a | b)",
                ""
            ],
            "uid": 13
        },
        {
            "datums": [
                {
                    "expr": "c2.xmin+0.5",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "c2.ymin+0.5",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "c2.zmin-0.5",
                    "name": "zmin",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "c2.zmin+0.5",
                    "name": "zmax",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "0.25",
                    "name": "r",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2',float('1.250000'),float('1.250000'),float('1.000000'),float('1.750000'),float('1.750000'),float('2.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 5
                }
            ],
            "inspector": [
                -332.69846693125345,
                269.0339454814457
            ],
            "name": "c7",
            "script": [
                "import fab",
                "import math",
                "",
                "title('Cylinder (Z)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('zmin', float)",
                "input('zmax', float)",
                "input('r', float)",
                "",
                "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))",
                "",
                "# UI",
                "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])",
                "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmin)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmax)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.point(x, y, zmin)",
                "sb.ui.point(x, y, zmax)",
                "sb.ui.point(x + r, y, zmin, drag=(r, None, None))",
                ""
            ],
            "uid": 14
        },
        {
            "datums": [
                {
                    "expr": "c1.xmax+0.5",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "c1.ymax+0.5",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "c2.zmin-0.5",
                    "name": "zmin",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "c2.zmin+0.5",
                    "name": "zmax",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "0.25",
                    "name": "r",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2',float('7.750000'),float('4.750000'),float('1.000000'),float('8.250000'),float('5.250000'),float('2.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 5
                }
            ],
            "inspector": [
                -43.396050248225777,
                270.81916852018009
            ],
            "name": "c4",
            "script": [
                "import fab",
                "import math",
                "",
                "title('Cylinder (Z)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('zmin', float)",
                "input('zmax', float)",
                "input('r', float)",
                "",
                "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))",
                "",
                "# UI",
                "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])",
                "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmin)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmax)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.point(x, y, zmin)",
                "sb.ui.point(x, y, zmax)",
                "sb.ui.point(x + r, y, zmin, drag=(r, None, None))",
                ""
            ],
            "uid": 5
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__13.__2]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__14.__5]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('aiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                -353.50388053599909,
                521.36986583877854
            ],
            "name": "d3",
            "script": [
                "import fab.types",
                "",
                "title('Difference')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a & ~b)",
                ""
            ],
            "uid": 0
        },
        {
            "datums": [
                {
                    "expr": "c2.xmin+0.5",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "c1.ymax+0.5",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "c2.zmin-0.5",
                    "name": "zmin",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "c2.zmin+0.5",
                    "name": "zmax",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "0.25",
                    "name": "r",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2',float('1.250000'),float('4.750000'),float('1.000000'),float('1.750000'),float('5.250000'),float('2.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 5
                }
            ],
            "inspector": [
                243.92961233524971,
                278.20068739427745
            ],
            "name": "c3",
            "script": [
                "import fab",
                "import math",
                "",
                "title('Cylinder (Z)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('zmin', float)",
                "input('zmax', float)",
                "input('r', float)",
                "",
                "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))",
                "",
                "# UI",
                "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])",
                "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmin)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmax)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.point(x, y, zmin)",
                "sb.ui.point(x, y, zmax)",
                "sb.ui.point(x + r, y, zmin, drag=(r, None, None))",
                ""
            ],
            "uid": 8
        },
        {
            "datums": [
                {
                    "expr": "c1.xmax+0.5",
                    "name": "x",
                    "type": "float",
                    "uid": 0
                },
                {
                    "expr": "c2.ymin+0.5",
                    "name": "y",
                    "type": "float",
                    "uid": 1
                },
                {
                    "expr": "c2.zmin-0.5",
                    "name": "zmin",
                    "type": "float",
                    "uid": 2
                },
                {
                    "expr": "c2.zmin+0.5",
                    "name": "zmax",
                    "type": "float",
                    "uid": 3
                },
                {
                    "expr": "0.25",
                    "name": "r",
                    "type": "float",
                    "uid": 4
                },
                {
                    "expr": "\u0012fab.types.Shape('am__f1-r+q-Xf8q-Yf1.5f0.25a-f1Z-Zf2',float('7.750000'),float('1.250000'),float('1.000000'),float('8.250000'),float('1.750000'),float('2.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 5
                }
            ],
            "inspector": [
                533.15508887751287,
                276.4433088379655
            ],
            "name": "c5",
            "script": [
                "import fab",
                "import math",
                "",
                "title('Cylinder (Z)')",
                "",
                "input('x', float)",
                "input('y', float)",
                "input('zmin', float)",
                "input('zmax', float)",
                "input('r', float)",
                "",
                "output('shape', fab.shapes.cylinder(x, y, zmin, zmax, r))",
                "",
                "# UI",
                "sb.ui.wireframe([(x, y, zmin), (x, y, zmax)])",
                "sb.ui.wireframe([(x, y, zmin), (x+r, y, zmin)])",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmin)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.wireframe([",
                "    (math.cos(i/36. * 2*math.pi) * r + x,",
                "     math.sin(i/36. * 2*math.pi) * r + y, zmax)",
                "    for i in range(36)], close=True)",
                "",
                "sb.ui.point(x, y, zmin)",
                "sb.ui.point(x, y, zmax)",
                "sb.ui.point(x + r, y, zmin, drag=(r, None, None))",
                ""
            ],
            "uid": 6
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__0.__2]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__5.__5]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('aaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                -47.771909930440472,
                527.26247735814559
            ],
            "name": "d4",
            "script": [
                "import fab.types",
                "",
                "title('Difference')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a & ~b)",
                ""
            ],
            "uid": 7
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__7.__2]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__8.__5]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('aaaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                224.95520128544987,
                529.61893845944496
            ],
            "name": "d1",
            "script": [
                "import fab.types",
                "",
                "title('Difference')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a & ~b)",
                ""
            ],
            "uid": 9
        },
        {
            "datums": [
                {
                    "expr": "\u0011[__9.__2]",
                    "name": "a",
                    "type": "_fabtypes.Shape",
                    "uid": 0
                },
                {
                    "expr": "\u0011[__6.__5]",
                    "name": "b",
                    "type": "_fabtypes.Shape",
                    "uid": 1
                },
                {
                    "expr": "\u0012fab.types.Shape('aaaaiam__f1aa-f2X-Xf7.5a-f2Y-Yf4.5a-f1.5Z-Zf3aam__f1aa-f0X-Xf10a-f0Y-Yf7a-f0Z-Zf4nam__f1aa-f1X-Xf8.5a-f1Y-Yf5.5a-f1.5Z-Zf5nam__f1-r+q-Xf1.5q-Yf1.5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf1.5q-Yf5f0.25a-f1Z-Zf2nam__f1-r+q-Xf8q-Yf1.5f0.25a-f1Z-Zf2',float('0.000000'),float('0.000000'),float('0.000000'),float('10.000000'),float('7.000000'),float('4.000000'))",
                    "name": "shape",
                    "type": "_fabtypes.Shape",
                    "uid": 2
                }
            ],
            "inspector": [
                511.27812569907331,
                530.76243447182878
            ],
            "name": "d2",
            "script": [
                "import fab.types",
                "",
                "title('Difference')",
                "input('a', fab.types.Shape)",
                "input('b', fab.types.Shape)",
                "",
                "output('shape', a & ~b)",
                ""
            ],
            "uid": 10
        }
    ],
    "protocol": 6,
    "type": "sb"
}
