{
  "docs": {
    "arguments": {
      "m2d":  "Matrix23",

      "circle": "Circle",
      "a_circle": "Circle",
      "b_circle": "Circle",

      "a_poly": "Polygon",
      "b_poly": "Polygon",

      "line2": "Line2",
      "vec2": "Vec2",
      "out_vec2": "Vec2",
      "v1": "Vec2",
      "v2": "Vec2",
      "v3": "Vec2",
      "vec2_list": "Array(&lt;Vec2&gt;)",
      "seg2": "Segment2",
      "rect": "Rectangle",

      "tri": "Triangle",
      "out_tri": "Triangle",

      "curve": "Beizer",
      "beizer": "Beizer",
      "aabb2": "AABB2",

      "mass": "Number",

      "x1": "Number",
      "x2": "Number",
      "y1": "Number",
      "y2": "Number",
      "x3": "Number",
      "y3": "Number",
      "x4": "Number",
      "y4": "Number"
    }
  },
  "components": {
      "Vec2": {
        "filename": "./lib/vec2.js",
        "debug_file": "./debug/vec2.js",
        "doc_file": "./docs/vec2.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "v2_n": "Vec2",
          "x": "Number",
          "y": "Number",
          "length": "Number",
          "degrees": "Number (Degrees)",
          "radians": "Number (Radians)",
          "dist": "Number",
          "t": "Number",
          "d": "Number",
          "angle": "Number",
          "center": "Vec2",
          "factor": "Number",
          "px": "Number",
          "py": "Number",
          "qx": "Number",
          "qy": "Number",
          "rx": "Number",
          "ry": "Number"
        }
      },
      "Line2": {
        "filename": "./lib/line2.js",
        "debug_file": "./debug/line2.js",
        "doc_file": "./docs/line2.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Line2",
          "l2": "Line2",
          "offset": "Number",
          "x": "Number",
          "y": "Number",
          "m": "Number",
          "seg2": "Segment2"
        }
      },
      "Segment2": {
        "filename": "./lib/segment2.js",
        "debug_file": "./debug/segment2.js",
        "doc_file": "./docs/segment2.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Segment2",
          "seg2_2": "Segment2",
          "cached_seg2_min_angle": "Number"
        }
      },
      "Rectangle": {
        "filename": "./lib/rectangle.js",
        "debug_file": "./debug/rectangle.js",
        "doc_file": "./docs/rectangle.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Rectangle",
          "rect": "Rectangle",
          "rect2": "Rectangle",
          "force": "Boolean",
          "bb2": "AABB2"
        }
      },
      "AABB2": {
        "filename": "./lib/aabb2.js",
        "debug_file": "./debug/aabb2.js",
        "doc_file": "./docs/aabb2.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "AABB2",
          "aabb2_1": "AABB2",
          "aabb2_2": "AABB2",
          "l": "Number",
          "b": "Number",
          "r": "Number",
          "t": "Number",
          "vec2_offset": "Vec2",
          "vec2_scale": "Vec2",
          "alignment": "Number",
          "npoints": "Number",
          "margin": "Number"
        }
      },
      "Circle": {
        "filename": "./lib/circle.js",
        "debug_file": "./debug/circle.js",
        "doc_file": "./docs/circle.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Circle",
          "circle_2": "Circle",
          "x": "Number",
          "y": "Number",
          "radius": "Number",
          "inside": "Boolean",
          "circumcenter": "Boolean"
        }
      },
      "Matrix22": {
        "filename": "./lib/matrix22.js",
        "debug_file": "./debug/matrix22.js",
        "doc_file": "./docs/matrix22.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Matrix22",
          "mat22":  "Matrix22",

          "m11":  "Number",
          "m12":  "Number",
          "m21":  "Number",
          "m22":  "Number"
        }
      },
      "Matrix23": {
        "filename": "./lib/matrix23.js",
        "debug_file": "./debug/matrix23.js",
        "doc_file": "./docs/matrix23.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Matrix23",
          "m2d_2":  "Matrix23",
          "vec2_degrees": "Vec2 (Degrees)",
          "vec2_radians": "Vec2 (Radians)",
          "degrees": "Number (Degrees)",
          "radians": "Number (Radians)",
          "factor": "Number",
          "x": "Number",
          "y": "Number"
        }
      },
      "Polygon": {
        "filename": "./lib/polygon.js",
        "debug_file": "./debug/polygon.js",
        "doc_file": "./docs/polygon.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Polygon",
          "poly":  "Polygon",
          "poly2":  "Polygon",
          "vec2_dir":  "Vec2",
          "simplex":  "Polygon",
          "poly_a":  "Polygon",
          "poly_b":  "Polygon",
          "edges":  "Polygon",
          "normals":  "Polygon",
          "npoints": "Number",
          "start_radians": "Number"
        }
      },
      "Beizer": {
        "filename": "./lib/beizer.js",
        "debug_file": "./debug/beizer.js",
        "doc_file": "./docs/beizer.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "out": "Beizer",
          "t": "Number",
          "step": "Number",
          "cp0x": "Number",
          "cp0y": "Number",
          "cp1x": "Number",
          "cp1y": "Number",
          "cp2x": "Number",
          "cp2y": "Number",
          "cp3x": "Number",
          "cp3y": "Number"
        }
      },
      "Triangle": {
        "filename": "./lib/triangle.js",
        "debug_file": "./debug/triangle.js",
        "doc_file": "./docs/triangle.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "rect": "Rectangle"
        }
      },
      "Intersection": {
        "filename": "./lib/intersection.js",
        "debug_file": "./debug/intersection.js",
        "doc_file": "./docs/intersection.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "num": "Number",
          "num2": "Number",
          "collision": "Boolean",
          "distance": "Boolean",
          "cx": "Number",
          "cy": "Number",
          "r": "Number",
          "line2_1": "Line2",
          "line2_2": "Line2",
          "seg2_1": "Segment2",
          "seg2_2": "Segment2",
          "bb2_1": "AABB2",
          "bb2_2": "AABB2",
          "rect1": "Rectangle",
          "rect2": "Rectangle"
        }
      },
      "Distance": {
        "filename": "./lib/distance.js",
        "debug_file": "./debug/distance.js",
        "doc_file": "./docs/distance.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "bb2": "AABB2",
          "rect": "Rectangle"
        }
      },
      "Transitions": {
        "filename": "./lib/transitions.js",
        "debug_file": "./debug/transitions.js",
        "doc_file": "./docs/transitions.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "pos": "Number",
          "x": "Number",
          "name": "String",
          "transition": "Function",
          "obj": "Object",
          "prop": "String",
          "values": "Mixed",
          "ioptions": "Object",
          "params": "Object",
          "options": "Object"
        }
      },
      "Xorshift": {
        "filename": "./lib/xorshift.js",
        "debug_file": "./debug/xorshift.js",
        "doc_file": "./docs/xorshift.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "seeds": "[, Number...]"
        }
      },
      "Noise": {
        "filename": "./lib/noise.js",
        "debug_file": "./debug/noise.js",
        "doc_file": "./docs/noise.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
          "seed": "Number"
        }
      },
      "Collision.SAT": {
        "filename": "./lib/collision/sat.js",
        "debug_file": "./debug/collision-sat.js",
        "doc_file": "./docs/collision-sat.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
            "out_response" : "Collision.Response",

            "a_points": "Polygon",
            "b_points": "Polygon",
            "poly_points": "Polygon",

            "a_normals": "Polygon<Normals>",
            "b_normals": "Polygon<Normals>",

            "poly_edges": "Polygon<Edges>",
            "a_edges": "Polygon<Edges>",
            "b_edges": "Polygon<Edges>",

            "poly_pos": "Vec2",
            "a_pos": "Vec2",
            "b_pos": "Vec2"
        }
      },
      "Collision.GJK": {
        "filename": "./lib/collision/gjk.js",
        "debug_file": "./debug/collision-gjk.js",
        "doc_file": "./docs/collision-gjk.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
            "a_points": "Polygon",
            "b_points": "Polygon"
        }
      },
      "Collision.Resolve": {
        "filename": "./lib/collision/resolve.js",
        "debug_file": "./debug/collision-resolve.js",
        "doc_file": "./docs/collision-resolve.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
            "a_point": "Vec2",
            "b_point": "Vec2",
            "out_position": "Vec2",
            "out_velocity": "Vec2",
            "out_a_velocity": "Vec2",
            "out_b_velocity": "Vec2",
            "normal": "Vec2",
            "mtv": "Vec2",
            "vector": "Vec2",
            "penetration_depth": "Number",
            "a_restitution": "Number",
            "b_restitution": "Number",
            "a_imass": "Number",
            "b_imass": "Number",
            "a_mass": "Number",
            "b_mass": "Number"
        }
      },
      "Collision.Manifold": {
        "filename": "./lib/collision/manifold.js",
        "debug_file": "./debug/collision-manifold.js",
        "doc_file": "./docs/collision-manifold.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
            "a_points": "Polygon",
            "b_points": "Polygon",
            "n": "Vec2"
        }
      },
      "Collision.Response": {
        "filename": "./lib/collision/response.js",
        "debug_file": "./debug/collision-response.js",
        "doc_file": "./docs/collision-response.markdown",
        "update_doc": true,
        "generate_debug": true,

        "valid_arguments": {
            "response": "Collision.Response"

        }
      }
  }
}
