Bug 1265272 - Import altgraph 0.12; r?ted,gerv draft
authorMike Shal <mshal@mozilla.com>
Thu, 21 Apr 2016 13:49:29 -0400
changeset 356901 95a086071ff05dc522170a7a1cd631eb82bba69a
parent 356900 0c0d2c0948924f2c8da088785f98e490f54d6b69
child 356902 41232e48e86fa3a5e74730caa10a05fee3468034
push id16636
push userbmo:mshal@mozilla.com
push dateWed, 27 Apr 2016 13:28:00 +0000
reviewersted, gerv
bugs1265272
milestone48.0a1
Bug 1265272 - Import altgraph 0.12; r?ted,gerv MozReview-Commit-ID: 7mjFYfEGlHS
python/altgraph/MANIFEST.in
python/altgraph/PKG-INFO
python/altgraph/README.txt
python/altgraph/altgraph.egg-info/PKG-INFO
python/altgraph/altgraph.egg-info/SOURCES.txt
python/altgraph/altgraph.egg-info/dependency_links.txt
python/altgraph/altgraph.egg-info/top_level.txt
python/altgraph/altgraph.egg-info/zip-safe
python/altgraph/altgraph/Dot.py
python/altgraph/altgraph/Graph.py
python/altgraph/altgraph/GraphAlgo.py
python/altgraph/altgraph/GraphStat.py
python/altgraph/altgraph/GraphUtil.py
python/altgraph/altgraph/ObjectGraph.py
python/altgraph/altgraph/__init__.py
python/altgraph/altgraph_tests/__init__.py
python/altgraph/altgraph_tests/test_altgraph.py
python/altgraph/altgraph_tests/test_dot.py
python/altgraph/altgraph_tests/test_graph.py
python/altgraph/altgraph_tests/test_graphstat.py
python/altgraph/altgraph_tests/test_graphutil.py
python/altgraph/altgraph_tests/test_object_graph.py
python/altgraph/doc/Makefile
python/altgraph/doc/_build/doctrees/changelog.doctree
python/altgraph/doc/_build/doctrees/core.doctree
python/altgraph/doc/_build/doctrees/dot.doctree
python/altgraph/doc/_build/doctrees/environment.pickle
python/altgraph/doc/_build/doctrees/graph.doctree
python/altgraph/doc/_build/doctrees/graphalgo.doctree
python/altgraph/doc/_build/doctrees/graphstat.doctree
python/altgraph/doc/_build/doctrees/graphutil.doctree
python/altgraph/doc/_build/doctrees/index.doctree
python/altgraph/doc/_build/doctrees/license.doctree
python/altgraph/doc/_build/doctrees/objectgraph.doctree
python/altgraph/doc/_build/html/.buildinfo
python/altgraph/doc/_build/html/_sources/changelog.txt
python/altgraph/doc/_build/html/_sources/core.txt
python/altgraph/doc/_build/html/_sources/dot.txt
python/altgraph/doc/_build/html/_sources/graph.txt
python/altgraph/doc/_build/html/_sources/graphalgo.txt
python/altgraph/doc/_build/html/_sources/graphstat.txt
python/altgraph/doc/_build/html/_sources/graphutil.txt
python/altgraph/doc/_build/html/_sources/index.txt
python/altgraph/doc/_build/html/_sources/license.txt
python/altgraph/doc/_build/html/_sources/objectgraph.txt
python/altgraph/doc/_build/html/_static/ajax-loader.gif
python/altgraph/doc/_build/html/_static/basic.css
python/altgraph/doc/_build/html/_static/comment-bright.png
python/altgraph/doc/_build/html/_static/comment-close.png
python/altgraph/doc/_build/html/_static/comment.png
python/altgraph/doc/_build/html/_static/doctools.js
python/altgraph/doc/_build/html/_static/down-pressed.png
python/altgraph/doc/_build/html/_static/down.png
python/altgraph/doc/_build/html/_static/file.png
python/altgraph/doc/_build/html/_static/jquery.js
python/altgraph/doc/_build/html/_static/minus.png
python/altgraph/doc/_build/html/_static/nature.css
python/altgraph/doc/_build/html/_static/plus.png
python/altgraph/doc/_build/html/_static/pygments.css
python/altgraph/doc/_build/html/_static/searchtools.js
python/altgraph/doc/_build/html/_static/underscore.js
python/altgraph/doc/_build/html/_static/up-pressed.png
python/altgraph/doc/_build/html/_static/up.png
python/altgraph/doc/_build/html/_static/websupport.js
python/altgraph/doc/_build/html/changelog.html
python/altgraph/doc/_build/html/core.html
python/altgraph/doc/_build/html/dot.html
python/altgraph/doc/_build/html/genindex.html
python/altgraph/doc/_build/html/graph.html
python/altgraph/doc/_build/html/graphalgo.html
python/altgraph/doc/_build/html/graphstat.html
python/altgraph/doc/_build/html/graphutil.html
python/altgraph/doc/_build/html/index.html
python/altgraph/doc/_build/html/license.html
python/altgraph/doc/_build/html/objectgraph.html
python/altgraph/doc/_build/html/objects.inv
python/altgraph/doc/_build/html/py-modindex.html
python/altgraph/doc/_build/html/search.html
python/altgraph/doc/_build/html/searchindex.js
python/altgraph/doc/changelog.rst
python/altgraph/doc/conf.py
python/altgraph/doc/core.rst
python/altgraph/doc/dot.rst
python/altgraph/doc/graph.rst
python/altgraph/doc/graphalgo.rst
python/altgraph/doc/graphstat.rst
python/altgraph/doc/graphutil.rst
python/altgraph/doc/index.rst
python/altgraph/doc/license.rst
python/altgraph/doc/objectgraph.rst
python/altgraph/setup.cfg
python/altgraph/setup.py
new file mode 100644
--- /dev/null
+++ b/python/altgraph/MANIFEST.in
@@ -0,0 +1,9 @@
+include ReadMe.txt
+include *.txt MANIFEST.in *.py
+graft doc
+graft doc/_static
+graft doc/_templates
+graft altgraph_tests
+global-exclude .DS_Store
+global-exclude *.pyc
+global-exclude *.so
new file mode 100644
--- /dev/null
+++ b/python/altgraph/PKG-INFO
@@ -0,0 +1,216 @@
+Metadata-Version: 1.1
+Name: altgraph
+Version: 0.12
+Summary: Python graph (network) package
+Home-page: http://packages.python.org/altgraph
+Author: Ronald Oussoren
+Author-email: ronaldoussoren@mac.com
+License: MIT
+Download-URL: http://pypi.python.org/pypi/altgraph
+Description: altgraph is a fork of graphlib: a graph (network) package for constructing
+        graphs, BFS and DFS traversals, topological sort, shortest paths, etc. with
+        graphviz output.
+        
+        altgraph includes some additional usage of Python 2.6+ features and
+        enhancements related to modulegraph and macholib.
+        
+        
+        Release history
+        ===============
+        
+        0.12
+        ----
+        
+        - Added ``ObjectGraph.edgeData`` to retrieve the edge data
+          from a specific edge.
+        
+        - Added ``AltGraph.update_edge_data`` and ``ObjectGraph.updateEdgeData``
+          to update the data associated with a graph edge.
+        
+        0.11
+        ----
+        
+        - Stabilize the order of elements in dot file exports,
+          patch from bitbucket user 'pombredanne'.
+        
+        - Tweak setup.py file to remove dependency on distribute (but
+          keep the dependency on setuptools)
+        
+        
+        0.10.2
+        ------
+        
+        - There where no classifiers in the package metadata due to a bug
+          in setup.py
+        
+        0.10.1
+        ------
+        
+        This is a bugfix release
+        
+        Bug fixes:
+        
+        - Issue #3: The source archive contains a README.txt
+          while the setup file refers to ReadMe.txt.
+        
+          This is caused by a misfeature in distutils, as a
+          workaround I've renamed ReadMe.txt to README.txt
+          in the source tree and setup file.
+        
+        
+        0.10
+        -----
+        
+        This is a minor feature release
+        
+        Features:
+        
+        - Do not use "2to3" to support Python 3.
+        
+          As a side effect of this altgraph now supports
+          Python 2.6 and later, and no longer supports
+          earlier releases of Python.
+        
+        - The order of attributes in the Dot output
+          is now always alphabetical.
+        
+          With this change the output will be consistent
+          between runs and Python versions.
+        
+        0.9
+        ---
+        
+        This is a minor bugfix release
+        
+        Features:
+        
+        - Added ``altgraph.ObjectGraph.ObjectGraph.nodes``, a method
+          yielding all nodes in an object graph.
+        
+        Bugfixes:
+        
+        - The 0.8 release didn't work with py2app when using
+          python 3.x.
+        
+        
+        0.8
+        -----
+        
+        This is a minor feature release. The major new feature
+        is a extensive set of unittests, which explains almost
+        all other changes in this release.
+        
+        Bugfixes:
+        
+        - Installing failed with Python 2.5 due to using a distutils
+          class that isn't available in that version of Python
+          (issue #1 on the issue tracker)
+        
+        - ``altgraph.GraphStat.degree_dist`` now actually works
+        
+        - ``altgraph.Graph.add_edge(a, b, create_nodes=False)`` will
+          no longer create the edge when one of the nodes doesn't
+          exist.
+        
+        - ``altgraph.Graph.forw_topo_sort`` failed for some sparse graphs.
+        
+        - ``altgraph.Graph.back_topo_sort`` was completely broken in
+          previous releases.
+        
+        - ``altgraph.Graph.forw_bfs_subgraph`` now actually works.
+        
+        - ``altgraph.Graph.back_bfs_subgraph`` now actually works.
+        
+        - ``altgraph.Graph.iterdfs`` now returns the correct result
+          when the ``forward`` argument is ``False``.
+        
+        - ``altgraph.Graph.iterdata`` now returns the correct result
+          when the ``forward`` argument is ``False``.
+        
+        
+        Features:
+        
+        - The ``altgraph.Graph`` constructor now accepts an argument
+          that contains 2- and 3-tuples instead of requireing that
+          all items have the same size. The (optional) argument can now
+          also be any iterator.
+        
+        - ``altgraph.Graph.Graph.add_node`` has no effect when you
+          add a hidden node.
+        
+        - The private method ``altgraph.Graph._bfs`` is no longer
+          present.
+        
+        - The private method ``altgraph.Graph._dfs`` is no longer
+          present.
+        
+        - ``altgraph.ObjectGraph`` now has a ``__contains__`` methods,
+          which means you can use the ``in`` operator to check if a
+          node is part of a graph.
+        
+        - ``altgraph.GraphUtil.generate_random_graph`` will raise
+          ``GraphError`` instead of looping forever when it is
+          impossible to create the requested graph.
+        
+        - ``altgraph.Dot.edge_style`` raises ``GraphError`` when
+          one of the nodes is not present in the graph. The method
+          silently added the tail in the past, but without ensuring
+          a consistent graph state.
+        
+        - ``altgraph.Dot.save_img`` now works when the mode is
+          ``"neato"``.
+        
+        0.7.2
+        -----
+        
+        This is a minor bugfix release
+        
+        Bugfixes:
+        
+        - distutils didn't include the documentation subtree
+        
+        0.7.1
+        -----
+        
+        This is a minor feature release
+        
+        Features:
+        
+        - Documentation is now generated using `sphinx <http://pypi.python.org/pypi/sphinx>`_
+          and can be viewed at <http://packages.python.org/altgraph>.
+        
+        - The repository has moved to bitbucket
+        
+        - ``altgraph.GraphStat.avg_hops`` is no longer present, the function had no
+          implementation and no specified behaviour.
+        
+        - the module ``altgraph.compat`` is gone, which means altgraph will no
+          longer work with Python 2.3.
+        
+        
+        0.7.0
+        -----
+        
+        This is a minor feature release.
+        
+        Features:
+        
+        - Support for Python 3
+        
+        - It is now possible to run tests using 'python setup.py test'
+        
+          (The actual testsuite is still very minimal though)
+        
+Keywords: graph
+Platform: any
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: Scientific/Engineering :: Mathematics
+Classifier: Topic :: Scientific/Engineering :: Visualization
new file mode 100644
--- /dev/null
+++ b/python/altgraph/README.txt
@@ -0,0 +1,6 @@
+altgraph is a fork of graphlib: a graph (network) package for constructing
+graphs, BFS and DFS traversals, topological sort, shortest paths, etc. with
+graphviz output.
+
+altgraph includes some additional usage of Python 2.6+ features and
+enhancements related to modulegraph and macholib.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph.egg-info/PKG-INFO
@@ -0,0 +1,216 @@
+Metadata-Version: 1.1
+Name: altgraph
+Version: 0.12
+Summary: Python graph (network) package
+Home-page: http://packages.python.org/altgraph
+Author: Ronald Oussoren
+Author-email: ronaldoussoren@mac.com
+License: MIT
+Download-URL: http://pypi.python.org/pypi/altgraph
+Description: altgraph is a fork of graphlib: a graph (network) package for constructing
+        graphs, BFS and DFS traversals, topological sort, shortest paths, etc. with
+        graphviz output.
+        
+        altgraph includes some additional usage of Python 2.6+ features and
+        enhancements related to modulegraph and macholib.
+        
+        
+        Release history
+        ===============
+        
+        0.12
+        ----
+        
+        - Added ``ObjectGraph.edgeData`` to retrieve the edge data
+          from a specific edge.
+        
+        - Added ``AltGraph.update_edge_data`` and ``ObjectGraph.updateEdgeData``
+          to update the data associated with a graph edge.
+        
+        0.11
+        ----
+        
+        - Stabilize the order of elements in dot file exports,
+          patch from bitbucket user 'pombredanne'.
+        
+        - Tweak setup.py file to remove dependency on distribute (but
+          keep the dependency on setuptools)
+        
+        
+        0.10.2
+        ------
+        
+        - There where no classifiers in the package metadata due to a bug
+          in setup.py
+        
+        0.10.1
+        ------
+        
+        This is a bugfix release
+        
+        Bug fixes:
+        
+        - Issue #3: The source archive contains a README.txt
+          while the setup file refers to ReadMe.txt.
+        
+          This is caused by a misfeature in distutils, as a
+          workaround I've renamed ReadMe.txt to README.txt
+          in the source tree and setup file.
+        
+        
+        0.10
+        -----
+        
+        This is a minor feature release
+        
+        Features:
+        
+        - Do not use "2to3" to support Python 3.
+        
+          As a side effect of this altgraph now supports
+          Python 2.6 and later, and no longer supports
+          earlier releases of Python.
+        
+        - The order of attributes in the Dot output
+          is now always alphabetical.
+        
+          With this change the output will be consistent
+          between runs and Python versions.
+        
+        0.9
+        ---
+        
+        This is a minor bugfix release
+        
+        Features:
+        
+        - Added ``altgraph.ObjectGraph.ObjectGraph.nodes``, a method
+          yielding all nodes in an object graph.
+        
+        Bugfixes:
+        
+        - The 0.8 release didn't work with py2app when using
+          python 3.x.
+        
+        
+        0.8
+        -----
+        
+        This is a minor feature release. The major new feature
+        is a extensive set of unittests, which explains almost
+        all other changes in this release.
+        
+        Bugfixes:
+        
+        - Installing failed with Python 2.5 due to using a distutils
+          class that isn't available in that version of Python
+          (issue #1 on the issue tracker)
+        
+        - ``altgraph.GraphStat.degree_dist`` now actually works
+        
+        - ``altgraph.Graph.add_edge(a, b, create_nodes=False)`` will
+          no longer create the edge when one of the nodes doesn't
+          exist.
+        
+        - ``altgraph.Graph.forw_topo_sort`` failed for some sparse graphs.
+        
+        - ``altgraph.Graph.back_topo_sort`` was completely broken in
+          previous releases.
+        
+        - ``altgraph.Graph.forw_bfs_subgraph`` now actually works.
+        
+        - ``altgraph.Graph.back_bfs_subgraph`` now actually works.
+        
+        - ``altgraph.Graph.iterdfs`` now returns the correct result
+          when the ``forward`` argument is ``False``.
+        
+        - ``altgraph.Graph.iterdata`` now returns the correct result
+          when the ``forward`` argument is ``False``.
+        
+        
+        Features:
+        
+        - The ``altgraph.Graph`` constructor now accepts an argument
+          that contains 2- and 3-tuples instead of requireing that
+          all items have the same size. The (optional) argument can now
+          also be any iterator.
+        
+        - ``altgraph.Graph.Graph.add_node`` has no effect when you
+          add a hidden node.
+        
+        - The private method ``altgraph.Graph._bfs`` is no longer
+          present.
+        
+        - The private method ``altgraph.Graph._dfs`` is no longer
+          present.
+        
+        - ``altgraph.ObjectGraph`` now has a ``__contains__`` methods,
+          which means you can use the ``in`` operator to check if a
+          node is part of a graph.
+        
+        - ``altgraph.GraphUtil.generate_random_graph`` will raise
+          ``GraphError`` instead of looping forever when it is
+          impossible to create the requested graph.
+        
+        - ``altgraph.Dot.edge_style`` raises ``GraphError`` when
+          one of the nodes is not present in the graph. The method
+          silently added the tail in the past, but without ensuring
+          a consistent graph state.
+        
+        - ``altgraph.Dot.save_img`` now works when the mode is
+          ``"neato"``.
+        
+        0.7.2
+        -----
+        
+        This is a minor bugfix release
+        
+        Bugfixes:
+        
+        - distutils didn't include the documentation subtree
+        
+        0.7.1
+        -----
+        
+        This is a minor feature release
+        
+        Features:
+        
+        - Documentation is now generated using `sphinx <http://pypi.python.org/pypi/sphinx>`_
+          and can be viewed at <http://packages.python.org/altgraph>.
+        
+        - The repository has moved to bitbucket
+        
+        - ``altgraph.GraphStat.avg_hops`` is no longer present, the function had no
+          implementation and no specified behaviour.
+        
+        - the module ``altgraph.compat`` is gone, which means altgraph will no
+          longer work with Python 2.3.
+        
+        
+        0.7.0
+        -----
+        
+        This is a minor feature release.
+        
+        Features:
+        
+        - Support for Python 3
+        
+        - It is now possible to run tests using 'python setup.py test'
+        
+          (The actual testsuite is still very minimal though)
+        
+Keywords: graph
+Platform: any
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: Scientific/Engineering :: Mathematics
+Classifier: Topic :: Scientific/Engineering :: Visualization
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph.egg-info/SOURCES.txt
@@ -0,0 +1,92 @@
+MANIFEST.in
+README.txt
+ReadMe.txt
+setup.cfg
+setup.py
+altgraph/Dot.py
+altgraph/Graph.py
+altgraph/GraphAlgo.py
+altgraph/GraphStat.py
+altgraph/GraphUtil.py
+altgraph/ObjectGraph.py
+altgraph/__init__.py
+altgraph.egg-info/PKG-INFO
+altgraph.egg-info/SOURCES.txt
+altgraph.egg-info/dependency_links.txt
+altgraph.egg-info/top_level.txt
+altgraph.egg-info/zip-safe
+altgraph_tests/__init__.py
+altgraph_tests/test_altgraph.py
+altgraph_tests/test_dot.py
+altgraph_tests/test_graph.py
+altgraph_tests/test_graphstat.py
+altgraph_tests/test_graphutil.py
+altgraph_tests/test_object_graph.py
+doc/Makefile
+doc/changelog.rst
+doc/conf.py
+doc/core.rst
+doc/dot.rst
+doc/graph.rst
+doc/graphalgo.rst
+doc/graphstat.rst
+doc/graphutil.rst
+doc/index.rst
+doc/license.rst
+doc/objectgraph.rst
+doc/_build/doctrees/changelog.doctree
+doc/_build/doctrees/core.doctree
+doc/_build/doctrees/dot.doctree
+doc/_build/doctrees/environment.pickle
+doc/_build/doctrees/graph.doctree
+doc/_build/doctrees/graphalgo.doctree
+doc/_build/doctrees/graphstat.doctree
+doc/_build/doctrees/graphutil.doctree
+doc/_build/doctrees/index.doctree
+doc/_build/doctrees/license.doctree
+doc/_build/doctrees/objectgraph.doctree
+doc/_build/html/.buildinfo
+doc/_build/html/changelog.html
+doc/_build/html/core.html
+doc/_build/html/dot.html
+doc/_build/html/genindex.html
+doc/_build/html/graph.html
+doc/_build/html/graphalgo.html
+doc/_build/html/graphstat.html
+doc/_build/html/graphutil.html
+doc/_build/html/index.html
+doc/_build/html/license.html
+doc/_build/html/objectgraph.html
+doc/_build/html/objects.inv
+doc/_build/html/py-modindex.html
+doc/_build/html/search.html
+doc/_build/html/searchindex.js
+doc/_build/html/_sources/changelog.txt
+doc/_build/html/_sources/core.txt
+doc/_build/html/_sources/dot.txt
+doc/_build/html/_sources/graph.txt
+doc/_build/html/_sources/graphalgo.txt
+doc/_build/html/_sources/graphstat.txt
+doc/_build/html/_sources/graphutil.txt
+doc/_build/html/_sources/index.txt
+doc/_build/html/_sources/license.txt
+doc/_build/html/_sources/objectgraph.txt
+doc/_build/html/_static/ajax-loader.gif
+doc/_build/html/_static/basic.css
+doc/_build/html/_static/comment-bright.png
+doc/_build/html/_static/comment-close.png
+doc/_build/html/_static/comment.png
+doc/_build/html/_static/doctools.js
+doc/_build/html/_static/down-pressed.png
+doc/_build/html/_static/down.png
+doc/_build/html/_static/file.png
+doc/_build/html/_static/jquery.js
+doc/_build/html/_static/minus.png
+doc/_build/html/_static/nature.css
+doc/_build/html/_static/plus.png
+doc/_build/html/_static/pygments.css
+doc/_build/html/_static/searchtools.js
+doc/_build/html/_static/underscore.js
+doc/_build/html/_static/up-pressed.png
+doc/_build/html/_static/up.png
+doc/_build/html/_static/websupport.js
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph.egg-info/dependency_links.txt
@@ -0,0 +1,1 @@
+
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph.egg-info/top_level.txt
@@ -0,0 +1,1 @@
+altgraph
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph.egg-info/zip-safe
@@ -0,0 +1,1 @@
+
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph/Dot.py
@@ -0,0 +1,299 @@
+'''
+altgraph.Dot - Interface to the dot language
+============================================
+
+The :py:mod:`~altgraph.Dot` module provides a simple interface to the
+file format used in the `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_
+program. The module is intended to offload the most tedious part of the process
+(the **dot** file generation) while transparently exposing most of its features.
+
+To display the graphs or to generate image files the `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_
+package needs to be installed on the system, moreover the :command:`dot` and :command:`dotty` programs must
+be accesible in the program path so that they can be ran from processes spawned
+within the module.
+
+Example usage
+-------------
+
+Here is a typical usage::
+
+    from altgraph import Graph, Dot
+
+    # create a graph
+    edges = [ (1,2), (1,3), (3,4), (3,5), (4,5), (5,4) ]
+    graph = Graph.Graph(edges)
+
+    # create a dot representation of the graph
+    dot = Dot.Dot(graph)
+
+    # display the graph
+    dot.display()
+
+    # save the dot representation into the mydot.dot file
+    dot.save_dot(file_name='mydot.dot')
+
+    # save dot file as gif image into the graph.gif file
+    dot.save_img(file_name='graph', file_type='gif')
+
+Directed graph and non-directed graph
+-------------------------------------
+
+Dot class can use for both directed graph and non-directed graph
+by passing ``graphtype`` parameter.
+
+Example::
+
+    # create directed graph(default)
+    dot = Dot.Dot(graph, graphtype="digraph")
+
+    # create non-directed graph
+    dot = Dot.Dot(graph, graphtype="graph")
+
+Customizing the output
+----------------------
+
+The graph drawing process may be customized by passing
+valid :command:`dot` parameters for the nodes and edges. For a list of all
+parameters see the `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_
+documentation.
+
+Example::
+
+    # customizing the way the overall graph is drawn
+    dot.style(size='10,10', rankdir='RL', page='5, 5' , ranksep=0.75)
+
+    # customizing node drawing
+    dot.node_style(1, label='BASE_NODE',shape='box', color='blue' )
+    dot.node_style(2, style='filled', fillcolor='red')
+
+    # customizing edge drawing
+    dot.edge_style(1, 2, style='dotted')
+    dot.edge_style(3, 5, arrowhead='dot', label='binds', labelangle='90')
+    dot.edge_style(4, 5, arrowsize=2, style='bold')
+
+
+.. note::
+
+   dotty (invoked via :py:func:`~altgraph.Dot.display`) may not be able to
+   display all graphics styles. To verify the output save it to an image file
+   and look at it that way.
+
+Valid attributes
+----------------
+
+    - dot styles, passed via the :py:meth:`Dot.style` method::
+
+        rankdir = 'LR'   (draws the graph horizontally, left to right)
+        ranksep = number (rank separation in inches)
+
+    - node attributes, passed via the :py:meth:`Dot.node_style` method::
+
+        style = 'filled' | 'invisible' | 'diagonals' | 'rounded'
+        shape = 'box' | 'ellipse' | 'circle' | 'point' | 'triangle'
+
+    - edge attributes, passed via the :py:meth:`Dot.edge_style` method::
+
+        style     = 'dashed' | 'dotted' | 'solid' | 'invis' | 'bold'
+        arrowhead = 'box' | 'crow' | 'diamond' | 'dot' | 'inv' | 'none' | 'tee' | 'vee'
+        weight    = number (the larger the number the closer the nodes will be)
+
+    - valid `graphviz colors <http://www.research.att.com/~erg/graphviz/info/colors.html>`_
+
+    - for more details on how to control the graph drawing process see the
+      `graphviz reference <http://www.research.att.com/sw/tools/graphviz/refs.html>`_.
+'''
+import os
+import warnings
+
+from altgraph import GraphError
+
+
+class Dot(object):
+    '''
+    A  class providing a **graphviz** (dot language) representation
+    allowing a fine grained control over how the graph is being
+    displayed.
+
+    If the :command:`dot` and :command:`dotty` programs are not in the current system path
+    their location needs to be specified in the contructor.
+    '''
+
+    def __init__(self, graph=None, nodes=None, edgefn=None, nodevisitor=None, edgevisitor=None, name="G", dot='dot', dotty='dotty', neato='neato', graphtype="digraph"):
+        '''
+        Initialization.
+        '''
+        self.name, self.attr = name, {}
+
+        assert graphtype in ['graph', 'digraph']
+        self.type = graphtype
+
+        self.temp_dot = "tmp_dot.dot"
+        self.temp_neo = "tmp_neo.dot"
+
+        self.dot, self.dotty, self.neato = dot, dotty, neato
+
+        # self.nodes: node styles
+        # self.edges: edge styles
+        self.nodes, self.edges = {}, {}
+
+        if graph is not None and nodes is None:
+            nodes = graph
+        if graph is not None and edgefn is None:
+            def edgefn(node, graph=graph):
+                return graph.out_nbrs(node)
+        if nodes is None:
+            nodes = ()
+
+        seen = set()
+        for node in nodes:
+            if nodevisitor is None:
+                style = {}
+            else:
+                style = nodevisitor(node)
+            if style is not None:
+                self.nodes[node] = {}
+                self.node_style(node, **style)
+                seen.add(node)
+        if edgefn is not None:
+            for head in seen:
+                for tail in (n for n in edgefn(head) if n in seen):
+                    if edgevisitor is None:
+                        edgestyle = {}
+                    else:
+                        edgestyle = edgevisitor(head, tail)
+                    if edgestyle is not None:
+                        if head not in self.edges:
+                            self.edges[head] = {}
+                        self.edges[head][tail] = {}
+                        self.edge_style(head, tail, **edgestyle)
+
+    def style(self, **attr):
+        '''
+        Changes the overall style
+        '''
+        self.attr = attr
+
+    def display(self, mode='dot'):
+        '''
+        Displays the current graph via dotty
+        '''
+
+        if  mode == 'neato':
+            self.save_dot(self.temp_neo)
+            neato_cmd = "%s -o %s %s" % (self.neato, self.temp_dot, self.temp_neo)
+            os.system(neato_cmd)
+        else:
+            self.save_dot(self.temp_dot)
+
+        plot_cmd = "%s %s" % (self.dotty, self.temp_dot)
+        os.system(plot_cmd)
+
+    def node_style(self, node, **kwargs):
+        '''
+        Modifies a node style to the dot representation.
+        '''
+        if node not in self.edges:
+            self.edges[node] = {}
+        self.nodes[node] = kwargs
+
+    def all_node_style(self, **kwargs):
+        '''
+        Modifies all node styles
+        '''
+        for node in self.nodes:
+            self.node_style(node, **kwargs)
+
+    def edge_style(self, head, tail, **kwargs):
+        '''
+        Modifies an edge style to the dot representation.
+        '''
+        if tail not in self.nodes:
+            raise GraphError("invalid node %s" % (tail,))
+
+        try:
+            if tail not in self.edges[head]:
+                self.edges[head][tail]= {}
+            self.edges[head][tail] = kwargs
+        except KeyError:
+            raise GraphError("invalid edge  %s -> %s " % (head, tail) )
+
+    def iterdot(self):
+        # write graph title
+        if self.type == 'digraph':
+            yield 'digraph %s {\n' % (self.name,)
+        elif self.type == 'graph':
+            yield 'graph %s {\n' % (self.name,)
+
+        else:
+            raise GraphError("unsupported graphtype %s" % (self.type,))
+
+        # write overall graph attributes
+        for attr_name, attr_value in sorted(self.attr.items()):
+            yield '%s="%s";' % (attr_name, attr_value)
+        yield '\n'
+
+        # some reusable patterns
+        cpatt  = '%s="%s",'      # to separate attributes
+        epatt  = '];\n'          # to end attributes
+
+        # write node attributes
+        for node_name, node_attr in sorted(self.nodes.items()):
+            yield '\t"%s" [' % (node_name,)
+            for attr_name, attr_value in sorted(node_attr.items()):
+                yield cpatt % (attr_name, attr_value)
+            yield epatt
+
+        # write edge attributes
+        for head in sorted(self.edges):
+            for tail in sorted(self.edges[head]):
+                if self.type == 'digraph':
+                    yield '\t"%s" -> "%s" [' % (head, tail)
+                else:
+                    yield '\t"%s" -- "%s" [' % (head, tail)
+                for attr_name, attr_value in sorted(self.edges[head][tail].items()):
+                    yield cpatt % (attr_name, attr_value)
+                yield epatt
+
+        # finish file
+        yield '}\n'
+
+    def __iter__(self):
+        return self.iterdot()
+
+    def save_dot(self, file_name=None):
+        '''
+        Saves the current graph representation into a file
+        '''
+
+        if not file_name:
+            warnings.warn(DeprecationWarning, "always pass a file_name")
+            file_name = self.temp_dot
+
+        fp   = open(file_name, "w")
+        try:
+            for chunk in self.iterdot():
+                fp.write(chunk)
+        finally:
+            fp.close()
+
+    def save_img(self, file_name=None, file_type="gif", mode='dot'):
+        '''
+        Saves the dot file as an image file
+        '''
+
+        if not file_name:
+            warnings.warn(DeprecationWarning, "always pass a file_name")
+            file_name = "out"
+
+        if  mode == 'neato':
+            self.save_dot(self.temp_neo)
+            neato_cmd = "%s -o %s %s" % (self.neato, self.temp_dot, self.temp_neo)
+            os.system(neato_cmd)
+            plot_cmd = self.dot
+        else:
+            self.save_dot(self.temp_dot)
+            plot_cmd = self.dot
+
+        file_name  = "%s.%s" % (file_name, file_type)
+        create_cmd = "%s -T%s %s -o %s" % (plot_cmd, file_type, self.temp_dot, file_name)
+        os.system(create_cmd)
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph/Graph.py
@@ -0,0 +1,677 @@
+"""
+altgraph.Graph - Base Graph class
+=================================
+
+..
+  #--Version 2.1
+  #--Bob Ippolito October, 2004
+
+  #--Version 2.0
+  #--Istvan Albert June, 2004
+
+  #--Version 1.0
+  #--Nathan Denny, May 27, 1999
+"""
+
+from altgraph import GraphError
+from collections import deque
+
+class Graph(object):
+    """
+    The Graph class represents a directed graph with *N* nodes and *E* edges.
+
+    Naming conventions:
+
+    - the prefixes such as *out*, *inc* and *all* will refer to methods
+      that operate on the outgoing, incoming or all edges of that node.
+
+      For example: :py:meth:`inc_degree` will refer to the degree of the node
+      computed over the incoming edges (the number of neighbours linking to
+      the node).
+
+    - the prefixes such as *forw* and *back* will refer to the
+      orientation of the edges used in the method with respect to the node.
+
+      For example: :py:meth:`forw_bfs` will start at the node then use the outgoing
+      edges to traverse the graph (goes forward).
+    """
+
+    def __init__(self, edges=None):
+        """
+        Initialization
+        """
+
+        self.next_edge = 0
+        self.nodes, self.edges = {}, {}
+        self.hidden_edges, self.hidden_nodes = {}, {}
+
+        if edges is not None:
+            for item in edges:
+                if len(item) == 2:
+                    head, tail = item
+                    self.add_edge(head, tail)
+                elif len(item) == 3:
+                    head, tail, data = item
+                    self.add_edge(head, tail, data)
+                else:
+                    raise GraphError("Cannot create edge from %s"%(item,))
+
+
+    def __repr__(self):
+        return '<Graph: %d nodes, %d edges>' % (
+            self.number_of_nodes(), self.number_of_edges())
+
+    def add_node(self, node, node_data=None):
+        """
+        Adds a new node to the graph.  Arbitrary data can be attached to the
+        node via the node_data parameter.  Adding the same node twice will be
+        silently ignored.
+
+        The node must be a hashable value.
+        """
+        #
+        # the nodes will contain tuples that will store incoming edges,
+        # outgoing edges and data
+        #
+        # index 0 -> incoming edges
+        # index 1 -> outgoing edges
+
+        if node in self.hidden_nodes:
+            # Node is present, but hidden
+            return
+
+        if node not in self.nodes:
+            self.nodes[node] = ([], [], node_data)
+
+    def add_edge(self, head_id, tail_id, edge_data=1, create_nodes=True):
+        """
+        Adds a directed edge going from head_id to tail_id.
+        Arbitrary data can be attached to the edge via edge_data.
+        It may create the nodes if adding edges between nonexisting ones.
+
+        :param head_id: head node
+        :param tail_id: tail node
+        :param edge_data: (optional) data attached to the edge
+        :param create_nodes: (optional) creates the head_id or tail_id node in case they did not exist
+        """
+        # shorcut
+        edge = self.next_edge
+
+        # add nodes if on automatic node creation
+        if create_nodes:
+            self.add_node(head_id)
+            self.add_node(tail_id)
+
+        # update the corresponding incoming and outgoing lists in the nodes
+        # index 0 -> incoming edges
+        # index 1 -> outgoing edges
+
+        try:
+            self.nodes[tail_id][0].append(edge)
+            self.nodes[head_id][1].append(edge)
+        except KeyError:
+            raise GraphError('Invalid nodes %s -> %s' % (head_id, tail_id))
+
+        # store edge information
+        self.edges[edge] = (head_id, tail_id, edge_data)
+
+
+        self.next_edge += 1
+
+    def hide_edge(self, edge):
+        """
+        Hides an edge from the graph. The edge may be unhidden at some later
+        time.
+        """
+        try:
+            head_id, tail_id, edge_data = self.hidden_edges[edge] = self.edges[edge]
+            self.nodes[tail_id][0].remove(edge)
+            self.nodes[head_id][1].remove(edge)
+            del self.edges[edge]
+        except KeyError:
+            raise GraphError('Invalid edge %s' % edge)
+
+    def hide_node(self, node):
+        """
+        Hides a node from the graph.  The incoming and outgoing edges of the
+        node will also be hidden.  The node may be unhidden at some later time.
+        """
+        try:
+            all_edges = self.all_edges(node)
+            self.hidden_nodes[node] = (self.nodes[node], all_edges)
+            for edge in all_edges:
+                self.hide_edge(edge)
+            del self.nodes[node]
+        except KeyError:
+            raise GraphError('Invalid node %s' % node)
+
+    def restore_node(self, node):
+        """
+        Restores a previously hidden node back into the graph and restores
+        all of its incoming and outgoing edges.
+        """
+        try:
+            self.nodes[node], all_edges = self.hidden_nodes[node]
+            for edge in all_edges:
+                self.restore_edge(edge)
+            del self.hidden_nodes[node]
+        except KeyError:
+            raise GraphError('Invalid node %s' % node)
+
+    def restore_edge(self, edge):
+        """
+        Restores a previously hidden edge back into the graph.
+        """
+        try:
+            head_id, tail_id, data = self.hidden_edges[edge]
+            self.nodes[tail_id][0].append(edge)
+            self.nodes[head_id][1].append(edge)
+            self.edges[edge] = head_id, tail_id, data
+            del self.hidden_edges[edge]
+        except KeyError:
+            raise GraphError('Invalid edge %s' % edge)
+
+    def restore_all_edges(self):
+        """
+        Restores all hidden edges.
+        """
+        for edge in list(self.hidden_edges.keys()):
+            try:
+                self.restore_edge(edge)
+            except GraphError:
+                pass
+
+    def restore_all_nodes(self):
+        """
+        Restores all hidden nodes.
+        """
+        for node in list(self.hidden_nodes.keys()):
+            self.restore_node(node)
+
+    def __contains__(self, node):
+        """
+        Test whether a node is in the graph
+        """
+        return node in self.nodes
+
+    def edge_by_id(self, edge):
+        """
+        Returns the edge that connects the head_id and tail_id nodes
+        """
+        try:
+            head, tail, data =  self.edges[edge]
+        except KeyError:
+            head, tail = None, None
+            raise GraphError('Invalid edge %s' % edge)
+
+        return (head, tail)
+
+    def edge_by_node(self, head, tail):
+        """
+        Returns the edge that connects the head_id and tail_id nodes
+        """
+        for edge in self.out_edges(head):
+            if self.tail(edge) == tail:
+                return edge
+        return None
+
+    def number_of_nodes(self):
+        """
+        Returns the number of nodes
+        """
+        return len(self.nodes)
+
+    def number_of_edges(self):
+        """
+        Returns the number of edges
+        """
+        return len(self.edges)
+
+    def __iter__(self):
+        """
+        Iterates over all nodes in the graph
+        """
+        return iter(self.nodes)
+
+    def node_list(self):
+        """
+        Return a list of the node ids for all visible nodes in the graph.
+        """
+        return list(self.nodes.keys())
+
+    def edge_list(self):
+        """
+        Returns an iterator for all visible nodes in the graph.
+        """
+        return list(self.edges.keys())
+
+    def number_of_hidden_edges(self):
+        """
+        Returns the number of hidden edges
+        """
+        return len(self.hidden_edges)
+
+    def number_of_hidden_nodes(self):
+        """
+        Returns the number of hidden nodes
+        """
+        return len(self.hidden_nodes)
+
+    def hidden_node_list(self):
+        """
+        Returns the list with the hidden nodes
+        """
+        return list(self.hidden_nodes.keys())
+
+    def hidden_edge_list(self):
+        """
+        Returns a list with the hidden edges
+        """
+        return list(self.hidden_edges.keys())
+
+    def describe_node(self, node):
+        """
+        return node, node data, outgoing edges, incoming edges for node
+        """
+        incoming, outgoing, data = self.nodes[node]
+        return node, data, outgoing, incoming
+
+    def describe_edge(self, edge):
+        """
+        return edge, edge data, head, tail for edge
+        """
+        head, tail, data = self.edges[edge]
+        return edge, data, head, tail
+
+    def node_data(self, node):
+        """
+        Returns the data associated with a node
+        """
+        return self.nodes[node][2]
+
+    def edge_data(self, edge):
+        """
+        Returns the data associated with an edge
+        """
+        return self.edges[edge][2]
+
+    def update_edge_data(self, edge, edge_data):
+        """
+        Replace the edge data for a specific edge
+        """
+        self.edges[edge] = self.edges[edge][0:2] + (edge_data,)
+
+    def head(self, edge):
+        """
+        Returns the node of the head of the edge.
+        """
+        return self.edges[edge][0]
+
+    def tail(self, edge):
+        """
+        Returns node of the tail of the edge.
+        """
+        return self.edges[edge][1]
+
+    def out_nbrs(self, node):
+        """
+        List of nodes connected by outgoing edges
+        """
+        l = [self.tail(n) for n in self.out_edges(node)]
+        return l
+
+    def inc_nbrs(self, node):
+        """
+        List of nodes connected by incoming edges
+        """
+        l = [self.head(n) for n in self.inc_edges(node)]
+        return l
+
+    def all_nbrs(self, node):
+        """
+        List of nodes connected by incoming and outgoing edges
+        """
+        l = dict.fromkeys( self.inc_nbrs(node) + self.out_nbrs(node) )
+        return list(l)
+
+    def out_edges(self, node):
+        """
+        Returns a list of the outgoing edges
+        """
+        try:
+            return list(self.nodes[node][1])
+        except KeyError:
+            raise GraphError('Invalid node %s' % node)
+
+        return None
+
+    def inc_edges(self, node):
+        """
+        Returns a list of the incoming edges
+        """
+        try:
+            return list(self.nodes[node][0])
+        except KeyError:
+            raise GraphError('Invalid node %s' % node)
+
+        return None
+
+    def all_edges(self, node):
+        """
+        Returns a list of incoming and outging edges.
+        """
+        return set(self.inc_edges(node) + self.out_edges(node))
+
+    def out_degree(self, node):
+        """
+        Returns the number of outgoing edges
+        """
+        return len(self.out_edges(node))
+
+    def inc_degree(self, node):
+        """
+        Returns the number of incoming edges
+        """
+        return len(self.inc_edges(node))
+
+    def all_degree(self, node):
+        """
+        The total degree of a node
+        """
+        return self.inc_degree(node) + self.out_degree(node)
+
+    def _topo_sort(self, forward=True):
+        """
+        Topological sort.
+
+        Returns a list of nodes where the successors (based on outgoing and
+        incoming edges selected by the forward parameter) of any given node
+        appear in the sequence after that node.
+        """
+        topo_list = []
+        queue = deque()
+        indeg = {}
+
+        # select the operation that will be performed
+        if forward:
+            get_edges = self.out_edges
+            get_degree = self.inc_degree
+            get_next = self.tail
+        else:
+            get_edges = self.inc_edges
+            get_degree = self.out_degree
+            get_next = self.head
+
+        for node in self.node_list():
+            degree = get_degree(node)
+            if degree:
+                indeg[node] = degree
+            else:
+                queue.append(node)
+
+        while queue:
+            curr_node = queue.popleft()
+            topo_list.append(curr_node)
+            for edge in get_edges(curr_node):
+                tail_id = get_next(edge)
+                if tail_id in indeg:
+                    indeg[tail_id] -= 1
+                    if indeg[tail_id] == 0:
+                        queue.append(tail_id)
+
+        if len(topo_list) == len(self.node_list()):
+            valid = True
+        else:
+            # the graph has cycles, invalid topological sort
+            valid = False
+
+        return (valid, topo_list)
+
+    def forw_topo_sort(self):
+        """
+        Topological sort.
+
+        Returns a list of nodes where the successors (based on outgoing edges)
+        of any given node appear in the sequence after that node.
+        """
+        return self._topo_sort(forward=True)
+
+    def back_topo_sort(self):
+        """
+        Reverse topological sort.
+
+        Returns a list of nodes where the successors (based on incoming edges)
+        of any given node appear in the sequence after that node.
+        """
+        return self._topo_sort(forward=False)
+
+    def _bfs_subgraph(self, start_id, forward=True):
+        """
+        Private method creates a subgraph in a bfs order.
+
+        The forward parameter specifies whether it is a forward or backward
+        traversal.
+        """
+        if forward:
+            get_bfs  = self.forw_bfs
+            get_nbrs = self.out_nbrs
+        else:
+            get_bfs  = self.back_bfs
+            get_nbrs = self.inc_nbrs
+
+        g = Graph()
+        bfs_list = get_bfs(start_id)
+        for node in bfs_list:
+            g.add_node(node)
+
+        for node in bfs_list:
+            for nbr_id in get_nbrs(node):
+                g.add_edge(node, nbr_id)
+
+        return g
+
+    def forw_bfs_subgraph(self, start_id):
+        """
+        Creates and returns a subgraph consisting of the breadth first
+        reachable nodes based on their outgoing edges.
+        """
+        return self._bfs_subgraph(start_id, forward=True)
+
+    def back_bfs_subgraph(self, start_id):
+        """
+        Creates and returns a subgraph consisting of the breadth first
+        reachable nodes based on the incoming edges.
+        """
+        return self._bfs_subgraph(start_id, forward=False)
+
+    def iterdfs(self, start, end=None, forward=True):
+        """
+        Collecting nodes in some depth first traversal.
+
+        The forward parameter specifies whether it is a forward or backward
+        traversal.
+        """
+        visited, stack = set([start]), deque([start])
+
+        if forward:
+            get_edges = self.out_edges
+            get_next = self.tail
+        else:
+            get_edges = self.inc_edges
+            get_next = self.head
+
+        while stack:
+            curr_node = stack.pop()
+            yield curr_node
+            if curr_node == end:
+                break
+            for edge in sorted(get_edges(curr_node)):
+                tail = get_next(edge)
+                if tail not in visited:
+                    visited.add(tail)
+                    stack.append(tail)
+
+    def iterdata(self, start, end=None, forward=True, condition=None):
+        """
+        Perform a depth-first walk of the graph (as ``iterdfs``)
+        and yield the item data of every node where condition matches. The
+        condition callback is only called when node_data is not None.
+        """
+
+        visited, stack = set([start]), deque([start])
+
+        if forward:
+            get_edges = self.out_edges
+            get_next = self.tail
+        else:
+            get_edges = self.inc_edges
+            get_next = self.head
+
+        get_data = self.node_data
+
+        while stack:
+            curr_node = stack.pop()
+            curr_data = get_data(curr_node)
+            if curr_data is not None:
+                if condition is not None and not condition(curr_data):
+                    continue
+                yield curr_data
+            if curr_node == end:
+                break
+            for edge in get_edges(curr_node):
+                tail = get_next(edge)
+                if tail not in visited:
+                    visited.add(tail)
+                    stack.append(tail)
+
+    def _iterbfs(self, start, end=None, forward=True):
+        """
+        The forward parameter specifies whether it is a forward or backward
+        traversal.  Returns a list of tuples where the first value is the hop
+        value the second value is the node id.
+        """
+        queue, visited = deque([(start, 0)]), set([start])
+
+        # the direction of the bfs depends on the edges that are sampled
+        if forward:
+            get_edges = self.out_edges
+            get_next = self.tail
+        else:
+            get_edges = self.inc_edges
+            get_next = self.head
+
+        while queue:
+            curr_node, curr_step = queue.popleft()
+            yield (curr_node, curr_step)
+            if curr_node == end:
+                break
+            for edge in get_edges(curr_node):
+                tail = get_next(edge)
+                if tail not in visited:
+                    visited.add(tail)
+                    queue.append((tail, curr_step + 1))
+
+
+    def forw_bfs(self, start, end=None):
+        """
+        Returns a list of nodes in some forward BFS order.
+
+        Starting from the start node the breadth first search proceeds along
+        outgoing edges.
+        """
+        return [node for node, step in self._iterbfs(start, end, forward=True)]
+
+    def back_bfs(self, start, end=None):
+        """
+        Returns a list of nodes in some backward BFS order.
+
+        Starting from the start node the breadth first search proceeds along
+        incoming edges.
+        """
+        return [node for node, step in self._iterbfs(start, end, forward=False)]
+
+    def forw_dfs(self, start, end=None):
+        """
+        Returns a list of nodes in some forward DFS order.
+
+        Starting with the start node the depth first search proceeds along
+        outgoing edges.
+        """
+        return list(self.iterdfs(start, end, forward=True))
+
+    def back_dfs(self, start, end=None):
+        """
+        Returns a list of nodes in some backward DFS order.
+
+        Starting from the start node the depth first search proceeds along
+        incoming edges.
+        """
+        return list(self.iterdfs(start, end, forward=False))
+
+    def connected(self):
+        """
+        Returns :py:data:`True` if the graph's every node can be reached from every
+        other node.
+        """
+        node_list = self.node_list()
+        for node in node_list:
+            bfs_list = self.forw_bfs(node)
+            if len(bfs_list) != len(node_list):
+                return False
+        return True
+
+    def clust_coef(self, node):
+        """
+        Computes and returns the local clustering coefficient of node.  The
+        local cluster coefficient is proportion of the actual number of edges between
+        neighbours of node and the maximum number of edges between those neighbours.
+
+        See <http://en.wikipedia.org/wiki/Clustering_coefficient#Local_clustering_coefficient>
+        for a formal definition.
+        """
+        num = 0
+        nbr_set = set(self.out_nbrs(node))
+
+        if node in nbr_set:
+            nbr_set.remove(node) # loop defense
+
+        for nbr in nbr_set:
+            sec_set = set(self.out_nbrs(nbr))
+            if nbr in sec_set:
+                sec_set.remove(nbr) # loop defense
+            num += len(nbr_set & sec_set)
+
+        nbr_num = len(nbr_set)
+        if nbr_num:
+            clust_coef = float(num) / (nbr_num * (nbr_num - 1))
+        else:
+            clust_coef = 0.0
+        return clust_coef
+
+    def get_hops(self, start, end=None, forward=True):
+        """
+        Computes the hop distance to all nodes centered around a specified node.
+
+        First order neighbours are at hop 1, their neigbours are at hop 2 etc.
+        Uses :py:meth:`forw_bfs` or :py:meth:`back_bfs` depending on the value of the forward
+        parameter.  If the distance between all neighbouring nodes is 1 the hop
+        number corresponds to the shortest distance between the nodes.
+
+        :param start: the starting node
+        :param end: ending node (optional). When not specified will search the whole graph.
+        :param forward: directionality parameter (optional). If C{True} (default) it uses L{forw_bfs} otherwise L{back_bfs}.
+        :return: returns a list of tuples where each tuple contains the node and the hop.
+
+        Typical usage::
+
+            >>> print (graph.get_hops(1, 8))
+            >>> [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)]
+            # node 1 is at 0 hops
+            # node 2 is at 1 hop
+            # ...
+            # node 8 is at 5 hops
+        """
+        if forward:
+            return list(self._iterbfs(start=start, end=end, forward=True))
+        else:
+            return list(self._iterbfs(start=start, end=end, forward=False))
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph/GraphAlgo.py
@@ -0,0 +1,147 @@
+'''
+altgraph.GraphAlgo - Graph algorithms
+=====================================
+'''
+from altgraph import GraphError
+
+def dijkstra(graph, start, end=None):
+    """
+    Dijkstra's algorithm for shortest paths
+
+    `David Eppstein, UC Irvine, 4 April 2002 <http://www.ics.uci.edu/~eppstein/161/python/>`_
+
+    `Python Cookbook Recipe <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/119466>`_
+
+    Find shortest paths from the  start node to all nodes nearer than or equal to the end node.
+
+    Dijkstra's algorithm is only guaranteed to work correctly when all edge lengths are positive.
+    This code does not verify this property for all edges (only the edges examined until the end
+    vertex is reached), but will correctly compute shortest paths even for some graphs with negative
+    edges, and will raise an exception if it discovers that a negative edge has caused it to make a mistake.
+
+    *Adapted to altgraph by Istvan Albert, Pennsylvania State University - June, 9 2004*
+
+    """
+    D = {}    # dictionary of final distances
+    P = {}    # dictionary of predecessors
+    Q = _priorityDictionary()    # estimated distances of non-final vertices
+    Q[start] = 0
+
+    for v in Q:
+        D[v] = Q[v]
+        if v == end: break
+
+        for w in graph.out_nbrs(v):
+            edge_id  = graph.edge_by_node(v,w)
+            vwLength = D[v] + graph.edge_data(edge_id)
+            if w in D:
+                if vwLength < D[w]:
+                    raise GraphError("Dijkstra: found better path to already-final vertex")
+            elif w not in Q or vwLength < Q[w]:
+                Q[w] = vwLength
+                P[w] = v
+
+    return (D,P)
+
+def shortest_path(graph, start, end):
+    """
+    Find a single shortest path from the given start node to the given end node.
+    The input has the same conventions as dijkstra(). The output is a list of the nodes
+    in order along the shortest path.
+
+    **Note that the distances must be stored in the edge data as numeric data**
+    """
+
+    D,P = dijkstra(graph, start, end)
+    Path = []
+    while 1:
+        Path.append(end)
+        if end == start: break
+        end = P[end]
+    Path.reverse()
+    return Path
+
+#
+# Utility classes and functions
+#
+class _priorityDictionary(dict):
+    '''
+    Priority dictionary using binary heaps (internal use only)
+
+    David Eppstein, UC Irvine, 8 Mar 2002
+
+    Implements a data structure that acts almost like a dictionary, with two modifications:
+        1. D.smallest() returns the value x minimizing D[x].  For this to work correctly,
+            all values D[x] stored in the dictionary must be comparable.
+        2. iterating "for x in D" finds and removes the items from D in sorted order.
+            Each item is not removed until the next item is requested, so D[x] will still
+            return a useful value until the next iteration of the for-loop.
+            Each operation takes logarithmic amortized time.
+    '''
+    def __init__(self):
+        '''
+        Initialize priorityDictionary by creating binary heap of pairs (value,key).
+        Note that changing or removing a dict entry will not remove the old pair from the heap
+        until it is found by smallest() or until the heap is rebuilt.
+        '''
+        self.__heap = []
+        dict.__init__(self)
+
+    def smallest(self):
+        '''
+        Find smallest item after removing deleted items from front of heap.
+        '''
+        if len(self) == 0:
+            raise IndexError("smallest of empty priorityDictionary")
+        heap = self.__heap
+        while heap[0][1] not in self or self[heap[0][1]] != heap[0][0]:
+            lastItem = heap.pop()
+            insertionPoint = 0
+            while 1:
+                smallChild = 2*insertionPoint+1
+                if smallChild+1 < len(heap) and heap[smallChild] > heap[smallChild+1] :
+                    smallChild += 1
+                if smallChild >= len(heap) or lastItem <= heap[smallChild]:
+                    heap[insertionPoint] = lastItem
+                    break
+                heap[insertionPoint] = heap[smallChild]
+                insertionPoint = smallChild
+        return heap[0][1]
+
+    def __iter__(self):
+        '''
+        Create destructive sorted iterator of priorityDictionary.
+        '''
+        def iterfn():
+            while len(self) > 0:
+                x = self.smallest()
+                yield x
+                del self[x]
+        return iterfn()
+
+    def __setitem__(self,key,val):
+        '''
+        Change value stored in dictionary and add corresponding pair to heap.
+        Rebuilds the heap if the number of deleted items gets large, to avoid memory leakage.
+        '''
+        dict.__setitem__(self,key,val)
+        heap = self.__heap
+        if len(heap) > 2 * len(self):
+            self.__heap = [(v,k) for k,v in self.iteritems()]
+            self.__heap.sort()  # builtin sort probably faster than O(n)-time heapify
+        else:
+            newPair = (val,key)
+            insertionPoint = len(heap)
+            heap.append(None)
+            while insertionPoint > 0 and newPair < heap[(insertionPoint-1)//2]:
+                heap[insertionPoint] = heap[(insertionPoint-1)//2]
+                insertionPoint = (insertionPoint-1)//2
+            heap[insertionPoint] = newPair
+
+    def setdefault(self,key,val):
+        '''
+        Reimplement setdefault to pass through our customized __setitem__.
+        '''
+        if key not in self:
+            self[key] = val
+        return self[key]
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph/GraphStat.py
@@ -0,0 +1,73 @@
+'''
+altgraph.GraphStat - Functions providing various graph statistics
+=================================================================
+'''
+import sys
+
+def degree_dist(graph, limits=(0,0), bin_num=10, mode='out'):
+    '''
+    Computes the degree distribution for a graph.
+
+    Returns a list of tuples where the first element of the tuple is the center of the bin
+    representing a range of degrees and the second element of the tuple are the number of nodes
+    with the degree falling in the range.
+
+    Example::
+
+        ....
+    '''
+
+    deg = []
+    if mode == 'inc':
+        get_deg = graph.inc_degree
+    else:
+        get_deg = graph.out_degree
+
+    for node in graph:
+        deg.append( get_deg(node) )
+
+    if not deg:
+        return []
+
+    results = _binning(values=deg, limits=limits, bin_num=bin_num)
+
+    return results
+
+_EPS = 1.0/(2.0**32)
+def _binning(values, limits=(0,0), bin_num=10):
+    '''
+    Bins data that falls between certain limits, if the limits are (0, 0) the
+    minimum and maximum values are used.
+
+    Returns a list of tuples where the first element of the tuple is the center of the bin
+    and the second element of the tuple are the counts.
+    '''
+    if limits == (0, 0):
+        min_val, max_val = min(values) - _EPS, max(values) + _EPS
+    else:
+        min_val, max_val = limits
+
+    # get bin size
+    bin_size = (max_val - min_val)/float(bin_num)
+    bins = [0] * (bin_num)
+
+    # will ignore these outliers for now
+    out_points = 0
+    for value in values:
+        try:
+            if (value - min_val) < 0:
+                out_points += 1
+            else:
+                index = int((value - min_val)/float(bin_size))
+                bins[index] += 1
+        except IndexError:
+            out_points += 1
+
+    # make it ready for an x,y plot
+    result = []
+    center = (bin_size/2) + min_val
+    for i, y in enumerate(bins):
+        x = center + bin_size * i
+        result.append( (x,y) )
+
+    return result
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph/GraphUtil.py
@@ -0,0 +1,137 @@
+'''
+altgraph.GraphUtil - Utility classes and functions
+==================================================
+'''
+
+import random
+from collections import deque
+from altgraph import Graph
+from altgraph import GraphError
+
+def generate_random_graph(node_num, edge_num, self_loops=False, multi_edges=False):
+    '''
+    Generates and returns a :py:class:`~altgraph.Graph.Graph` instance with *node_num* nodes
+    randomly connected by *edge_num* edges.
+    '''
+    g = Graph.Graph()
+
+    if not multi_edges:
+        if self_loops:
+            max_edges = node_num * node_num
+        else:
+            max_edges = node_num * (node_num-1)
+
+        if edge_num > max_edges:
+            raise GraphError("inconsistent arguments to 'generate_random_graph'")
+
+    nodes = range(node_num)
+
+    for node in nodes:
+        g.add_node(node)
+
+    while 1:
+        head = random.choice(nodes)
+        tail = random.choice(nodes)
+
+        # loop defense
+        if head == tail and not self_loops:
+            continue
+
+        # multiple edge defense
+        if g.edge_by_node(head,tail) is not None and not multi_edges:
+            continue
+
+        # add the edge
+        g.add_edge(head, tail)
+        if g.number_of_edges() >= edge_num:
+            break
+
+    return g
+
+def generate_scale_free_graph(steps, growth_num, self_loops=False, multi_edges=False):
+    '''
+    Generates and returns a :py:class:`~altgraph.Graph.Graph` instance that will have *steps* \* *growth_num* nodes
+    and a scale free (powerlaw) connectivity. Starting with a fully connected graph with *growth_num* nodes
+    at every step *growth_num* nodes are added to the graph and are connected to existing nodes with
+    a probability proportional to the degree of these existing nodes.
+    '''
+    # FIXME: The code doesn't seem to do what the documentation claims.
+    graph = Graph.Graph()
+
+    # initialize the graph
+    store = []
+    for i in range(growth_num):
+        #store   += [ i ] * (growth_num - 1)
+        for j in range(i + 1, growth_num):
+            store.append(i)
+            store.append(j)
+            graph.add_edge(i,j)
+
+    # generate
+    for node in range(growth_num, steps * growth_num):
+        graph.add_node(node)
+        while ( graph.out_degree(node) < growth_num ):
+            nbr = random.choice(store)
+
+            # loop defense
+            if node == nbr and not self_loops:
+                continue
+
+            # multi edge defense
+            if graph.edge_by_node(node, nbr) and not multi_edges:
+                continue
+
+            graph.add_edge(node, nbr)
+
+
+        for nbr in graph.out_nbrs(node):
+            store.append(node)
+            store.append(nbr)
+
+    return graph
+
+def filter_stack(graph, head, filters):
+    """
+    Perform a walk in a depth-first order starting
+    at *head*.
+
+    Returns (visited, removes, orphans).
+
+    * visited: the set of visited nodes
+    * removes: the list of nodes where the node
+      data does not all *filters*
+    * orphans: tuples of (last_good, node),
+      where node is not in removes, is directly
+      reachable from a node in *removes* and
+      *last_good* is the closest upstream node that is not
+      in *removes*.
+    """
+
+    visited, removes, orphans = set([head]), set(), set()
+    stack = deque([(head, head)])
+    get_data = graph.node_data
+    get_edges = graph.out_edges
+    get_tail = graph.tail
+
+    while stack:
+        last_good, node = stack.pop()
+        data = get_data(node)
+        if data is not None:
+            for filtfunc in filters:
+                if not filtfunc(data):
+                    removes.add(node)
+                    break
+            else:
+                last_good = node
+        for edge in get_edges(node):
+            tail = get_tail(edge)
+            if last_good is not node:
+                orphans.add((last_good, tail))
+            if tail not in visited:
+                visited.add(tail)
+                stack.append((last_good, tail))
+
+    orphans = [(last_good, tail) for (last_good, tail) in orphans if tail not in removes]
+    #orphans.sort()
+
+    return visited, removes, orphans
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph/ObjectGraph.py
@@ -0,0 +1,202 @@
+"""
+altgraph.ObjectGraph - Graph of objects with an identifier
+==========================================================
+
+A graph of objects that have a "graphident" attribute.
+graphident is the key for the object in the graph
+"""
+
+from altgraph import GraphError
+from altgraph.Graph import Graph
+from altgraph.GraphUtil import filter_stack
+
+class ObjectGraph(object):
+    """
+    A graph of objects that have a "graphident" attribute.
+    graphident is the key for the object in the graph
+    """
+    def __init__(self, graph=None, debug=0):
+        if graph is None:
+            graph = Graph()
+        self.graphident = self
+        self.graph = graph
+        self.debug = debug
+        self.indent = 0
+        graph.add_node(self, None)
+
+    def __repr__(self):
+        return '<%s>' % (type(self).__name__,)
+
+    def flatten(self, condition=None, start=None):
+        """
+        Iterate over the subgraph that is entirely reachable by condition
+        starting from the given start node or the ObjectGraph root
+        """
+        if start is None:
+            start = self
+        start = self.getRawIdent(start)
+        return self.graph.iterdata(start=start, condition=condition)
+
+    def nodes(self):
+        for ident in self.graph:
+            node = self.graph.node_data(ident)
+            if node is not None:
+                yield self.graph.node_data(ident)
+
+
+    def get_edges(self, node):
+        start = self.getRawIdent(node)
+        _, _, outraw, incraw = self.graph.describe_node(start)
+        def iter_edges(lst, n):
+            seen = set()
+            for tpl in (self.graph.describe_edge(e) for e in lst):
+                ident = tpl[n]
+                if ident not in seen:
+                    yield self.findNode(ident)
+                    seen.add(ident)
+        return iter_edges(outraw, 3), iter_edges(incraw, 2)
+
+    def edgeData(self, fromNode, toNode):
+        start = self.getRawIdent(fromNode)
+        stop = self.getRawIdent(toNode)
+        edge = self.graph.edge_by_node(start, stop)
+        return self.graph.edge_data(edge)
+
+    def updateEdgeData(self, fromNode, toNode, edgeData):
+        start = self.getRawIdent(fromNode)
+        stop = self.getRawIdent(toNode)
+        edge = self.graph.edge_by_node(start, stop)
+        self.graph.update_edge_data(edge, edgeData)
+
+    def filterStack(self, filters):
+        """
+        Filter the ObjectGraph in-place by removing all edges to nodes that
+        do not match every filter in the given filter list
+
+        Returns a tuple containing the number of: (nodes_visited, nodes_removed, nodes_orphaned)
+        """
+        visited, removes, orphans = filter_stack(self.graph, self, filters)
+
+        for last_good, tail in orphans:
+            self.graph.add_edge(last_good, tail, edge_data='orphan')
+
+        for node in removes:
+            self.graph.hide_node(node)
+
+        return len(visited)-1, len(removes), len(orphans)
+
+    def removeNode(self, node):
+        """
+        Remove the given node from the graph if it exists
+        """
+        ident = self.getIdent(node)
+        if ident is not None:
+            self.graph.hide_node(ident)
+
+    def removeReference(self, fromnode, tonode):
+        """
+        Remove all edges from fromnode to tonode
+        """
+        if fromnode is None:
+            fromnode = self
+        fromident = self.getIdent(fromnode)
+        toident = self.getIdent(tonode)
+        if fromident is not None and toident is not None:
+            while True:
+                edge = self.graph.edge_by_node(fromident, toident)
+                if edge is None:
+                    break
+                self.graph.hide_edge(edge)
+
+    def getIdent(self, node):
+        """
+        Get the graph identifier for a node
+        """
+        ident = self.getRawIdent(node)
+        if ident is not None:
+            return ident
+        node = self.findNode(node)
+        if node is None:
+            return None
+        return node.graphident
+
+    def getRawIdent(self, node):
+        """
+        Get the identifier for a node object
+        """
+        if node is self:
+            return node
+        ident = getattr(node, 'graphident', None)
+        return ident
+
+    def __contains__(self, node):
+        return self.findNode(node) is not None
+
+    def findNode(self, node):
+        """
+        Find the node on the graph
+        """
+        ident = self.getRawIdent(node)
+        if ident is None:
+            ident = node
+        try:
+            return self.graph.node_data(ident)
+        except KeyError:
+            return None
+
+    def addNode(self, node):
+        """
+        Add a node to the graph referenced by the root
+        """
+        self.msg(4, "addNode", node)
+
+        try:
+            self.graph.restore_node(node.graphident)
+        except GraphError:
+            self.graph.add_node(node.graphident, node)
+
+    def createReference(self, fromnode, tonode, edge_data=None):
+        """
+        Create a reference from fromnode to tonode
+        """
+        if fromnode is None:
+            fromnode = self
+        fromident, toident = self.getIdent(fromnode), self.getIdent(tonode)
+        if fromident is None or toident is None:
+            return
+        self.msg(4, "createReference", fromnode, tonode, edge_data)
+        self.graph.add_edge(fromident, toident, edge_data=edge_data)
+
+    def createNode(self, cls, name, *args, **kw):
+        """
+        Add a node of type cls to the graph if it does not already exist
+        by the given name
+        """
+        m = self.findNode(name)
+        if m is None:
+            m = cls(name, *args, **kw)
+            self.addNode(m)
+        return m
+
+    def msg(self, level, s, *args):
+        """
+        Print a debug message with the given level
+        """
+        if s and level <= self.debug:
+            print ("%s%s %s" % ("  " * self.indent, s, ' '.join(map(repr, args))))
+
+    def msgin(self, level, s, *args):
+        """
+        Print a debug message and indent
+        """
+        if level <= self.debug:
+            self.msg(level, s, *args)
+            self.indent = self.indent + 1
+
+    def msgout(self, level, s, *args):
+        """
+        Dedent and print a debug message
+        """
+        if level <= self.debug:
+            self.indent = self.indent - 1
+            self.msg(level, s, *args)
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph/__init__.py
@@ -0,0 +1,135 @@
+'''
+altgraph - a python graph library
+=================================
+
+altgraph is a fork of `graphlib <http://pygraphlib.sourceforge.net>`_ tailored
+to use newer Python 2.3+ features, including additional support used by the
+py2app suite (modulegraph and macholib, specifically).
+
+altgraph is a python based graph (network) representation and manipulation package.
+It has started out as an extension to the `graph_lib module <http://www.ece.arizona.edu/~denny/python_nest/graph_lib_1.0.1.html>`_
+written by Nathan Denny it has been significantly optimized and expanded.
+
+The :class:`altgraph.Graph.Graph` class is loosely modeled after the `LEDA <http://www.algorithmic-solutions.com/enleda.htm>`_
+(Library of Efficient Datatypes)  representation. The library
+includes methods for constructing graphs, BFS and DFS traversals,
+topological sort, finding connected components, shortest paths as well as a number
+graph statistics functions. The library can also visualize graphs
+via `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_.
+
+The package contains the following modules:
+
+    -  the :py:mod:`altgraph.Graph` module contains the :class:`~altgraph.Graph.Graph` class that stores the graph data
+
+    -  the :py:mod:`altgraph.GraphAlgo` module implements graph algorithms operating on graphs (:py:class:`~altgraph.Graph.Graph`} instances)
+
+    -  the :py:mod:`altgraph.GraphStat` module contains functions for computing statistical measures on graphs
+
+    -  the :py:mod:`altgraph.GraphUtil` module contains functions for generating, reading and saving graphs
+
+    -  the :py:mod:`altgraph.Dot` module  contains functions for displaying graphs via `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_
+
+    -  the :py:mod:`altgraph.ObjectGraph` module implements a graph of objects with a unique identifier
+
+Installation
+------------
+
+Download and unpack the archive then type::
+
+    python setup.py install
+
+This will install the library in the default location. For instructions on
+how to customize the install procedure read the output of::
+
+    python setup.py --help install
+
+To verify that the code works run the test suite::
+
+    python setup.py test
+
+Example usage
+-------------
+
+Lets assume that we want to analyze the graph below (links to the full picture) GRAPH_IMG.
+Our script then might look the following way::
+
+    from altgraph import Graph, GraphAlgo, Dot
+
+    # these are the edges
+    edges = [ (1,2), (2,4), (1,3), (2,4), (3,4), (4,5), (6,5),
+        (6,14), (14,15), (6, 15),  (5,7), (7, 8), (7,13), (12,8),
+        (8,13), (11,12), (11,9), (13,11), (9,13), (13,10) ]
+
+    # creates the graph
+    graph = Graph.Graph()
+    for head, tail in edges:
+        graph.add_edge(head, tail)
+
+    # do a forward bfs from 1 at most to 20
+    print(graph.forw_bfs(1))
+
+This will print the nodes in some breadth first order::
+
+    [1, 2, 3, 4, 5, 7, 8, 13, 11, 10, 12, 9]
+
+If we wanted to get the hop-distance from node 1 to node 8
+we coud write::
+
+    print(graph.get_hops(1, 8))
+
+This will print the following::
+
+    [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)]
+
+Node 1 is at 0 hops since it is the starting node, nodes 2,3 are 1 hop away ...
+node 8 is 5 hops away. To find the shortest distance between two nodes you
+can use::
+
+    print(GraphAlgo.shortest_path(graph, 1, 12))
+
+It will print the nodes on one (if there are more) the shortest paths::
+
+    [1, 2, 4, 5, 7, 13, 11, 12]
+
+To display the graph we can use the GraphViz backend::
+
+    dot = Dot.Dot(graph)
+
+    # display the graph on the monitor
+    dot.display()
+
+    # save it in an image file
+    dot.save_img(file_name='graph', file_type='gif')
+
+
+
+..
+  @author: U{Istvan Albert<http://www.personal.psu.edu/staff/i/u/iua1/>}
+
+  @license:  MIT License
+
+  Copyright (c) 2004 Istvan Albert unless otherwise noted.
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+  and associated documentation files (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
+  so.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+  PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+  FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+  THE SOFTWARE.
+  @requires: Python 2.3 or higher
+
+  @newfield contributor: Contributors:
+  @contributor: U{Reka Albert <http://www.phys.psu.edu/~ralbert/>}
+
+'''
+import pkg_resources
+__version__ = pkg_resources.require('altgraph')[0].version
+
+class GraphError(ValueError):
+    pass
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph_tests/__init__.py
@@ -0,0 +1,1 @@
+""" altgraph tests """
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph_tests/test_altgraph.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env py.test
+import os
+import sys
+
+from altgraph import Graph, GraphAlgo
+import unittest
+
+class BasicTests (unittest.TestCase):
+    def setUp(self):
+        self.edges = [
+            (1,2), (2,4), (1,3), (2,4), (3,4), (4,5), (6,5), (6,14), (14,15),
+            (6, 15), (5,7), (7, 8), (7,13), (12,8), (8,13), (11,12), (11,9),
+            (13,11), (9,13), (13,10)
+        ]
+
+        # these are the edges
+        self.store = {}
+        self.g = Graph.Graph()
+        for head, tail in self.edges:
+            self.store[head] = self.store[tail] = None
+            self.g.add_edge(head, tail)
+
+    def test_num_edges(self):
+        # check the parameters
+        self.assertEqual(self.g.number_of_nodes(), len(self.store))
+        self.assertEqual(self.g.number_of_edges(), len(self.edges))
+
+    def test_forw_bfs(self):
+        # do a forward bfs
+        self.assertEqual( self.g.forw_bfs(1),
+                [1, 2, 3, 4, 5, 7, 8, 13, 11, 10, 12, 9])
+
+
+    def test_get_hops(self):
+        # diplay the hops and hop numbers between nodes
+        self.assertEqual(self.g.get_hops(1, 8),
+                [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)])
+
+    def test_shortest_path(self):
+        self.assertEqual(GraphAlgo.shortest_path(self.g, 1, 12),
+                [1, 2, 4, 5, 7, 13, 11, 12])
+
+
+if __name__ == "__main__":  # pragma: no cover
+    unittest.main()
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph_tests/test_dot.py
@@ -0,0 +1,370 @@
+import unittest
+import os
+
+from altgraph import Dot
+from altgraph import Graph
+from altgraph import GraphError
+
+
+class TestDot (unittest.TestCase):
+
+    def test_constructor(self):
+        g = Graph.Graph([
+                (1,2),
+                (1,3),
+                (1,4),
+                (2,4),
+                (2,6),
+                (2,7),
+                (7,4),
+                (6,1),
+            ]
+        )
+
+        dot = Dot.Dot(g)
+
+        self.assertEqual(dot.name, 'G')
+        self.assertEqual(dot.attr, {})
+        self.assertEqual(dot.temp_dot, 'tmp_dot.dot')
+        self.assertEqual(dot.temp_neo, 'tmp_neo.dot')
+        self.assertEqual(dot.dot, 'dot')
+        self.assertEqual(dot.dotty, 'dotty')
+        self.assertEqual(dot.neato, 'neato')
+        self.assertEqual(dot.type, 'digraph')
+
+        self.assertEqual(dot.nodes, dict([(x, {}) for x in g]))
+
+        edges = {}
+        for head in g:
+            edges[head] = {}
+            for tail in g.out_nbrs(head):
+                edges[head][tail] = {}
+
+        self.assertEqual(dot.edges[1], edges[1])
+        self.assertEqual(dot.edges, edges)
+
+
+        dot = Dot.Dot(g, nodes=[1,2],
+                edgefn=lambda node: list(sorted(g.out_nbrs(node)))[:-1],
+                nodevisitor=lambda node: {'label': node},
+                edgevisitor=lambda head, tail: {'label': (head, tail) },
+                name="testgraph",
+                dot='/usr/local/bin/dot',
+                dotty='/usr/local/bin/dotty',
+                neato='/usr/local/bin/neato',
+                graphtype="graph")
+
+        self.assertEqual(dot.name, 'testgraph')
+        self.assertEqual(dot.attr, {})
+        self.assertEqual(dot.temp_dot, 'tmp_dot.dot')
+        self.assertEqual(dot.temp_neo, 'tmp_neo.dot')
+        self.assertEqual(dot.dot, '/usr/local/bin/dot')
+        self.assertEqual(dot.dotty, '/usr/local/bin/dotty')
+        self.assertEqual(dot.neato, '/usr/local/bin/neato')
+        self.assertEqual(dot.type, 'graph')
+
+        self.assertEqual(dot.nodes, dict([(x, {'label': x}) for x in [1,2]]))
+
+        edges = {}
+        for head in [1,2]:
+            edges[head] = {}
+            for tail in list(sorted(g.out_nbrs(head)))[:-1]:
+                if tail not in [1,2]: continue
+                edges[head][tail] = {'label': (head, tail) }
+
+        self.assertEqual(dot.edges[1], edges[1])
+        self.assertEqual(dot.edges, edges)
+
+        self.assertRaises(GraphError, Dot.Dot, g, nodes=[1,2, 9])
+
+    def test_style(self):
+        g = Graph.Graph([])
+
+        dot = Dot.Dot(g)
+
+        self.assertEqual(dot.attr, {})
+
+        dot.style(key='value')
+        self.assertEqual(dot.attr, {'key': 'value'})
+
+        dot.style(key2='value2')
+        self.assertEqual(dot.attr, {'key2': 'value2'})
+
+    def test_node_style(self):
+        g = Graph.Graph([
+                (1,2),
+                (1,3),
+                (1,4),
+                (2,4),
+                (2,6),
+                (2,7),
+                (7,4),
+                (6,1),
+            ]
+        )
+
+        dot = Dot.Dot(g)
+
+        self.assertEqual(dot.nodes[1], {})
+
+        dot.node_style(1, key='value')
+        self.assertEqual(dot.nodes[1], {'key': 'value'})
+
+        dot.node_style(1, key2='value2')
+        self.assertEqual(dot.nodes[1], {'key2': 'value2'})
+        self.assertEqual(dot.nodes[2], {})
+
+        dot.all_node_style(key3='value3')
+        for n in g:
+            self.assertEqual(dot.nodes[n], {'key3': 'value3'})
+
+        self.assertTrue(9 not in dot.nodes)
+        dot.node_style(9, key='value')
+        self.assertEqual(dot.nodes[9], {'key': 'value'})
+
+    def test_edge_style(self):
+        g = Graph.Graph([
+                (1,2),
+                (1,3),
+                (1,4),
+                (2,4),
+                (2,6),
+                (2,7),
+                (7,4),
+                (6,1),
+            ]
+        )
+
+        dot = Dot.Dot(g)
+
+        self.assertEqual(dot.edges[1][2], {})
+        dot.edge_style(1,2, foo='bar')
+        self.assertEqual(dot.edges[1][2], {'foo': 'bar'})
+
+        dot.edge_style(1,2, foo2='2bar')
+        self.assertEqual(dot.edges[1][2], {'foo2': '2bar'})
+
+        self.assertEqual(dot.edges[1][3], {})
+
+        self.assertFalse(6 in dot.edges[1])
+        dot.edge_style(1,6, foo2='2bar')
+        self.assertEqual(dot.edges[1][6], {'foo2': '2bar'})
+
+        self.assertRaises(GraphError, dot.edge_style, 1, 9, a=1)
+        self.assertRaises(GraphError, dot.edge_style, 9, 1, a=1)
+
+
+    def test_iter(self):
+        g = Graph.Graph([
+                (1,2),
+                (1,3),
+                (1,4),
+                (2,4),
+                (2,6),
+                (2,7),
+                (7,4),
+                (6,1),
+            ]
+        )
+
+        dot = Dot.Dot(g)
+        dot.style(graph="foobar")
+        dot.node_style(1, key='value')
+        dot.node_style(2, key='another', key2='world')
+        dot.edge_style(1,4, key1='value1', key2='value2')
+        dot.edge_style(2,4, key1='valueA')
+
+        self.assertEqual(list(iter(dot)), list(dot.iterdot()))
+
+        for item in dot.iterdot():
+            self.assertTrue(isinstance(item, str))
+
+        first = list(dot.iterdot())[0]
+        self.assertEqual(first, "digraph %s {\n"%(dot.name,))
+
+        dot.type = 'graph'
+        first = list(dot.iterdot())[0]
+        self.assertEqual(first, "graph %s {\n"%(dot.name,))
+
+        dot.type = 'foo'
+        self.assertRaises(GraphError, list, dot.iterdot())
+        dot.type = 'digraph'
+
+        self.assertEqual(list(dot), [
+            'digraph G {\n',
+              'graph="foobar";',
+              '\n',
+
+            '\t"1" [',
+              'key="value",',
+            '];\n',
+
+            '\t"2" [',
+              'key="another",',
+              'key2="world",',
+            '];\n',
+
+            '\t"3" [',
+            '];\n',
+
+            '\t"4" [',
+            '];\n',
+
+            '\t"6" [',
+            '];\n',
+
+            '\t"7" [',
+            '];\n',
+
+            '\t"1" -> "2" [',
+            '];\n',
+
+            '\t"1" -> "3" [',
+            '];\n',
+
+            '\t"1" -> "4" [',
+              'key1="value1",',
+              'key2="value2",',
+            '];\n',
+
+             '\t"2" -> "4" [',
+               'key1="valueA",',
+             '];\n',
+
+             '\t"2" -> "6" [',
+             '];\n',
+
+             '\t"2" -> "7" [',
+             '];\n',
+
+             '\t"6" -> "1" [',
+             '];\n',
+
+             '\t"7" -> "4" [',
+             '];\n',
+           '}\n'])
+
+
+    def test_save(self):
+        g = Graph.Graph([
+                (1,2),
+                (1,3),
+                (1,4),
+                (2,4),
+                (2,6),
+                (2,7),
+                (7,4),
+                (6,1),
+            ]
+        )
+
+        dot = Dot.Dot(g)
+        dot.style(graph="foobar")
+        dot.node_style(1, key='value')
+        dot.node_style(2, key='another', key2='world')
+        dot.edge_style(1,4, key1='value1', key2='value2')
+        dot.edge_style(2,4, key1='valueA')
+
+        fn = 'test_dot.dot'
+        self.assertTrue(not os.path.exists(fn))
+
+        try:
+            dot.save_dot(fn)
+
+            fp = open(fn, 'r')
+            data = fp.read()
+            fp.close()
+            self.assertEqual(data, ''.join(dot))
+
+        finally:
+            if os.path.exists(fn):
+                os.unlink(fn)
+
+
+    def test_img(self):
+        g = Graph.Graph([
+                (1,2),
+                (1,3),
+                (1,4),
+                (2,4),
+                (2,6),
+                (2,7),
+                (7,4),
+                (6,1),
+            ]
+        )
+
+        dot = Dot.Dot(g, dot='/usr/local/bin/!!dot', dotty='/usr/local/bin/!!dotty', neato='/usr/local/bin/!!neato')
+        dot.style(size='10,10', rankdir='RL', page='5, 5' , ranksep=0.75)
+        dot.node_style(1, label='BASE_NODE',shape='box', color='blue')
+        dot.node_style(2, style='filled', fillcolor='red')
+        dot.edge_style(1,4, style='dotted')
+        dot.edge_style(2,4, arrowhead='dot', label='binds', labelangle='90')
+
+        system_cmds = []
+        def fake_system(cmd):
+            system_cmds.append(cmd)
+            return None
+
+        try:
+            real_system = os.system
+            os.system = fake_system
+
+            system_cmds = []
+            dot.save_img('foo')
+            self.assertEqual(system_cmds, ['/usr/local/bin/!!dot -Tgif tmp_dot.dot -o foo.gif'])
+
+            system_cmds = []
+            dot.save_img('foo', file_type='jpg')
+            self.assertEqual(system_cmds, ['/usr/local/bin/!!dot -Tjpg tmp_dot.dot -o foo.jpg'])
+
+            system_cmds = []
+            dot.save_img('bar', file_type='jpg', mode='neato')
+            self.assertEqual(system_cmds, [
+                '/usr/local/bin/!!neato -o tmp_dot.dot tmp_neo.dot',
+                '/usr/local/bin/!!dot -Tjpg tmp_dot.dot -o bar.jpg',
+            ])
+
+            system_cmds = []
+            dot.display()
+            self.assertEqual(system_cmds, [
+                '/usr/local/bin/!!dotty tmp_dot.dot'
+            ])
+
+            system_cmds = []
+            dot.display(mode='neato')
+            self.assertEqual(system_cmds, [
+                '/usr/local/bin/!!neato -o tmp_dot.dot tmp_neo.dot',
+                '/usr/local/bin/!!dotty tmp_dot.dot'
+            ])
+
+        finally:
+            if os.path.exists(dot.temp_dot):
+                os.unlink(dot.temp_dot)
+            if os.path.exists(dot.temp_neo):
+                os.unlink(dot.temp_neo)
+            os.system = real_system
+
+        if os.path.exists('/usr/local/bin/dot') and os.path.exists('/usr/local/bin/neato'):
+            try:
+                dot.dot='/usr/local/bin/dot'
+                dot.neato='/usr/local/bin/neato'
+                self.assertFalse(os.path.exists('foo.gif'))
+                dot.save_img('foo')
+                self.assertTrue(os.path.exists('foo.gif'))
+                os.unlink('foo.gif')
+
+                self.assertFalse(os.path.exists('foo.gif'))
+                dot.save_img('foo', mode='neato')
+                self.assertTrue(os.path.exists('foo.gif'))
+                os.unlink('foo.gif')
+
+            finally:
+                if os.path.exists(dot.temp_dot):
+                    os.unlink(dot.temp_dot)
+                if os.path.exists(dot.temp_neo):
+                    os.unlink(dot.temp_neo)
+
+
+if __name__ == "__main__": # pragma: no cover
+    unittest.main()
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph_tests/test_graph.py
@@ -0,0 +1,644 @@
+import unittest
+
+from altgraph import GraphError
+from altgraph.Graph import Graph
+
+class TestGraph (unittest.TestCase):
+
+    def test_nodes(self):
+        graph = Graph()
+
+        self.assertEqual(graph.node_list(), [])
+
+        o1 = object()
+        o1b = object()
+        o2 = object()
+        graph.add_node(1, o1)
+        graph.add_node(1, o1b)
+        graph.add_node(2, o2)
+        graph.add_node(3)
+
+        self.assertRaises(TypeError, graph.add_node, [])
+
+        self.assertTrue(graph.node_data(1) is o1)
+        self.assertTrue(graph.node_data(2) is o2)
+        self.assertTrue(graph.node_data(3) is None)
+
+        self.assertTrue(1 in graph)
+        self.assertTrue(2 in graph)
+        self.assertTrue(3 in graph)
+
+        self.assertEqual(graph.number_of_nodes(), 3)
+        self.assertEqual(graph.number_of_hidden_nodes(), 0)
+        self.assertEqual(graph.hidden_node_list(), [])
+        self.assertEqual(list(sorted(graph)), [1, 2, 3])
+
+        graph.hide_node(1)
+        graph.hide_node(2)
+        graph.hide_node(3)
+
+
+        self.assertEqual(graph.number_of_nodes(), 0)
+        self.assertEqual(graph.number_of_hidden_nodes(), 3)
+        self.assertEqual(list(sorted(graph.hidden_node_list())), [1, 2, 3])
+
+        self.assertFalse(1 in graph)
+        self.assertFalse(2 in graph)
+        self.assertFalse(3 in graph)
+
+        graph.add_node(1)
+        self.assertFalse(1 in graph)
+
+        graph.restore_node(1)
+        self.assertTrue(1 in graph)
+        self.assertFalse(2 in graph)
+        self.assertFalse(3 in graph)
+
+        graph.restore_all_nodes()
+        self.assertTrue(1 in graph)
+        self.assertTrue(2 in graph)
+        self.assertTrue(3 in graph)
+
+        self.assertEqual(list(sorted(graph.node_list())), [1, 2, 3])
+
+        v = graph.describe_node(1)
+        self.assertEqual(v, (1, o1, [], []))
+
+    def test_edges(self):
+        graph = Graph()
+        graph.add_node(1)
+        graph.add_node(2)
+        graph.add_node(3)
+        graph.add_node(4)
+        graph.add_node(5)
+
+        self.assertTrue(isinstance(graph.edge_list(), list))
+
+        graph.add_edge(1, 2)
+        graph.add_edge(4, 5, 'a')
+
+        self.assertRaises(GraphError, graph.add_edge, 'a', 'b', create_nodes=False)
+
+        self.assertEqual(graph.number_of_hidden_edges(), 0)
+        self.assertEqual(graph.number_of_edges(), 2)
+        e = graph.edge_by_node(1, 2)
+        self.assertTrue(isinstance(e, int))
+        graph.hide_edge(e)
+        self.assertEqual(graph.number_of_hidden_edges(), 1)
+        self.assertEqual(graph.number_of_edges(), 1)
+        e2 = graph.edge_by_node(1, 2)
+        self.assertTrue(e2 is None)
+
+        graph.restore_edge(e)
+        e2 = graph.edge_by_node(1, 2)
+        self.assertEqual(e, e2)
+        self.assertEqual(graph.number_of_hidden_edges(), 0)
+
+        self.assertEqual(graph.number_of_edges(), 2)
+
+        e1 = graph.edge_by_node(1, 2)
+        e2 = graph.edge_by_node(4, 5)
+        graph.hide_edge(e1)
+        graph.hide_edge(e2)
+
+        self.assertEqual(graph.number_of_edges(), 0)
+        graph.restore_all_edges()
+        self.assertEqual(graph.number_of_edges(), 2)
+
+        self.assertEqual(graph.edge_by_id(e1), (1,2))
+        self.assertRaises(GraphError, graph.edge_by_id, (e1+1)*(e2+1)+1)
+
+        self.assertEqual(list(sorted(graph.edge_list())), [e1, e2])
+
+        self.assertEqual(graph.describe_edge(e1), (e1, 1, 1, 2))
+        self.assertEqual(graph.describe_edge(e2), (e2, 'a', 4, 5))
+
+        self.assertEqual(graph.edge_data(e1), 1)
+        self.assertEqual(graph.edge_data(e2), 'a')
+
+        self.assertEqual(graph.head(e2), 4)
+        self.assertEqual(graph.tail(e2), 5)
+
+        graph.add_edge(1, 3)
+        graph.add_edge(1, 5)
+        graph.add_edge(4, 1)
+
+        self.assertEqual(list(sorted(graph.out_nbrs(1))), [2, 3, 5])
+        self.assertEqual(list(sorted(graph.inc_nbrs(1))), [4])
+        self.assertEqual(list(sorted(graph.inc_nbrs(5))), [1, 4])
+        self.assertEqual(list(sorted(graph.all_nbrs(1))), [2, 3, 4, 5])
+
+        graph.add_edge(5, 1)
+        self.assertEqual(list(sorted(graph.all_nbrs(5))), [1, 4])
+
+        self.assertEqual(graph.out_degree(1), 3)
+        self.assertEqual(graph.inc_degree(2), 1)
+        self.assertEqual(graph.inc_degree(5), 2)
+        self.assertEqual(graph.all_degree(5), 3)
+
+        v = graph.out_edges(4)
+        self.assertTrue(isinstance(v, list))
+        self.assertEqual(graph.edge_by_id(v[0]), (4, 5))
+
+        v = graph.out_edges(1)
+        for e in v:
+            self.assertEqual(graph.edge_by_id(e)[0], 1)
+
+        v = graph.inc_edges(1)
+        self.assertTrue(isinstance(v, list))
+        self.assertEqual(graph.edge_by_id(v[0]), (4, 1))
+
+        v = graph.inc_edges(5)
+        for e in v:
+            self.assertEqual(graph.edge_by_id(e)[1], 5)
+
+        v = graph.all_edges(5)
+        for e in v:
+            self.assertTrue(graph.edge_by_id(e)[1] == 5 or graph.edge_by_id(e)[0] == 5)
+
+        e1 = graph.edge_by_node(1, 2)
+        self.assertTrue(isinstance(e1, int))
+        graph.hide_node(1)
+        self.assertRaises(GraphError, graph.edge_by_node, 1, 2)
+        graph.restore_node(1)
+        e2 = graph.edge_by_node(1, 2)
+        self.assertEqual(e1, e2)
+
+
+
+    def test_toposort(self):
+        graph = Graph()
+        graph.add_node(1)
+        graph.add_node(2)
+        graph.add_node(3)
+        graph.add_node(4)
+        graph.add_node(5)
+
+        graph.add_edge(1, 2)
+        graph.add_edge(1, 3)
+        graph.add_edge(2, 4)
+        graph.add_edge(3, 5)
+
+        ok, result = graph.forw_topo_sort()
+        self.assertTrue(ok)
+        for idx in range(1, 6):
+            self.assertTrue(idx in result)
+
+        self.assertTrue(result.index(1) < result.index(2))
+        self.assertTrue(result.index(1) < result.index(3))
+        self.assertTrue(result.index(2) < result.index(4))
+        self.assertTrue(result.index(3) < result.index(5))
+
+        ok, result = graph.back_topo_sort()
+        self.assertTrue(ok)
+        for idx in range(1, 6):
+            self.assertTrue(idx in result)
+        self.assertTrue(result.index(2) < result.index(1))
+        self.assertTrue(result.index(3) < result.index(1))
+        self.assertTrue(result.index(4) < result.index(2))
+        self.assertTrue(result.index(5) < result.index(3))
+
+
+        # Same graph as before, but with edges
+        # reversed, which means we should get
+        # the same results as before if using
+        # back_topo_sort rather than forw_topo_sort
+        # (and v.v.)
+
+        graph = Graph()
+        graph.add_node(1)
+        graph.add_node(2)
+        graph.add_node(3)
+        graph.add_node(4)
+        graph.add_node(5)
+
+        graph.add_edge(2, 1)
+        graph.add_edge(3, 1)
+        graph.add_edge(4, 2)
+        graph.add_edge(5, 3)
+
+        ok, result = graph.back_topo_sort()
+        self.assertTrue(ok)
+        for idx in range(1, 6):
+            self.assertTrue(idx in result)
+
+        self.assertTrue(result.index(1) < result.index(2))
+        self.assertTrue(result.index(1) < result.index(3))
+        self.assertTrue(result.index(2) < result.index(4))
+        self.assertTrue(result.index(3) < result.index(5))
+
+        ok, result = graph.forw_topo_sort()
+        self.assertTrue(ok)
+        for idx in range(1, 6):
+            self.assertTrue(idx in result)
+        self.assertTrue(result.index(2) < result.index(1))
+        self.assertTrue(result.index(3) < result.index(1))
+        self.assertTrue(result.index(4) < result.index(2))
+        self.assertTrue(result.index(5) < result.index(3))
+
+
+        # Create a cycle
+        graph.add_edge(1, 5)
+        ok, result = graph.forw_topo_sort()
+        self.assertFalse(ok)
+        ok, result = graph.back_topo_sort()
+        self.assertFalse(ok)
+
+    def test_bfs_subgraph(self):
+        graph = Graph()
+        graph.add_edge(1, 2)
+        graph.add_edge(1, 4)
+        graph.add_edge(2, 4)
+        graph.add_edge(4, 8)
+        graph.add_edge(4, 9)
+        graph.add_edge(4, 10)
+        graph.add_edge(8, 10)
+
+        subgraph = graph.forw_bfs_subgraph(10)
+        self.assertTrue(isinstance(subgraph, Graph))
+        self.assertEqual(subgraph.number_of_nodes(), 1)
+        self.assertTrue(10 in subgraph)
+        self.assertEqual(subgraph.number_of_edges(), 0)
+
+        subgraph = graph.forw_bfs_subgraph(4)
+        self.assertTrue(isinstance(subgraph, Graph))
+        self.assertEqual(subgraph.number_of_nodes(), 4)
+        self.assertTrue(4 in subgraph)
+        self.assertTrue(8 in subgraph)
+        self.assertTrue(9 in subgraph)
+        self.assertTrue(10 in subgraph)
+        self.assertEqual(subgraph.number_of_edges(), 4)
+        e = subgraph.edge_by_node(4, 8)
+        e = subgraph.edge_by_node(4, 9)
+        e = subgraph.edge_by_node(4, 10)
+        e = subgraph.edge_by_node(8, 10)
+
+        # same graph as before, but switch around
+        # edges. This results in the same test results
+        # but now for back_bfs_subgraph rather than
+        # forw_bfs_subgraph
+
+        graph = Graph()
+        graph.add_edge(2, 1)
+        graph.add_edge(4, 1)
+        graph.add_edge(4, 2)
+        graph.add_edge(8, 4)
+        graph.add_edge(9, 4)
+        graph.add_edge(10, 4)
+        graph.add_edge(10, 8)
+
+        subgraph = graph.back_bfs_subgraph(10)
+        self.assertTrue(isinstance(subgraph, Graph))
+        self.assertEqual(subgraph.number_of_nodes(), 1)
+        self.assertTrue(10 in subgraph)
+        self.assertEqual(subgraph.number_of_edges(), 0)
+
+        subgraph = graph.back_bfs_subgraph(4)
+        self.assertTrue(isinstance(subgraph, Graph))
+        self.assertEqual(subgraph.number_of_nodes(), 4)
+        self.assertTrue(4 in subgraph)
+        self.assertTrue(8 in subgraph)
+        self.assertTrue(9 in subgraph)
+        self.assertTrue(10 in subgraph)
+        self.assertEqual(subgraph.number_of_edges(), 4)
+        e = subgraph.edge_by_node(4, 8)
+        e = subgraph.edge_by_node(4, 9)
+        e = subgraph.edge_by_node(4, 10)
+        e = subgraph.edge_by_node(8, 10)
+
+    def test_iterdfs(self):
+        graph = Graph()
+        graph.add_edge("1", "1.1")
+        graph.add_edge("1", "1.2")
+        graph.add_edge("1", "1.3")
+        graph.add_edge("1.1", "1.1.1")
+        graph.add_edge("1.1", "1.1.2")
+        graph.add_edge("1.2", "1.2.1")
+        graph.add_edge("1.2", "1.2.2")
+        graph.add_edge("1.2.2", "1.2.2.1")
+        graph.add_edge("1.2.2", "1.2.2.2")
+        graph.add_edge("1.2.2", "1.2.2.3")
+
+        result = list(graph.iterdfs("1"))
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1', '1.1', '1.1.2', '1.1.1'
+        ])
+        result = list(graph.iterdfs("1", "1.2.1"))
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1'
+        ])
+
+        result = graph.forw_dfs("1")
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1', '1.1', '1.1.2', '1.1.1'
+        ])
+        result = graph.forw_dfs("1", "1.2.1")
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1'
+        ])
+
+        graph = Graph()
+        graph.add_edge("1.1", "1")
+        graph.add_edge("1.2", "1")
+        graph.add_edge("1.3", "1")
+        graph.add_edge("1.1.1", "1.1")
+        graph.add_edge("1.1.2", "1.1")
+        graph.add_edge("1.2.1", "1.2")
+        graph.add_edge("1.2.2", "1.2")
+        graph.add_edge("1.2.2.1", "1.2.2")
+        graph.add_edge("1.2.2.2", "1.2.2")
+        graph.add_edge("1.2.2.3", "1.2.2")
+
+        result = list(graph.iterdfs("1", forward=False))
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1', '1.1', '1.1.2', '1.1.1'
+        ])
+        result = list(graph.iterdfs("1", "1.2.1", forward=False))
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1'
+        ])
+        result = graph.back_dfs("1")
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1', '1.1', '1.1.2', '1.1.1'
+        ])
+        result = graph.back_dfs("1", "1.2.1")
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1'
+        ])
+
+
+        # Introduce cyle:
+        graph.add_edge("1", "1.2")
+        result = list(graph.iterdfs("1", forward=False))
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1', '1.1', '1.1.2', '1.1.1'
+        ])
+
+        result = graph.back_dfs("1")
+        self.assertEqual(result, [
+            '1', '1.3', '1.2', '1.2.2', '1.2.2.3', '1.2.2.2',
+            '1.2.2.1', '1.2.1', '1.1', '1.1.2', '1.1.1'
+        ])
+
+
+    def test_iterdata(self):
+        graph = Graph()
+        graph.add_node("1", "I")
+        graph.add_node("1.1", "I.I")
+        graph.add_node("1.2", "I.II")
+        graph.add_node("1.3", "I.III")
+        graph.add_node("1.1.1", "I.I.I")
+        graph.add_node("1.1.2", "I.I.II")
+        graph.add_node("1.2.1", "I.II.I")
+        graph.add_node("1.2.2", "I.II.II")
+        graph.add_node("1.2.2.1", "I.II.II.I")
+        graph.add_node("1.2.2.2", "I.II.II.II")
+        graph.add_node("1.2.2.3", "I.II.II.III")
+
+        graph.add_edge("1", "1.1")
+        graph.add_edge("1", "1.2")
+        graph.add_edge("1", "1.3")
+        graph.add_edge("1.1", "1.1.1")
+        graph.add_edge("1.1", "1.1.2")
+        graph.add_edge("1.2", "1.2.1")
+        graph.add_edge("1.2", "1.2.2")
+        graph.add_edge("1.2.2", "1.2.2.1")
+        graph.add_edge("1.2.2", "1.2.2.2")
+        graph.add_edge("1.2.2", "1.2.2.3")
+
+        result = list(graph.iterdata("1", forward=True))
+        self.assertEqual(result, [
+            'I', 'I.III', 'I.II', 'I.II.II', 'I.II.II.III', 'I.II.II.II',
+            'I.II.II.I', 'I.II.I', 'I.I', 'I.I.II', 'I.I.I'
+        ])
+
+        result = list(graph.iterdata("1", end="1.2.1", forward=True))
+        self.assertEqual(result, [
+            'I', 'I.III', 'I.II', 'I.II.II', 'I.II.II.III', 'I.II.II.II',
+            'I.II.II.I', 'I.II.I'
+        ])
+
+        result = list(graph.iterdata("1", condition=lambda n: len(n) < 6, forward=True))
+        self.assertEqual(result, [
+            'I', 'I.III', 'I.II',
+            'I.I', 'I.I.I'
+        ])
+
+
+        # And the revese option:
+        graph = Graph()
+        graph.add_node("1", "I")
+        graph.add_node("1.1", "I.I")
+        graph.add_node("1.2", "I.II")
+        graph.add_node("1.3", "I.III")
+        graph.add_node("1.1.1", "I.I.I")
+        graph.add_node("1.1.2", "I.I.II")
+        graph.add_node("1.2.1", "I.II.I")
+        graph.add_node("1.2.2", "I.II.II")
+        graph.add_node("1.2.2.1", "I.II.II.I")
+        graph.add_node("1.2.2.2", "I.II.II.II")
+        graph.add_node("1.2.2.3", "I.II.II.III")
+
+        graph.add_edge("1.1", "1")
+        graph.add_edge("1.2", "1")
+        graph.add_edge("1.3", "1")
+        graph.add_edge("1.1.1", "1.1")
+        graph.add_edge("1.1.2", "1.1")
+        graph.add_edge("1.2.1", "1.2")
+        graph.add_edge("1.2.2", "1.2")
+        graph.add_edge("1.2.2.1", "1.2.2")
+        graph.add_edge("1.2.2.2", "1.2.2")
+        graph.add_edge("1.2.2.3", "1.2.2")
+
+        result = list(graph.iterdata("1", forward=False))
+        self.assertEqual(result, [
+            'I', 'I.III', 'I.II', 'I.II.II', 'I.II.II.III', 'I.II.II.II',
+            'I.II.II.I', 'I.II.I', 'I.I', 'I.I.II', 'I.I.I'
+        ])
+
+        result = list(graph.iterdata("1", end="1.2.1", forward=False))
+        self.assertEqual(result, [
+            'I', 'I.III', 'I.II', 'I.II.II', 'I.II.II.III', 'I.II.II.II',
+            'I.II.II.I', 'I.II.I'
+        ])
+
+        result = list(graph.iterdata("1", condition=lambda n: len(n) < 6, forward=False))
+        self.assertEqual(result, [
+            'I', 'I.III', 'I.II',
+            'I.I', 'I.I.I'
+        ])
+
+    def test_bfs(self):
+        graph = Graph()
+        graph.add_edge("1", "1.1")
+        graph.add_edge("1.1", "1.1.1")
+        graph.add_edge("1.1", "1.1.2")
+        graph.add_edge("1.1.2", "1.1.2.1")
+        graph.add_edge("1.1.2", "1.1.2.2")
+        graph.add_edge("1", "1.2")
+        graph.add_edge("1", "1.3")
+        graph.add_edge("1.2", "1.2.1")
+
+        self.assertEqual(graph.forw_bfs("1"),
+                ['1', '1.1', '1.2', '1.3', '1.1.1', '1.1.2', '1.2.1', '1.1.2.1', '1.1.2.2'])
+        self.assertEqual(graph.forw_bfs("1", "1.1.1"),
+                ['1', '1.1', '1.2', '1.3', '1.1.1'])
+
+
+        # And the "reverse" graph
+        graph = Graph()
+        graph.add_edge("1.1", "1")
+        graph.add_edge("1.1.1", "1.1")
+        graph.add_edge("1.1.2", "1.1")
+        graph.add_edge("1.1.2.1", "1.1.2")
+        graph.add_edge("1.1.2.2", "1.1.2")
+        graph.add_edge("1.2", "1")
+        graph.add_edge("1.3", "1")
+        graph.add_edge("1.2.1", "1.2")
+
+        self.assertEqual(graph.back_bfs("1"),
+                ['1', '1.1', '1.2', '1.3', '1.1.1', '1.1.2', '1.2.1', '1.1.2.1', '1.1.2.2'])
+        self.assertEqual(graph.back_bfs("1", "1.1.1"),
+                ['1', '1.1', '1.2', '1.3', '1.1.1'])
+
+
+
+        # check cycle handling
+        graph.add_edge("1", "1.2.1")
+        self.assertEqual(graph.back_bfs("1"),
+                ['1', '1.1', '1.2', '1.3', '1.1.1', '1.1.2', '1.2.1', '1.1.2.1', '1.1.2.2'])
+
+
+    def test_connected(self):
+        graph = Graph()
+        graph.add_node(1)
+        graph.add_node(2)
+        graph.add_node(3)
+        graph.add_node(4)
+
+        self.assertFalse(graph.connected())
+
+        graph.add_edge(1, 2)
+        graph.add_edge(3, 4)
+        self.assertFalse(graph.connected())
+
+        graph.add_edge(2, 3)
+        graph.add_edge(4, 1)
+        self.assertTrue(graph.connected())
+
+    def test_edges_complex(self):
+        g = Graph()
+        g.add_edge(1, 2)
+        e = g.edge_by_node(1,2)
+        g.hide_edge(e)
+        g.hide_node(2)
+        self.assertRaises(GraphError, g.restore_edge, e)
+
+        g.restore_all_edges()
+        self.assertRaises(GraphError, g.edge_by_id, e)
+
+    def test_clust_coef(self):
+        g = Graph()
+        g.add_edge(1, 2)
+        g.add_edge(1, 3)
+        g.add_edge(1, 4)
+        self.assertEqual(g.clust_coef(1), 0)
+
+        g.add_edge(2, 5)
+        g.add_edge(3, 5)
+        g.add_edge(4, 5)
+        self.assertEqual(g.clust_coef(1), 0)
+
+        g.add_edge(2, 3)
+        self.assertEqual(g.clust_coef(1), 1./6)
+        g.add_edge(2, 4)
+        self.assertEqual(g.clust_coef(1), 2./6)
+        g.add_edge(4, 2)
+        self.assertEqual(g.clust_coef(1), 3./6)
+
+        g.add_edge(2, 3)
+        g.add_edge(2, 4)
+        g.add_edge(3, 4)
+        g.add_edge(3, 2)
+        g.add_edge(4, 2)
+        g.add_edge(4, 3)
+        self.assertEqual(g.clust_coef(1), 1)
+
+
+    def test_get_hops(self):
+        graph = Graph()
+        graph.add_edge(1, 2)
+        graph.add_edge(1, 3)
+        graph.add_edge(2, 4)
+        graph.add_edge(4, 5)
+        graph.add_edge(5, 7)
+        graph.add_edge(7, 8)
+
+        self.assertEqual(graph.get_hops(1),
+            [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)])
+
+        self.assertEqual(graph.get_hops(1, 5),
+            [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3)])
+
+        graph.add_edge(5, 1)
+        graph.add_edge(7, 1)
+        graph.add_edge(7, 4)
+
+        self.assertEqual(graph.get_hops(1),
+            [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)])
+
+        # And the reverse graph
+        graph = Graph()
+        graph.add_edge(2, 1)
+        graph.add_edge(3, 1)
+        graph.add_edge(4, 2)
+        graph.add_edge(5, 4)
+        graph.add_edge(7, 5)
+        graph.add_edge(8, 7)
+
+        self.assertEqual(graph.get_hops(1, forward=False),
+            [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)])
+
+        self.assertEqual(graph.get_hops(1, 5, forward=False),
+            [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3)])
+
+        graph.add_edge(1, 5)
+        graph.add_edge(1, 7)
+        graph.add_edge(4, 7)
+
+        self.assertEqual(graph.get_hops(1, forward=False),
+            [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)])
+
+
+    def test_constructor(self):
+        graph = Graph(iter([
+                (1, 2),
+                (2, 3, 'a'),
+                (1, 3),
+                (3, 4),
+            ]))
+        self.assertEqual(graph.number_of_nodes(), 4)
+        self.assertEqual(graph.number_of_edges(), 4)
+        try:
+            graph.edge_by_node(1,2)
+            graph.edge_by_node(2,3)
+            graph.edge_by_node(1,3)
+            graph.edge_by_node(3,4)
+        except GraphError:
+            self.fail("Incorrect graph")
+
+        self.assertEqual(graph.edge_data(graph.edge_by_node(2, 3)), 'a')
+
+        self.assertRaises(GraphError, Graph, [(1,2,3,4)])
+
+if __name__ == "__main__": # pragma: no cover
+    unittest.main()
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph_tests/test_graphstat.py
@@ -0,0 +1,70 @@
+import unittest
+
+from altgraph import GraphStat
+from altgraph import Graph
+import sys
+
+class TestDegreesDist (unittest.TestCase):
+
+    def test_simple(self):
+        a = Graph.Graph()
+        self.assertEqual(GraphStat.degree_dist(a), [])
+
+        a.add_node(1)
+        a.add_node(2)
+        a.add_node(3)
+
+        self.assertEqual(GraphStat.degree_dist(a), GraphStat._binning([0, 0, 0]))
+
+        for x in range(100):
+            a.add_node(x)
+
+        for x in range(1, 100):
+            for y in range(1, 50):
+                if x % y == 0:
+                    a.add_edge(x, y)
+
+        counts_inc = []
+        counts_out = []
+        for n in a:
+            counts_inc.append(a.inc_degree(n))
+            counts_out.append(a.out_degree(n))
+
+        self.assertEqual(GraphStat.degree_dist(a), GraphStat._binning(counts_out))
+        self.assertEqual(GraphStat.degree_dist(a, mode='inc'), GraphStat._binning(counts_inc))
+
+class TestBinning (unittest.TestCase):
+    def test_simple(self):
+
+        # Binning [0, 100) into 10 bins
+        a = list(range(100))
+        out = GraphStat._binning(a, limits=(0, 100), bin_num=10)
+
+        self.assertEqual(out,
+                [ (x*1.0, 10) for x in range(5, 100, 10) ])
+
+
+        # Check that outliers are ignored.
+        a = list(range(100))
+        out = GraphStat._binning(a, limits=(0, 90), bin_num=9)
+
+        self.assertEqual(out,
+                [ (x*1.0, 10) for x in range(5, 90, 10) ])
+
+
+        out = GraphStat._binning(a, limits=(0, 100), bin_num=15)
+        binSize = 100 / 15.0
+        result = [0]*15
+        for i in range(100):
+            bin = int(i/binSize)
+            try:
+                result[bin] += 1
+            except IndexError:
+                pass
+
+        result = [ (i * binSize + binSize/2, result[i]) for i in range(len(result))]
+
+        self.assertEqual(result, out)
+
+if __name__ == "__main__": # pragma: no cover
+    unittest.main()
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph_tests/test_graphutil.py
@@ -0,0 +1,140 @@
+import unittest
+from altgraph import GraphUtil
+from altgraph import Graph, GraphError
+
+class TestGraphUtil (unittest.TestCase):
+
+    def test_generate_random(self):
+        g =  GraphUtil.generate_random_graph(10, 50)
+        self.assertEqual(g.number_of_nodes(), 10)
+        self.assertEqual(g.number_of_edges(), 50)
+
+        seen = set()
+
+        for e in g.edge_list():
+            h, t = g.edge_by_id(e)
+            self.assertFalse(h == t)
+            self.assertTrue((h, t) not in seen)
+            seen.add((h, t))
+
+        g =  GraphUtil.generate_random_graph(5, 30, multi_edges=True)
+        self.assertEqual(g.number_of_nodes(), 5)
+        self.assertEqual(g.number_of_edges(), 30)
+
+        seen = set()
+
+        for e in g.edge_list():
+            h, t = g.edge_by_id(e)
+            self.assertFalse(h == t)
+            if (h, t) in seen:
+                break
+            seen.add((h, t))
+
+        else:
+            self.fail("no duplicates?")
+
+        g =  GraphUtil.generate_random_graph(5, 21, self_loops=True)
+        self.assertEqual(g.number_of_nodes(), 5)
+        self.assertEqual(g.number_of_edges(), 21)
+
+        seen = set()
+
+        for e in g.edge_list():
+            h, t = g.edge_by_id(e)
+            self.assertFalse((h, t) in seen)
+            if h == t:
+                break
+            seen.add((h, t))
+
+        else:
+            self.fail("no self loops?")
+
+        self.assertRaises(GraphError, GraphUtil.generate_random_graph, 5, 21)
+        g = GraphUtil.generate_random_graph(5, 21, True)
+        self.assertRaises(GraphError, GraphUtil.generate_random_graph, 5, 26, True)
+
+    def test_generate_scale_free(self):
+        graph = GraphUtil.generate_scale_free_graph(50, 10)
+        self.assertEqual(graph.number_of_nodes(), 500)
+
+        counts = {}
+        for node in graph:
+            degree = graph.inc_degree(node)
+            try:
+                counts[degree] += 1
+            except KeyError:
+                counts[degree] = 1
+
+        total_counts = sum(counts.values())
+        P = {}
+        for degree, count in counts.items():
+            P[degree] = count * 1.0 / total_counts
+
+        # XXX: use algoritm <http://stackoverflow.com/questions/3433486/how-to-do-exponential-and-logarithmic-curve-fitting-in-python-i-found-only-polyn>
+        # to check if P[degree] ~ degree ** G (for some G)
+
+        #print sorted(P.items())
+
+        #print sorted([(count, degree) for degree, count in counts.items()])
+
+        #self.fail("missing tests for GraphUtil.generate_scale_free_graph")
+
+    def test_filter_stack(self):
+        g = Graph.Graph()
+        g.add_node("1", "N.1")
+        g.add_node("1.1", "N.1.1")
+        g.add_node("1.1.1", "N.1.1.1")
+        g.add_node("1.1.2", "N.1.1.2")
+        g.add_node("1.1.3", "N.1.1.3")
+        g.add_node("1.1.1.1", "N.1.1.1.1")
+        g.add_node("1.1.1.2", "N.1.1.1.2")
+        g.add_node("1.1.2.1", "N.1.1.2.1")
+        g.add_node("1.1.2.2", "N.1.1.2.2")
+        g.add_node("1.1.2.3", "N.1.1.2.3")
+        g.add_node("2", "N.2")
+
+        g.add_edge("1", "1.1")
+        g.add_edge("1.1", "1.1.1")
+        g.add_edge("1.1", "1.1.2")
+        g.add_edge("1.1", "1.1.3")
+        g.add_edge("1.1.1", "1.1.1.1")
+        g.add_edge("1.1.1", "1.1.1.2")
+        g.add_edge("1.1.2", "1.1.2.1")
+        g.add_edge("1.1.2", "1.1.2.2")
+        g.add_edge("1.1.2", "1.1.2.3")
+
+        v, r, o =  GraphUtil.filter_stack(g, "1", [
+            lambda n: n != "N.1.1.1", lambda n: n != "N.1.1.2.3" ])
+
+        self.assertEqual(v,
+            set(["1", "1.1", "1.1.1", "1.1.2", "1.1.3",
+                "1.1.1.1", "1.1.1.2", "1.1.2.1", "1.1.2.2",
+                "1.1.2.3"]))
+        self.assertEqual(r, set([
+                "1.1.1", "1.1.2.3"]))
+
+        o.sort()
+        self.assertEqual(o,
+            [
+                ("1.1", "1.1.1.1"),
+                ("1.1", "1.1.1.2")
+            ])
+
+        v, r, o =  GraphUtil.filter_stack(g, "1", [
+            lambda n: n != "N.1.1.1", lambda n: n != "N.1.1.1.2" ])
+
+        self.assertEqual(v,
+            set(["1", "1.1", "1.1.1", "1.1.2", "1.1.3",
+                "1.1.1.1", "1.1.1.2", "1.1.2.1", "1.1.2.2",
+                "1.1.2.3"]))
+        self.assertEqual(r, set([
+                "1.1.1", "1.1.1.2"]))
+
+        self.assertEqual(o,
+            [
+                ("1.1", "1.1.1.1"),
+            ])
+
+
+if __name__ == "__main__": # pragma: no cover
+    unittest.main()
new file mode 100644
--- /dev/null
+++ b/python/altgraph/altgraph_tests/test_object_graph.py
@@ -0,0 +1,349 @@
+import unittest
+import sys
+from altgraph.ObjectGraph import ObjectGraph
+from altgraph.Graph import Graph
+
+try:
+    from StringIO import StringIO
+except ImportError:
+    from io import StringIO
+
+
+class Node (object):
+    def __init__(self, graphident):
+        self.graphident = graphident
+
+class SubNode (Node):
+    pass
+
+class ArgNode (object):
+    def __init__(self, graphident, *args, **kwds):
+        self.graphident = graphident
+        self.args = args
+        self.kwds = kwds
+
+    def __repr__(self):
+        return '<ArgNode %s>'%(self.graphident,)
+
+class TestObjectGraph (unittest.TestCase):
+
+    def test_constructor(self):
+        graph = ObjectGraph()
+        self.assertTrue(isinstance(graph, ObjectGraph))
+
+        g = Graph()
+        graph = ObjectGraph(g)
+        self.assertTrue(graph.graph is g)
+        self.assertEqual(graph.debug, 0)
+        self.assertEqual(graph.indent, 0)
+
+        graph = ObjectGraph(debug=5)
+        self.assertEqual(graph.debug, 5)
+
+    def test_repr(self):
+        graph = ObjectGraph()
+        self.assertEqual(repr(graph), '<ObjectGraph>')
+
+
+    def testNodes(self):
+        graph = ObjectGraph()
+        n1 = Node("n1")
+        n2 = Node("n2")
+        n3 = Node("n3")
+        n4 = Node("n4")
+
+        n1b = Node("n1")
+
+        self.assertTrue(graph.getIdent(graph)  is graph)
+        self.assertTrue(graph.getRawIdent(graph)  is graph)
+
+        graph.addNode(n1)
+        graph.addNode(n2)
+        graph.addNode(n3)
+
+        self.assertTrue(n1 in graph)
+        self.assertFalse(n4 in graph)
+        self.assertTrue("n1" in graph)
+        self.assertFalse("n4" in graph)
+
+        self.assertTrue(graph.findNode(n1) is n1)
+        self.assertTrue(graph.findNode(n1b) is n1)
+        self.assertTrue(graph.findNode(n2) is n2)
+        self.assertTrue(graph.findNode(n4) is None)
+        self.assertTrue(graph.findNode("n1") is n1)
+        self.assertTrue(graph.findNode("n2") is n2)
+        self.assertTrue(graph.findNode("n4") is None)
+
+        self.assertEqual(graph.getRawIdent(n1), "n1")
+        self.assertEqual(graph.getRawIdent(n1b), "n1")
+        self.assertEqual(graph.getRawIdent(n4), "n4")
+        self.assertEqual(graph.getRawIdent("n1"), None)
+
+        self.assertEqual(graph.getIdent(n1), "n1")
+        self.assertEqual(graph.getIdent(n1b), "n1")
+        self.assertEqual(graph.getIdent(n4), "n4")
+        self.assertEqual(graph.getIdent("n1"), "n1")
+
+        self.assertTrue(n3 in graph)
+        graph.removeNode(n3)
+        self.assertTrue(n3 not in graph)
+        graph.addNode(n3)
+        self.assertTrue(n3 in graph)
+
+        n = graph.createNode(SubNode, "n1")
+        self.assertTrue(n is n1)
+
+        n = graph.createNode(SubNode, "n8")
+        self.assertTrue(isinstance(n, SubNode))
+        self.assertTrue(n in graph)
+        self.assertTrue(graph.findNode("n8") is n)
+
+        n = graph.createNode(ArgNode, "args", 1, 2, 3, a='a', b='b')
+        self.assertTrue(isinstance(n, ArgNode))
+        self.assertTrue(n in graph)
+        self.assertTrue(graph.findNode("args") is n)
+        self.assertEqual(n.args, (1, 2, 3))
+        self.assertEqual(n.kwds, {'a':'a', 'b':'b'})
+
+    def testEdges(self):
+        graph = ObjectGraph()
+        n1 = graph.createNode(ArgNode, "n1", 1)
+        n2 = graph.createNode(ArgNode, "n2", 1)
+        n3 = graph.createNode(ArgNode, "n3", 1)
+        n4 = graph.createNode(ArgNode, "n4", 1)
+
+        graph.createReference(n1, n2, "n1-n2")
+        graph.createReference("n1", "n3", "n1-n3")
+        graph.createReference("n2", n3)
+
+        g = graph.graph
+        e = g.edge_by_node("n1", "n2")
+        self.assertTrue(e is not None)
+        self.assertEqual(g.edge_data(e), "n1-n2")
+
+        e = g.edge_by_node("n1", "n3")
+        self.assertTrue(e is not None)
+        self.assertEqual(g.edge_data(e), "n1-n3")
+
+        e = g.edge_by_node("n2", "n3")
+        self.assertTrue(e is not None)
+        self.assertEqual(g.edge_data(e), None)
+
+        e = g.edge_by_node("n1", "n4")
+        self.assertTrue(e is None)
+
+        graph.removeReference(n1, n2)
+        e = g.edge_by_node("n1", "n2")
+        self.assertTrue(e is None)
+
+        graph.removeReference("n1", "n3")
+        e = g.edge_by_node("n1", "n3")
+        self.assertTrue(e is None)
+
+        graph.createReference(n1, n2, "foo")
+        e = g.edge_by_node("n1", "n2")
+        self.assertTrue(e is not None)
+        self.assertEqual(g.edge_data(e), "foo")
+
+
+    def test_flatten(self):
+        graph = ObjectGraph()
+        n1 = graph.createNode(ArgNode, "n1", 1)
+        n2 = graph.createNode(ArgNode, "n2", 2)
+        n3 = graph.createNode(ArgNode, "n3", 3)
+        n4 = graph.createNode(ArgNode, "n4", 4)
+        n5 = graph.createNode(ArgNode, "n5", 5)
+        n6 = graph.createNode(ArgNode, "n6", 6)
+        n7 = graph.createNode(ArgNode, "n7", 7)
+        n8 = graph.createNode(ArgNode, "n8", 8)
+
+        graph.createReference(graph, n1)
+        graph.createReference(graph, n7)
+        graph.createReference(n1, n2)
+        graph.createReference(n1, n4)
+        graph.createReference(n2, n3)
+        graph.createReference(n2, n5)
+        graph.createReference(n5, n6)
+        graph.createReference(n4, n6)
+        graph.createReference(n4, n2)
+
+        self.assertFalse(isinstance(graph.flatten(), list))
+
+        fl = list(graph.flatten())
+        self.assertTrue(n1 in fl)
+        self.assertTrue(n2 in fl)
+        self.assertTrue(n3 in fl)
+        self.assertTrue(n4 in fl)
+        self.assertTrue(n5 in fl)
+        self.assertTrue(n6 in fl)
+        self.assertTrue(n7 in fl)
+        self.assertFalse(n8 in fl)
+
+        fl = list(graph.flatten(start=n2))
+        self.assertFalse(n1 in fl)
+        self.assertTrue(n2 in fl)
+        self.assertTrue(n3 in fl)
+        self.assertFalse(n4 in fl)
+        self.assertTrue(n5 in fl)
+        self.assertTrue(n6 in fl)
+        self.assertFalse(n7 in fl)
+        self.assertFalse(n8 in fl)
+
+        graph.createReference(n1, n5)
+        fl = list(graph.flatten(lambda n: n.args[0] % 2 != 0))
+        self.assertTrue(n1 in fl)
+        self.assertFalse(n2 in fl)
+        self.assertFalse(n3 in fl)
+        self.assertFalse(n4 in fl)
+        self.assertTrue(n5 in fl)
+        self.assertFalse(n6 in fl)
+        self.assertTrue(n7 in fl)
+        self.assertFalse(n8 in fl)
+
+    def test_iter_nodes(self):
+        graph = ObjectGraph()
+        n1 = graph.createNode(ArgNode, "n1", 1)
+        n2 = graph.createNode(ArgNode, "n2", 2)
+        n3 = graph.createNode(ArgNode, "n3", 3)
+        n4 = graph.createNode(ArgNode, "n4", 4)
+        n5 = graph.createNode(ArgNode, "n5", 5)
+        n6 = graph.createNode(ArgNode, "n6", 5)
+
+        nodes = graph.nodes()
+        if sys.version[0] == '2':
+            self.assertTrue(hasattr(nodes, 'next'))
+        else:
+            self.assertTrue(hasattr(nodes, '__next__'))
+        self.assertTrue(hasattr(nodes, '__iter__'))
+
+        nodes = list(nodes)
+        self.assertEqual(len(nodes), 6)
+        self.assertTrue(n1 in nodes)
+        self.assertTrue(n2 in nodes)
+        self.assertTrue(n3 in nodes)
+        self.assertTrue(n4 in nodes)
+        self.assertTrue(n5 in nodes)
+        self.assertTrue(n6 in nodes)
+
+    def test_get_edges(self):
+        graph = ObjectGraph()
+        n1 = graph.createNode(ArgNode, "n1", 1)
+        n2 = graph.createNode(ArgNode, "n2", 2)
+        n3 = graph.createNode(ArgNode, "n3", 3)
+        n4 = graph.createNode(ArgNode, "n4", 4)
+        n5 = graph.createNode(ArgNode, "n5", 5)
+        n6 = graph.createNode(ArgNode, "n6", 5)
+
+        graph.createReference(n1, n2)
+        graph.createReference(n1, n3)
+        graph.createReference(n3, n1)
+        graph.createReference(n5, n1)
+        graph.createReference(n2, n4)
+        graph.createReference(n2, n5)
+        graph.createReference(n6, n2)
+
+        outs, ins = graph.get_edges(n1)
+
+        self.assertFalse(isinstance(outs, list))
+        self.assertFalse(isinstance(ins, list))
+
+        ins = list(ins)
+        outs = list(outs)
+
+
+        self.assertTrue(n1 not in outs)
+        self.assertTrue(n2 in outs)
+        self.assertTrue(n3 in outs)
+        self.assertTrue(n4 not in outs)
+        self.assertTrue(n5 not in outs)
+        self.assertTrue(n6 not in outs)
+
+        self.assertTrue(n1 not in ins)
+        self.assertTrue(n2 not in ins)
+        self.assertTrue(n3 in ins)
+        self.assertTrue(n4 not in ins)
+        self.assertTrue(n5 in ins)
+        self.assertTrue(n6 not in ins)
+
+    def test_filterStack(self):
+        graph = ObjectGraph()
+        n1 = graph.createNode(ArgNode, "n1", 0)
+        n11 = graph.createNode(ArgNode, "n1.1", 1)
+        n12 = graph.createNode(ArgNode, "n1.2", 0)
+        n111 = graph.createNode(ArgNode, "n1.1.1", 0)
+        n112 = graph.createNode(ArgNode, "n1.1.2",2)
+        n2 = graph.createNode(ArgNode, "n2", 0)
+        n3 = graph.createNode(ArgNode, "n2", 0)
+
+        graph.createReference(None, n1)
+        graph.createReference(None, n2)
+        graph.createReference(n1, n11)
+        graph.createReference(n1, n12)
+        graph.createReference(n11, n111)
+        graph.createReference(n11, n112)
+
+        self.assertTrue(n1 in graph)
+        self.assertTrue(n2 in graph)
+        self.assertTrue(n11 in graph)
+        self.assertTrue(n12 in graph)
+        self.assertTrue(n111 in graph)
+        self.assertTrue(n112 in graph)
+        self.assertTrue(n2 in graph)
+        self.assertTrue(n3 in graph)
+
+        visited, removes, orphans = graph.filterStack(
+                [lambda n: n.args[0] != 1, lambda n: n.args[0] != 2])
+
+        self.assertEqual(visited, 6)
+        self.assertEqual(removes, 2)
+        self.assertEqual(orphans, 1)
+
+        e = graph.graph.edge_by_node(n1.graphident, n111.graphident)
+        self.assertEqual(graph.graph.edge_data(e), "orphan")
+
+        self.assertTrue(n1 in graph)
+        self.assertTrue(n2 in graph)
+        self.assertTrue(n11 not in graph)
+        self.assertTrue(n12 in graph)
+        self.assertTrue(n111 in graph)
+        self.assertTrue(n112 not in graph)
+        self.assertTrue(n2 in graph)
+        self.assertTrue(n3 in graph)
+
+
+class TestObjectGraphIO (unittest.TestCase):
+    def setUp(self):
+        self._stdout = sys.stdout
+
+    def tearDown(self):
+        sys.stdout = self._stdout
+
+    def test_msg(self):
+        graph = ObjectGraph()
+
+        sys.stdout = fp = StringIO()
+        graph.msg(0, "foo")
+        self.assertEqual(fp.getvalue(), "foo \n")
+
+        sys.stdout = fp = StringIO()
+        graph.msg(5, "foo")
+        self.assertEqual(fp.getvalue(), "")
+
+        sys.stdout = fp = StringIO()
+        graph.debug = 10
+        graph.msg(5, "foo")
+        self.assertEqual(fp.getvalue(), "foo \n")
+
+        sys.stdout = fp = StringIO()
+        graph.msg(0, "foo", 1, "a")
+        self.assertEqual(fp.getvalue(), "foo 1 'a'\n")
+
+        sys.stdout = fp = StringIO()
+        graph.msgin(0, "hello", "world")
+        graph.msg(0, "test me")
+        graph.msgout(0, "bye bye")
+        self.assertEqual(fp.getvalue(), "hello 'world'\n  test me \nbye bye \n")
+
+
+if __name__ == "__main__": # pragma: no cover
+    unittest.main()
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/Makefile
@@ -0,0 +1,89 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html      to make standalone HTML files"
+	@echo "  dirhtml   to make HTML files named index.html in directories"
+	@echo "  pickle    to make pickle files"
+	@echo "  json      to make JSON files"
+	@echo "  htmlhelp  to make HTML files and a HTML help project"
+	@echo "  qthelp    to make HTML files and a qthelp project"
+	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  changes   to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck to check all external links for integrity"
+	@echo "  doctest   to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/altgraph.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/altgraph.qhc"
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+	      "run these through (pdf)latex."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
new file mode 100644
index 0000000000000000000000000000000000000000..b78e2f235a9d2e6f722f8b32ba666512e1bccae6
GIT binary patch
literal 31601
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
LNZx5Q>Ztoa35{8^
new file mode 100644
index 0000000000000000000000000000000000000000..3674093133f608f585c29468e5c7c89dd82157d5
GIT binary patch
literal 9753
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
new file mode 100644
index 0000000000000000000000000000000000000000..f2bd9ea8921fee73cc8ff49911d42c7cd71c5e73
GIT binary patch
literal 51820
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
ZK3v1jxC3J_Ub}0t6w*sqLxR=x{{Zn6AT0m@
new file mode 100644
index 0000000000000000000000000000000000000000..4e7b4ea03bc71c0c62ce9f9f0e6626bda65c562a
GIT binary patch
literal 1265957
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
Nn)n}?nWz@X{XhD1Tb}>`
new file mode 100644
index 0000000000000000000000000000000000000000..5c9aef42c76fa26d53d529ec54b498f1c8106cad
GIT binary patch
literal 88126
zc%1Eh2Y6IP)HbANH=%<_U3v&1p*IyPC?c^DjUa?gc9Y#@vzwjW1)@f=gB`orD>kgy
zdspne_b&F{{b$aZnLBrGOAx>R`=953R!MU2nRDKA=FB^1=H9(`WllpV*^tdd<LSyo
zG89hx*q_beM8=ouJo@ldPFpIstfn{-Yz}8yTf*s7URx@^taezZPMw1BOcM#VL@IYx
z{%uT><#m~4OR_GVB$-sfs@h%-qN&1FwS%10M53W^9mA6<T2(vHNh+Dm)FtXkI#s-?
zc8rryBHLUaCUwciI;u1jPSk}%P1FzHs@fq=O-MMMNs=%~ru?gFhkNTrr6sFs`&wn0
zA9bN%CYUN+RXf;8S2WR37Ya9#a5&Y)B{IxVT|Ao3q`G=Zfyr(z@q^B)Z%n7Uy9A@I
zt|6Jo1fz*`U0te&i?(1qj=j-yRqaqGA(~+gBwEj7+iO+r){ZF<4u(>_UF<c5Gj)+<
zOFGqORqY6uL}GmoT>w$r%3Ih7ao<(7BfWxGm(JG1+0@o99m0ZxInvKXr${_Qy1z>R
zSjIrW2dr`)koCcarOJRDxT<!5qrOa-glIMlYRAxku{jt=H$xgA;dn3;4h1MrM3SL&
zDp2i`DWMSd{}7jm(X2~^8>q_EP?s#Bi5X7~LmUi~1;_AeGc~}!fw5!92I_<9XhR?r
zCDckZnFz)Ma4wx1;Q}3E#KzS~mu`fZn^I%cs@iT;8jYtj!3@o=XhS+xR_z>WNW=P8
z4E1Oi<`9C>P^#QTtRbFFXXs!KH>Sq8h_T$`JXGP*JuLY!MaQ-?p<#MSRk|d!h+C@4
z#V{j%G(6600)ZSG-ySxC7*BA4R#(S*o-*LXc1;K9>m)a}q+<ZAPImFapsgvZYP-q=
z%8=l)Fi8jFsj1Z+nD`LXG?%_-vE_X~eO0!mJI!C3r<p7pAM^z6nHg=VZECu-1W7tv
z*Bnl#gRCRAU6k6crb|PX5L!1-p2?DiaB60CjV}~#NRl9Ho!Y*-rbjTFNj4^vnM5)Z
zuA`%X^3e`+JJ%Gl>LN<V>W*!xoysBw^ixPbMf6ilKR){L(@zQgl+sTZ`sqqP-RP$~
z{q&%pp7hg;etOeSANtvfe)`hS*7Vble)`kT0Qwn7KZEFJF#QB-da(o<%Nb*=V2qt3
zL+EEH{S2d@;WfQj+$>VNL`Kw%5<wh`{{o|oRTyO~XOvlyk@Pc)e#&aPp{zmzvm>MF
zr<{Jq&`$;ZjHRDS`l+Iyar85uekRb*MEaRTKa=Ta3jIv2>5AHnjMz0Yjee#_re|x4
z8Y0nni1tZpw?(NrdYzX>kiOLJw9K2^mfC}sc_g@;_ujmkPBjIzn`wupsv|iy1^oD)
zx*8I0A=yN<f&Sr3?NvLKrdCx=nqsLUECQjby+|@fO{J?^T9fs$hOv>RDiO9Ss;dgK
zkkB08`{=_{`?RI@t*<G}1e;h=q~_NYa-6A}8ecGzp`$gMp((dtTWbHZnxas)g~_E;
zwTo&B8{)xqn*M&kqM9N`C4?pHf<-mCEVmXeN*!2M+nd5`PKL7a@L2NzNG*!Y3fJVL
zvc-#1b&(OlY)xJ~nh2+s%*~;ecv+kZMsgxFp7mvVB<Mhi(-<_+aE97a;j+lQ+6mO$
z3~F!260@}>Faho4Gyye6sv~nFdq(z&%&*A@wW+2E^*B-%sa+H~U{PejqR7HUk;RL$
z5sEFs5k<=y(k+o_Vg=(CgwzsFgrbS2x)n4OzEq4NTiTY2Gi1G;kfoZb@ens&qAExw
z7=~n7O(Fe*Ee2|HF`95-d5|PhEvsn`(UU<!i?dX!wu^;m;Cv|AOzX+o9D25;HAR>&
zw440&On600JlYV=tmcj`UQ|;64H{DE+I&HPsZ32#OY02i?^L$BrkMVLy_#B9&0^A-
z#bdeNL2*Xm!MHEAf(D|sEp-qLM5LKHbubTX>X5RUJn*$GLTU>D-&m?Sb!b?Ld39td
z(|?$*e|~rcT{W$=@j7)lP3<GvQb$sYHJzw})@*%{#<!3|N*zW2&elg(!hGSL97j`C
z$F!x6WxePvy^8f_wmzJ#w<Je25el#HrB>5m9M_gQUO<zH2j^2Ku=t!<hJ9r8N+BHz
zBpOaHN}W_j$${nw4gSfsTUlHWlwr?|b{=~*oieFYg0$bNc`8$|T4*T~1)+s6wT9w7
zwJmiT^Zziaa(*NnK(zt;q1Hl@%V;%_4g>>`F#$}R8B6&2OeB~A8VjeXQ%nrwNQ+3E
zZkI<hkwAHMc>u5kf{9R|d{%h?ijYbrV#N|=>U0*hGwg<Ip%|`bmeKC^n;l4<MLYNG
zw$wSyIqe)ZbSg~|Hi*}@rOtI9#OE<-gcX5dd%ktpMp{-!+Brloa2=wNbR-kWR!5fE
zW&VZeG<Eo*2pe}7x1}y&<L*3$>QXW8E-Q<)MJ`ZB+~wvGx0Y$RB4RtZ*3qC{*_OIW
zWbnl>xFT{)^<bmKk_D-&X|rqEQrEIb+KVV5U*DFxjtMgJ=KM)rugCfZCDx3yKpdmZ
z{&WiRjqM9^#E9rk5Ye04QX5!AuV=Pz5fQzWMfAqnB8(_f<!$Deu4g)KrvZ|vQg_gp
z+}W18ON8=fEtI2JoZ2^FQg>5b_q3(%Wnt?;I}Ex`0O97A2<5o6FLfVv`Tn-l157Q;
zWI8aJ;}2Q~8|xP8;X@R6XDV1t@jTp?dPMkkKXP!9P@Q@dTx7#e8R@CVXtT%LQcs8>
zshs2a!4Pe1OFbzO%>qPEIU;(RBbr53Khu_aRv_Al(MBAF%ocJ?>NzU-d|T=TW<fcQ
z_9?eV7>U2wmU>Ae@d&W@%P#EwN?GJ&SPyWr#>9^%0_HI`I#S43`c;jk^(lp|r+lf`
zD45sVQg7%pN*+6%dXqtViw==Q5@(pVSJxEaNJzcI$ASeftsL2KO1*0gsMLG3D5DDD
z`1_If6lAFntfdeWtxHE~S((WaTBdzSL4MSh`dAEVaI<V71a{GAiu!eqx{JAG>Jx_l
zQx?+HXOY5SO#!bwK95|eVorU*P8Kz0<8i2DHz}j+%bI+2;VW8Y=Ql=K@%!~^Hmv&y
z5595mAef+wryv&Y-%=O8YfF94TqqD>VM+NBhu&3dlKO#R|Iuz*l7@exsb?rl{Y*3O
zm$uZeqA$M#CUC$;|Dvw?Qom7Pzqh6SV8FUs*P05#618FKPX_NVS9pI@cs43i{~Ucd
z=|sm=8|h5{6=;8VK?_hx4wW8#ILU>kdDt}arGl_n3X^<#nj$0xAm$8`6f!}DR!I>(
zKmitm6`uhx#_YOaWCaCXaE1xn1Mm?)f-M0xrHY>dY!7QI(uJe$>V>)+6|jeqY{8<^
zN4g_|9)O^yL_pQ|vQ=LlV_=!~-j3QOTp#I!>bC;*eNjDx5r!o*v$cbn9^6bnBlOUQ
z^vBQ-0F?uk&~JsImm^%lAcN$YQj_~+u;?wjavDV0Ryn(NLIUW?5HLGb>8jUFna}0P
zFy2YSy*g<G2+$gsj0DxAc#uw{4)2^y(EiRgz|@)uFAva}Ez_!(yOc`loLd=~(?}=e
za6tBLImD|xAmb2-rUU703oS&#p^8AZB^0C!Z)k(Fb$x4qI!`NqcFdP<2{%L=si>Tr
zV$69y53zcflsPz8BAgoy0xMw^;ouA@$Nn4x-dAw%T^djvBca<^8ArxKvr68~TFj9u
zh8deEB^?>ZT5L{LN5(Tv-i00I9A4R#ut-c`t!QyaCIa9|2sl>7(`2#{Niqd~Z;LTQ
zrgD!=rAJH^Uu-NNCDU|*nvPMO0oJxrM#)4m7K|E@?ZrE05!n_sZ3miW@<6*bF?xs=
zQe=B*xC3v<iXEPq%<ml?M*m3e*G~HA-x<;D0!n8oer+%P!fI<bSO9F9)F-pi>aJjQ
zH}1-ov>-#qYClE>bHLQ@+!P~)9pmvp5+fashnu0`re&QN<>^Q=8xIBQ!+}h;B~DF4
z?VVYk3?vC{M8aX8XjU0ut5B#?KtQVF>OnyuNW$<J?h~@|m@#4|nt;j!ie`z2LZ~q1
z0R1CMLP9f(4f7hVE3u0$l>vZYs1E3=(_o)QjD{$aG~(!69tkJlPqvjgDnrX!5)Ou1
z1AGx;M^kehXsVl_sXY{$atJe-hbd4E{j#S*Qw|L%jyc94*bAENZ9fS1aTo-1_#oI<
z9|ZFeOARR9PZ<PzX@h{(C;vY)cxI6OF>JLEwgY%y{QnS{2hSWqL-=20cbdHmAYu!Z
zqDL%8YgqmssOK+P#4>i5AkAa4nEg7OEi>o#72~ZA8Z=PNOF(mw_XWG=TWxdAm(=4V
zzQ7pRZ2O!vI1FrQD1;-&QEwPCq7hIu@j00rTOw*hwiYK55Q!>d4Z&3NH93jFDW_#Q
zSqi65t}SCr9e$;-Y;>T^?y4P!H##zzF40MxwluHOBXm7ZngLM477$yJlO&vadv(NN
z4IX(HmW61Gw6MnS$Jh_W7D<5;y0j()?4@~64H1QgyzE)V{#jTNkoU&0HFvDp=rOj;
zCK(<jl4U0*2P4`dn=IqUHyLYqX(IBKQQ$;yc|Ae^T@H%rI+d&dpsgHefz(3L5CaWc
znUaGX@<(bt81u(aLJq-<X#*pND$!pd(j~@Mpof9TN{*vQ>30*7m{^1!?gi!u1fyyq
zM<Se~z}C?UoWmp>zQ#NTM2=NN6bxcXxylQ}Y9<iltGeSr<?-CZJbuFl({qBujCKs4
z(N08HL=$onx^XfnJVn8HoS4vJxQ2`I_39dsJXK0ko2Pl$Je~d&$j^Z0XNoC+!+^A9
zs?KsywT7!Y8{wPUk#o?8wV?W3#fLLAAJ}h$6_$<hrR90h@_ePGF?wQRJ$Zpw4_(+<
ztS2u5eHU{l>shH13W>E8%s}eg5QsJgqA=MclGcd<W*pki2kn}(bn>H<WiSv4rX#_6
zI^prP0J#Lo^E|BtyVL>p00H|l4C((6%FD5@u7C)w<GjzIUnF^-1@TG{xrzsIZw8Ol
zM>8ZyT46E{Gz1f1B$Ej?M2z_s5G;!Z%@cdMOqX(BkTk*d=SrJ!UF{IA!6IDObjFHx
z+kXj&T#J!d4{lz^-Tb#&sYh3KmbLHop!)`{o9(zOVPM|g=rG)_<iqVIyWw^-0^b12
zZ&3!#^_|T%u#Yw~f=zD4cDF&h+c_w+jD#PyUbbL&y7<T)IAZSvC3kTp`%on^Cc$_*
z8CafVMOM9CDHecI3{u(0(>G9`%>?*8H}Td0-s5A=j+#7XpWMyK;2!%lk+b)`Opayo
zeE{_S{}d>B0LRarS}s56kjq0E!iTVH|06^XV_!c4-apERIfr?l80JA)>asfTF_3*+
z$tR`gghKC$&aQ>t#?DyijixTio1Q%@y&_iWJ=xi|(t8RZJ#7yOO1)<~ccj#NwlkD^
z?1!2x&vh21-t%Da1)eRvjS5P-!~S9A-BSh-DDPh6u^}(96GhhY?qz;_6YTkGYHjMf
zN`dZ`&Z54170|ub*`~gG-hc!3-RlmiC$+xOS+DQj#FTjpjJ&PH{MF7{efJKCysOj@
zh9fEzS>V0rh30*O=cFp~0Rs9EtbL>adZ)8i;e8AupC}><2vOmE>ILF6rA+!9G=9<9
zTHtMRpzM!1Wq;Y(T;P3$UVIG-zfmB5t`|q9lIUBI|4xxNGESC6-+Q_AgDi=D1bsho
zhw3Q0-T3_hFeQ}-8cDL*U>YnaqKSrNGuyahOYLMf)0AX?z)lQZ!}}y}Esw_INM4k-
z4EFw3<HMgF;Fbxvzwo)eNP$Ow#Q^>W4*cHPSX2lJYUxK~&iw=A{!|7DI>-S0<<NIO
z^1l09>$`u@bf+A+7?)%8#UI*C%c`R-9zl|m1LkwVd|r-Gi2WCx^<!ss6E+`g7I2$2
z)aE|HXgX}%aAfB6S%f6Xl7QS~0Yki0En5~%M`;N<+NbXQGzsR?lcX@mK1s%iBq_?l
zBq=mNkz$OL4^aDajJ-xKK<zM(_?43q5G&<k1C%Q#c3zP#IWTQ91?qK_t~qYkQF>Y~
z?1DC%t18`c+I3Y$nIQPpl`$+D-E;WWl^)<!Pjo5<nAxRFBbual4qjbh2F+Jj`sC<W
zS6GOc`mJ(cL^yau`eNL-2HX9V0n#JKa;=5kK-%#PA^p+B05CC-_u1y@l35To6+VMN
z^<V|PUibuZTnnEeIav5qP*m!dN<3?y!L0Tfnqyo03<Ffd?NLGPGa{!Wwa>^LsD0QE
zwe}g6BWj;AFgTh=xUW$ds2+*(XIPH8{3+)VB4gNz!PfGpf*;=m_orDk+f+bP1jeyB
zq5`S}j8!={6;N4@xdIyJz#~%Y_#C|gnt-V`5sXYyB43%KRX~$LWD3VoqV>B8jVywu
zdI6e-fOKtSI>MR(Hn&k=P0rEkplv~9J4HmnA?l!+UO2YTG3uZlK;w=%);ee>TQ$|O
zZ8>x7oMWC#cR?>^fx_7e#2s?n>Y!agem6zlNIh8x&GB++_Z(3N%>{jXaEBV$6oIj3
zl>}W=EsG|zX}OT%#gWSd>k|{K!9;Kcg3YhI7eg#Pcg-<RbMqV^j~9@u`7}4s3nJMQ
zBfA%Pwm0|8vl+!SH%C@Y`#|G;m4RhcP4gXkdM@wj8m*`ILp=L~%37u8_Q^3<O*_yQ
z|2DMb0JOFMtS#gYYzfUWK%yo(5KJuMCg%T}nkdM7!G4m`b7iqZu1u0wm266)B^Z|=
zfUdVKi4HVMq6QEPwYMY+V@Y(NRuVOCp^~U+b4#L0EE*9}5=FtO7%z#!yd+wxltgh}
z5;a*$qGn4;)WFj{;a(CYG43s3JEdfQ)LIgacPwLE5`+-6kOm7G-esGmO6GvMAj*Q~
zWiAELa`%F01uuxkD^r>L+N5VyRLQEMR{N^xAb@tTOI378hpM7Btcu#Ss_0Nz6&(f!
zSMn%tZK+)pw<wr{w6f@MQ5GG+PE=aUq9gh7O>jengKC@FXof&~l&p=82BgQ>)kcSD
zwb8K-gd(-BveZVaG3ky2BgZT8KU%MiP5_Y;IgajjDPV#m3#600P@RmZY*ms|5a1fH
zeyRfS1ieZ+4Ma{?L=-ThN;<;>jHyUD6EvQsXfzT*7Aa?Yxpz(u-?Lr|>dxg6>}Q(E
z>Drx7;NW&8IS;A$Ol{6M-@)2+VeJA8rib<mF{&2<qKi3`a+7OwO#8?{9hZRMr7qNQ
znLBk{&Z(n{RTJj#AbS$WBt{%p*b~P(0CuGdaa`3Q;<y@#<7$mKu93uXEf`$SJJA^3
z7N;nbbsBA4Curk(c4Cs1Hg4d@Hz|A6nqnK$m?==+C`sccKzXwrX<Vz3#s-Isl3H)E
zkjAZ;J-308+m+bgq?5)SAaW<i(bd}dCP0!h?()KPH)66;NbW&!_k!j76mWOwgmFKJ
zJfMguPy}H-=mEt<7!QHQhZT)R3P{3u#LKxy1z|h}>K^CO8wW!=lO?<s0KeJ9&$mYS
zjZ)EsT2wrNWBMVDMm9QN*iK-05(B(hHlM;CcpA_@!^wpMdCZ1fo&~|@T*&2lcXD}w
zlgkuSI;f8n@Z^|jjALH3=a`oO-^(r>^Gb&}=2hgFS2d1#O>)fZVDJsz?}Kcp!0a1E
z^pZw3Zwjh;i=CKerJA?-@lCKQaMN$YI6Dc<??}dZ7cjqP$2hNRjPt%j@=2{9SQzI+
zOsS8+$j3@gysI<LCm`}E$I-_zBTTp?@qFe5?Q?|Yte1R&P&WaNFBPbt==}2)h<vSx
zD2N3AeB*)0e02#ley3<O^1`^f<mKZJf`5JlbwBY~RylEjT3TpS@H3A3Z#DY)#R0;O
z0>ZBt=FKtr8^-^4!2SnkACBWk8}|7V1pjhjpTFJN=O4~Kqs84E>^n`KgfoQ^PN!U3
z!s(pLAm!vb6Hab!M+he`7YK*_PzfhLR}fAC7%a>+YI{xyhC37lgQapzQ7-40Vs>JR
zm1BJTxO#0|s<fe%*#enASI|lcAS=zap_PJMGp%&VwNEOkwQH_UE8TJ-SGt3d9!k8K
zSre`F1d(1GN3q(~CMc3gdV8ViliSI34-kA4ZYu=T7p!fq0P2~mkw-re>92?=AOv{~
z@Bm>VkAa|ZkfPD(a7iA6z1#}qa`G4g>W1bTS9bVF4hER3ctbi{nYfh_!*XHV4$L+4
z$8ZM}v*dTsFu0p(btLw}DDa>RJ&18ALvpPYG8zQS?Z+!n$e3JL3aQ9N3K@qtN|+u8
z=gA~nF(w&n&m@(AtjdK+#&w8E#v_xA*O+92WRi(sa1!rz<7$)DD|Y=wBb3R4P^PdG
zTUiNZDnGsnCSZHbHoUUCyc8pOWjf%TVaF>IHD1}qA=#wXZ7saA9VXCBFtWW8{pmWd
z>;NJ=ava@k`rm{|(#uX>pms)3b{fep2yYhHo~^*!L1&p=L1Z^YM8P6hW{w9I6U*!l
z8s{n+jVzEXvxk>=^90LOgStI)jong*@$OPF?1dwHca3EBb^tL)fY=8^ym?0V#Xgu1
z_-i=Fa3s|>9J3z??(f1eweB2q0Oy#Ios^qS8M#ng{P`{V0~Jacvn;S@mW6=lKo@3N
z)FEbBjLfoFW0pF}EK9&(Fjv`1kY0$(*9$d5sTYLOz)qA}2_?jjZ_@6?4YT84QMZsl
z_7rd$C4n>noQML)@(6+05{*fs4jCoY$8zPihNg`y#e9i_*=8l|O**9{KqSdiDvT**
zK#>&E;)N!qRVWY{f;iG(B%|O+=-iP7k!6aA0zz=daxV}oa*eCjt)THB9&`1o^})7k
zs$&cT({c#9BCln(p%;gO!ow7Zt+{SjtyhBl;flPGagw}_@N(%$L0(6Jx}&*2+nE<T
zaFcp4olZ7H;TvA~1wML$-`FSa8D1Vt`{0&hmT@aJ4m-vH%RGVQSP)nV4~%S&ak2^{
zw;G@y$Dy~kHAQ$-uDm#XJm@$<nS+gs(<eG~=ux~wPtrQ{WQ27Js9d9T(DAwEi_<;j
z1vOLb$f>B{G*ECl$K)U^-3Xf~`V44$riBvaH|oxEXXvvzLyx6aO^^NbECDAlqCUr-
zsMi9jb8S%pPoLKzo<1LW`h1P2FOWQaA=tZ!N6@&kX7&gen_P_Kv{s|-O9X9S%1%tM
z()MNi_$KHf8~rv#-~j^a<&wj%0I2Jf1eDZ$p+?<TIt(PK^{QOG2)r6I>KZU|trGt$
zbjDr}BG+*orF!?9;7Izu-V4zUh{&Rj+=#$#0;@MGz}D*&z5zsTQA89Vg2He00&<%|
z;kSdvJ8UTYPKOb{fsgpRv=M(ddT|dZyjOvEyDNp?2lDqT@<#Sa3V*=Mr3XQPari@^
z?_uuH0!f5v&eIk0!u_Z;C&okwj<He^ZdQ@Eudp-n#umJnr4hcajS5&^-lq}#BMwOS
zkrxv<!51mW$YU70#{v5j9J?yPE*Tg^y%FS|v?c1N9J=ix-fd57-S!Nceil?dr*y+c
zji~paEw*Iv$n$9V1+e@gcV<glk%40=$G=qd5?FkhTimY`elrNZ{f-9sm-X3Q9rf@q
zMR<@#MIZ#XdZ&{<_FXj+PG{p8wu;CmT1Yq)ZJ<cm4n}=A5?mHd5_5XQ#8;|bvCk06
z+^>pi<TZf#`hO0Syn(F$l9tMEI;8Uc4CPyxM*ktIw=q55fhfF-QHXJ<ujQH+WMaa9
z4`koBOs&S6>;v~1|3g0GvpbB{ml$|X_&wN!|B?NK|1qHY#2yvQ_@8!Y#{Udw{Li!*
z|8qIxe*p$J<?4GrCXd7t?PG1O|5D8LU$GNCtaJU>{J46Dv8vf-s$VQHej}&)Zvo?X
zc2oTq+Eo9&Lmo=4KUk*vA2D}+0wX^wk^feo>VE-|UpbBvt=~;(<V^pY7ogt}kgkpV
zfw2Arn|~>=e$glTzd__5MMS|NCi+f!9ymJZ854a@9@ChcXPxNtY}Hi9{^m1Aex7;8
zD98gZ3PE8}o&k}WaGvOkLEfjx8>uHJdcT)TC3&13OF>;1?oYikSI#Hda3I>)C>CZ>
z_^vnHsi*Gv1m;JgX&;U$kZEWLr_=14pb?VHHu1GxG*KQ%wuDJAgM`k!P)V|@1K<PY
zBl7ZazVB{_kaWjb_5f#ka%XHssqNA{SpoEd2EFs_Du6x?{mGiccTKeZ?28z-29^Dk
z{^^xxt^nAA_+Len^hZ+zz|_DzW1ao4)S5#x2$T<25}kD-e7(dYFhejfjDn*HG8C~6
z19iidunf||!oJ#V<Omso?M6boQ5=R@MglgkSIeNu=seqr0;aF>JlE-KOdd{OWk5Xm
z_6g6aYa*MvD)MZnuCaiq(jE~^T~&D<nYza1!PLcms8iSYJTY}m0D}|rjO}+Z!3b|C
zhOv3(DQgms3YpAKOtel}Q}}W9kuO4{&2&{Sa81n<)73P<HC-8Ra=Mz3XP&NRI52|L
zx=o%wU2TggvmF?jsYH8Po;F==4<b9{87l<ohl)f_RXcit*$Kg@n#j%wXBV(FOM$a}
zo;FR*29aGA5e0*orgrndV45Z7fX3YwjYe<FSz@l2S9^$AVjifg=J8@*);J&<rqwCC
z7+`l5V9z|LFXw11zn6o-pfI>MhSA%=J{a450oQ!Q72{Ut<ykK?)PUfAE}XExJ15j~
zPGEOK$oJrQlEOGf3J2Je!UBM_(1jEZ><}p|LQ+_yk-}n03Uy#`3GYPXPE5lcQOqvT
zm?0>bp`M)>XJv*4eq6mHLaMc)hDQ0^FG&qyK-XwT4RsndG&!V^)Eco+LlpBR21b@D
zF%Rq15C@TFj-y!ZZW9#A4GAwa$vk<zL8>Ax2q*>Chyp0ClS3LrGKz=-LXbn&3&gTK
zqlR4$8doS&yQpDX9j5j)pV|-7YMz79i$g$Rn*wopo?8ujD99hCroNS(R(iQ~xL~Iv
zK;4ntp9=G)JzTj|wmOvE4PNV2#}3ta>L>@(VPX2{Jgi1Xw%Zmt219i$U|q$rw!b|^
zc|@Kp&Q^n#<CMW-)UC%m^x+Y_4^Png@I(Z55~w^`>66uYN`YoBu}%TuH7;~|sym&Y
zrqHQ;pP46}j%9Rux;>qq0g%pgq0_TEM5kvXot~}H={b^4*Mh-wEp%$QBk1%DjZV)K
zbb3BJG1f|_7x3dMol3PfbQ+V-6q9s%5um%+j!xHVbb5(Hwo9#-TIlpL%$du<$Q4S=
zFVg9B9f(}1(5c~w3PsZCRbFVWHt1BUBG(|GYr)!j1<*R3POk%z>lG0NgrL(Kyg=Nj
z(CJN}@n#!3-QX}3uj51U7HufrieB6X3U5~+-sDQBcYyqzioB6=l1}gPa_MeCr}u!m
zd)?{OX0uq*=^YxK-sfOCDoo$+PNz1u$O9Ov2LbCt?sRI?o}#?Rpwovz%OkdQ`lv%6
z-oyLwF|7|DM_^BY%8g2&JnT%TPlE7ME_C{|JDonG(5ZZbsVANGV|4ngJ)J%Wke+v;
z(-%5Kr!OL%zNpdZOOj4s27|9y=+tmW(CKp;oxUpQ^fh*(pOsEu=f_n#m1=G1G$Efl
zCF%4{K=+m%oxZHm>Dvz3F15a6q0@IUXWj!N?<+BXQ>W7pK;%P(P7Oy?D3VS;@<Q{m
zL8np``2+!d3f4YT0DYj->E|Hwg(9MW5Oli93&fWSoqh!xzqX;%Zybi==X@xBs}05P
z(2MUu;SUPLuUzT$N09$XkvB3<(&^7$F8w0t^jA>#8~10r2SwRD4avl<KWg0iy9179
zf#VO(trIuTF!>XM_!oHbH}_&Ql~Me^8m#*dsO*$)$GV;K?YsI{-qktz=C01o2b6jF
zOl5w)(RKegvu*(h7v?*&Zc)A~>lWuD>z4DC9lpQSlXj;w+V$nz(ykvcmDpnf+AYoR
z2<>*s2ij#nRNC#DFKD+L80^kF!MOcc@kj73!>00X4;~%Tlbx7u<=tNV_$Fls($H%|
zyhPyZoiB*D58&G>--dX*<(rAOuWimKTDQ*EiMJo7O@A;lK#4jtYa-r(ATlW5*oRg;
zQL#wo9qa`sfN;#Z$Pk1y6zmOCAPvmdsCPJsj8H@r6oPt3dZ8GVZ%}U;XdInyrQULf
z@yIYREn~FtSb<)Q1%;Ig#Ik%h>a7C#af-Z=bdq|<d$}|rpHuHdP&bMD<M^#BN4{lQ
zR+Voi+{q5sQ^NX`d?ehm4wxfTF<#RE@N^EiBO2H(?D>*fXMmn<Y^ilyhpwE+yK+0N
zD`z6K?Lp-ZO4rQD?_|1wL%XL_C6(L}BzNM*;iyDsX5gJcau*i{p5@NKvlRwri@|m>
za2LkFyV^7GZh&cy3j^=oAqJj{3_Mq3;5{S*&jW+i76w-Q5e&SW#=v_D2HuOE=wfBy
zz4>vKfepPj47^N!2|zONzJPDO9RttP7`Vn^Y)Gy9Sr~YK%&uB6a)1)`eRT$203r(&
z239;#u}B6!&<oBYgMkfQWHCaj1A9x<M9>*H2qN{0h=M{eaDx|$kix)W(Aa3hz)cRr
zHpqu<L>snI^dbfdmnsm$t_&Op`DR7lNIJ>D2``tDf`MB=UCN7r9d{F0mc=y&CJxrK
z!g|_^f$cUFG8nHc0AA+B!1h}TEd~QG2R$on8MxJ<D_eM19;9{U!3gaTP}!z*&2k3@
zJ`^Mm(-^qLhJjat<l!z1e1tm#AE_`fTR*mwfh!mTA7#(LM+2r~Tp0M+4l(d5WZ+dA
z1Fx10d>j}&-on6&KZ1de))@E%!N4c76BSklK8YV!8Q9Qk!@vj0#|KFUJ_Yctv18!l
zGzLD^VQfgPr&$>Ibj+?Zz{r_O)KAeF_$&}PTVY_u6BUbO;B&m-tTh<e&_&KgNaumQ
z^A$*E=?r`Uh+L?MC@2I2U*v`2VugV(0gad1Fz{s#!}bC`Y%kY_?G@<7I#76}0`U@8
z2EGd9uU6!Zq>~JMjh9Q;3I<*e>aOGdZ0AI1$YW)a*C?ThDs!~P$5&~5e7ysfR(Z!h
z=i@1xZJgYQvAhYKxtTk&`TD3A>kY2n09tRc<?34<I(<Fw^xL#fza4?z0V?lQI&p&o
zSKkGacWYd|-ptkF{a*Kg@V$mw^ZUK-)4`Ja8N8k0{az2SUjy)duS4Yh{?LHE-|HdJ
z{4j^X-orJE-HWWhhwBlhq&jwwkpl33uSXqHKpJ`s!{n&<aSYoNfMO$}h;d^Ni9wHh
z<skBu5?KWd?v=aGSkLeoOT6HVC5z{LH3YWG?dPlK0MYaIh;XaCL-W;(IA6V}%~vnU
z`RZjb_zLf<?TvXwcoPW+Lv_(mMIaN5#_2DCg%tt$Ryy`a0}0dc<C9$$!TZ0S(<Zi8
z#l-d+J2Av&Q=K2z-~Ywz*i36j$vt&Bt-T3uyk$47y{t`ZZ#(3d)cTHPT6-5W>OC;>
zzS22w>eJc>Ao3x{QKY1W35l_#?gi#!1fyyqpCFu1!PaLAoDcLV?Q;<MLJ?6g$Q^Yr
z3|}$<xup&&zvdpYr>gP{fn9Y6hWnf|+_&hB(u#bC&U_DQe^8KqrOj*tz>gsLlLCNe
zCTyj90QkiKz*~`D5x{St_ICxqk2(PU8nQn?@=qyA&Hm+K_HQ+U|3Ldr1?T{~SR%(0
zY*!c9>-vN1$|;Z+S!6qsTY!7k1+ZsbpzK*YI8gwSg$0TeMIMHW3yjLf2hIK52X<Gz
zN&`$=iGwy~m}x6TH}s~Y3wqKO40KaGVJ02ksOIo)weFy!hoZw^CRzRTw8g1pf3E^w
z{qzQPeYnr>b&@YF3q?t|A;Vwmi!Z1s=jmO}USd?vQ?0x*V12=sPrmMmy-^EZ5Q{I#
zstg47XJ4x=SHlCh&X==0(8~j5@IB&iV=x=fjIQt*CfOAeX%k<1;qp!;<ISKxn>T~9
z7^(%@Ru17>DZ<sa01LE!uJIvTV>kDMnD*x}b#Ft_^e&Kv)&OWZP#Hxs01W3KhxF^s
z({FHrg^2<PX$UADs$|W80&}^=3N#i-G7MV`hZZ9Wj542{HNzbVGNV+uqK6pVG7q?;
z3oN`<j>gA;;tB=sNDb~#RtI`!9vO@JDnVZr2im^2W>?37hVfhjy!y?^YUb<&4`(Nu
z84e$+FbUyJ2IW%}cgJb&76D`&J7g-hng*?=7Z}sBkT64^0dm`LIaZ9AM<48Yd!XOW
zf!Jmul<mR94vGUa?9z)4bFw40*a=$ftfp5qtpVQ!WM&m8%MKt326(my;9U#kvV*lD
zyP?@RpmKKw=q?&iwhN)N5Sfdu_kh;(I3PPovjf#2zo*l1-pj*>y{*G}9|W>5D4wsl
zQLVYb%1hu(QiDzQgC_fPEb_D&a4iTO;548YcmQ5#9nc4&^+lj~u>!bO1I*sk_-|;P
z)S;y%U@6F5__tbRc+9(k^<bnyaYtWcg$i8PSm6R(W65{xwQG?zo-MK(3v3rzO#mrk
z4+$1o(SnXFvSJ0W$YMX#Mb^>+vB-*p!Db$4?cI9d4*Q2Kotlj47M4y49vhNmC&pWs
zPA&Yn<=uJ?Yp2!n$u$LH?L+`wTHy}4c8VKtVC|G~nEj>JY=ORZT86o{9E_|`VonOQ
zwNopI9HfjW!x0sVTs$4@h2{`rB9W>{8v;5MtR1ERYAw)KPb)#>a79D`Ay!XEc!4;w
zz$lxK0*yy2R1V&;r_ea?#Y)Z>#~LIJUaUedR)fOh6o^L^Xl1ggBt9PGPf+BIjFTnt
ziC!+9RKQE(lR@1n+@IY$$v4v_l)6oOSsR>a4z@Cy$tL*Yzk-=SI@uf!u$>&@%S4;Q
zm1Io;Y}p)d<RDa_r#hfJR&GmUsJ1Yg(=p&@fX8Q|$1x7^WRW=v@0|sLXS?v;Iqtl-
zmh+zaYOQurpPy0Rx%Sj|9-unkh59b&5cOS%)OVpqeHTgUyBG{!!ZXDBYAqA{ou{$i
zrGot~V<-Gp_Pd-Pw|ljg0|A~WFkT@Ea2;U0(vAQx)(G$_hvbu5ueK22HJCWpf|2z~
z<k#s0cpZpbUtlb%O}?mTBnRH$1?a{CS&pjO$V~|AX0W+IfpwiugSUXlt%`_(L(t%D
zUN~-7Xz&iuc&7~w-sM1pw{RM~Tcg2y(2ILP;e86kJ6vh-evp4akvCFL(%^$$E<Ge@
z@L^E*2=`}rC$BeaG3apl<9?0X9(6Ezg53Kqz}2<)tFa!($UFhiHgag~c{SF<1+vC{
z5*k0H3=D)0JL3*L^)T<LXSAMr7V$g>DxX&(|73x=x)m2QUI57#xp8qZ1JRjF%$Gp&
zWf!V_#hq$j<y5P`w5NTyzV~N*`<gx9z7EjdaN*lGJH)qdA>Y2G@$K7^Z{Gof@A9bG
zzqE(DMZvtT5$=0}aNlPq`dbP21Ag4;r9Do!!JjISekfV@BS8AG9qYcMvF;}h!$NBP
z)WW)-VY+<|M!rzu|B=qRn?U4CjzfRLj<_A(fF!B+D=$=EBPv^!<QoL|Em;3f0k}!$
z-|s=>2Sr2yBl!164=^VB`w2AutY|b6LDJtZUhe%W=<hdB_dAc^eg?<DSFZ5_Y9>O9
zs^wuK-n&cdtwt(Q5eTnn2)AV5N-9YD*jvvCVV7FjCYtG$Jbx5Gx%HFAntwVVJw+h>
z3p?UJMD{oK=06aLPK8(<a=5=0SgXU%g-kG~(3!Gw3tcHIuh6ItVUw)BwSCV)9L?A&
zztEPg3IJ81Jt|<UqQZ`_RdFG(75kyGm9J2+l^+b2ph4v=9wv|2h7MkSWR%4)s+3jA
z<3zf!6Qiw^)s-JtYeZGQ4O^WhpA=Il*s41q?NMmMR{laWTlFloPe-Y>SE0^Uy$d0I
z`hbzGl=w5VCbsGeB3l<4HKNHE6^$gSeqMn37s?t@)kX#&tbt&2kOHf3p~g{zK_sAv
zC^!U14e`P;lnIC;aTur^UT74FED@NV5w?1&V+;gSGqO;Y9;^u&g>ICA!qE!GVTJaW
z7|TI&jAEK)A2VIyVS21#nl&MnXu1j%j#EsRYo^UtuEvA>1V!FRdr8m}y}~)EkQ4M|
zP&bA9Q)j-_1y;awb^)F<t(0K{*0_LGUg4t>GuUSQj3w2{M3}$eGm#9Wvkeh!7+%31
zILAiC_(C&DPjx_hhJ5gRA(pno+X;_M$JovQ=e8+Si*N7N6yfATS?F#HI<`|rH#*ON
z&vfYW$-K+A*RpK~gta56+)3%eZ3{bD_xagnq@A(FF3@6@l6Cwtk^*!#$n2^Dg}#A@
zx_AJcqvhuAXm&2B+(Q96yU@Bp4xLZtVUucTvS*>OK@O)4sO-I}dx6m23R9`ML-r|z
z$#JrgCh#8BeVM%R9#sYwE{wx#RM}swwat4|=QBMp7j^Kxsb{dz)Uej<y{Y>F=>7Qw
z4j3t@S|hUL0QkKv#tg#teM{?DxInd_P=9UeUOey%jleVX<Uow#BCxes3H*LC@bW#W
z{W^)qE8C4TQirORfT|#mwR;=cOWHm?sAzDhNJ8!vNtjn8<;pA)4SCih<*-q2Uyn2a
zrie>D675hu62p2Vrqv@$WjzuHgUvjS#@)M$KXRvDt3wi^4oR{T<u*I@{J47euA$ea
z3OQG9)ypb`0KT+c6%yB~kc<Q0O08K-6|xMIX*n2Kp+ueNRY)s{9K><>Og(PGV(is>
z!8rusn01jhgmfs_J4}Jps#hQ@LF8~nL_r}p>%CAMS*UE*gT|v3K9-yH4otg}5BOt^
z0gs#Y=*4PKc$@<9s6yAxdXPUskvEdg*sS+*=_FAFoDAwt;r@&?Pn2xx!e{!@sX@Fd
zneX;g$Bx$~^ED1e*9xPj^2t2V4lCp|4A1F+?+lKwJuTVRyD>MO3GL5P=SI0(b+$u~
zoy>de9IeOJBBXOc<#|dEoT<)@W(GYUgfDPm&<oue^dionqtzQ9JPEWLBhZWO3G@<x
zbg2u0Ue+N3y&MVja*aT*kOaC83|`6mptqUmz#YM#muUQXmEg~-*@<pe{=9}CSFdzR
zwKnv5k-U9f(&u_Wcby%5uG8rAdWQ^`T5qt>=Z%;%H-V9xm6)&B>2m{!+`@5~?sG9g
zk?eV^7n<7&J6Ug;xg7!B0oLwR0Bz98^DYp%TM<z}2=ctg3&gz&dEN&a@3$e(2ONgt
zU3@4$s13!3(2Ivb;Ufyf`&`NMQILO3kvB3<lIP=IE<GX0b0esGlKV5pOis@4A(1=%
zk7^A1l!N69gyp9TZI?sNZyk9C<Mb>5eXh`UIpp@%k&OnEJ`Xxxuw~L09lCEL@4lC`
z?t2+wy#gv<Rl4K(!cMmP{;z@L>xJfhe?(^{+&4h-O&7v_%bjrF=7c+(uiZSkwm0M2
zckH?LT|o1m3)jBiA+G%Zx%LB%Yd@4+`w<xYm<P%zD!~&$v+rs&`-!00PuYpyR+{~c
zAKwI}n4!^zVK0-<IhPFk1z_4_$FLu14Ev?S2#{L8vM}t|m`mS)k#Chqf1xw%cOde;
zLO<Yxib9g>4_-iiG*TK?_&*_xpTWj23XJb`Ui}qBep5sg`+`@0_p<+o!mEFR#=mTM
z^>2rP`70lo|7ZiVQxSO4xd?WmiwuZ=y7Fo+$mc2YMv6&Z%`ftBsi27SY9XjALUr(-
zWxeR5wO%k`l%mYON~FaOrY@Dc%|%G0eH?WYKZc?Nu#^@Vt3P{rih{xBWZ4B;buF?Z
z%Wk&dusOrly~x}rJrGDwP}xg~ahD>;va>e`_bGB_!L5p1S+H-B!Gf&1_GH0fj0LwY
zvSq=3fTq7a8eqWzMIB+mfknWA?1##NgNg(T4hDmPBAo@n6TyQ0ip(rHghzx7WhaJN
zS#TIXuCgHP0b5z{N`Yy3kzm0QfN5lr4GRt~GPB?)hxC<N%ZhXs9F0j*4o1c(kseW`
zv0w#=j4jgku~ih31uMOPR2jJn+lS*2#(1zXL4i?Gq_N;c5SgTiDE0*lPWG}trO05x
zsi1LMk(C9fJB+xAe8kPrM%*^&#kQbuI|bs@A~zPC3G&-3@<xhD7Tm$hr5yze?gZ*~
zwr4@H;#FC2rpAK1IG9=|OwF=qK}9#2jiJ~Tu<T~ff{Hvvv6I1qbD-7kwk$Z;p-*<=
zeX@tvC-V?UHK^QEiSZm~7TgPj_jX~yecV}aU(SN2H_Nr_e!E_b4(Hp`VGY3A&xH>6
z?+_i<A|2Lhba;TI!v$b)A@2v9SIe1hxU124@j$_gi`a=?R$g4pkK4Xg&f$)`YX!<W
zNsvnbWzdcw7ia`o?~vJ2YlDR#Lzq8dFw&^Reu++yO&}8CI7;=dH^Gri8TCRGLqryJ
zWGMoRgVkmQSd&hf2@pvtA_@>enJr#GQVL}f(3rNN%#6eEOz`2E)rRLX^kO+ET%kZD
zu9Vpd@&_sMM)pa{JlM;nLj+~Efx1JvKQqiUh1`QLEmM}eZ24Oeh-T8}?L?M#ts0>o
z<^bdx0c0g7RKM9WIUJ*N1i(9z!_$PQy*7h7j{?!7ZK?AZhrVg!eRHhVH>=S4YEXHc
z66>Ri%&Tp-$Jp-pkmFJ9383~wj<iE6q|0X7J_$6Q>_Xe8xYPC;PTTBpK={yxx@2QJ
zZ`><k#C@tgai0djPIn>hGde`vXCiT*sS)>ClDN+XgXi$r8h6)OoT5-p(`b9GpzU+n
zi4rSqpU01HQnq9@#Wuu!gFtz{B<>3U<%M>{eYQs27dea|sr6zDabJRIb}1OSOo{yk
zI&ohPB3E!6U9FvO0wk$>ofoDn5tEHVautHR8Z2L<fV*5L?`uJ1y&|GO5#)WH2NV-`
zUJn{?P&67TAi48KFXwI&+<7yo+rXnYtdql|PnJc~QT75r@V}DW!kSmduGg6IRtK}!
z%e`rgX?xAwj&Z&NFy4t6W8C)5BGd|n+y#PnyHLnI?i6w_r;sV8PRINE+Q}q7#w7RI
zGs*pc?*SJkd9XuF@(?n~LmHDjEScmHF!(6%-9a`3-s~GibiYO@j|oC~oSpDl3FQfX
zd=o5I-1OV<$_9aXqvVw*0rOLKyz+>~D^EM*o7DP@g;$=%lzI+~Jg@Y`lRB@w03t6I
z8H*nWuT)%;US9Ho_A)|q)=OSNsILN!*A%EP=q&R(h`gbQD2N2hyy=0+#4>Mz#<vxX
zMqWskdB@AgcLmG52kPGEu^j3&{P~TveDr^S1N|+HWIlATdb6<l5k|J1RzAike*y?U
z<s8FJzh}cSpMl`#E*$fPJI8F|93wC7vd3I|(n?oGD_`2v%2xpCYZqGirbD#yEz-)j
z8m)XMY2|w`_yh0G?&fQ-=ne((mBu7L3MTo9o#<+1lArl;%Vk}r(uO>4mk&jk<nb#Y
z`^}C#zSqd(cZWQZTK}++$Df!he}R#|m3aTElgB?G(y1766suirf+G2%bFl}SoMQ83
zU8aiU7UQ#CikY?iVgt}WIz<$KNTDL4fDjZ><N?C`#!%4cQ#2YKZoDzn%dL`PP7$S`
zt_zQt@g#Wm<s^6zJY1k;_v)L9gn;=4Ze5FE;4*9~XLNIbahrhA9izLsW_w^i^aLMz
zp${>Rg*m2^NN*7AQ|wG4TNS%+)E6U(jAIv~j7g(?T+$ad?ThU<?EzVTdt|t2U)-Th
z`(oU*FV;5gi{++07!2@!H@+2W^@{DR7Mm$$NU_+wXD9mFY~J(Zo0L2Fbj>!*a<|;b
zFP0nmfOBNA-9~<~nOR0TWSi7lR&3eG#{?<|BV&~4k0{nR@<C)Q$I;EE|4oRDO?@v=
zRS3#XBN>PA#)It%3cQM9eS;rFCMhBc7P-OifyKl#Q$XWXMWc}gl4quQc{g3~%nVSs
z4UgXhmjSQV3EFty7Kio}jb^rUKyjBqF%x6FnO3*QUf2OV*pagghcd&=GUCaOJAv%Z
zM)1r}cHBh=OlC24yTX$lXR}|Y!jm2E6%OnQ4cL<%cLU9Hij8GAl1zpKmxW0>7$>_U
zvYm_|!9yMAIs{4D*rQl3ymgiHFap(Jdruw#Zf7?U0lWwRB6}-Yqu{`c0PYOCFK5`Y
zPWT>$L_P6d{1wCgzdf_o0HXcu5#j!ShnTe%nYC79)&nH7E&ziIc@OoHWFx&1Pam$)
zSoJ``s*Bi(Vw<gheq4P>qtI%@rVq(of61mx09(+GO&4fvTJMlAQfq^SO+%O_VKCCD
zM0|<PrcEFc;W&zvzBVB-HvGN7#1M?Ci7Z7paj?~_z-iLiGXWw=MMS|M_ximsq>7cj
ze$bdMHun0(bB8mwYN}%l1MKw|%l%~d2G}z6VmT;Wp+F?Xu6z9;e~=<?q?@tV@8!}V
zg1*~8-J#r{sm2;FC|?(3yxg}TnMmNH<LX<rw_8+_!;m&wH4b0t0Odge<#3G4zcGCT
zhVn@8<tR>L98X)ZwOl+J1dnkcvt!-KY?VT0?3D!VBC`RE%vRfz*>QmAco#A|p+jVL
zB9hsO8kwCW$?Rk>c#4J0q&I@hj?>6&jUcmA*@*#GGCPeQSIJChwIQ>|1h&&9nVkXH
z&a@-5lQl9s%OSg@*0U{Sb`B=XS}=0167e&1GCL1M&R57x`k^9`WOjiUm<tUu6Pn0H
z2<Kw3b%_G!Je|xg1(C}X5e0)Fv&+3OT%nNJI?#Bf4Vhi#KxUV6GP_zMvun_cYeC_9
z1>!naGP@4suUF)abdzLugO^J;3NpJ1)ZM%pWM+O*L?zjP<Z+!wX16#%c~n5Twc})_
zo4yT0c{})W2PZR*=O!C6yAuTOav`(3-O218h0NGP6xu~*JsFwZYfonP0iyd|$n1d*
zk=cVtW)Es)_K+mAhr!?@7BZ9G2r|1*BeO>ZnLWl%^t6)M<NUbk@!4Ff4VgVDZ*G@l
zwh^#BX-8%cYh?D6Lv~56Pg}_B8BCUE!N_w;#5d|>_B@EZppcpLLq#IV>_smyFBxPe
zG?AAP&MRQ+RRzxTI+?u&BCjhV3I;)DZ+KyNQz5grK;zpsWcH2&nZ3rz>|Kq_-a{|m
z2ZbLf5Z`hovkyW3BSqdwH%Vq6d%5(9AhS<F-DljNovce-N+~vU5=;c_UZ?=<Qb|5X
z9{Et?wJ#h{Z4{_BVTiU6iZ3z1Ux9~TbBg28KDD8^Z$R){7mEANo#MXd6jw>{HzvvQ
zx=gYqS(i={@6EjeMsz>e6Wx!1>n9hY`?*6z_X`r;FB;MPDv9nlF!(#q31bUR_lY9;
zQKPy)1l9e?P83+F?k|3PlR}_oy*7mRoWS_EB)oqBV<(>t;r*r&UT2?u+DWZBKArG#
zeYivKgB^OGvO}*EUIB;{avWVOJ#WGzX|Ko&QZYiZ>LWgc<_Eha3N(hqM1G|p(nS$b
zkO=bY>Vd?>J>5WKcSWPo|B`!pc=^`T$GN8$sO!yRcc@)8gM)r~ggxDd?Wv`+4GrNm
z4MaLnRv%1L8b~JOxc5PAGa7GiZ4ER<m+|NO1cEK$AQAg=>2N9=PBhS?jhQgP#|JT~
zO47#%<iOlid21^NkDd`8^~K)$U*N&km>vBfvi&i#G456`pOy0lfZ#x%Gv^KRxpLlM
zpTT+c!G@(B;Jks1^8!9w&Km-_hT7u-&Ku_I2<Hv=0q3zFD(8*x3C<e{21ogH&eMIO
zNQU^#oL9ypL`Jg{1Ff7_&X22{XVz=Oc`pl$V|;@1DgfhHJI)*FGjm?0L&{36RTj=0
zhp96jj7(4>U*Xd@Zz70HQaDfZM#UpJZ?YGpDF)}6^^vIvZ5r5}u0WfpbKVRP*+vmj
zkO<D()&q%&^R@$xGZl?S|4Yu>-pjWg1n2Dt>UR3qoG0p@f6W*>BROoRao#Qt9=#~P
zkMM6fZ;N>_8?$3qi0p2h^SE0(+Hl?+5Zv8`^X9s9-X5Iu#*5jxzA;^w&ej9fdD7n2
zjP~Z)(_S?|+tY>i_UaJr?Txgzw?=#WNZQ*M49@52IK*6%ncPZef+SNH4KW6+))=rx
zFyMad#MV{@+@Bv;pE_wVVMBs%3dFUN1P=hj3+za6UyTG8I^?j_dZ2{_7hx_f1|xM!
zKOCTw;1UoCava_5Qo#gC@?gCess==5tCEBeU>K}7Dgc-0RM-R}5k*7+Bd9Ry1t#V*
z*1k(YW87yf?nP2CRn4}ls$&cX)0FVZmAq(1lITqfC{8I*m-^h+zy##eioB7Ll9MxD
zu4M%$F9UVUxnC_Rqlvh)b!VEg8>}?(*(LSt?FpGkpfO6)86W+lArfSFnjrb%1K5P4
z<pD{1v}u&+*B03I7>$5eIKY2Rz;6YCm9@KWIlSZ`?2m&XAcydPY(WFm&t*ROy@@t3
zb0{}Me{?be24CTD$f#vJqgL8v)ZysC5uo}=B}3XoM)B`Y45qC-dW9T?%8mwQ$8enO
zXeiw@e^=sI(6h>A;#uuJ@f@d2JWwKaXyO^gCZ6N%C!P}k+KDa`&q*DccuvNN=VWc-
zIYmx9Yrx>CmWjvemOAmApiMldiHYZQc4Cxu;yHsKS0^5e37d)MJ%RX4Iq{qYh|jj0
zc-CkW&p8fbS882rnRw2{R67rhoUio5S^C6t0f=0vOgvVHR7i5-xyTFE#m2;AQAsXA
zfR}>x%M^eY=o8Q7AaaEwqJR+-&pIzKS1J?FRiN=|hl%GJ2b#E?)5NtlG_fANxegRx
zuRy)Zb>g`J<Zo2ujf|8N&rM#g-7F@a4WRCp|H+9*yADJ>xIvqEZgqhFj{G{ve=zaf
zj{R{51mw>DWa8OiOgwjinY$e)o_icJY6H)xdu=l6KJ?&zQ2l_CA$PT7;?b|pJ&4L4
z0%Z@oOgz@^++Z{DJOX+ib(we`bDww~=M&E;c1@Wsze0`P*X{<f>E;Rh>1HDUdeUXO
zd8$Lx&C@vDJgrSP&&cWKSupq<kK{<>mI3YzbR&B)ZX!hgWo37egz#m!8?`y-c`@g_
zz)lRZ&N(mg<D1|M#3nm7GtC$BN|&5zUIwtQ*v&N0YBSBN4ue%{ea$k{ypFl`1{ir$
z>4KN_ndU7Jd7I-XH2U5IM9weocwu=Lu_%hjdkE%zu=Iff<}H0z`4B`tQbZI8VpjRs
z3&JN%Kujy2g38ahfB9lGGew^}Fu;eL0lq+2WE-*x9r+Seex;!NRGU!5`&+*T$#0}2
zHTtcG(eG67-$VN!IQU!&gyt@MVZ%Yo*Idg_2%WbeKO^v8K;5qj@b4Xf{|1u3tHA&8
zF!`r4m;VLL|5lQUk2a?09|uLhaYdc{GJ|+4(%BFAbNozguHV4_mp+qwzHT-TbmS{K
zjIl3g_X591iWPzYo8F5+Uoq;d-GzcaAR3N`_`DQlvsx(JA|@{5hS>n56l3*Z2EPpt
z2g-f0-$h|Dpz4(EbHMbWz~uMils$FxF_01rbSXI1g*){x6jDD}fcTW$71Va~8)?Cv
zX8v`z^$*)K_j>rX(byBQ_5!87l@9IdH&4cl7k&KV54PC~+Vu4s<SWCDaM`5FdUtCO
z?8gOXQo%WmfpR*e;1$2=mT*I~G0NV-s6-&ylE&vcLy-b6qLBNTHvQV)p<h1{{W^g6
zYc5(R1JQ>;0Bx|};0Ah<>fhRkcK}3&_zms@=*;R+hiGrjqdm-TB9P%|a|9?Hsl+;<
z#hQIRck@C+Mxl)|urZp0-h6#B6rwN7LGc)_xD5lw8HSl)uT?d_{*>S9A7ne+XqDQh
z+0PsK@b$;hWTGOFr0vM^Xd3pyTdhq<7=91PCY7YZ54+cTK8$t9htEVlRASfs-*=!2
zJ8T@pbv(v3#=R={8w)E@p-uq7iAwh973w6vYlS-5j}>Z}C@$Lb<lT|1M4jTdEm5Ze
zqG|SsphTVS??{O{!w)4Y`=OSo+xSI^x-A&oj_2ScbLq&uv8_?*Z*)Nvin6dT!h&_G
zku^}T&g79J+p`lRtp)22{J7~}T5i>*V*O1%{mL&Y)|~+R&I)PDigjB94OFbVIOMR@
zI?JzDtg|thb_FB5sXgM?D%Lq5vb*2dD3E@rNMy-6*9*)Ze!0>Un#eqaQw_HERN&0<
zYc=a$AhNe2qF@j;>por>_Vp`e-+WM6qwuz@S@(0`?Y%f}@2}62wdlwJpmKqNa=zcb
z^jip$2TDn5bdiVA#VYtZXum|6mw3$@bkMSpYpFL+ISmLr1nR;H@Hz+JjUd^i0*`o@
zjH<w6(0-{>ohU_X+(A<#*VOE{6s-w#APH()6bE7s4x~Vms1Bq(%x3&X(Vd0n%Q$|@
zW1S>vFjdPPRHeA873hJf9ce`$4g%E&D?ViX?I^q*O7KHKTbrWIU^7{QAL=z?4)co=
zd?n~RoI8H8tX6FvdIYbS@v35d4y8HP6@mE?I@coM<D0k>$xNUXEG`Sivurm?81b?1
z4koi19R}mfL$rDS2nUD15)L2f$2xG&E$<*X3j6tJh~zOmlK+7r>i0^&tWS>xbE}jQ
zr>qB7JLKz1p0CI0Om{r`Z~`bjQOT}j{pK2VE~_cGTwjut(D2D%_!REV7B(USC#u;s
zVC_`@7F?O=8F`vRMt&#1XX7`oOwPbSoC(m*Qf2^LnXEB-{%jCAN15T|%4DrWzpvr_
zey(|%I1g=}4+<|(di`ww7F(HIh&C<)8yEYxz{+HesV^@9#g}r$xADG|EUfh?Jgtq6
zC3!y35RAuRGo0WJ)xO!mI4#v#R@sf*jB`Fxai1>E>`Af4WIUc+F5lXfmPVYC=rV^S
z`avYo<ysP5fx%t}F}c!`M3)#zbQOqP%|-kyiHw-RMI(n)x`e0FwRTh9dbEEXD8F7w
zsH?Puy2_FO|BHKu+<<P~2yWfPWA^`)3$pXYu(=t0+2H@*vY@}k4@+Nt1l;N{0)CO#
z+Wh}Z7WB7cj@$upy%Xaa<6hnDw=U@K0>QhLF`_T%@A11X=<oF#3wm)Il;?uJJ3PkC
zZ~quKK=gn;B7BUSzatC!hy1XhXFp7jar27>{Uc!TQJ#awW7ecM%7Pvi?)Mwnfe&%x
z5h9PX6Wwhd;>M4w3wNR2x^SP@sk3};n_sNlp9GLk`E6G2j~H<9xo!5zs;GU&uP@!7
z#k6@2tURy8{z<>KbbkRvUi2GFcj<`=#duVkCz_Z2a_ufukyjAUt6=Ok1<wn9ZSDR#
zh`gbQC?Mq1**rnK<yV%GZ-dTvl+s2n-rseYk6!2V(R+GH`#yT|0jT^?f%&%IehK*z
zNPa9OsnJh7jDG4jmXM!8^Usw@m#^Kwa8U9QSF*`mlzoY~zXEk%E4V-NJ1!edOT=%W
z<+n;pW8BCk;&+}M^SxiJ5q|)MKXT6^ot(dXrY>2;!jIBrI@!!`Lg2R`q{Bhd5D6qn
zC`<xnICa7O3Z~n{MzcZojW#3v<S--rDRBSHYog)p#7Ta^fd2|!{>Hs*Z)=M12cxR`
z9d!KRw_TL|>5vCM@I3fS&)~li*gv4OQ;E@^ziZXhc2J7^i#U_cC3umr1TGSysei9l
z21isKd7wX^>z_>Z@6YOdo23`qObkK|h3f%W11pOFJuM1K?9<{OdDXE5(;{COB}M3S
zF<|nQ7@PyA+0}&-*|B~QDp7>wnyb{-GPY)hyOfxQcUQF94HR})I@Mod?$j}s`qDKf
zqz5YQ35t7hq#aZuoerC7mENGUj{;V&RkkW|tyTJ#7`2MHbI!9?se<RZmDoSe4G{IW
zM}*IFE9pqBGOz?{752mQJhu{2s|*H%ffBt|k>2RF3PWgmrW=nC8Olyn**w#YA6IJ?
zq1~odDU?J#yhPM0BLL*c5}R6OaEZBA8D&3S6t!g~daW`VGprn}j8S4gqC|h18;Fc8
zF=`d*i3-Jdikl~zsuEeN2vuYp;u#OdCMb9+O0-&KB8W^<L=+J6@ok<Urj#hP%2d!f
zO`!x?t4w#Ggo&IIW|U}5zYTh_EvVd1fjPCrzE+tDlG{s3YIFw=qdS%uwaQM=eCHBN
zt+I=Ql9^n|EHjzSM%=rCy4}>#Skk^)We&95U1@2I8(FK&_3W5EN<^(P4-{6H{P(qr
z`OZR^?B<l1C#5|dfagl!dzEysSlJsRz7M#$Z%K!Xm3hXTHXn4<l-L$4`#B`SJe~;q
z>nU7|zzzVV3zQC>U-B=D6+O^oA(}c6OfA~nV#TKa=9Q?$%3{!8w*`t7Juj9x<VAtZ
zi=d@isYj<90944PT3KxLY#4+Z?W&a~hkjkm`!!-7;8C<11BFYKUJd`tY9)?}n?Z46
zv#XWGHq}ZJbhfxuD=GJCg(%fZQ#ex>p_V<Xl|HOmN!wQ|89<bEsaBSCs9IT$)yi_M
zT3I2hl~yo#5D)7pIfYAaTyE#hXobtcqHsBco#<mNT-x|?wQv!JYzmhFGRY5>h09@p
zccoq7(yA3MhdYcNL+ufk!sSRzwxhtx(MmTQrWY>9fXJ~*;UYazp~%8zl_#3jM&Tk<
zk>e20@nGx(1<x^h;c_B~oTP{-AVlGEvL}dB)WT&A=seY~a5>F^9ZuxzaJtU=XP_r%
zg37ZLm}?vgm$O0g9JO#+>tXa<75sV7{(NiYa)E=Ev$>WF&BS&Q0>2p4U7`R#&jI+Q
zAbFVz{BjSIS11+NI%s~SGTACONL=Nh=u)oe>JrNh64xO9YeDUL1^+td%FCe!yAE_*
zujnu+z<BzbXO7({Yp|O@;mzFF-6-mvlg%yJ46R1sI(D)p5TZ3okbPM_lT;tbMkzQ<
z*p(EL%qBwYOD%FHz-ePc32dler%kB0IH2=Mbhly%w<ws~un%qrcke)VV;td4VkARE
z?gWv$ctqAw5VPT8KNcm4aI`5>pUe`xIKc`vifViX{|XB`Z8<w35Y9AI`fAb?>5P`v
z8Ej^lu|#a+E@4l5G7gIs(-L;40nL8ctHGxRz(sUgE&A9W;_^vLkOXPVFsZbO_1zA!
zE|IamhZiq<Y+*miy%_NOAe#5{Xl`jM)a5&|l#0=wdjM=b$ZfG#0@_5IJcONorx7Z+
zZRlavtfr8J8#ApfVR*6`YZ+--9Z8wC-D`@eOeonLj3)T}Paa{qpa`h()05#9E%9hW
zG_%?$3DS{FBx_8s<WbgQS>!_A8MGrFV@Fm{FCGUkp5Q48XeqpnMo*F_;rF%}GYdr1
z(mIx5B~Q@<VG}Doz**^O98x~h^(XQS_R+Io@i~Q59v8$EISK~`KI)BSDtR6oy#S3~
z<iQqa%^mU*$h>UZAu`X&EA}1os#k{y4K^L}TKhUAX6=U8MK`<w*x%&c@CxsSx0G&p
zn|H%&dN;gd>4ukhH@s_fgR!+n-ouE#4;DXAy5S9LH?VI@cbFN-hiKs=u<$YOkIhmg
zJ6No|J^`Jda-9d^wOzQBE10@IoLL^G>mHzMG2od+epgjGFkaF-z9PrhkR&9WZb>FW
zX-4$$$dpKu(1{>p)hjNXrz^>4_EXO14m8+J(%=`^G5?q0Z^CZ+5<>bFPd)C_C#Fg2
zYY_Q{N1Z*Vetv69v>_M|WYfW>@QfKYQTWy&3O!{MzQZVVv8W^8BeEaB?2p{6RgPNy
zTHtI5B^$DtXgpnscYMWReHgE+k0%?J`p8cuP|*Ag8h_y$FQFP|&YT%&p#jeDcMiyP
z5S<pLjrOtA3)%1EMpp#NCR7B*v!4_B&q)=53GC<Oioitnb81Ck68kx=A~1RMBHu84
z7SDLrYjipp$2u)7j!xi5$FrmKU}a^cI5mx*njGNE3nR8Qr6$M7ube4<1Ntgn(Hx(V
zZV5Jo$?x<)O;HO?j4)XiCVxnZlBC2sqqppgKe03Z-v|l$3lrpT=+1u>4*OZ;gR$^u
zZ-wYo$^<)?N<s5mA#zH!TqU{mNMts=6(W!QTE^Dy^9IRq<wFbhT8IKrU5KiUcd)bF
zwG8{NbwipImBN@}Ak_Cl6zf)brx;dzrJckZN-RqKr4WJ=Fkg!1W84zMWV{)o3y5?z
zoL7;+u1B|0*Ike9rMT-c8t>@BhlqM^dkkgU9z9BJw>^3Sq+a%rVB4d2X-Bp_`jo=9
z2m7IJdu&xIwmtfS!L4~O887fs+@T<P8X#bUqaTk8>Ca9KwQg_>;K$V$cuAEuI~>Dh
z*A6TdI~;=m+Tc=~9ge;R9@yasIAn~Wc1Wqd!!Z=|WEfZ(u0(uLskXy00z^h~AjN8D
zo3O|&j!~X)%1YH+0Z|tjjfl#@+!zJXh*E8jqXI<6Dk2IBvBy#Ag~GI?tpb(f6qQD&
z%O&l2Psb*(Mr>-F2>K@Rpj9i|?Qok}w6QV3?g(o|8dG0y6KDt~=(LQtveK0!d)R^x
zW#J|>zLcDdL%OQeJiShFfH+h_oQkpk4<Jp$4xA3I&*0R<aZVI{s60bq8xY*qg@Cqm
zC!m>}fXZ1O#k1*5T|+Y5=*d817z1r@&p<l>rX5`vXr~S_(9Xy}J8KNIi)5f#U~o21
z6yqtGia+oWbh0Z3atDozb`xAQhn*N><)YpB@lD2jp(wW@qcJj7=1MZ!15nPhBcoXw
z8C5%EprLk83mNT&nX@-o*+&Wf9y%HA3nKG55TB{zO<*J&)p+9BuT-vw3}s}0#8e9g
z4^S}etJBc}5Lu{*C@=&a9q0*TQK_-{w-{8`l^W|>@l5n3wtA{#3<O*ULTBVN(d*HT
z22dDMFfJ~2dn`{F<Qo-vBk?33HhKCKDHU6MQBW8wHCBCseHhKqqLr5K5dAPLYgiXF
z($z8@>*C5}C0U9?Agpm-+yTZY38NW<vUye$7{Mes(86hrLy4BE>!B2g5bopoY+<5X
zF`0-Wj24n?q3bes&5A#MC)kk5(l&e{M-SqS$YQakY*=xW@=o&R;EHH-w%K^gtIyn&
zl2Tf(^wRe6%s9kzw2WsK<N3ee!)4fa%b{ad@V?`2r%LrT0ei#`%k~<7h6EGo#w2MD
z6VgiMs%uIclgUgXnF-gCaATSr1R4)6WveNAAQ5a1r^z93u#Fw;mTqmXPsZy+t28;3
z9$rKaV<)=@vzeq>-%2=pI6K=*Yl;F#fWVPVptvELflHieauggrnmI(frlzDJOV|8~
zOkF&h2$N#~cn|4I9mU8N$Z2vcG+V{dv#z0jt_Ja<Xs8aa)Er0up4+*mR0W$R$3xQ-
zSkqF00}-AG-k${CM-zCXdmYt8*NJIzGBi5{ET+R5c7H*dtYIButk7v$k;sG-A>V%R
zJuM$Om7Y(M(?IX(Otz+n3<}%1qFyddlQR%!PiikoLUp*86i(0tOp`OgrxMcGP{$tg
zRF@@jaux&8Ka$C`%&4l$B$L!~G@NOyOp>OmNTxYnMb3sO)3`N+nHh2p{d-kSmzHn~
z^E6D@Lvzz)E$Hr&ro~7Loidu6Y2ef3T+EhCvO$4(9#fdl>Xue=K7=kFOf+R_U(kk>
zq%UB{a>5C6Ay^It*(Ob}xrJQB@k1Zg#c9nICl@n+X<t)M*)zMK2goHL=!?+8hl^dx
z#PVxOIlg!>ou;5KV{(zE>Y4$x$CIRvx{_oYZ*}-*gpRT}{q=I_Mdm=7HjGgFakhJK
z1^5vP*Jqo^I<VL+Oh+NhnAUhW9SMgs<Vt#cb<MzJHq(;LIO)HNDJo#l8ZzW+h)9~I
z3mwySD_E+MYp_$hhO*5qbuxp~<XQ|b&6#MTG0BD3qi~nyL6Ts$sNQg}nOq05y;-+4
zM&r==b(wH8b%mz;^^l76+}IK0CWXiiFfPL@q8XO`nQWRz@kWed0bQmvMw`e@MxWE<
zW^cmHBni104K>7*!KHQK=3q2l7Yv0+7$Uv_l4l@o(QF#hm_~KDEprP5EjOH4Ms5XV
z=y*#yoDESgo8#m*9_|$_l-}y1>`GH27*CViagej<rL*;!Xofn9QMm(j`qPv}8`$eh
z6HCdR2%ilHC6Vt!i&~G7yP>nQnZ~ix$UW?LA6LZ&(Y>fCnlLrF57HN!j7`&U-Ov8+
zS{I6@*>{@icn}|ew#AfaS}2O>3i2QmV<RqDU$;CO%0$RREbK)!UCc>J9tKD?^Jh~?
zkFehh>kt!pl>IfeswN#K=_<-2!FZ@@FOrP0uvE3QChKDjV<SyfVqH*06Q~MT2!wX#
zV}O$qRVKWGm4D5&Q!?an=(*yiaDv@ZLi_m%bQ-$G=z)zmM$^sgv302|u;h~v`x2IV
zl6RhBMh0`<S-yOEWlJlas}jIFq42UQDomk2&1a89Cb*(5LTAA^{XavVVTbeLNg9M_
z*{=i4k=KUTbF7qvVbz7PcbyUH=YeUWA@Ty8rD0H0=0$+rA1Nao4+Evuv2V#r0(l7s
zAn!{USZVSyWA~aqFv_9{+6OQzgcGdSL*x~Rqn`wq%R{g7xdlQg=Y!Xn?reQcZ+!;D
z3F&p#s8daDG?XT9z@+dd%;>XmjaGm!<0y=L6e)^5&q`EZ>=E`R?w#?~&10}E_s1@#
zE00J?>}+<fG`1v{{^$~$$3(i~%fP$E))mqp-SPV=Jz`%lk)HUXqh7HEOk`GMZlrhY
zBPP}d@37b^Hj#;Kjn9Pc7kinO;F12ZcbKsO_{O(gVhb3oLHL}t!Lc&BfQ<CT7XuH8
zz042{#jT8CvBAtrc`VK>jE${j%0}X|E=J+QKS#&>?A$<n9DfzwpIQ++j%g{z*JW15
z4r3M;>6_p<Df`G<rT85hh~+z_mR-=A0+b~0mSVyGo~R7zdh>mDY*CP1-O7)qo0Fkc
za{pLaQ;&<)G3euCaTbROu?ty@CdMYPgOg&{GI*0?ghgdatbm={74LMK7JHqYn;z>%
z{mD{(%huD$E|Z1C!fNXSfc+tZF`pWw@IEr&F<1r24b&3^R#R-0F&{%c@(D~sY-G@s
N`V{ni2329@{{c=vPVN8z
new file mode 100644
index 0000000000000000000000000000000000000000..e22ca572d132318f3a25b9201b8cbd0a6089d448
GIT binary patch
literal 9685
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
F{tkGDtxf;{
new file mode 100644
index 0000000000000000000000000000000000000000..2e0503615825a09a63f5ac507542fd7b49106048
GIT binary patch
literal 9392
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
a&uq4L@vixDZk7}~H2M`R@0C2b4F3n$)GTcP
new file mode 100644
index 0000000000000000000000000000000000000000..eb9fa2c65e248b8da49f5cf3fc1d2c1cea8a91d9
GIT binary patch
literal 20473
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
new file mode 100644
index 0000000000000000000000000000000000000000..f3241e5e3e315a38279e0a972e43775690dc1d36
GIT binary patch
literal 9378
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
b-QP@rpQTLpIoiOGQvmaMviAilDMo$-(Y+*6
new file mode 100644
index 0000000000000000000000000000000000000000..ba3ce378a66f7281cee3dd348cc7617cf11053fa
GIT binary patch
literal 5203
zc%1E6_jepg5%$SeT3K?qz$N3xXPY&*(%Qzr`G_lNWz9*N6}#IGz_K?x)4M(P?99}3
zk0k*EXW+o*$T`E2bIv)(Bj^8ys@YkkXL!8h7as54)05OQ-Bn+G6}oC37_gndj<xHl
zDL-(8%F(hbe4T?Ej$MI)1a{{6sBd+JUJHeST?q{4&yVfcv7_s1=DD`;m4G4h{4hT1
zFNe*T?^AJ0X;-7{z;8ODtzaa9Q9cn`krK_WP|E6{z+3~y_=Fut5h`t}AdYMSyG@>R
zgdIc{orZCf@3&$dw1YtVffh}rtw_Vf!VP?wpt+8MJqhg1%OO67xF-8R_Q_#B++XaE
z`G_rD&p}OaV*_s5Zn_dSsmsC5X!$J(JPs|7td$JYt$YU`LhuL^Zj%FiD0_bUb}^9%
zqu6(CT;$-6^QV!RB3B|(#VGJC&nYfP!9`T1is4$&x@b?zPSNsoC$d6WL|MfQ@KmHU
z-1*=YIFP{OTYOks9WoXU^5G0AFrKrtj@(wPk;*3|a4645oH(R?3hrv~VcWBm!v7C9
z_(;pLFGb{tBMrWjI6K;aC(8X6AMEYVH{h5Ywqm}^bA16%S{OiKSvbJmazG+!h5UAN
z(Z?PdI*FW3B~Z-EThmxr%ve7zZ<Dvk+vNdykPoJN;e<q_C-d^IhCJMmM;h{IL*^T?
zM1?X_^W^PX>S7f`^3)d5PeE>;n!wXgr6e^|am$KZ+fSm)td!dv+=CcTCvY!eyaxr%
z1mRlbcBE!``xrZU{P-zmD1F)TS;=dONVC}YFiu&ZrHEEsB^X7YGX+oIWYp-o0(b@)
z_RQ-UwySU0v*fA&PW7|V=;tI*BBKe$>C|XRrcEa>L#7=@`OBCfiea=edyA&&pv8<Z
z3_Mo{FuP%fOtF`*hkdAzeGakz$Fk2L&iMok!by6jH*nsUzyjes@o!|EJbvQ%B>p<Z
zs%g@&N~}~snY*|h^wRY}kMu#C2>Q_}s-OkS2|Sl9Af@;9ETH00O`wL4`HoFk7-6Yz
z!2(?Fvk(xRl|vSx8tbDvmzR_<=M%U<Oi(>tGU}`!+0R3{)l6=hEziH6jqB20fHrOy
z(LnSsOrS~VN!<Aj{_jt~BCQYIfV7CH>nerCgt>}gtclhd!)W#~*b1y23BiIkv!xYv
zM1kpmS^gRev6$h3prtL>cl{2tQc`KBmMBIAZM}k2=Pci0SbqZBwNM`G7n8KAv$l&7
z&hi-G>`*N`ap+j8#1WRqT%Xaq{wucPY8k|uMM7c8OABBj=lZr6JA|SC+H>&+=xLzi
zsizeQjTKrzI18*BIBuK%iqxzyZh5Yf1?IRatEL5}=wZrbf$S&-5mUnRNP>&FQ(HIC
z6&TryT0$aJXB4G+S7gxLY6()*jw2sciu8;V<Ww*PtxaA}Bip{7*T?%_chKvPx$u9>
zg#xp#oj`}Oj@)_wM%Kv$T*|sf&}H@cGOJbQ>gP(;GBavyxmr1E%$8@_p;8UkhYIYR
zQJ=5yI>Q~+l3BmNDs!x4USJD`Ia^@m^UKw8t;Q-<W-Ki)8s*tS&M;>d`K)1{Vbgfd
ztY9fHuppq&dWDg~Oq5Zsk+7w5b!HxyrD<c)s9z|sIiqfp%sCWVV#}p!-I(EvrD|@O
zSC=cbGOC|Nv8G|pRZ&ZMschD#m|@~GRz8ahR+}#^E~ctV9MM-(d^45h3svLHe4Wi#
z7H7-&aJr1hO4EzwT&fC<nprFvO9eJtS}L6>r>80?rJ8Qb(4Ctvr;kuy34dnlM#UsE
zW-4aAipv68S*@=hJ!jO)g<Pp>)QFI|Y6Zm;op_>>3c+(`xhI9FW?MXhTWHN|<qa&e
z<<cU`Lid=t&6}s-;`X$?biK5_v7fdcrtM=f@P8HqUCetwfq?R!;z6c)FVY{28U;S4
zu_CK>5MjZB(B$Lm!%W(eLjn;W!GC+LxJp3ty=tx73cO~2r-HZvm-)UeqfmN!r2(t_
zrfu7MuhtsyB0g$o^;E%&8}JeeMZUW~bEVCGf+N;C!j0+dr44u)!3u*&Bkl)GKH@sr
z_;m%xukp=T6ui6vui)c-Wjz3|OyEJj*YzDY!l|XH=^D}sUe$nC^ARPq#>%hY>ZZA(
zjdPL~zLPs^c`<hIa4mq>B=At4?_al#W*G#2Nx^Fo#*GmTiw=&NA)XVyjpZF)XY$=q
z+s3UpZ^n@aujhA2t;2hZMI8jF#}&Fg6-1q))LpL#Z{VZIfGtQgyzwedsv;y4@Iv)%
zl=mi+Pte^GHtnEGcc6kdqaSr(Z$k4HK8SCkHFzr@_bk5?BaKZO1>tRc0GrCU^HB#c
zQe?0j!aE3I%5BpVmxTxK#F1+^T7iSJ-y413g_E$v=`h>y?u9`<o`J|FyZ4y#gvsv|
zQ4~Z?L>kal+UzYQ-e?~B?Y(?2K~#7|qCyX?g!l15N3`M&yx-(|MYko$uWNXpOCdCT
z;2J-GS8*8Ye<kySI02`ZI6RDy(6xTtZLU)Iz=zN!dz`o%HrGQ+!H1D6bg}EVgKXPJ
zaN7jlrqq9+?nqc&_^8QmCf=#DAg498=ptS%;A4CQUrZi3e#(K5^L=8~)f9+2Rv9;+
zKyHTYz;C-9_+;iQ47kg#!g(ZuPoZSn3#>~`(Y0K!X*mwIA;jRPukr)9x4R{CdR}j;
zkhuEHHNI2$m*KN!W>=_0?4TW84?aiqt%d;xnTuf?;SizV^O#P=33edq%$r&Kg=>7Q
z_t}85?h<?vVN!^0in1@EifzQhm-%3<+mrXeS9mTvPVxLzJni~hc7BbIraLDUlJIrD
zr-|*5)$%9=Q(nGd@=;9S5EZ(s@J*~squOdUS6oL+_}0P*pV%5l@NGWG>vO33JAAnR
zb>_SL^rQcv@jbo=^IzjQPichgYWV(DKH3q!h%EBc574TV;|(@{h<T#ASaX^Xr*-B>
z*Z6LVlJ(U7F+Z54_R7l2RJewHq@Sj?BQ6(lrz*lvsGefuy4sZ3PkPi-!cX}wFF-4Q
z#_!xp<hEG<xqO&UP^oKfkoOBd;5zV21RL0!ef+Cy{El9R3QweEqDg)2dcOV|^B{9a
z8s!QeY4BUpcz2PcD6O2rC$Bm1o2z^*vR2mDzonX+va?<}e`m%me)IO)-z(9-U)a(6
z(({J|{+O5haai3at1-sr=8to|E9XxM{24o#yQzcuOWMI4r4FY5oeSHW!)Y(WM>p#I
UUmNf@K16(=j=v}HkGM7UPmA9Lm;e9(
new file mode 100644
index 0000000000000000000000000000000000000000..802396b9cc9b1789476227fcf8d46eff0d9f57c8
GIT binary patch
literal 45814
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
O_xy<{?<Ay9<Npt8(#3rM
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 84aa655833f036f5ba0f6f2dbd1945fa
+tags: 645f666f9bcd5a90fca523b33c5a78b7
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/changelog.txt
@@ -0,0 +1,176 @@
+Release history
+===============
+
+0.11
+----
+
+- Stabilize the order of elements in dot file exports,
+  patch from bitbucket user 'pombredanne'.
+
+- Tweak setup.py file to remove dependency on distribute (but
+  keep the dependency on setuptools)
+
+
+0.10.2
+------
+
+- There where no classifiers in the package metadata due to a bug
+  in setup.py
+
+0.10.1
+------
+
+This is a bugfix release
+
+Bug fixes:
+
+- Issue #3: The source archive contains a README.txt
+  while the setup file refers to ReadMe.txt.
+
+  This is caused by a misfeature in distutils, as a
+  workaround I've renamed ReadMe.txt to README.txt
+  in the source tree and setup file.
+
+
+0.10
+-----
+
+This is a minor feature release
+
+Features:
+
+- Do not use "2to3" to support Python 3.
+
+  As a side effect of this altgraph now supports
+  Python 2.6 and later, and no longer supports
+  earlier releases of Python.
+
+- The order of attributes in the Dot output
+  is now always alphabetical.
+
+  With this change the output will be consistent
+  between runs and Python versions.
+
+0.9
+---
+
+This is a minor bugfix release
+
+Features:
+
+- Added ``altgraph.ObjectGraph.ObjectGraph.nodes``, a method
+  yielding all nodes in an object graph.
+
+Bugfixes:
+
+- The 0.8 release didn't work with py2app when using
+  python 3.x.
+
+
+0.8
+-----
+
+This is a minor feature release. The major new feature
+is a extensive set of unittests, which explains almost
+all other changes in this release.
+
+Bugfixes:
+
+- Installing failed with Python 2.5 due to using a distutils
+  class that isn't available in that version of Python
+  (issue #1 on the issue tracker)
+
+- ``altgraph.GraphStat.degree_dist`` now actually works
+
+- ``altgraph.Graph.add_edge(a, b, create_nodes=False)`` will
+  no longer create the edge when one of the nodes doesn't
+  exist.
+
+- ``altgraph.Graph.forw_topo_sort`` failed for some sparse graphs.
+
+- ``altgraph.Graph.back_topo_sort`` was completely broken in
+  previous releases.
+
+- ``altgraph.Graph.forw_bfs_subgraph`` now actually works.
+
+- ``altgraph.Graph.back_bfs_subgraph`` now actually works.
+
+- ``altgraph.Graph.iterdfs`` now returns the correct result
+  when the ``forward`` argument is ``False``.
+
+- ``altgraph.Graph.iterdata`` now returns the correct result
+  when the ``forward`` argument is ``False``.
+
+
+Features:
+
+- The ``altgraph.Graph`` constructor now accepts an argument
+  that contains 2- and 3-tuples instead of requireing that
+  all items have the same size. The (optional) argument can now
+  also be any iterator.
+
+- ``altgraph.Graph.Graph.add_node`` has no effect when you
+  add a hidden node.
+
+- The private method ``altgraph.Graph._bfs`` is no longer
+  present.
+
+- The private method ``altgraph.Graph._dfs`` is no longer
+  present.
+
+- ``altgraph.ObjectGraph`` now has a ``__contains__`` methods,
+  which means you can use the ``in`` operator to check if a
+  node is part of a graph.
+
+- ``altgraph.GraphUtil.generate_random_graph`` will raise
+  ``GraphError`` instead of looping forever when it is
+  impossible to create the requested graph.
+
+- ``altgraph.Dot.edge_style`` raises ``GraphError`` when
+  one of the nodes is not present in the graph. The method
+  silently added the tail in the past, but without ensuring
+  a consistent graph state.
+
+- ``altgraph.Dot.save_img`` now works when the mode is
+  ``"neato"``.
+
+0.7.2
+-----
+
+This is a minor bugfix release
+
+Bugfixes:
+
+- distutils didn't include the documentation subtree
+
+0.7.1
+-----
+
+This is a minor feature release
+
+Features:
+
+- Documentation is now generated using `sphinx <http://pypi.python.org/pypi/sphinx>`_
+  and can be viewed at <http://packages.python.org/altgraph>.
+
+- The repository has moved to bitbucket
+
+- ``altgraph.GraphStat.avg_hops`` is no longer present, the function had no
+  implementation and no specified behaviour.
+
+- the module ``altgraph.compat`` is gone, which means altgraph will no
+  longer work with Python 2.3.
+
+
+0.7.0
+-----
+
+This is a minor feature release.
+
+Features:
+
+- Support for Python 3
+
+- It is now possible to run tests using 'python setup.py test'
+
+  (The actual testsuite is still very minimal though)
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/core.txt
@@ -0,0 +1,26 @@
+:mod:`altgraph` --- A Python Graph Library
+==================================================
+
+.. module:: altgraph
+   :synopsis: A directional graph for python
+
+altgraph is a fork of `graphlib <http://pygraphlib.sourceforge.net>`_ tailored
+to use newer Python 2.3+ features, including additional support used by the
+py2app suite (modulegraph and macholib, specifically).
+
+altgraph is a python based graph (network) representation and manipulation package.
+It has started out as an extension to the `graph_lib module <http://www.ece.arizona.edu/~denny/python_nest/graph_lib_1.0.1.html>`_
+written by Nathan Denny it has been significantly optimized and expanded.
+
+The :class:`altgraph.Graph.Graph` class is loosely modeled after the `LEDA <http://www.algorithmic-solutions.com/enleda.htm>`_ 
+(Library of Efficient Datatypes)  representation. The library
+includes methods for constructing graphs, BFS and DFS traversals,
+topological sort, finding connected components, shortest paths as well as a number
+graph statistics functions. The library can also visualize graphs
+via `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_.
+
+
+.. exception:: GraphError
+
+   Exception raised when methods are called with bad values of
+   an inconsistent state.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/dot.txt
@@ -0,0 +1,224 @@
+:mod:`altgraph.Dot` --- Interface to the dot language
+=====================================================
+
+.. module:: altgraph.Dot
+   :synopsis: Interface to the dot language as used by Graphviz..
+
+The :py:mod:`~altgraph.Dot` module provides a simple interface to the
+file format used in the `graphviz`_ program. The module is intended to 
+offload the most tedious part of the process (the **dot** file generation) 
+while transparently exposing most of its features.
+
+.. _`graphviz`: <http://www.research.att.com/sw/tools/graphviz/>`_
+
+To display the graphs or to generate image files the `graphviz`_
+package needs to be installed on the system, moreover the :command:`dot` and :command:`dotty` programs must
+be accesible in the program path so that they can be ran from processes spawned
+within the module. 
+
+Example usage
+-------------
+
+Here is a typical usage::
+
+    from altgraph import Graph, Dot
+
+    # create a graph
+    edges = [ (1,2), (1,3), (3,4), (3,5), (4,5), (5,4) ]
+    graph = Graph.Graph(edges)
+    
+    # create a dot representation of the graph
+    dot = Dot.Dot(graph)
+
+    # display the graph
+    dot.display()
+
+    # save the dot representation into the mydot.dot file
+    dot.save_dot(file_name='mydot.dot')
+
+    # save dot file as gif image into the graph.gif file
+    dot.save_img(file_name='graph', file_type='gif')
+
+
+Directed graph and non-directed graph
+-------------------------------------
+
+Dot class can use for both directed graph and non-directed graph
+by passing *graphtype* parameter.
+
+Example::
+
+    # create directed graph(default)
+    dot = Dot.Dot(graph, graphtype="digraph")
+
+    # create non-directed graph
+    dot = Dot.Dot(graph, graphtype="graph")
+
+
+Customizing the output
+----------------------
+
+The graph drawing process may be customized by passing
+valid :command:`dot` parameters for the nodes and edges. For a list of all
+parameters see the `graphviz`_ documentation.
+
+Example::
+
+    # customizing the way the overall graph is drawn
+    dot.style(size='10,10', rankdir='RL', page='5, 5' , ranksep=0.75)
+
+    # customizing node drawing
+    dot.node_style(1, label='BASE_NODE',shape='box', color='blue' )
+    dot.node_style(2, style='filled', fillcolor='red')
+
+    # customizing edge drawing
+    dot.edge_style(1, 2, style='dotted')
+    dot.edge_style(3, 5, arrowhead='dot', label='binds', labelangle='90')
+    dot.edge_style(4, 5, arrowsize=2, style='bold')
+
+
+    .. note:: 
+       
+       dotty (invoked via :py:func:`~altgraph.Dot.display`) may not be able to
+       display all graphics styles. To verify the output save it to an image 
+       file and look at it that way.
+
+Valid attributes
+----------------
+
+- dot styles, passed via the :py:meth:`Dot.style` method::
+
+    rankdir = 'LR'   (draws the graph horizontally, left to right)
+    ranksep = number (rank separation in inches)
+
+- node attributes, passed via the :py:meth:`Dot.node_style` method::
+
+     style = 'filled' | 'invisible' | 'diagonals' | 'rounded'
+     shape = 'box' | 'ellipse' | 'circle' | 'point' | 'triangle'
+
+- edge attributes, passed via the :py:meth:`Dot.edge_style` method::
+
+     style     = 'dashed' | 'dotted' | 'solid' | 'invis' | 'bold'
+     arrowhead = 'box' | 'crow' | 'diamond' | 'dot' | 'inv' | 'none' | 'tee' | 'vee'
+     weight    = number (the larger the number the closer the nodes will be)
+
+- valid `graphviz colors <http://www.research.att.com/~erg/graphviz/info/colors.html>`_
+
+- for more details on how to control the graph drawing process see the 
+  `graphviz reference <http://www.research.att.com/sw/tools/graphviz/refs.html>`_.
+
+
+Class interface
+---------------
+
+.. class:: Dot(graph[, nodes[, edgefn[, nodevisitor[, edgevisitor[, name[, dot[, dotty[, neato[, graphtype]]]]]]]]])
+
+  Creates a new Dot generator based on the specified 
+  :class:`Graph <altgraph.Graph.Graph>`.  The Dot generator won't reference
+  the *graph* once it is constructed.
+
+  If the *nodes* argument is present it is the list of nodes to include
+  in the graph, otherwise all nodes in *graph* are included.
+  
+  If the *edgefn* argument is present it is a function that yields the
+  nodes connected to another node, this defaults to 
+  :meth:`graph.out_nbr <altgraph.Graph.Graph.out_nbr>`. The constructor won't
+  add edges to the dot file unless both the head and tail of the edge
+  are in *nodes*.
+
+  If the *name* is present it specifies the name of the graph in the resulting
+  dot file. The default is ``"G"``.
+
+  The functions *nodevisitor* and *edgevisitor* return the default style
+  for a given edge or node (both default to functions that return an empty
+  style).
+
+  The arguments *dot*, *dotty* and *neato* are used to pass the path to 
+  the corresponding `graphviz`_ command.
+
+
+Updating graph attributes
+.........................
+
+.. method:: Dot.style(\**attr)
+
+   Sets the overall style (graph attributes) to the given attributes.
+
+   See `Valid Attributes`_ for more information about the attributes.
+
+.. method:: Dot.node_style(node, \**attr)
+
+   Sets the style for *node* to the given attributes.
+
+   This method will add *node* to the graph when it isn't already 
+   present.
+
+   See `Valid Attributes`_ for more information about the attributes.
+
+.. method:: Dot.all_node_style(\**attr)
+
+   Replaces the current style for all nodes
+
+
+.. method:: edge_style(head, tail, \**attr)
+
+   Sets the style of an edge to the given attributes. The edge will
+   be added to the graph when it isn't already present, but *head*
+   and *tail* must both be valid nodes.
+
+   See `Valid Attributes`_ for more information about the attributes.
+
+
+
+Emitting output
+...............
+
+.. method:: Dot.display([mode])
+
+   Displays the current graph via dotty.
+
+   If the *mode* is ``"neato"`` the dot file is processed with
+   the neato command before displaying.
+
+   This method won't return until the dotty command exits.
+
+.. method:: save_dot(filename)
+
+   Saves the current graph representation into the given file.
+
+   .. note::
+
+       For backward compatibility reasons this method can also
+       be called without an argument, it will then write the graph
+       into a fixed filename (present in the attribute :data:`Graph.temp_dot`).
+
+       This feature is deprecated and should not be used.
+
+
+.. method:: save_image(file_name[, file_type[, mode]])
+
+   Saves the current graph representation as an image file. The output
+   is written into a file whose basename is *file_name* and whose suffix
+   is *file_type*.
+
+   The *file_type* specifies the type of file to write, the default
+   is ``"gif"``.
+
+   If the *mode* is ``"neato"`` the dot file is processed with
+   the neato command before displaying.
+
+   .. note::
+
+       For backward compatibility reasons this method can also
+       be called without an argument, it will then write the graph
+       with a fixed basename (``"out"``).
+
+       This feature is deprecated and should not be used.
+
+.. method:: iterdot()
+
+   Yields all lines of a `graphviz`_ input file (including line endings).
+
+.. method:: __iter__()
+
+   Alias for the :meth:`iterdot` method.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/graph.txt
@@ -0,0 +1,299 @@
+:mod:`altgraph.Graph` --- Basic directional graphs
+==================================================
+
+.. module:: altgraph.Graph
+   :synopsis: Basic directional graphs.
+
+The module :mod:`altgraph.Graph` provides a class :class:`Graph` that
+represents a directed graph with *N* nodes and *E* edges.
+
+.. class:: Graph([edges])
+
+  Constructs a new empty :class:`Graph` object. If the optional
+  *edges* parameter is supplied, updates the graph by adding the
+  specified edges. 
+  
+  All of the elements in *edges* should be tuples with two or three 
+  elements. The first two elements of the tuple are the source and
+  destination node of the edge, the optional third element is the
+  edge data.  The source and destination nodes are added to the graph
+  when the aren't already present.
+
+
+Node related methods
+--------------------
+
+.. method:: Graph.add_node(node[, node_data])
+
+   Adds a new node to the graph if it is not already present. The new
+   node must be a hashable object.
+
+   Arbitrary data can be attached to the node via the optional *node_data*
+   argument.
+
+   .. note:: the node also won't be added to the graph when it is
+      present but currently hidden.
+
+
+.. method:: Graph.hide_node(node)
+
+   Hides a *node* from the graph. The incoming and outgoing edges of
+   the node will also be hidden. 
+
+   Raises :class:`altgraph.GraphError` when the node is not (visible)
+   node of the graph.
+
+
+.. method:: Graph.restore_node(node)
+
+   Restores a previously hidden *node*. The incoming and outgoing
+   edges of the node are also restored.
+
+   Raises :class:`altgraph.GraphError` when the node is not a hidden
+   node of the graph.
+
+.. method:: Graph.restore_all_nodes()
+
+   Restores all hidden nodes.
+
+.. method:: Graph.number_of_nodes()
+
+   Return the number of visible nodes in the graph.
+
+.. method:: Graph.number_of_hidden_nodes()
+
+   Return the number of hidden nodes in the graph.
+
+.. method:: Graph.node_list()
+
+   Return a list with all visible nodes in the graph.
+
+.. method:: Graph.hidden_node_list()
+
+   Return a list with all hidden nodes in the graph.
+
+.. method:: node_data(node)
+
+   Return the data associated with the *node* when it was
+   added.
+
+.. method:: Graph.describe_node(node)
+
+   Returns *node*, the node's data and the lists of outgoing
+   and incoming edges for the node.
+
+   .. note:: 
+   
+      the edge lists should not be modified, doing so
+      can result in unpredicatable behavior.
+
+.. method:: Graph.__contains__(node)
+
+   Returns True iff *node* is a node in the graph. This
+   method is accessed through the *in* operator.
+
+.. method:: Graph.__iter__()
+
+   Yield all nodes in the graph.
+
+.. method:: Graph.out_edges(node)
+
+   Return the list of outgoing edges for *node*
+
+.. method:: Graph.inc_edges(node)
+
+   Return the list of incoming edges for *node*
+
+.. method:: Graph.all_edges(node)
+
+   Return the list of incoming and outgoing edges for *node*
+
+.. method:: Graph.out_degree(node)
+
+   Return the number of outgoing edges for *node*.
+
+.. method:: Graph.inc_degree(node)
+
+   Return the number of incoming edges for *node*.
+
+.. method:: Graph.all_degree(node)
+
+   Return the number of edges (incoming or outgoing) for *node*.
+
+Edge related methods
+--------------------
+
+.. method:: Graph.add_edge(head_id, tail_id [, edge data [, create_nodes]])
+
+   Adds a directed edge from *head_id* to *tail_id*. Arbitrary data can
+   be added via *edge_data*.  When *create_nodes* is *True* (the default),
+   *head_id* and *tail_id* will be added to the graph when the aren't 
+   already present.
+
+.. method:: Graph.hide_edge(edge)
+
+   Hides an edge from the graph. The edge may be unhidden at some later 
+   time.
+
+.. method:: Graph.restore_edge(edge)
+
+   Restores a previously hidden *edge*.
+
+.. method:: Graph.restore_all_edges()
+
+   Restore all edges that were hidden before, except for edges
+   referring to hidden nodes.
+
+.. method:: Graph.edge_by_node(head, tail)
+
+   Return the edge ID for an edge from *head* to *tail*,
+   or :data:`None` when no such edge exists.
+
+.. method:: Graph.edge_by_id(edge)
+
+   Return the head and tail of the *edge*
+
+.. method:: Graph.edge_data(edge)
+
+   Return the data associated with the *edge*.
+
+
+.. method:: Graph.head(edge)
+
+   Return the head of an *edge*
+
+.. method:: Graph.tail(edge)
+
+   Return the tail of an *edge*
+
+.. method:: Graph.describe_edge(edge)
+
+   Return the *edge*, the associated data, its head and tail.
+
+.. method:: Graph.number_of_edges()
+
+   Return the number of visible edges.
+
+.. method:: Graph.number_of_hidden_edges()
+
+   Return the number of hidden edges.
+
+.. method:: Graph.edge_list()
+
+   Returns a list with all visible edges in the graph.
+
+.. method:: Graph.hidden_edge_list()
+
+   Returns a list with all hidden edges in the graph.
+
+Graph traversal
+---------------
+
+.. method:: Graph.out_nbrs(node)
+
+   Return a list of all nodes connected by outgoing edges.
+
+.. method:: Graph.inc_nbrs(node)
+
+   Return a list of all nodes connected by incoming edges.
+
+.. method:: Graph.all_nbrs(node)
+
+   Returns a list of nodes connected by an incoming or outgoing edge.
+
+.. method:: Graph.forw_topo_sort()
+
+   Return a list of nodes where the successors (based on outgoing
+   edges) of any given node apear in the sequence after that node.
+
+.. method:: Graph.back_topo_sort()
+
+   Return a list of nodes where the successors (based on incoming
+   edges) of any given node apear in the sequence after that node.
+
+.. method:: Graph.forw_bfs_subgraph(start_id)
+
+   Return a subgraph consisting of the breadth first
+   reachable nodes from *start_id* based on their outgoing edges.
+
+
+.. method:: Graph.back_bfs_subgraph(start_id)
+
+   Return a subgraph consisting of the breadth first
+   reachable nodes from *start_id* based on their incoming edges.
+
+.. method:: Graph.iterdfs(start[, end[, forward]])
+
+   Yield nodes in a depth first traversal starting at the *start*
+   node. 
+   
+   If *end* is specified traversal stops when reaching that node.
+
+   If forward is True (the default) edges are traversed in forward
+   direction, otherwise they are traversed in reverse direction.
+
+.. method:: Graph.iterdata(start[, end[, forward[, condition]]])
+
+   Yield the associated data for nodes in a depth first traversal
+   starting at the *start* node. This method will not yield values for nodes
+   without associated data.
+
+   If *end* is specified traversal stops when reaching that node.
+
+   If *condition* is specified and the condition callable returns
+   False for the associated data this method will not yield the
+   associated data and will not follow the edges for the node.
+
+   If forward is True (the default) edges are traversed in forward
+   direction, otherwise they are traversed in reverse direction.
+
+.. method:: Graph.forw_bfs(start[, end])
+
+   Returns a list of nodes starting at *start* in some bread first
+   search order (following outgoing edges).
+
+   When *end* is specified iteration stops at that node.
+
+.. method:: Graph.back_bfs(start[, end])
+
+   Returns a list of nodes starting at *start* in some bread first
+   search order (following incoming edges).
+
+   When *end* is specified iteration stops at that node.
+
+.. method:: Graph.get_hops(start[, end[, forward]])
+
+   Computes the hop distance to all nodes centered around a specified node.
+
+   First order neighbours are at hop 1, their neigbours are at hop 2 etc.
+   Uses :py:meth:`forw_bfs` or :py:meth:`back_bfs` depending on the value of 
+   the forward parameter.  
+   
+   If the distance between all neighbouring nodes is 1 the hop number 
+   corresponds to the shortest distance between the nodes.  
+
+   Typical usage::
+
+        >>> print graph.get_hops(1, 8)
+        >>> [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)]
+        # node 1 is at 0 hops
+        # node 2 is at 1 hop
+        # ...
+        # node 8 is at 5 hops
+
+
+Graph statistics
+----------------
+
+.. method:: Graph.connected()
+
+   Returns True iff every node in the graph can be reached from
+   every other node.
+
+.. method:: Graph.clust_coef(node)
+
+   Returns the local clustering coefficient of node. 
+
+   The local cluster coefficient is the proportion of the actual number
+   of edges between neighbours of node and the maximum number of
+   edges between those nodes.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/graphalgo.txt
@@ -0,0 +1,26 @@
+:mod:`altgraph.GraphAlgo` --- Graph algorithms
+==================================================
+
+.. module:: altgraph.GraphAlgo
+   :synopsis: Basic graphs algoritms
+
+.. function:: dijkstra(graph, start[, end])
+
+   Dijkstra's algorithm for shortest paths.
+
+   Find shortest paths from the  start node to all nodes nearer 
+   than or equal to the *end* node. The edge data is assumed to be the edge length.
+
+   .. note::
+
+       Dijkstra's algorithm is only guaranteed to work correctly when all edge lengths are positive.
+       This code does not verify this property for all edges (only the edges examined until the end
+       vertex is reached), but will correctly compute shortest paths even for some graphs with negative
+       edges, and will raise an exception if it discovers that a negative edge has caused it to make a mistake.
+
+
+.. function:: shortest_path(graph, start, end)
+
+   Find a single shortest path from the given start node to the given end node.
+   The input has the same conventions as :func:`dijkstra`. The output is a list 
+   of the nodes in order along the shortest path.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/graphstat.txt
@@ -0,0 +1,25 @@
+:mod:`altgraph.GraphStat` --- Functions providing various graph statistics
+==========================================================================
+
+.. module:: altgraph.GraphStat
+   :synopsis: Functions providing various graph statistics
+
+The module :mod:`altgraph.GraphStat` provides function that calculate
+graph statistics. Currently there is only one such function, more may
+be added later.
+
+.. function:: degree_dist(graph[, limits[, bin_num[, mode]]])
+
+   Groups the number of edges per node into *bin_num* bins
+   and returns the list of those bins. Every item in the result
+   is a tuple with the center of the bin and the number of items
+   in that bin.
+
+   When the *limits* argument is present it must be a tuple with
+   the mininum and maximum number of edges that get binned (that
+   is, when *limits* is ``(4, 10)`` only nodes with between 4
+   and 10 edges get counted.
+
+   The *mode* argument is used to count incoming (``'inc'``) or
+   outgoing (``'out'``) edges. The default is to count the outgoing
+   edges.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/graphutil.txt
@@ -0,0 +1,55 @@
+:mod:`altgraph.GraphUtil` --- Utility functions
+================================================
+
+.. module:: altgraph.GraphUtil
+   :synopsis: Utility functions
+
+The module :mod:`altgraph.GraphUtil` performs a number of more
+or less useful utility functions.
+
+.. function:: generate_random_graph(node_num, edge_num[, self_loops[, multi_edges])
+
+   Generates and returns a :class:`Graph <altgraph.Graph.Graph>` instance
+   with *node_num* nodes randomly connected by *edge_num* edges.
+
+   When *self_loops* is present and True there can be edges that point from
+   a node to itself.
+
+   When *multi_edge* is present and True there can be duplicate edges.
+
+   This method raises :class:`GraphError <altgraph.GraphError` when
+   a graph with the requested configuration cannot be created.
+
+.. function:: generate_scale_free_graph(steps, growth_num[, self_loops[, multi_edges]])
+
+    Generates and returns a :py:class:`~altgraph.Graph.Graph` instance that 
+    will have *steps*growth_n um* nodes and a scale free (powerlaw) 
+    connectivity. 
+    
+    Starting with a fully connected graph with *growth_num* nodes
+    at every step *growth_num* nodes are added to the graph and are connected 
+    to existing nodes with a probability proportional to the degree of these 
+    existing nodes.
+
+    .. warning:: The current implementation is basically untested, although
+       code inspection seems to indicate an implementation that is consistent
+       with the description at 
+       `Wolfram MathWorld <http://mathworld.wolfram.com/Scale-FreeNetwork.html>`_
+
+.. function:: filter_stack(graph, head, filters)
+
+   Perform a depth-first oder walk of the graph starting at *head* and
+   apply all filter functions in *filters* on the node data of the nodes
+   found.
+
+   Returns (*visited*, *removes*, *orphans*), where
+
+   * *visited*: the set of visited nodes
+
+   * *removes*: the list of nodes where the node data doesn't match
+     all *filters*.
+
+   * *orphans*: list of tuples (*last_good*, *node*), where 
+     node is not in *removes* and one of the nodes that is connected
+     by an incoming edge is in *removes*. *Last_good* is the
+     closest upstream node that is not in *removes*.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/index.txt
@@ -0,0 +1,41 @@
+.. altgraph documentation master file, created by
+   sphinx-quickstart on Tue Aug 31 11:04:49 2010.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Altgraph - A basic graph library
+================================
+
+altgraph is a fork of graphlib: a graph (network) package for constructing
+graphs, BFS and DFS traversals, topological sort, shortest paths, etc. with
+graphviz output.
+
+The primary users of this package are `macholib <http://pypi.python.org/pypi/macholib>`_ and `modulegraph <http://pypi.python.org/pypi/modulegraph>`_.
+
+.. toctree::
+   :maxdepth: 1
+
+   changelog
+   license
+   core
+   graph
+   objectgraph
+   graphalgo
+   graphstat
+   graphutil
+   dot
+
+Online Resources
+----------------
+
+* `Sourcecode repository on bitbucket <http://bitbucket.org/ronaldoussoren/altgraph/>`_
+
+* `The issue tracker <http://bitbucket.org/ronaldoussoren/altgraph/issues>`_
+
+Indices and tables
+------------------
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/license.txt
@@ -0,0 +1,25 @@
+License
+=======
+
+Copyright (c) 2004 Istvan Albert unless otherwise noted.
+
+Parts are copyright (c) Bob Ippolito
+
+Parts are copyright (c) 2010-2014 Ronald Oussoren
+
+MIT License
+...........
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
+so.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_sources/objectgraph.txt
@@ -0,0 +1,134 @@
+:mod:`altgraph.ObjectGraph` --- Graphs of objecs with an identifier
+===================================================================
+
+.. module:: altgraph.ObjectGraph
+   :synopsis: A graph of objects that have a "graphident" attribute.
+
+.. class:: ObjectGraph([graph[, debug]])
+
+   A graph of objects that have a "graphident" attribute. The
+   value of this attribute is the key for the object in the
+   graph.
+
+   The optional *graph* is a previously constructed 
+   :class:`Graph <altgraph.Graph.Graph>`.
+
+   The optional *debug* level controls the amount of debug output
+   (see :meth:`msg`, :meth:`msgin` and :meth:`msgout`).
+
+   .. note:: the altgraph library does not generate output, the
+      debug attribute and message methods are present for use
+      by subclasses.
+
+.. data:: ObjectGraph.graph
+
+   An :class:`Graph <altgraph.Graph.Graph>` object that contains
+   the graph data.
+
+
+.. method:: ObjectGraph.addNode(node)
+
+   Adds a *node* to the graph.  
+
+   .. note:: re-adding a node that was previously removed
+      using :meth:`removeNode` will reinstate the previously
+      removed node.
+
+.. method:: ObjectGraph.createNode(self, cls, name, \*args, \**kwds)
+
+   Creates a new node using ``cls(*args, **kwds)`` and adds that
+   node using :meth:`addNode`.
+
+   Returns the newly created node.
+
+.. method:: ObjectGraph.removeNode(node)
+
+   Removes a *node* from the graph when it exists. The *node* argument
+   is either a node object, or the graphident of a node.
+
+.. method:: ObjectGraph.createReferences(fromnode, tonode[, edge_data])
+
+   Creates a reference from *fromnode* to *tonode*. The optional
+   *edge_data* is associated with the edge.
+
+   *Fromnode* and *tonode* can either be node objects or the graphident
+   values for nodes.
+
+.. method:: removeReference(fromnode, tonode)
+
+   Removes the reference from *fromnode* to *tonode* if it exists.
+
+.. method:: ObjectGraph.getRawIdent(node)
+
+   Returns the *graphident* attribute of *node*, or the graph itself
+   when *node* is :data:`None`.
+
+.. method:: getIdent(node)
+
+   Same as :meth:`getRawIdent`, but only if the node is part
+   of the graph. 
+
+   *Node* can either be an actual node object or the graphident of
+   a node.
+
+.. method:: ObjectGraph.findNode(node)
+
+   Returns a given node in the graph, or :data:`Node` when it cannot
+   be found.
+
+   *Node* is either an object with a *graphident* attribute or
+   the *graphident* attribute itself.
+
+.. method:: ObjectGraph.__contains__(node)
+
+   Returns True if *node* is a member of the graph. *Node* is either an 
+   object with a *graphident* attribute or the *graphident* attribute itself.
+
+.. method:: ObjectGraph.flatten([condition[, start]])
+
+   Yield all nodes that are entirely reachable by *condition*
+   starting fromt he given *start* node or the graph root.
+
+   .. note:: objects are only reachable from the graph root
+      when there is a reference from the root to the node
+      (either directly or through another node)
+
+.. method:: ObjectGraph.nodes()
+
+   Yield all nodes in the graph.
+
+.. method:: ObjectGraph.get_edges(node)
+
+   Returns two iterators that yield the nodes reaching by
+   outgoing and incoming edges.
+
+.. method:: ObjectGraph.filterStack(filters)
+
+   Filter the ObjectGraph in-place by removing all edges to nodes that
+   do not match every filter in the given filter list
+
+   Returns a tuple containing the number of: 
+   (*nodes_visited*, *nodes_removed*, *nodes_orphaned*)
+
+
+Debug output
+------------
+
+.. data:: ObjectGraph.debug
+
+   The current debug level.
+
+.. method:: ObjectGraph.msg(level, text, \*args)
+
+   Print a debug message at the current indentation level when the current 
+   debug level is *level* or less.
+
+.. method:: ObjectGraph.msgin(level, text, \*args)
+
+   Print a debug message when the current debug level is *level* or less,
+   and increase the indentation level.
+
+.. method:: ObjectGraph.msgout(level, text, \*args)
+
+   Decrease the indentation level and print a debug message when the 
+   current debug level is *level* or less.
new file mode 100644
index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330
GIT binary patch
literal 673
zc${<hbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl
zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>RbU$Z!T`
zV~$;S{u!L|%oa}Ou;P%M!|pdDjnj3b;h|k3GY@XlOE_|<@Pcl%gyr33?3NNd>|WW=
zJs6-yGa{Q~0y4+1M^Qn#g=hDMXI(CZPJtl_hLQ>iKCaPHD{5r6mfnAxD8b&Ka9!e2
zo3rF5RTV8Es6kA~2AOf}GE&w)<#=MknJHoVY^}*Md|xE}K6*MO&RAU_^MUKk=Djk<
zR%kOtz7_w&*nF7ZXl07j{QWFYqnOeBmZYkE%BXGPn>k_et=-EwTNQa&3|-n2Wdv8b
zHEp;k&zuw#``K3Bz(Pl=|HP6aOCOluSdh&z;@DNBuI=?aMdX9TXP-tMwX(wrF-aj)
zT3dF?Wkfn@o<HRvz%2LDM*grG*qoqAFk@KJoTG4Pf~EN5lIMGF%`=cZF7rT9&uQD-
zQ{ihC8S=1kixemB-eCHDDr2L;2F}ji^K&)5VCJx)Ip@y551fKG=Y+=2VtjY2uwZIJ
z$KAv^cTJ|XI=US-5SfrLdmAG!%OMAW*@g{=uAQ3*Glm_*7+}n=PIbC6NAtQI2ghNB
ozT<^_EQSUvPi<HiAaMv7U17JDGAWcMNi@xi7M#GqV9fvn0QDf%%K!iX
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/basic.css
@@ -0,0 +1,537 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    width: 30px;
+}
+
+img {
+    border: 0;
+    max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlighted {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903
GIT binary patch
literal 3500
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
a`ab|E?o=hKA+1LM0000<MNUMnLSTYql%5L!
new file mode 100644
index 0000000000000000000000000000000000000000..09b54be46da3f0d4a5061da289dc91d8a2cdbc9c
GIT binary patch
literal 3578
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
A2LJ#7
new file mode 100644
index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95
GIT binary patch
literal 3445
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
Xn!ZpXD%P(H00000NkvXXu0mjf<Culu
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/doctools.js
@@ -0,0 +1,238 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s == 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this);
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      if (!body.length) {
+        body = $('body');
+      }
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});
new file mode 100644
index 0000000000000000000000000000000000000000..6f7ad782782e4f8e39b0c6e15c7344700cdd2527
GIT binary patch
literal 368
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^PXN
zr}OT5AjMhW5m^k>ejS7voit`w00r4gJbhi+Z?SVR=!%sIxhVsMK6tt~hFF|Fdr8rs
z*-?P?!TVcYIttp_4huY`c*=xj79}0t?-2gc+-;JAhu@=(62FueG?^^qvp8e6)8x8Y
z$j3>(Wo7sFm~Y<wYR>O(E^~|bw<pg1T+#o?uq~AHU15{8&9aX3ysqp!4(X<8KH8O~
zdcU9}-=xCr0lT?{d#l|u%|{Y!y3L&PxE3CAjm$MsHII}H$=2OBEpS`nG$p@q$9&z&
zw$#E)5BKTF%w^Ji#C`cv<mHRMwiJ}~U66XZHzq^+vq<5Vb8mBJ6kn<8UG~O3_K07j
z$j8R^ONp)RMc<y^-?pMSF6S{%Sw_q|qnoN99^HQ|-e=&N8pKj|0~A)Cu6{1-oD!M<
D#kP)L
new file mode 100644
index 0000000000000000000000000000000000000000..3003a88770de3977d47a2ba69893436a2860f9e7
GIT binary patch
literal 363
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^PXN
zr}OT5AjMhW5m^k>ejS7voit`w00r4gJbhi+Z?Q9qD{&ls8(Iw%dhO}r7-Dhy?4^Z%
z&W-}C7e3$e(oxXXc33deM8b}teZ?dF3!#75CM{v=kJD+ZV+om{c7>7O*f%aN?smXY
zU$dJxcNV`t^G<8&m$#ikUi;e<HB<Mvf0Q_^)yzKU0bjr1$DIpbFof?oYNNDnwc97&
z_8)G&>31Hpn_IZI+KCAk@-(*{WbyZ0Q800Jr&aOfuZ~x<KAO7UY^!vcv#vQ#yRt3R
z>SaN^s{3*Wmzu;`bFa#-^`E@BxaF9}`^tsBI!cdLoPC=+qxeciuhsX(dPyKv3Dac5
yW<0$)zy9{7DVy#blYDbw$DPzo-VcuMKdvwI%3ZN(!Awa|FnPNAxvX<aXaWGk%a7;)
new file mode 100644
index 0000000000000000000000000000000000000000..d18082e397e7e54f20721af768c4c2983258f1b4
GIT binary patch
literal 392
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b
z3=G`DAk4@xYmNj^kiEpy*OmP$Hy<xMqvo~{83qPMQBN1g5R21mCvNmQ;vmqr-?K<V
zU4kQ;TS-l(;>OL$D9)yc9|lc|nKf<9@eUiWd>3GuTC!a5vdfWYEazjncPj5ZQX%+1
zt8B*4=d)!cdDz4wr^#OMYfqGz$1LDFF>|#>*O?<HXR=hzTfCLc!DZQEwT&GKx6RhQ
zo))l-Eh>AGil(WEs?wLLy{Gj2J_@opDm%`dlax3yA*@*N$G&*ukFv>P8+2CBWO(qz
zD0k1@kN>hhb1_6`&wrCswzINE(evt-5C1B^STi2@P<G<wTm_|``|B7th)+*kX+Pib
z*M}qKJqcfCd_2yP9QQKsOSb)vO-|{xyF)I_-07lx@Zvo#rJ$WIhTj)AKCk@a+86Xn
ktMBn$GheTj#{azILsys7Te#I72ZkAgr>mdKI;Vst0PQB6!2kdN
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/jquery.js
@@ -0,0 +1,2 @@
+/*! jQuery v1.8.3 jquery.com | jquery.org/license */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..da1c5620d10c047525a467a425abe9ff5269cfc2
GIT binary patch
literal 199
zc%17D@N?(olHy`uVBq!ia0vp^+#t-s1SHkYJtzcHoCO|{#XvD(5N2eUHAey{$X?><
z>&kweokM_|(Po{+Q=kw>iEBiObAE1aYF-J$w=>iB1I2<oT^vIsE+^X*KjUGJJ8<a0
zfdz{eHHE&rzrX(bySvGUL|lavlN4AuRwpzDOq(`sMv;5Joa+jUx<3|oWPN;mPUJ0`
pW__Wi<5+59Lc)&n_i}Q^3>R$WLpMkF=>bh=@O1TaS?83{1OVknK<NMg
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/nature.css
@@ -0,0 +1,245 @@
+/*
+ * nature.css_t
+ * ~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- nature theme.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+ 
+@import url("basic.css");
+ 
+/* -- page layout ----------------------------------------------------------- */
+ 
+body {
+    font-family: Arial, sans-serif;
+    font-size: 100%;
+    background-color: #111;
+    color: #555;
+    margin: 0;
+    padding: 0;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+hr {
+    border: 1px solid #B1B4B6;
+}
+ 
+div.document {
+    background-color: #eee;
+}
+ 
+div.body {
+    background-color: #ffffff;
+    color: #3E4349;
+    padding: 0 30px 30px 30px;
+    font-size: 0.9em;
+}
+ 
+div.footer {
+    color: #555;
+    width: 100%;
+    padding: 13px 0;
+    text-align: center;
+    font-size: 75%;
+}
+ 
+div.footer a {
+    color: #444;
+    text-decoration: underline;
+}
+ 
+div.related {
+    background-color: #6BA81E;
+    line-height: 32px;
+    color: #fff;
+    text-shadow: 0px 1px 0 #444;
+    font-size: 0.9em;
+}
+ 
+div.related a {
+    color: #E2F3CC;
+}
+ 
+div.sphinxsidebar {
+    font-size: 0.75em;
+    line-height: 1.5em;
+}
+
+div.sphinxsidebarwrapper{
+    padding: 20px 0;
+}
+ 
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+    font-family: Arial, sans-serif;
+    color: #222;
+    font-size: 1.2em;
+    font-weight: normal;
+    margin: 0;
+    padding: 5px 10px;
+    background-color: #ddd;
+    text-shadow: 1px 1px 0 white
+}
+
+div.sphinxsidebar h4{
+    font-size: 1.1em;
+}
+ 
+div.sphinxsidebar h3 a {
+    color: #444;
+}
+ 
+ 
+div.sphinxsidebar p {
+    color: #888;
+    padding: 5px 20px;
+}
+ 
+div.sphinxsidebar p.topless {
+}
+ 
+div.sphinxsidebar ul {
+    margin: 10px 20px;
+    padding: 0;
+    color: #000;
+}
+ 
+div.sphinxsidebar a {
+    color: #444;
+}
+ 
+div.sphinxsidebar input {
+    border: 1px solid #ccc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar input[type=text]{
+    margin-left: 20px;
+}
+ 
+/* -- body styles ----------------------------------------------------------- */
+ 
+a {
+    color: #005B81;
+    text-decoration: none;
+}
+ 
+a:hover {
+    color: #E32E00;
+    text-decoration: underline;
+}
+ 
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: Arial, sans-serif;
+    background-color: #BED4EB;
+    font-weight: normal;
+    color: #212224;
+    margin: 30px 0px 10px 0px;
+    padding: 5px 0 5px 10px;
+    text-shadow: 0px 1px 0 white
+}
+ 
+div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 150%; background-color: #C8D5E3; }
+div.body h3 { font-size: 120%; background-color: #D8DEE3; }
+div.body h4 { font-size: 110%; background-color: #D8DEE3; }
+div.body h5 { font-size: 100%; background-color: #D8DEE3; }
+div.body h6 { font-size: 100%; background-color: #D8DEE3; }
+ 
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+ 
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+ 
+div.body p, div.body dd, div.body li {
+    line-height: 1.5em;
+}
+ 
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.highlight{
+    background-color: white;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+ 
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+ 
+div.topic {
+    background-color: #eee;
+}
+ 
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+ 
+p.admonition-title {
+    display: inline;
+}
+ 
+p.admonition-title:after {
+    content: ":";
+}
+ 
+pre {
+    padding: 10px;
+    background-color: White;
+    color: #222;
+    line-height: 1.2em;
+    border: 1px solid #C6C9CB;
+    font-size: 1.1em;
+    margin: 1.5em 0 1.5em 0;
+    -webkit-box-shadow: 1px 1px 1px #d8d8d8;
+    -moz-box-shadow: 1px 1px 1px #d8d8d8;
+}
+ 
+tt {
+    background-color: #ecf0f3;
+    color: #222;
+    /* padding: 1px 2px; */
+    font-size: 1.1em;
+    font-family: monospace;
+}
+
+.viewcode-back {
+    font-family: Arial, sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+}
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..b3cb37425ea68b39ffa7b2e5fb69161275a87541
GIT binary patch
literal 199
zc%17D@N?(olHy`uVBq!ia0vp^+#t-s1SHkYJtzcHoCO|{#XvD(5N2eUHAey{$X?><
z>&kweokM`jkU7Va11Q8%;u=xnoS&PUnpeW`?aZ|OK(QcC7sn8Z%gHvy&v=;Q4jejg
zV8NnAO`-4Z@2~&<?ryS^@YXF`T!a&o6j(S`Cmb}9IcHb(MZ@Xn$H&JXUMl#uzyAM<
o7knL=1-mEi3=josIGoJJAh%tCVFz!`HlXPYp00i_>zopr02WF_WB>pF
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/pygments.css
@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/searchtools.js
@@ -0,0 +1,622 @@
+/*
+ * searchtools.js_t
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for the full-text search.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
+
+
+/**
+ * Simple result scoring code.
+ */
+var Scorer = {
+  // Implement the following function to further tweak the score for each result
+  // The function takes a result array [filename, title, anchor, descr, score]
+  // and returns the new score.
+  /*
+  score: function(result) {
+    return result[4];
+  },
+  */
+
+  // query matches the full name of an object
+  objNameMatch: 11,
+  // or matches in the last dotted part of the object name
+  objPartialMatch: 6,
+  // Additive scores depending on the priority of the object
+  objPrio: {0:  15,   // used to be importantResults
+            1:  5,   // used to be objectResults
+            2: -5},  // used to be unimportantResults
+  //  Used when the priority is not in the mapping.
+  objPrioDefault: 0,
+
+  // query found in title
+  title: 15,
+  // query found in terms
+  term: 5
+};
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+  _index : null,
+  _queued_query : null,
+  _pulse_status : -1,
+
+  init : function() {
+      var params = $.getQueryParameters();
+      if (params.q) {
+          var query = params.q[0];
+          $('input[name="q"]')[0].value = query;
+          this.performSearch(query);
+      }
+  },
+
+  loadIndex : function(url) {
+    $.ajax({type: "GET", url: url, data: null,
+            dataType: "script", cache: true,
+            complete: function(jqxhr, textstatus) {
+              if (textstatus != "success") {
+                document.getElementById("searchindexloader").src = url;
+              }
+            }});
+  },
+
+  setIndex : function(index) {
+    var q;
+    this._index = index;
+    if ((q = this._queued_query) !== null) {
+      this._queued_query = null;
+      Search.query(q);
+    }
+  },
+
+  hasIndex : function() {
+      return this._index !== null;
+  },
+
+  deferQuery : function(query) {
+      this._queued_query = query;
+  },
+
+  stopPulse : function() {
+      this._pulse_status = 0;
+  },
+
+  startPulse : function() {
+    if (this._pulse_status >= 0)
+        return;
+    function pulse() {
+      var i;
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      var dotString = '';
+      for (i = 0; i < Search._pulse_status; i++)
+        dotString += '.';
+      Search.dots.text(dotString);
+      if (Search._pulse_status > -1)
+        window.setTimeout(pulse, 500);
+    }
+    pulse();
+  },
+
+  /**
+   * perform a search for something (or wait until index is loaded)
+   */
+  performSearch : function(query) {
+    // create the required interface elements
+    this.out = $('#search-results');
+    this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+    this.dots = $('<span></span>').appendTo(this.title);
+    this.status = $('<p style="display: none"></p>').appendTo(this.out);
+    this.output = $('<ul class="search"/>').appendTo(this.out);
+
+    $('#search-progress').text(_('Preparing search...'));
+    this.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (this.hasIndex())
+      this.query(query);
+    else
+      this.deferQuery(query);
+  },
+
+  /**
+   * execute search (requires search index to be loaded)
+   */
+  query : function(query) {
+    var i;
+    var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+    // stem the searchterms and add them to the correct list
+    var stemmer = new Stemmer();
+    var searchterms = [];
+    var excluded = [];
+    var hlterms = [];
+    var tmp = query.split(/\s+/);
+    var objectterms = [];
+    for (i = 0; i < tmp.length; i++) {
+      if (tmp[i] !== "") {
+          objectterms.push(tmp[i].toLowerCase());
+      }
+
+      if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
+          tmp[i] === "") {
+        // skip this "word"
+        continue;
+      }
+      // stem the word
+      var word = stemmer.stemWord(tmp[i].toLowerCase());
+      var toAppend;
+      // select the correct list
+      if (word[0] == '-') {
+        toAppend = excluded;
+        word = word.substr(1);
+      }
+      else {
+        toAppend = searchterms;
+        hlterms.push(tmp[i].toLowerCase());
+      }
+      // only add if not already in the list
+      if (!$u.contains(toAppend, word))
+        toAppend.push(word);
+    }
+    var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+    // console.debug('SEARCH: searching for:');
+    // console.info('required: ', searchterms);
+    // console.info('excluded: ', excluded);
+
+    // prepare search
+    var terms = this._index.terms;
+    var titleterms = this._index.titleterms;
+
+    // array of [filename, title, anchor, descr, score]
+    var results = [];
+    $('#search-progress').empty();
+
+    // lookup as object
+    for (i = 0; i < objectterms.length; i++) {
+      var others = [].concat(objectterms.slice(0, i),
+                             objectterms.slice(i+1, objectterms.length));
+      results = results.concat(this.performObjectSearch(objectterms[i], others));
+    }
+
+    // lookup as search terms in fulltext
+    results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
+                     .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
+
+    // let the scorer override scores with a custom scoring function
+    if (Scorer.score) {
+      for (i = 0; i < results.length; i++)
+        results[i][4] = Scorer.score(results[i]);
+    }
+
+    // now sort the results by score (in opposite order of appearance, since the
+    // display function below uses pop() to retrieve items) and then
+    // alphabetically
+    results.sort(function(a, b) {
+      var left = a[4];
+      var right = b[4];
+      if (left > right) {
+        return 1;
+      } else if (left < right) {
+        return -1;
+      } else {
+        // same score: sort alphabetically
+        left = a[1].toLowerCase();
+        right = b[1].toLowerCase();
+        return (left > right) ? -1 : ((left < right) ? 1 : 0);
+      }
+    });
+
+    // for debugging
+    //Search.lastresults = results.slice();  // a copy
+    //console.info('search results:', Search.lastresults);
+
+    // print the results
+    var resultCount = results.length;
+    function displayNextItem() {
+      // results left, load the summary and display it
+      if (results.length) {
+        var item = results.pop();
+        var listItem = $('<li style="display:none"></li>');
+        if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+          // dirhtml builder
+          var dirname = item[0] + '/';
+          if (dirname.match(/\/index\/$/)) {
+            dirname = dirname.substring(0, dirname.length-6);
+          } else if (dirname == 'index/') {
+            dirname = '';
+          }
+          listItem.append($('<a/>').attr('href',
+            DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+            highlightstring + item[2]).html(item[1]));
+        } else {
+          // normal html builders
+          listItem.append($('<a/>').attr('href',
+            item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+            highlightstring + item[2]).html(item[1]));
+        }
+        if (item[3]) {
+          listItem.append($('<span> (' + item[3] + ')</span>'));
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+          $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
+                  dataType: "text",
+                  complete: function(jqxhr, textstatus) {
+                    var data = jqxhr.responseText;
+                    if (data !== '') {
+                      listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+                    }
+                    Search.output.append(listItem);
+                    listItem.slideDown(5, function() {
+                      displayNextItem();
+                    });
+                  }});
+        } else {
+          // no source available, just display title
+          Search.output.append(listItem);
+          listItem.slideDown(5, function() {
+            displayNextItem();
+          });
+        }
+      }
+      // search finished, update title and status message
+      else {
+        Search.stopPulse();
+        Search.title.text(_('Search Results'));
+        if (!resultCount)
+          Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+        else
+            Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+        Search.status.fadeIn(500);
+      }
+    }
+    displayNextItem();
+  },
+
+  /**
+   * search for object names
+   */
+  performObjectSearch : function(object, otherterms) {
+    var filenames = this._index.filenames;
+    var objects = this._index.objects;
+    var objnames = this._index.objnames;
+    var titles = this._index.titles;
+
+    var i;
+    var results = [];
+
+    for (var prefix in objects) {
+      for (var name in objects[prefix]) {
+        var fullname = (prefix ? prefix + '.' : '') + name;
+        if (fullname.toLowerCase().indexOf(object) > -1) {
+          var score = 0;
+          var parts = fullname.split('.');
+          // check for different match types: exact matches of full name or
+          // "last name" (i.e. last dotted part)
+          if (fullname == object || parts[parts.length - 1] == object) {
+            score += Scorer.objNameMatch;
+          // matches in last name
+          } else if (parts[parts.length - 1].indexOf(object) > -1) {
+            score += Scorer.objPartialMatch;
+          }
+          var match = objects[prefix][name];
+          var objname = objnames[match[1]][2];
+          var title = titles[match[0]];
+          // If more than one term searched for, we require other words to be
+          // found in the name/title/description
+          if (otherterms.length > 0) {
+            var haystack = (prefix + ' ' + name + ' ' +
+                            objname + ' ' + title).toLowerCase();
+            var allfound = true;
+            for (i = 0; i < otherterms.length; i++) {
+              if (haystack.indexOf(otherterms[i]) == -1) {
+                allfound = false;
+                break;
+              }
+            }
+            if (!allfound) {
+              continue;
+            }
+          }
+          var descr = objname + _(', in ') + title;
+
+          var anchor = match[3];
+          if (anchor === '')
+            anchor = fullname;
+          else if (anchor == '-')
+            anchor = objnames[match[1]][1] + '-' + fullname;
+          // add custom score for some objects according to scorer
+          if (Scorer.objPrio.hasOwnProperty(match[2])) {
+            score += Scorer.objPrio[match[2]];
+          } else {
+            score += Scorer.objPrioDefault;
+          }
+          results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
+        }
+      }
+    }
+
+    return results;
+  },
+
+  /**
+   * search for full-text terms in the index
+   */
+  performTermsSearch : function(searchterms, excluded, terms, score) {
+    var filenames = this._index.filenames;
+    var titles = this._index.titles;
+
+    var i, j, file, files;
+    var fileMap = {};
+    var results = [];
+
+    // perform the search on the required terms
+    for (i = 0; i < searchterms.length; i++) {
+      var word = searchterms[i];
+      // no match but word was a required one
+      if ((files = terms[word]) === undefined)
+        break;
+      if (files.length === undefined) {
+        files = [files];
+      }
+      // create the mapping
+      for (j = 0; j < files.length; j++) {
+        file = files[j];
+        if (file in fileMap)
+          fileMap[file].push(word);
+        else
+          fileMap[file] = [word];
+      }
+    }
+
+    // now check if the files don't contain excluded terms
+    for (file in fileMap) {
+      var valid = true;
+
+      // check if all requirements are matched
+      if (fileMap[file].length != searchterms.length)
+          continue;
+
+      // ensure that none of the excluded terms is in the search result
+      for (i = 0; i < excluded.length; i++) {
+        if (terms[excluded[i]] == file ||
+          $u.contains(terms[excluded[i]] || [], file)) {
+          valid = false;
+          break;
+        }
+      }
+
+      // if we have still a valid result we can add it to the result list
+      if (valid) {
+        results.push([filenames[file], titles[file], '', null, score]);
+      }
+    }
+    return results;
+  },
+
+  /**
+   * helper function to return a node containing the
+   * search summary for a given text. keywords is a list
+   * of stemmed words, hlwords is the list of normal, unstemmed
+   * words. the first one is used to find the occurance, the
+   * latter for highlighting it.
+   */
+  makeSearchSummary : function(text, keywords, hlwords) {
+    var textLower = text.toLowerCase();
+    var start = 0;
+    $.each(keywords, function() {
+      var i = textLower.indexOf(this.toLowerCase());
+      if (i > -1)
+        start = i;
+    });
+    start = Math.max(start - 120, 0);
+    var excerpt = ((start > 0) ? '...' : '') +
+      $.trim(text.substr(start, 240)) +
+      ((start + 240 - text.length) ? '...' : '');
+    var rv = $('<div class="context"></div>').text(excerpt);
+    $.each(hlwords, function() {
+      rv = rv.highlightText(this, 'highlighted');
+    });
+    return rv;
+  }
+};
+
+$(document).ready(function() {
+  Search.init();
+});
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/underscore.js
@@ -0,0 +1,31 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
+h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
+b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
+null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
+function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
+e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
+return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
+c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
+b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
+return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
+d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
+var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
+c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
+a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
+b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
+1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
+b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
+b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
+function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
+u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
+function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
+true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
new file mode 100644
index 0000000000000000000000000000000000000000..8bd587afee2fe38989383ff82010147ea56b93dd
GIT binary patch
literal 372
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^PXN
zr}OT5AjMhW5m^k>ejS7voit`w00r4gJbhi+Z?SVR=ty*Ij7kLxeera046!(UcJlr#
zCP#r|_0xB23H}!eU+SIxl=;R@U7gD}+2ox*aa2xpxTMQ{`(}rJLh?iAh{y~@v#fJz
z3hqVH{y8!cWjB77J^P&|u_Iep+GwNVZ~o5(ithgYS2l5Ts#R@Ym!@D=!{obQW!+NM
ziRWb#VzoZ-J~=nrH<ry?;VM(-uhUUNN7@W0FuT6o$xzgLRQ1J)Z3mKD_b}aH&V7E?
z@K^$$jce89jGQ=4#~cZUyYW|6CR_}CBhMz!Wx>dvz}3?b{*_-!Tjcj;=8X@%SMO&&
zSGl>nXFDUu2R5BK=7(K!Dj4U@HQ%iLeF^^>0qIN9({yc_f4p?`uacft4hk<%S3j3^
HP6<r_ek+Eb
new file mode 100644
index 0000000000000000000000000000000000000000..b94625680b4a4b9647c3a6f3f283776930696aa9
GIT binary patch
literal 363
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^PXN
zr}OT5AjMhW5m^k>ejS7voit`w00r4gJbhi+Z?Q9qE9%*tZFU6;z4ml*46!(UcJf9)
zCP#s`{a@EPH3h`Dx>t*SZRum*uvyin<)dJYpwP<-2C3wK|D?F(4s<bbCpQ<FO?D``
zZk_a4W%k@Rf2=?MH<tWyT}^ZPl>cozGfo(Oo4jR@;=x<*S8tZ|sA8ycIRAG=>yhV-
z8*DWT7`TjYZ%y66XrwQ2=l+&S3NOVp8h$<5$;Q>cRQ1P+xJEyhINm+XwZ^|a3|BOq
zcFAu#zG?-FXYhhQZgV-hFKx7!(2@DT`KHl5f$z+n`_*g8-fU!_G%fD0T*S<q(Mfw^
zA4u(Bo_F?*nuiplvvIXmvA@~@?n#^Mb)vtqzEAa07FoRy6krUVu6{1-oD!M<4nd3N
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/_static/websupport.js
@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilties for all documentation.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+  $.fn.autogrow = function() {
+    return this.each(function() {
+    var textarea = this;
+
+    $.fn.autogrow.resize(textarea);
+
+    $(textarea)
+      .focus(function() {
+        textarea.interval = setInterval(function() {
+          $.fn.autogrow.resize(textarea);
+        }, 500);
+      })
+      .blur(function() {
+        clearInterval(textarea.interval);
+      });
+    });
+  };
+
+  $.fn.autogrow.resize = function(textarea) {
+    var lineHeight = parseInt($(textarea).css('line-height'), 10);
+    var lines = textarea.value.split('\n');
+    var columns = textarea.cols;
+    var lineCount = 0;
+    $.each(lines, function() {
+      lineCount += Math.ceil(this.length / columns) || 1;
+    });
+    var height = lineHeight * (lineCount + 1);
+    $(textarea).css('height', height);
+  };
+})(jQuery);
+
+(function($) {
+  var comp, by;
+
+  function init() {
+    initEvents();
+    initComparator();
+  }
+
+  function initEvents() {
+    $('a.comment-close').live("click", function(event) {
+      event.preventDefault();
+      hide($(this).attr('id').substring(2));
+    });
+    $('a.vote').live("click", function(event) {
+      event.preventDefault();
+      handleVote($(this));
+    });
+    $('a.reply').live("click", function(event) {
+      event.preventDefault();
+      openReply($(this).attr('id').substring(2));
+    });
+    $('a.close-reply').live("click", function(event) {
+      event.preventDefault();
+      closeReply($(this).attr('id').substring(2));
+    });
+    $('a.sort-option').live("click", function(event) {
+      event.preventDefault();
+      handleReSort($(this));
+    });
+    $('a.show-proposal').live("click", function(event) {
+      event.preventDefault();
+      showProposal($(this).attr('id').substring(2));
+    });
+    $('a.hide-proposal').live("click", function(event) {
+      event.preventDefault();
+      hideProposal($(this).attr('id').substring(2));
+    });
+    $('a.show-propose-change').live("click", function(event) {
+      event.preventDefault();
+      showProposeChange($(this).attr('id').substring(2));
+    });
+    $('a.hide-propose-change').live("click", function(event) {
+      event.preventDefault();
+      hideProposeChange($(this).attr('id').substring(2));
+    });
+    $('a.accept-comment').live("click", function(event) {
+      event.preventDefault();
+      acceptComment($(this).attr('id').substring(2));
+    });
+    $('a.delete-comment').live("click", function(event) {
+      event.preventDefault();
+      deleteComment($(this).attr('id').substring(2));
+    });
+    $('a.comment-markup').live("click", function(event) {
+      event.preventDefault();
+      toggleCommentMarkupBox($(this).attr('id').substring(2));
+    });
+  }
+
+  /**
+   * Set comp, which is a comparator function used for sorting and
+   * inserting comments into the list.
+   */
+  function setComparator() {
+    // If the first three letters are "asc", sort in ascending order
+    // and remove the prefix.
+    if (by.substring(0,3) == 'asc') {
+      var i = by.substring(3);
+      comp = function(a, b) { return a[i] - b[i]; };
+    } else {
+      // Otherwise sort in descending order.
+      comp = function(a, b) { return b[by] - a[by]; };
+    }
+
+    // Reset link styles and format the selected sort option.
+    $('a.sel').attr('href', '#').removeClass('sel');
+    $('a.by' + by).removeAttr('href').addClass('sel');
+  }
+
+  /**
+   * Create a comp function. If the user has preferences stored in
+   * the sortBy cookie, use those, otherwise use the default.
+   */
+  function initComparator() {
+    by = 'rating'; // Default to sort by rating.
+    // If the sortBy cookie is set, use that instead.
+    if (document.cookie.length > 0) {
+      var start = document.cookie.indexOf('sortBy=');
+      if (start != -1) {
+        start = start + 7;
+        var end = document.cookie.indexOf(";", start);
+        if (end == -1) {
+          end = document.cookie.length;
+          by = unescape(document.cookie.substring(start, end));
+        }
+      }
+    }
+    setComparator();
+  }
+
+  /**
+   * Show a comment div.
+   */
+  function show(id) {
+    $('#ao' + id).hide();
+    $('#ah' + id).show();
+    var context = $.extend({id: id}, opts);
+    var popup = $(renderTemplate(popupTemplate, context)).hide();
+    popup.find('textarea[name="proposal"]').hide();
+    popup.find('a.by' + by).addClass('sel');
+    var form = popup.find('#cf' + id);
+    form.submit(function(event) {
+      event.preventDefault();
+      addComment(form);
+    });
+    $('#s' + id).after(popup);
+    popup.slideDown('fast', function() {
+      getComments(id);
+    });
+  }
+
+  /**
+   * Hide a comment div.
+   */
+  function hide(id) {
+    $('#ah' + id).hide();
+    $('#ao' + id).show();
+    var div = $('#sc' + id);
+    div.slideUp('fast', function() {
+      div.remove();
+    });
+  }
+
+  /**
+   * Perform an ajax request to get comments for a node
+   * and insert the comments into the comments tree.
+   */
+  function getComments(id) {
+    $.ajax({
+     type: 'GET',
+     url: opts.getCommentsURL,
+     data: {node: id},
+     success: function(data, textStatus, request) {
+       var ul = $('#cl' + id);
+       var speed = 100;
+       $('#cf' + id)
+         .find('textarea[name="proposal"]')
+         .data('source', data.source);
+
+       if (data.comments.length === 0) {
+         ul.html('<li>No comments yet.</li>');
+         ul.data('empty', true);
+       } else {
+         // If there are comments, sort them and put them in the list.
+         var comments = sortComments(data.comments);
+         speed = data.comments.length * 100;
+         appendComments(comments, ul);
+         ul.data('empty', false);
+       }
+       $('#cn' + id).slideUp(speed + 200);
+       ul.slideDown(speed);
+     },
+     error: function(request, textStatus, error) {
+       showError('Oops, there was a problem retrieving the comments.');
+     },
+     dataType: 'json'
+    });
+  }
+
+  /**
+   * Add a comment via ajax and insert the comment into the comment tree.
+   */
+  function addComment(form) {
+    var node_id = form.find('input[name="node"]').val();
+    var parent_id = form.find('input[name="parent"]').val();
+    var text = form.find('textarea[name="comment"]').val();
+    var proposal = form.find('textarea[name="proposal"]').val();
+
+    if (text == '') {
+      showError('Please enter a comment.');
+      return;
+    }
+
+    // Disable the form that is being submitted.
+    form.find('textarea,input').attr('disabled', 'disabled');
+
+    // Send the comment to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.addCommentURL,
+      dataType: 'json',
+      data: {
+        node: node_id,
+        parent: parent_id,
+        text: text,
+        proposal: proposal
+      },
+      success: function(data, textStatus, error) {
+        // Reset the form.
+        if (node_id) {
+          hideProposeChange(node_id);
+        }
+        form.find('textarea')
+          .val('')
+          .add(form.find('input'))
+          .removeAttr('disabled');
+	var ul = $('#cl' + (node_id || parent_id));
+        if (ul.data('empty')) {
+          $(ul).empty();
+          ul.data('empty', false);
+        }
+        insertComment(data.comment);
+        var ao = $('#ao' + node_id);
+        ao.find('img').attr({'src': opts.commentBrightImage});
+        if (node_id) {
+          // if this was a "root" comment, remove the commenting box
+          // (the user can get it back by reopening the comment popup)
+          $('#ca' + node_id).slideUp();
+        }
+      },
+      error: function(request, textStatus, error) {
+        form.find('textarea,input').removeAttr('disabled');
+        showError('Oops, there was a problem adding the comment.');
+      }
+    });
+  }
+
+  /**
+   * Recursively append comments to the main comment list and children
+   * lists, creating the comment tree.
+   */
+  function appendComments(comments, ul) {
+    $.each(comments, function() {
+      var div = createCommentDiv(this);
+      ul.append($(document.createElement('li')).html(div));
+      appendComments(this.children, div.find('ul.comment-children'));
+      // To avoid stagnating data, don't store the comments children in data.
+      this.children = null;
+      div.data('comment', this);
+    });
+  }
+
+  /**
+   * After adding a new comment, it must be inserted in the correct
+   * location in the comment tree.
+   */
+  function insertComment(comment) {
+    var div = createCommentDiv(comment);
+
+    // To avoid stagnating data, don't store the comments children in data.
+    comment.children = null;
+    div.data('comment', comment);
+
+    var ul = $('#cl' + (comment.node || comment.parent));
+    var siblings = getChildren(ul);
+
+    var li = $(document.createElement('li'));
+    li.hide();
+
+    // Determine where in the parents children list to insert this comment.
+    for(i=0; i < siblings.length; i++) {
+      if (comp(comment, siblings[i]) <= 0) {
+        $('#cd' + siblings[i].id)
+          .parent()
+          .before(li.html(div));
+        li.slideDown('fast');
+        return;
+      }
+    }
+
+    // If we get here, this comment rates lower than all the others,
+    // or it is the only comment in the list.
+    ul.append(li.html(div));
+    li.slideDown('fast');
+  }
+
+  function acceptComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.acceptCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        $('#cm' + id).fadeOut('fast');
+        $('#cd' + id).removeClass('moderate');
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem accepting the comment.');
+      }
+    });
+  }
+
+  function deleteComment(id) {
+    $.ajax({
+      type: 'POST',
+      url: opts.deleteCommentURL,
+      data: {id: id},
+      success: function(data, textStatus, request) {
+        var div = $('#cd' + id);
+        if (data == 'delete') {
+          // Moderator mode: remove the comment and all children immediately
+          div.slideUp('fast', function() {
+            div.remove();
+          });
+          return;
+        }
+        // User mode: only mark the comment as deleted
+        div
+          .find('span.user-id:first')
+          .text('[deleted]').end()
+          .find('div.comment-text:first')
+          .text('[deleted]').end()
+          .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+                ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+          .remove();
+        var comment = div.data('comment');
+        comment.username = '[deleted]';
+        comment.text = '[deleted]';
+        div.data('comment', comment);
+      },
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem deleting the comment.');
+      }
+    });
+  }
+
+  function showProposal(id) {
+    $('#sp' + id).hide();
+    $('#hp' + id).show();
+    $('#pr' + id).slideDown('fast');
+  }
+
+  function hideProposal(id) {
+    $('#hp' + id).hide();
+    $('#sp' + id).show();
+    $('#pr' + id).slideUp('fast');
+  }
+
+  function showProposeChange(id) {
+    $('#pc' + id).hide();
+    $('#hc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val(textarea.data('source'));
+    $.fn.autogrow.resize(textarea[0]);
+    textarea.slideDown('fast');
+  }
+
+  function hideProposeChange(id) {
+    $('#hc' + id).hide();
+    $('#pc' + id).show();
+    var textarea = $('#pt' + id);
+    textarea.val('').removeAttr('disabled');
+    textarea.slideUp('fast');
+  }
+
+  function toggleCommentMarkupBox(id) {
+    $('#mb' + id).toggle();
+  }
+
+  /** Handle when the user clicks on a sort by link. */
+  function handleReSort(link) {
+    var classes = link.attr('class').split(/\s+/);
+    for (var i=0; i<classes.length; i++) {
+      if (classes[i] != 'sort-option') {
+	by = classes[i].substring(2);
+      }
+    }
+    setComparator();
+    // Save/update the sortBy cookie.
+    var expiration = new Date();
+    expiration.setDate(expiration.getDate() + 365);
+    document.cookie= 'sortBy=' + escape(by) +
+                     ';expires=' + expiration.toUTCString();
+    $('ul.comment-ul').each(function(index, ul) {
+      var comments = getChildren($(ul), true);
+      comments = sortComments(comments);
+      appendComments(comments, $(ul).empty());
+    });
+  }
+
+  /**
+   * Function to process a vote when a user clicks an arrow.
+   */
+  function handleVote(link) {
+    if (!opts.voting) {
+      showError("You'll need to login to vote.");
+      return;
+    }
+
+    var id = link.attr('id');
+    if (!id) {
+      // Didn't click on one of the voting arrows.
+      return;
+    }
+    // If it is an unvote, the new vote value is 0,
+    // Otherwise it's 1 for an upvote, or -1 for a downvote.
+    var value = 0;
+    if (id.charAt(1) != 'u') {
+      value = id.charAt(0) == 'u' ? 1 : -1;
+    }
+    // The data to be sent to the server.
+    var d = {
+      comment_id: id.substring(2),
+      value: value
+    };
+
+    // Swap the vote and unvote links.
+    link.hide();
+    $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+      .show();
+
+    // The div the comment is displayed in.
+    var div = $('div#cd' + d.comment_id);
+    var data = div.data('comment');
+
+    // If this is not an unvote, and the other vote arrow has
+    // already been pressed, unpress it.
+    if ((d.value !== 0) && (data.vote === d.value * -1)) {
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+      $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+    }
+
+    // Update the comments rating in the local data.
+    data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+    data.vote = d.value;
+    div.data('comment', data);
+
+    // Change the rating text.
+    div.find('.rating:first')
+      .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+    // Send the vote information to the server.
+    $.ajax({
+      type: "POST",
+      url: opts.processVoteURL,
+      data: d,
+      error: function(request, textStatus, error) {
+        showError('Oops, there was a problem casting that vote.');
+      }
+    });
+  }
+
+  /**
+   * Open a reply form used to reply to an existing comment.
+   */
+  function openReply(id) {
+    // Swap out the reply link for the hide link
+    $('#rl' + id).hide();
+    $('#cr' + id).show();
+
+    // Add the reply li to the children ul.
+    var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+    $('#cl' + id)
+      .prepend(div)
+      // Setup the submit handler for the reply form.
+      .find('#rf' + id)
+      .submit(function(event) {
+        event.preventDefault();
+        addComment($('#rf' + id));
+        closeReply(id);
+      })
+      .find('input[type=button]')
+      .click(function() {
+        closeReply(id);
+      });
+    div.slideDown('fast', function() {
+      $('#rf' + id).find('textarea').focus();
+    });
+  }
+
+  /**
+   * Close the reply form opened with openReply.
+   */
+  function closeReply(id) {
+    // Remove the reply div from the DOM.
+    $('#rd' + id).slideUp('fast', function() {
+      $(this).remove();
+    });
+
+    // Swap out the hide link for the reply link
+    $('#cr' + id).hide();
+    $('#rl' + id).show();
+  }
+
+  /**
+   * Recursively sort a tree of comments using the comp comparator.
+   */
+  function sortComments(comments) {
+    comments.sort(comp);
+    $.each(comments, function() {
+      this.children = sortComments(this.children);
+    });
+    return comments;
+  }
+
+  /**
+   * Get the children comments from a ul. If recursive is true,
+   * recursively include childrens' children.
+   */
+  function getChildren(ul, recursive) {
+    var children = [];
+    ul.children().children("[id^='cd']")
+      .each(function() {
+        var comment = $(this).data('comment');
+        if (recursive)
+          comment.children = getChildren($(this).find('#cl' + comment.id), true);
+        children.push(comment);
+      });
+    return children;
+  }
+
+  /** Create a div to display a comment in. */
+  function createCommentDiv(comment) {
+    if (!comment.displayed && !opts.moderator) {
+      return $('<div class="moderate">Thank you!  Your comment will show up '
+               + 'once it is has been approved by a moderator.</div>');
+    }
+    // Prettify the comment rating.
+    comment.pretty_rating = comment.rating + ' point' +
+      (comment.rating == 1 ? '' : 's');
+    // Make a class (for displaying not yet moderated comments differently)
+    comment.css_class = comment.displayed ? '' : ' moderate';
+    // Create a div for this comment.
+    var context = $.extend({}, opts, comment);
+    var div = $(renderTemplate(commentTemplate, context));
+
+    // If the user has voted on this comment, highlight the correct arrow.
+    if (comment.vote) {
+      var direction = (comment.vote == 1) ? 'u' : 'd';
+      div.find('#' + direction + 'v' + comment.id).hide();
+      div.find('#' + direction + 'u' + comment.id).show();
+    }
+
+    if (opts.moderator || comment.text != '[deleted]') {
+      div.find('a.reply').show();
+      if (comment.proposal_diff)
+        div.find('#sp' + comment.id).show();
+      if (opts.moderator && !comment.displayed)
+        div.find('#cm' + comment.id).show();
+      if (opts.moderator || (opts.username == comment.username))
+        div.find('#dc' + comment.id).show();
+    }
+    return div;
+  }
+
+  /**
+   * A simple template renderer. Placeholders such as <%id%> are replaced
+   * by context['id'] with items being escaped. Placeholders such as <#id#>
+   * are not escaped.
+   */
+  function renderTemplate(template, context) {
+    var esc = $(document.createElement('div'));
+
+    function handle(ph, escape) {
+      var cur = context;
+      $.each(ph.split('.'), function() {
+        cur = cur[this];
+      });
+      return escape ? esc.text(cur || "").html() : cur;
+    }
+
+    return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+      return handle(arguments[2], arguments[1] == '%' ? true : false);
+    });
+  }
+
+  /** Flash an error message briefly. */
+  function showError(message) {
+    $(document.createElement('div')).attr({'class': 'popup-error'})
+      .append($(document.createElement('div'))
+               .attr({'class': 'error-message'}).text(message))
+      .appendTo('body')
+      .fadeIn("slow")
+      .delay(2000)
+      .fadeOut("slow");
+  }
+
+  /** Add a link the user uses to open the comments popup. */
+  $.fn.comment = function() {
+    return this.each(function() {
+      var id = $(this).attr('id').substring(1);
+      var count = COMMENT_METADATA[id];
+      var title = count + ' comment' + (count == 1 ? '' : 's');
+      var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+      var addcls = count == 0 ? ' nocomment' : '';
+      $(this)
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-open' + addcls,
+            id: 'ao' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: image,
+              alt: 'comment',
+              title: title
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              show($(this).attr('id').substring(2));
+            })
+        )
+        .append(
+          $(document.createElement('a')).attr({
+            href: '#',
+            'class': 'sphinx-comment-close hidden',
+            id: 'ah' + id
+          })
+            .append($(document.createElement('img')).attr({
+              src: opts.closeCommentImage,
+              alt: 'close',
+              title: 'close'
+            }))
+            .click(function(event) {
+              event.preventDefault();
+              hide($(this).attr('id').substring(2));
+            })
+        );
+    });
+  };
+
+  var opts = {
+    processVoteURL: '/_process_vote',
+    addCommentURL: '/_add_comment',
+    getCommentsURL: '/_get_comments',
+    acceptCommentURL: '/_accept_comment',
+    deleteCommentURL: '/_delete_comment',
+    commentImage: '/static/_static/comment.png',
+    closeCommentImage: '/static/_static/comment-close.png',
+    loadingImage: '/static/_static/ajax-loader.gif',
+    commentBrightImage: '/static/_static/comment-bright.png',
+    upArrow: '/static/_static/up.png',
+    downArrow: '/static/_static/down.png',
+    upArrowPressed: '/static/_static/up-pressed.png',
+    downArrowPressed: '/static/_static/down-pressed.png',
+    voting: false,
+    moderator: false
+  };
+
+  if (typeof COMMENT_OPTIONS != "undefined") {
+    opts = jQuery.extend(opts, COMMENT_OPTIONS);
+  }
+
+  var popupTemplate = '\
+    <div class="sphinx-comments" id="sc<%id%>">\
+      <p class="sort-options">\
+        Sort by:\
+        <a href="#" class="sort-option byrating">best rated</a>\
+        <a href="#" class="sort-option byascage">newest</a>\
+        <a href="#" class="sort-option byage">oldest</a>\
+      </p>\
+      <div class="comment-header">Comments</div>\
+      <div class="comment-loading" id="cn<%id%>">\
+        loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+      <ul id="cl<%id%>" class="comment-ul"></ul>\
+      <div id="ca<%id%>">\
+      <p class="add-a-comment">Add a comment\
+        (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+      <div class="comment-markup-box" id="mb<%id%>">\
+        reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+        <tt>``code``</tt>, \
+        code blocks: <tt>::</tt> and an indented block after blank line</div>\
+      <form method="post" id="cf<%id%>" class="comment-form" action="">\
+        <textarea name="comment" cols="80"></textarea>\
+        <p class="propose-button">\
+          <a href="#" id="pc<%id%>" class="show-propose-change">\
+            Propose a change &#9657;\
+          </a>\
+          <a href="#" id="hc<%id%>" class="hide-propose-change">\
+            Propose a change &#9663;\
+          </a>\
+        </p>\
+        <textarea name="proposal" id="pt<%id%>" cols="80"\
+                  spellcheck="false"></textarea>\
+        <input type="submit" value="Add comment" />\
+        <input type="hidden" name="node" value="<%id%>" />\
+        <input type="hidden" name="parent" value="" />\
+      </form>\
+      </div>\
+    </div>';
+
+  var commentTemplate = '\
+    <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+      <div class="vote">\
+        <div class="arrow">\
+          <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+            <img src="<%upArrow%>" />\
+          </a>\
+          <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+            <img src="<%upArrowPressed%>" />\
+          </a>\
+        </div>\
+        <div class="arrow">\
+          <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+            <img src="<%downArrow%>" id="da<%id%>" />\
+          </a>\
+          <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+            <img src="<%downArrowPressed%>" />\
+          </a>\
+        </div>\
+      </div>\
+      <div class="comment-content">\
+        <p class="tagline comment">\
+          <span class="user-id"><%username%></span>\
+          <span class="rating"><%pretty_rating%></span>\
+          <span class="delta"><%time.delta%></span>\
+        </p>\
+        <div class="comment-text comment"><#text#></div>\
+        <p class="comment-opts comment">\
+          <a href="#" class="reply hidden" id="rl<%id%>">reply &#9657;</a>\
+          <a href="#" class="close-reply" id="cr<%id%>">reply &#9663;</a>\
+          <a href="#" id="sp<%id%>" class="show-proposal">proposal &#9657;</a>\
+          <a href="#" id="hp<%id%>" class="hide-proposal">proposal &#9663;</a>\
+          <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+          <span id="cm<%id%>" class="moderation hidden">\
+            <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+          </span>\
+        </p>\
+        <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+        </pre>\
+          <ul class="comment-children" id="cl<%id%>"></ul>\
+        </div>\
+        <div class="clearleft"></div>\
+      </div>\
+    </div>';
+
+  var replyTemplate = '\
+    <li>\
+      <div class="reply-div" id="rd<%id%>">\
+        <form id="rf<%id%>">\
+          <textarea name="comment" cols="80"></textarea>\
+          <input type="submit" value="Add reply" />\
+          <input type="button" value="Cancel" />\
+          <input type="hidden" name="parent" value="<%id%>" />\
+          <input type="hidden" name="node" value="" />\
+        </form>\
+      </div>\
+    </li>';
+
+  $(document).ready(function() {
+    init();
+  });
+})(jQuery);
+
+$(document).ready(function() {
+  // add comment anchors for all paragraphs that are commentable
+  $('.sphinx-has-comment').comment();
+
+  // highlight search words in search results
+  $("div.context").each(function() {
+    var params = $.getQueryParameters();
+    var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+    var result = $(this);
+    $.each(terms, function() {
+      result.highlightText(this.toLowerCase(), 'highlighted');
+    });
+  });
+
+  // directly open comment window if requested
+  var anchor = document.location.hash;
+  if (anchor.substring(0, 9) == '#comment-') {
+    $('#ao' + anchor.substring(9)).click();
+    document.location.hash = '#s' + anchor.substring(9);
+  }
+});
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/changelog.html
@@ -0,0 +1,271 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Release history &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="License" href="license.html" />
+    <link rel="prev" title="Altgraph - A basic graph library" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="license.html" title="License"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Altgraph - A basic graph library"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="release-history">
+<h1>Release history<a class="headerlink" href="#release-history" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="id1">
+<h2>0.11<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Stabilize the order of elements in dot file exports,
+patch from bitbucket user &#8216;pombredanne&#8217;.</li>
+<li>Tweak setup.py file to remove dependency on distribute (but
+keep the dependency on setuptools)</li>
+</ul>
+</div>
+<div class="section" id="id2">
+<h2>0.10.2<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>There where no classifiers in the package metadata due to a bug
+in setup.py</li>
+</ul>
+</div>
+<div class="section" id="id3">
+<h2>0.10.1<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
+<p>This is a bugfix release</p>
+<p>Bug fixes:</p>
+<ul>
+<li><p class="first">Issue #3: The source archive contains a README.txt
+while the setup file refers to ReadMe.txt.</p>
+<p>This is caused by a misfeature in distutils, as a
+workaround I&#8217;ve renamed ReadMe.txt to README.txt
+in the source tree and setup file.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id4">
+<h2>0.10<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
+<p>This is a minor feature release</p>
+<p>Features:</p>
+<ul>
+<li><p class="first">Do not use &#8220;2to3&#8221; to support Python 3.</p>
+<p>As a side effect of this altgraph now supports
+Python 2.6 and later, and no longer supports
+earlier releases of Python.</p>
+</li>
+<li><p class="first">The order of attributes in the Dot output
+is now always alphabetical.</p>
+<p>With this change the output will be consistent
+between runs and Python versions.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="id5">
+<h2>0.9<a class="headerlink" href="#id5" title="Permalink to this headline">¶</a></h2>
+<p>This is a minor bugfix release</p>
+<p>Features:</p>
+<ul class="simple">
+<li>Added <tt class="docutils literal"><span class="pre">altgraph.ObjectGraph.ObjectGraph.nodes</span></tt>, a method
+yielding all nodes in an object graph.</li>
+</ul>
+<p>Bugfixes:</p>
+<ul class="simple">
+<li>The 0.8 release didn&#8217;t work with py2app when using
+python 3.x.</li>
+</ul>
+</div>
+<div class="section" id="id6">
+<h2>0.8<a class="headerlink" href="#id6" title="Permalink to this headline">¶</a></h2>
+<p>This is a minor feature release. The major new feature
+is a extensive set of unittests, which explains almost
+all other changes in this release.</p>
+<p>Bugfixes:</p>
+<ul class="simple">
+<li>Installing failed with Python 2.5 due to using a distutils
+class that isn&#8217;t available in that version of Python
+(issue #1 on the issue tracker)</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.GraphStat.degree_dist</span></tt> now actually works</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.add_edge(a,</span> <span class="pre">b,</span> <span class="pre">create_nodes=False)</span></tt> will
+no longer create the edge when one of the nodes doesn&#8217;t
+exist.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.forw_topo_sort</span></tt> failed for some sparse graphs.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.back_topo_sort</span></tt> was completely broken in
+previous releases.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.forw_bfs_subgraph</span></tt> now actually works.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.back_bfs_subgraph</span></tt> now actually works.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.iterdfs</span></tt> now returns the correct result
+when the <tt class="docutils literal"><span class="pre">forward</span></tt> argument is <tt class="docutils literal"><span class="pre">False</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.iterdata</span></tt> now returns the correct result
+when the <tt class="docutils literal"><span class="pre">forward</span></tt> argument is <tt class="docutils literal"><span class="pre">False</span></tt>.</li>
+</ul>
+<p>Features:</p>
+<ul class="simple">
+<li>The <tt class="docutils literal"><span class="pre">altgraph.Graph</span></tt> constructor now accepts an argument
+that contains 2- and 3-tuples instead of requireing that
+all items have the same size. The (optional) argument can now
+also be any iterator.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Graph.Graph.add_node</span></tt> has no effect when you
+add a hidden node.</li>
+<li>The private method <tt class="docutils literal"><span class="pre">altgraph.Graph._bfs</span></tt> is no longer
+present.</li>
+<li>The private method <tt class="docutils literal"><span class="pre">altgraph.Graph._dfs</span></tt> is no longer
+present.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.ObjectGraph</span></tt> now has a <tt class="docutils literal"><span class="pre">__contains__</span></tt> methods,
+which means you can use the <tt class="docutils literal"><span class="pre">in</span></tt> operator to check if a
+node is part of a graph.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.GraphUtil.generate_random_graph</span></tt> will raise
+<tt class="docutils literal"><span class="pre">GraphError</span></tt> instead of looping forever when it is
+impossible to create the requested graph.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Dot.edge_style</span></tt> raises <tt class="docutils literal"><span class="pre">GraphError</span></tt> when
+one of the nodes is not present in the graph. The method
+silently added the tail in the past, but without ensuring
+a consistent graph state.</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.Dot.save_img</span></tt> now works when the mode is
+<tt class="docutils literal"><span class="pre">&quot;neato&quot;</span></tt>.</li>
+</ul>
+</div>
+<div class="section" id="id7">
+<h2>0.7.2<a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
+<p>This is a minor bugfix release</p>
+<p>Bugfixes:</p>
+<ul class="simple">
+<li>distutils didn&#8217;t include the documentation subtree</li>
+</ul>
+</div>
+<div class="section" id="id8">
+<h2>0.7.1<a class="headerlink" href="#id8" title="Permalink to this headline">¶</a></h2>
+<p>This is a minor feature release</p>
+<p>Features:</p>
+<ul class="simple">
+<li>Documentation is now generated using <a class="reference external" href="http://pypi.python.org/pypi/sphinx">sphinx</a>
+and can be viewed at &lt;<a class="reference external" href="http://packages.python.org/altgraph">http://packages.python.org/altgraph</a>&gt;.</li>
+<li>The repository has moved to bitbucket</li>
+<li><tt class="docutils literal"><span class="pre">altgraph.GraphStat.avg_hops</span></tt> is no longer present, the function had no
+implementation and no specified behaviour.</li>
+<li>the module <tt class="docutils literal"><span class="pre">altgraph.compat</span></tt> is gone, which means altgraph will no
+longer work with Python 2.3.</li>
+</ul>
+</div>
+<div class="section" id="id9">
+<h2>0.7.0<a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
+<p>This is a minor feature release.</p>
+<p>Features:</p>
+<ul>
+<li><p class="first">Support for Python 3</p>
+</li>
+<li><p class="first">It is now possible to run tests using &#8216;python setup.py test&#8217;</p>
+<p>(The actual testsuite is still very minimal though)</p>
+</li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Release history</a><ul>
+<li><a class="reference internal" href="#id1">0.11</a></li>
+<li><a class="reference internal" href="#id2">0.10.2</a></li>
+<li><a class="reference internal" href="#id3">0.10.1</a></li>
+<li><a class="reference internal" href="#id4">0.10</a></li>
+<li><a class="reference internal" href="#id5">0.9</a></li>
+<li><a class="reference internal" href="#id6">0.8</a></li>
+<li><a class="reference internal" href="#id7">0.7.2</a></li>
+<li><a class="reference internal" href="#id8">0.7.1</a></li>
+<li><a class="reference internal" href="#id9">0.7.0</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="index.html"
+                        title="previous chapter">Altgraph - A basic graph library</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="license.html"
+                        title="next chapter">License</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="license.html" title="License"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Altgraph - A basic graph library"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/core.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>altgraph — A Python Graph Library &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="altgraph.Graph — Basic directional graphs" href="graph.html" />
+    <link rel="prev" title="License" href="license.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graph.html" title="altgraph.Graph — Basic directional graphs"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="license.html" title="License"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-altgraph">
+<span id="altgraph-a-python-graph-library"></span><h1><a class="reference internal" href="#module-altgraph" title="altgraph: A directional graph for python"><tt class="xref py py-mod docutils literal"><span class="pre">altgraph</span></tt></a> &#8212; A Python Graph Library<a class="headerlink" href="#module-altgraph" title="Permalink to this headline">¶</a></h1>
+<p>altgraph is a fork of <a class="reference external" href="http://pygraphlib.sourceforge.net">graphlib</a> tailored
+to use newer Python 2.3+ features, including additional support used by the
+py2app suite (modulegraph and macholib, specifically).</p>
+<p>altgraph is a python based graph (network) representation and manipulation package.
+It has started out as an extension to the <a class="reference external" href="http://www.ece.arizona.edu/~denny/python_nest/graph_lib_1.0.1.html">graph_lib module</a>
+written by Nathan Denny it has been significantly optimized and expanded.</p>
+<p>The <a class="reference internal" href="graph.html#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">altgraph.Graph.Graph</span></tt></a> class is loosely modeled after the <a class="reference external" href="http://www.algorithmic-solutions.com/enleda.htm">LEDA</a>
+(Library of Efficient Datatypes)  representation. The library
+includes methods for constructing graphs, BFS and DFS traversals,
+topological sort, finding connected components, shortest paths as well as a number
+graph statistics functions. The library can also visualize graphs
+via <a class="reference external" href="http://www.research.att.com/sw/tools/graphviz/">graphviz</a>.</p>
+<dl class="exception">
+<dt id="altgraph.GraphError">
+<em class="property">exception </em><tt class="descclassname">altgraph.</tt><tt class="descname">GraphError</tt><a class="headerlink" href="#altgraph.GraphError" title="Permalink to this definition">¶</a></dt>
+<dd><p>Exception raised when methods are called with bad values of
+an inconsistent state.</p>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="license.html"
+                        title="previous chapter">License</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="graph.html"
+                        title="next chapter"><tt class="docutils literal"><span class="pre">altgraph.Graph</span></tt> &#8212; Basic directional graphs</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graph.html" title="altgraph.Graph — Basic directional graphs"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="license.html" title="License"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/dot.html
@@ -0,0 +1,332 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>altgraph.Dot — Interface to the dot language &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="prev" title="altgraph.GraphUtil — Utility functions" href="graphutil.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphutil.html" title="altgraph.GraphUtil — Utility functions"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-altgraph.Dot">
+<span id="altgraph-dot-interface-to-the-dot-language"></span><h1><a class="reference internal" href="#module-altgraph.Dot" title="altgraph.Dot: Interface to the dot language as used by Graphviz.."><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.Dot</span></tt></a> &#8212; Interface to the dot language<a class="headerlink" href="#module-altgraph.Dot" title="Permalink to this headline">¶</a></h1>
+<p>The <a class="reference internal" href="#module-altgraph.Dot" title="altgraph.Dot: Interface to the dot language as used by Graphviz.."><tt class="xref py py-mod docutils literal"><span class="pre">Dot</span></tt></a> module provides a simple interface to the
+file format used in the <a class="reference external" href="&lt;http://www.research.att.com/sw/tools/graphviz/&gt;`_">graphviz</a> program. The module is intended to
+offload the most tedious part of the process (the <strong>dot</strong> file generation)
+while transparently exposing most of its features.</p>
+<p>To display the graphs or to generate image files the <a class="reference external" href="&lt;http://www.research.att.com/sw/tools/graphviz/&gt;`_">graphviz</a>
+package needs to be installed on the system, moreover the <strong class="command">dot</strong> and <strong class="command">dotty</strong> programs must
+be accesible in the program path so that they can be ran from processes spawned
+within the module.</p>
+<div class="section" id="example-usage">
+<h2>Example usage<a class="headerlink" href="#example-usage" title="Permalink to this headline">¶</a></h2>
+<p>Here is a typical usage:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">altgraph</span> <span class="kn">import</span> <span class="n">Graph</span><span class="p">,</span> <span class="n">Dot</span>
+
+<span class="c"># create a graph</span>
+<span class="n">edges</span> <span class="o">=</span> <span class="p">[</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span> <span class="p">]</span>
+<span class="n">graph</span> <span class="o">=</span> <span class="n">Graph</span><span class="o">.</span><span class="n">Graph</span><span class="p">(</span><span class="n">edges</span><span class="p">)</span>
+
+<span class="c"># create a dot representation of the graph</span>
+<span class="n">dot</span> <span class="o">=</span> <span class="n">Dot</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span><span class="n">graph</span><span class="p">)</span>
+
+<span class="c"># display the graph</span>
+<span class="n">dot</span><span class="o">.</span><span class="n">display</span><span class="p">()</span>
+
+<span class="c"># save the dot representation into the mydot.dot file</span>
+<span class="n">dot</span><span class="o">.</span><span class="n">save_dot</span><span class="p">(</span><span class="n">file_name</span><span class="o">=</span><span class="s">&#39;mydot.dot&#39;</span><span class="p">)</span>
+
+<span class="c"># save dot file as gif image into the graph.gif file</span>
+<span class="n">dot</span><span class="o">.</span><span class="n">save_img</span><span class="p">(</span><span class="n">file_name</span><span class="o">=</span><span class="s">&#39;graph&#39;</span><span class="p">,</span> <span class="n">file_type</span><span class="o">=</span><span class="s">&#39;gif&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="directed-graph-and-non-directed-graph">
+<h2>Directed graph and non-directed graph<a class="headerlink" href="#directed-graph-and-non-directed-graph" title="Permalink to this headline">¶</a></h2>
+<p>Dot class can use for both directed graph and non-directed graph
+by passing <em>graphtype</em> parameter.</p>
+<p>Example:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># create directed graph(default)</span>
+<span class="n">dot</span> <span class="o">=</span> <span class="n">Dot</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">graphtype</span><span class="o">=</span><span class="s">&quot;digraph&quot;</span><span class="p">)</span>
+
+<span class="c"># create non-directed graph</span>
+<span class="n">dot</span> <span class="o">=</span> <span class="n">Dot</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">graphtype</span><span class="o">=</span><span class="s">&quot;graph&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="customizing-the-output">
+<h2>Customizing the output<a class="headerlink" href="#customizing-the-output" title="Permalink to this headline">¶</a></h2>
+<p>The graph drawing process may be customized by passing
+valid <strong class="command">dot</strong> parameters for the nodes and edges. For a list of all
+parameters see the <a class="reference external" href="&lt;http://www.research.att.com/sw/tools/graphviz/&gt;`_">graphviz</a> documentation.</p>
+<p>Example:</p>
+<div class="highlight-python"><div class="highlight"><pre># customizing the way the overall graph is drawn
+dot.style(size=&#39;10,10&#39;, rankdir=&#39;RL&#39;, page=&#39;5, 5&#39; , ranksep=0.75)
+
+# customizing node drawing
+dot.node_style(1, label=&#39;BASE_NODE&#39;,shape=&#39;box&#39;, color=&#39;blue&#39; )
+dot.node_style(2, style=&#39;filled&#39;, fillcolor=&#39;red&#39;)
+
+# customizing edge drawing
+dot.edge_style(1, 2, style=&#39;dotted&#39;)
+dot.edge_style(3, 5, arrowhead=&#39;dot&#39;, label=&#39;binds&#39;, labelangle=&#39;90&#39;)
+dot.edge_style(4, 5, arrowsize=2, style=&#39;bold&#39;)
+
+
+.. note::
+
+   dotty (invoked via :py:func:`~altgraph.Dot.display`) may not be able to
+   display all graphics styles. To verify the output save it to an image
+   file and look at it that way.
+</pre></div>
+</div>
+</div>
+<div class="section" id="valid-attributes">
+<h2>Valid attributes<a class="headerlink" href="#valid-attributes" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">dot styles, passed via the <a class="reference internal" href="#altgraph.Dot.Dot.style" title="altgraph.Dot.Dot.style"><tt class="xref py py-meth docutils literal"><span class="pre">Dot.style()</span></tt></a> method:</p>
+<div class="highlight-python"><div class="highlight"><pre>rankdir = &#39;LR&#39;   (draws the graph horizontally, left to right)
+ranksep = number (rank separation in inches)
+</pre></div>
+</div>
+</li>
+<li><p class="first">node attributes, passed via the <a class="reference internal" href="#altgraph.Dot.Dot.node_style" title="altgraph.Dot.Dot.node_style"><tt class="xref py py-meth docutils literal"><span class="pre">Dot.node_style()</span></tt></a> method:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">style</span> <span class="o">=</span> <span class="s">&#39;filled&#39;</span> <span class="o">|</span> <span class="s">&#39;invisible&#39;</span> <span class="o">|</span> <span class="s">&#39;diagonals&#39;</span> <span class="o">|</span> <span class="s">&#39;rounded&#39;</span>
+<span class="n">shape</span> <span class="o">=</span> <span class="s">&#39;box&#39;</span> <span class="o">|</span> <span class="s">&#39;ellipse&#39;</span> <span class="o">|</span> <span class="s">&#39;circle&#39;</span> <span class="o">|</span> <span class="s">&#39;point&#39;</span> <span class="o">|</span> <span class="s">&#39;triangle&#39;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">edge attributes, passed via the <tt class="xref py py-meth docutils literal"><span class="pre">Dot.edge_style()</span></tt> method:</p>
+<div class="highlight-python"><div class="highlight"><pre>style     = &#39;dashed&#39; | &#39;dotted&#39; | &#39;solid&#39; | &#39;invis&#39; | &#39;bold&#39;
+arrowhead = &#39;box&#39; | &#39;crow&#39; | &#39;diamond&#39; | &#39;dot&#39; | &#39;inv&#39; | &#39;none&#39; | &#39;tee&#39; | &#39;vee&#39;
+weight    = number (the larger the number the closer the nodes will be)
+</pre></div>
+</div>
+</li>
+<li><p class="first">valid <a class="reference external" href="http://www.research.att.com/~erg/graphviz/info/colors.html">graphviz colors</a></p>
+</li>
+<li><p class="first">for more details on how to control the graph drawing process see the
+<a class="reference external" href="http://www.research.att.com/sw/tools/graphviz/refs.html">graphviz reference</a>.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="class-interface">
+<h2>Class interface<a class="headerlink" href="#class-interface" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="altgraph.Dot.Dot">
+<em class="property">class </em><tt class="descclassname">altgraph.Dot.</tt><tt class="descname">Dot</tt><big>(</big><em>graph</em><span class="optional">[</span>, <em>nodes</em><span class="optional">[</span>, <em>edgefn</em><span class="optional">[</span>, <em>nodevisitor</em><span class="optional">[</span>, <em>edgevisitor</em><span class="optional">[</span>, <em>name</em><span class="optional">[</span>, <em>dot</em><span class="optional">[</span>, <em>dotty</em><span class="optional">[</span>, <em>neato</em><span class="optional">[</span>, <em>graphtype</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Dot.Dot" title="Permalink to this definition">¶</a></dt>
+<dd><p>Creates a new Dot generator based on the specified
+<a class="reference internal" href="graph.html#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">Graph</span></tt></a>.  The Dot generator won&#8217;t reference
+the <em>graph</em> once it is constructed.</p>
+<p>If the <em>nodes</em> argument is present it is the list of nodes to include
+in the graph, otherwise all nodes in <em>graph</em> are included.</p>
+<p>If the <em>edgefn</em> argument is present it is a function that yields the
+nodes connected to another node, this defaults to
+<tt class="xref py py-meth docutils literal"><span class="pre">graph.out_nbr</span></tt>. The constructor won&#8217;t
+add edges to the dot file unless both the head and tail of the edge
+are in <em>nodes</em>.</p>
+<p>If the <em>name</em> is present it specifies the name of the graph in the resulting
+dot file. The default is <tt class="docutils literal"><span class="pre">&quot;G&quot;</span></tt>.</p>
+<p>The functions <em>nodevisitor</em> and <em>edgevisitor</em> return the default style
+for a given edge or node (both default to functions that return an empty
+style).</p>
+<p>The arguments <em>dot</em>, <em>dotty</em> and <em>neato</em> are used to pass the path to
+the corresponding <a class="reference external" href="&lt;http://www.research.att.com/sw/tools/graphviz/&gt;`_">graphviz</a> command.</p>
+</dd></dl>
+
+<div class="section" id="updating-graph-attributes">
+<h3>Updating graph attributes<a class="headerlink" href="#updating-graph-attributes" title="Permalink to this headline">¶</a></h3>
+<dl class="method">
+<dt id="altgraph.Dot.Dot.style">
+<tt class="descclassname">Dot.</tt><tt class="descname">style</tt><big>(</big><em>**attr</em><big>)</big><a class="headerlink" href="#altgraph.Dot.Dot.style" title="Permalink to this definition">¶</a></dt>
+<dd><p>Sets the overall style (graph attributes) to the given attributes.</p>
+<p>See <a class="reference internal" href="#valid-attributes">Valid Attributes</a> for more information about the attributes.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Dot.Dot.node_style">
+<tt class="descclassname">Dot.</tt><tt class="descname">node_style</tt><big>(</big><em>node</em>, <em>**attr</em><big>)</big><a class="headerlink" href="#altgraph.Dot.Dot.node_style" title="Permalink to this definition">¶</a></dt>
+<dd><p>Sets the style for <em>node</em> to the given attributes.</p>
+<p>This method will add <em>node</em> to the graph when it isn&#8217;t already
+present.</p>
+<p>See <a class="reference internal" href="#valid-attributes">Valid Attributes</a> for more information about the attributes.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Dot.Dot.all_node_style">
+<tt class="descclassname">Dot.</tt><tt class="descname">all_node_style</tt><big>(</big><em>**attr</em><big>)</big><a class="headerlink" href="#altgraph.Dot.Dot.all_node_style" title="Permalink to this definition">¶</a></dt>
+<dd><p>Replaces the current style for all nodes</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Dot.edge_style">
+<tt class="descclassname">altgraph.Dot.</tt><tt class="descname">edge_style</tt><big>(</big><em>head</em>, <em>tail</em>, <em>**attr</em><big>)</big><a class="headerlink" href="#altgraph.Dot.edge_style" title="Permalink to this definition">¶</a></dt>
+<dd><p>Sets the style of an edge to the given attributes. The edge will
+be added to the graph when it isn&#8217;t already present, but <em>head</em>
+and <em>tail</em> must both be valid nodes.</p>
+<p>See <a class="reference internal" href="#valid-attributes">Valid Attributes</a> for more information about the attributes.</p>
+</dd></dl>
+
+</div>
+<div class="section" id="emitting-output">
+<h3>Emitting output<a class="headerlink" href="#emitting-output" title="Permalink to this headline">¶</a></h3>
+<dl class="method">
+<dt id="altgraph.Dot.Dot.display">
+<tt class="descclassname">Dot.</tt><tt class="descname">display</tt><big>(</big><span class="optional">[</span><em>mode</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Dot.Dot.display" title="Permalink to this definition">¶</a></dt>
+<dd><p>Displays the current graph via dotty.</p>
+<p>If the <em>mode</em> is <tt class="docutils literal"><span class="pre">&quot;neato&quot;</span></tt> the dot file is processed with
+the neato command before displaying.</p>
+<p>This method won&#8217;t return until the dotty command exits.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Dot.save_dot">
+<tt class="descclassname">altgraph.Dot.</tt><tt class="descname">save_dot</tt><big>(</big><em>filename</em><big>)</big><a class="headerlink" href="#altgraph.Dot.save_dot" title="Permalink to this definition">¶</a></dt>
+<dd><p>Saves the current graph representation into the given file.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p>For backward compatibility reasons this method can also
+be called without an argument, it will then write the graph
+into a fixed filename (present in the attribute <tt class="xref py py-data docutils literal"><span class="pre">Graph.temp_dot</span></tt>).</p>
+<p class="last">This feature is deprecated and should not be used.</p>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Dot.save_image">
+<tt class="descclassname">altgraph.Dot.</tt><tt class="descname">save_image</tt><big>(</big><em>file_name</em><span class="optional">[</span>, <em>file_type</em><span class="optional">[</span>, <em>mode</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Dot.save_image" title="Permalink to this definition">¶</a></dt>
+<dd><p>Saves the current graph representation as an image file. The output
+is written into a file whose basename is <em>file_name</em> and whose suffix
+is <em>file_type</em>.</p>
+<p>The <em>file_type</em> specifies the type of file to write, the default
+is <tt class="docutils literal"><span class="pre">&quot;gif&quot;</span></tt>.</p>
+<p>If the <em>mode</em> is <tt class="docutils literal"><span class="pre">&quot;neato&quot;</span></tt> the dot file is processed with
+the neato command before displaying.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p>For backward compatibility reasons this method can also
+be called without an argument, it will then write the graph
+with a fixed basename (<tt class="docutils literal"><span class="pre">&quot;out&quot;</span></tt>).</p>
+<p class="last">This feature is deprecated and should not be used.</p>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Dot.iterdot">
+<tt class="descclassname">altgraph.Dot.</tt><tt class="descname">iterdot</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Dot.iterdot" title="Permalink to this definition">¶</a></dt>
+<dd><p>Yields all lines of a <a class="reference external" href="&lt;http://www.research.att.com/sw/tools/graphviz/&gt;`_">graphviz</a> input file (including line endings).</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Dot.__iter__">
+<tt class="descclassname">altgraph.Dot.</tt><tt class="descname">__iter__</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Dot.__iter__" title="Permalink to this definition">¶</a></dt>
+<dd><p>Alias for the <a class="reference internal" href="#altgraph.Dot.iterdot" title="altgraph.Dot.iterdot"><tt class="xref py py-meth docutils literal"><span class="pre">iterdot()</span></tt></a> method.</p>
+</dd></dl>
+
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#"><tt class="docutils literal"><span class="pre">altgraph.Dot</span></tt> &#8212; Interface to the dot language</a><ul>
+<li><a class="reference internal" href="#example-usage">Example usage</a></li>
+<li><a class="reference internal" href="#directed-graph-and-non-directed-graph">Directed graph and non-directed graph</a></li>
+<li><a class="reference internal" href="#customizing-the-output">Customizing the output</a></li>
+<li><a class="reference internal" href="#valid-attributes">Valid attributes</a></li>
+<li><a class="reference internal" href="#class-interface">Class interface</a><ul>
+<li><a class="reference internal" href="#updating-graph-attributes">Updating graph attributes</a></li>
+<li><a class="reference internal" href="#emitting-output">Emitting output</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="graphutil.html"
+                        title="previous chapter"><tt class="docutils literal"><span class="pre">altgraph.GraphUtil</span></tt> &#8212; Utility functions</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphutil.html" title="altgraph.GraphUtil — Utility functions"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/genindex.html
@@ -0,0 +1,604 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Index &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#_"><strong>_</strong></a>
+ | <a href="#A"><strong>A</strong></a>
+ | <a href="#B"><strong>B</strong></a>
+ | <a href="#C"><strong>C</strong></a>
+ | <a href="#D"><strong>D</strong></a>
+ | <a href="#E"><strong>E</strong></a>
+ | <a href="#F"><strong>F</strong></a>
+ | <a href="#G"><strong>G</strong></a>
+ | <a href="#H"><strong>H</strong></a>
+ | <a href="#I"><strong>I</strong></a>
+ | <a href="#M"><strong>M</strong></a>
+ | <a href="#N"><strong>N</strong></a>
+ | <a href="#O"><strong>O</strong></a>
+ | <a href="#R"><strong>R</strong></a>
+ | <a href="#S"><strong>S</strong></a>
+ | <a href="#T"><strong>T</strong></a>
+ 
+</div>
+<h2 id="_">_</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.__contains__">__contains__() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.__contains__">(altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      </dl></dd>
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.__iter__">__iter__() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      <dd><dl>
+        
+  <dt><a href="dot.html#altgraph.Dot.__iter__">(in module altgraph.Dot)</a>
+  </dt>
+
+      </dl></dd>
+  </dl></td>
+</tr></table>
+
+<h2 id="A">A</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.add_edge">add_edge() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.add_node">add_node() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.addNode">addNode() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.all_degree">all_degree() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.all_edges">all_edges() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.all_nbrs">all_nbrs() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.Dot.all_node_style">all_node_style() (altgraph.Dot.Dot method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="core.html#module-altgraph">altgraph (module)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#module-altgraph.Dot">altgraph.Dot (module)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#module-altgraph.Graph">altgraph.Graph (module)</a>
+  </dt>
+
+      
+  <dt><a href="graphalgo.html#module-altgraph.GraphAlgo">altgraph.GraphAlgo (module)</a>
+  </dt>
+
+      
+  <dt><a href="graphstat.html#module-altgraph.GraphStat">altgraph.GraphStat (module)</a>
+  </dt>
+
+      
+  <dt><a href="graphutil.html#module-altgraph.GraphUtil">altgraph.GraphUtil (module)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#module-altgraph.ObjectGraph">altgraph.ObjectGraph (module)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="B">B</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.back_bfs">back_bfs() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.back_bfs_subgraph">back_bfs_subgraph() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.back_topo_sort">back_topo_sort() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.clust_coef">clust_coef() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.connected">connected() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.createNode">createNode() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.createReferences">createReferences() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="D">D</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graphstat.html#altgraph.GraphStat.degree_dist">degree_dist() (in module altgraph.GraphStat)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.describe_edge">describe_edge() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.describe_node">describe_node() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graphalgo.html#altgraph.GraphAlgo.dijkstra">dijkstra() (in module altgraph.GraphAlgo)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.Dot.display">display() (altgraph.Dot.Dot method)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.Dot">Dot (class in altgraph.Dot)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="E">E</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.edge_by_id">edge_by_id() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.edge_by_node">edge_by_node() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.edge_data">edge_data() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.edge_list">edge_list() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.edge_style">edge_style() (in module altgraph.Dot)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="F">F</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graphutil.html#altgraph.GraphUtil.filter_stack">filter_stack() (in module altgraph.GraphUtil)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.filterStack">filterStack() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.findNode">findNode() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.flatten">flatten() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.forw_bfs">forw_bfs() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.forw_bfs_subgraph">forw_bfs_subgraph() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.forw_topo_sort">forw_topo_sort() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="G">G</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graphutil.html#altgraph.GraphUtil.generate_random_graph">generate_random_graph() (in module altgraph.GraphUtil)</a>
+  </dt>
+
+      
+  <dt><a href="graphutil.html#altgraph.GraphUtil.generate_scale_free_graph">generate_scale_free_graph() (in module altgraph.GraphUtil)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.get_edges">get_edges() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.get_hops">get_hops() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.getIdent">getIdent() (in module altgraph.ObjectGraph)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.getRawIdent">getRawIdent() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph">Graph (class in altgraph.Graph)</a>
+  </dt>
+
+      
+  <dt><a href="core.html#altgraph.GraphError">GraphError</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="H">H</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.head">head() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.hidden_edge_list">hidden_edge_list() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.hidden_node_list">hidden_node_list() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.hide_edge">hide_edge() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.hide_node">hide_node() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="I">I</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.inc_degree">inc_degree() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.inc_edges">inc_edges() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.inc_nbrs">inc_nbrs() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.iterdata">iterdata() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.iterdfs">iterdfs() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.iterdot">iterdot() (in module altgraph.Dot)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="M">M</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.msg">msg() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.msgin">msgin() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.msgout">msgout() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="N">N</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.node_data">node_data() (in module altgraph.Graph)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.node_list">node_list() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.Dot.node_style">node_style() (altgraph.Dot.Dot method)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.nodes">nodes() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.number_of_edges">number_of_edges() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.number_of_hidden_edges">number_of_hidden_edges() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.number_of_hidden_nodes">number_of_hidden_nodes() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.number_of_nodes">number_of_nodes() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="O">O</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph">ObjectGraph (class in altgraph.ObjectGraph)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.debug">ObjectGraph.debug (in module altgraph.ObjectGraph)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.graph">ObjectGraph.graph (in module altgraph.ObjectGraph)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.out_degree">out_degree() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.out_edges">out_edges() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.out_nbrs">out_nbrs() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="R">R</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.ObjectGraph.removeNode">removeNode() (altgraph.ObjectGraph.ObjectGraph method)</a>
+  </dt>
+
+      
+  <dt><a href="objectgraph.html#altgraph.ObjectGraph.removeReference">removeReference() (in module altgraph.ObjectGraph)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.restore_all_edges">restore_all_edges() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.restore_all_nodes">restore_all_nodes() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.restore_edge">restore_edge() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.restore_node">restore_node() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="S">S</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="dot.html#altgraph.Dot.save_dot">save_dot() (in module altgraph.Dot)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.save_image">save_image() (in module altgraph.Dot)</a>
+  </dt>
+
+  </dl></td>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graphalgo.html#altgraph.GraphAlgo.shortest_path">shortest_path() (in module altgraph.GraphAlgo)</a>
+  </dt>
+
+      
+  <dt><a href="dot.html#altgraph.Dot.Dot.style">style() (altgraph.Dot.Dot method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+<h2 id="T">T</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+      
+  <dt><a href="graph.html#altgraph.Graph.Graph.tail">tail() (altgraph.Graph.Graph method)</a>
+  </dt>
+
+  </dl></td>
+</tr></table>
+
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+
+   
+
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/graph.html
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>altgraph.Graph — Basic directional graphs &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="altgraph.ObjectGraph — Graphs of objecs with an identifier" href="objectgraph.html" />
+    <link rel="prev" title="altgraph — A Python Graph Library" href="core.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="objectgraph.html" title="altgraph.ObjectGraph — Graphs of objecs with an identifier"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="core.html" title="altgraph — A Python Graph Library"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-altgraph.Graph">
+<span id="altgraph-graph-basic-directional-graphs"></span><h1><a class="reference internal" href="#module-altgraph.Graph" title="altgraph.Graph: Basic directional graphs."><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.Graph</span></tt></a> &#8212; Basic directional graphs<a class="headerlink" href="#module-altgraph.Graph" title="Permalink to this headline">¶</a></h1>
+<p>The module <a class="reference internal" href="#module-altgraph.Graph" title="altgraph.Graph: Basic directional graphs."><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.Graph</span></tt></a> provides a class <a class="reference internal" href="#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">Graph</span></tt></a> that
+represents a directed graph with <em>N</em> nodes and <em>E</em> edges.</p>
+<dl class="class">
+<dt id="altgraph.Graph.Graph">
+<em class="property">class </em><tt class="descclassname">altgraph.Graph.</tt><tt class="descname">Graph</tt><big>(</big><span class="optional">[</span><em>edges</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph" title="Permalink to this definition">¶</a></dt>
+<dd><p>Constructs a new empty <a class="reference internal" href="#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">Graph</span></tt></a> object. If the optional
+<em>edges</em> parameter is supplied, updates the graph by adding the
+specified edges.</p>
+<p>All of the elements in <em>edges</em> should be tuples with two or three
+elements. The first two elements of the tuple are the source and
+destination node of the edge, the optional third element is the
+edge data.  The source and destination nodes are added to the graph
+when the aren&#8217;t already present.</p>
+</dd></dl>
+
+<div class="section" id="node-related-methods">
+<h2>Node related methods<a class="headerlink" href="#node-related-methods" title="Permalink to this headline">¶</a></h2>
+<dl class="method">
+<dt id="altgraph.Graph.Graph.add_node">
+<tt class="descclassname">Graph.</tt><tt class="descname">add_node</tt><big>(</big><em>node</em><span class="optional">[</span>, <em>node_data</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.add_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adds a new node to the graph if it is not already present. The new
+node must be a hashable object.</p>
+<p>Arbitrary data can be attached to the node via the optional <em>node_data</em>
+argument.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">the node also won&#8217;t be added to the graph when it is
+present but currently hidden.</p>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.hide_node">
+<tt class="descclassname">Graph.</tt><tt class="descname">hide_node</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.hide_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Hides a <em>node</em> from the graph. The incoming and outgoing edges of
+the node will also be hidden.</p>
+<p>Raises <a class="reference internal" href="core.html#altgraph.GraphError" title="altgraph.GraphError"><tt class="xref py py-class docutils literal"><span class="pre">altgraph.GraphError</span></tt></a> when the node is not (visible)
+node of the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.restore_node">
+<tt class="descclassname">Graph.</tt><tt class="descname">restore_node</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.restore_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Restores a previously hidden <em>node</em>. The incoming and outgoing
+edges of the node are also restored.</p>
+<p>Raises <a class="reference internal" href="core.html#altgraph.GraphError" title="altgraph.GraphError"><tt class="xref py py-class docutils literal"><span class="pre">altgraph.GraphError</span></tt></a> when the node is not a hidden
+node of the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.restore_all_nodes">
+<tt class="descclassname">Graph.</tt><tt class="descname">restore_all_nodes</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.restore_all_nodes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Restores all hidden nodes.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.number_of_nodes">
+<tt class="descclassname">Graph.</tt><tt class="descname">number_of_nodes</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.number_of_nodes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of visible nodes in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.number_of_hidden_nodes">
+<tt class="descclassname">Graph.</tt><tt class="descname">number_of_hidden_nodes</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.number_of_hidden_nodes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of hidden nodes in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.node_list">
+<tt class="descclassname">Graph.</tt><tt class="descname">node_list</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.node_list" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a list with all visible nodes in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.hidden_node_list">
+<tt class="descclassname">Graph.</tt><tt class="descname">hidden_node_list</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.hidden_node_list" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a list with all hidden nodes in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.node_data">
+<tt class="descclassname">altgraph.Graph.</tt><tt class="descname">node_data</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.node_data" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the data associated with the <em>node</em> when it was
+added.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.describe_node">
+<tt class="descclassname">Graph.</tt><tt class="descname">describe_node</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.describe_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns <em>node</em>, the node&#8217;s data and the lists of outgoing
+and incoming edges for the node.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">the edge lists should not be modified, doing so
+can result in unpredicatable behavior.</p>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.__contains__">
+<tt class="descclassname">Graph.</tt><tt class="descname">__contains__</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.__contains__" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns True iff <em>node</em> is a node in the graph. This
+method is accessed through the <em>in</em> operator.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.__iter__">
+<tt class="descclassname">Graph.</tt><tt class="descname">__iter__</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.__iter__" title="Permalink to this definition">¶</a></dt>
+<dd><p>Yield all nodes in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.out_edges">
+<tt class="descclassname">Graph.</tt><tt class="descname">out_edges</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.out_edges" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the list of outgoing edges for <em>node</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.inc_edges">
+<tt class="descclassname">Graph.</tt><tt class="descname">inc_edges</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.inc_edges" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the list of incoming edges for <em>node</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.all_edges">
+<tt class="descclassname">Graph.</tt><tt class="descname">all_edges</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.all_edges" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the list of incoming and outgoing edges for <em>node</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.out_degree">
+<tt class="descclassname">Graph.</tt><tt class="descname">out_degree</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.out_degree" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of outgoing edges for <em>node</em>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.inc_degree">
+<tt class="descclassname">Graph.</tt><tt class="descname">inc_degree</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.inc_degree" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of incoming edges for <em>node</em>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.all_degree">
+<tt class="descclassname">Graph.</tt><tt class="descname">all_degree</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.all_degree" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of edges (incoming or outgoing) for <em>node</em>.</p>
+</dd></dl>
+
+</div>
+<div class="section" id="edge-related-methods">
+<h2>Edge related methods<a class="headerlink" href="#edge-related-methods" title="Permalink to this headline">¶</a></h2>
+<dl class="method">
+<dt id="altgraph.Graph.Graph.add_edge">
+<tt class="descclassname">Graph.</tt><tt class="descname">add_edge</tt><big>(</big><em>head_id</em>, <em>tail_id</em><span class="optional">[</span>, <em>edge data</em><span class="optional">[</span>, <em>create_nodes</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.add_edge" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adds a directed edge from <em>head_id</em> to <em>tail_id</em>. Arbitrary data can
+be added via <em>edge_data</em>.  When <em>create_nodes</em> is <em>True</em> (the default),
+<em>head_id</em> and <em>tail_id</em> will be added to the graph when the aren&#8217;t
+already present.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.hide_edge">
+<tt class="descclassname">Graph.</tt><tt class="descname">hide_edge</tt><big>(</big><em>edge</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.hide_edge" title="Permalink to this definition">¶</a></dt>
+<dd><p>Hides an edge from the graph. The edge may be unhidden at some later
+time.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.restore_edge">
+<tt class="descclassname">Graph.</tt><tt class="descname">restore_edge</tt><big>(</big><em>edge</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.restore_edge" title="Permalink to this definition">¶</a></dt>
+<dd><p>Restores a previously hidden <em>edge</em>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.restore_all_edges">
+<tt class="descclassname">Graph.</tt><tt class="descname">restore_all_edges</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.restore_all_edges" title="Permalink to this definition">¶</a></dt>
+<dd><p>Restore all edges that were hidden before, except for edges
+referring to hidden nodes.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.edge_by_node">
+<tt class="descclassname">Graph.</tt><tt class="descname">edge_by_node</tt><big>(</big><em>head</em>, <em>tail</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.edge_by_node" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the edge ID for an edge from <em>head</em> to <em>tail</em>,
+or <a class="reference external" href="http://docs.python.org/library/constants.html#None" title="(in Python v2.7)"><tt class="xref py py-data docutils literal"><span class="pre">None</span></tt></a> when no such edge exists.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.edge_by_id">
+<tt class="descclassname">Graph.</tt><tt class="descname">edge_by_id</tt><big>(</big><em>edge</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.edge_by_id" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the head and tail of the <em>edge</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.edge_data">
+<tt class="descclassname">Graph.</tt><tt class="descname">edge_data</tt><big>(</big><em>edge</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.edge_data" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the data associated with the <em>edge</em>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.head">
+<tt class="descclassname">Graph.</tt><tt class="descname">head</tt><big>(</big><em>edge</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.head" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the head of an <em>edge</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.tail">
+<tt class="descclassname">Graph.</tt><tt class="descname">tail</tt><big>(</big><em>edge</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.tail" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the tail of an <em>edge</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.describe_edge">
+<tt class="descclassname">Graph.</tt><tt class="descname">describe_edge</tt><big>(</big><em>edge</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.describe_edge" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the <em>edge</em>, the associated data, its head and tail.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.number_of_edges">
+<tt class="descclassname">Graph.</tt><tt class="descname">number_of_edges</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.number_of_edges" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of visible edges.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.number_of_hidden_edges">
+<tt class="descclassname">Graph.</tt><tt class="descname">number_of_hidden_edges</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.number_of_hidden_edges" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the number of hidden edges.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.edge_list">
+<tt class="descclassname">Graph.</tt><tt class="descname">edge_list</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.edge_list" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a list with all visible edges in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.hidden_edge_list">
+<tt class="descclassname">Graph.</tt><tt class="descname">hidden_edge_list</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.hidden_edge_list" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a list with all hidden edges in the graph.</p>
+</dd></dl>
+
+</div>
+<div class="section" id="graph-traversal">
+<h2>Graph traversal<a class="headerlink" href="#graph-traversal" title="Permalink to this headline">¶</a></h2>
+<dl class="method">
+<dt id="altgraph.Graph.Graph.out_nbrs">
+<tt class="descclassname">Graph.</tt><tt class="descname">out_nbrs</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.out_nbrs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a list of all nodes connected by outgoing edges.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.inc_nbrs">
+<tt class="descclassname">Graph.</tt><tt class="descname">inc_nbrs</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.inc_nbrs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a list of all nodes connected by incoming edges.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.all_nbrs">
+<tt class="descclassname">Graph.</tt><tt class="descname">all_nbrs</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.all_nbrs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a list of nodes connected by an incoming or outgoing edge.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.forw_topo_sort">
+<tt class="descclassname">Graph.</tt><tt class="descname">forw_topo_sort</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.forw_topo_sort" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a list of nodes where the successors (based on outgoing
+edges) of any given node apear in the sequence after that node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.back_topo_sort">
+<tt class="descclassname">Graph.</tt><tt class="descname">back_topo_sort</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.back_topo_sort" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a list of nodes where the successors (based on incoming
+edges) of any given node apear in the sequence after that node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.forw_bfs_subgraph">
+<tt class="descclassname">Graph.</tt><tt class="descname">forw_bfs_subgraph</tt><big>(</big><em>start_id</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.forw_bfs_subgraph" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a subgraph consisting of the breadth first
+reachable nodes from <em>start_id</em> based on their outgoing edges.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.back_bfs_subgraph">
+<tt class="descclassname">Graph.</tt><tt class="descname">back_bfs_subgraph</tt><big>(</big><em>start_id</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.back_bfs_subgraph" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return a subgraph consisting of the breadth first
+reachable nodes from <em>start_id</em> based on their incoming edges.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.iterdfs">
+<tt class="descclassname">Graph.</tt><tt class="descname">iterdfs</tt><big>(</big><em>start</em><span class="optional">[</span>, <em>end</em><span class="optional">[</span>, <em>forward</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.iterdfs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Yield nodes in a depth first traversal starting at the <em>start</em>
+node.</p>
+<p>If <em>end</em> is specified traversal stops when reaching that node.</p>
+<p>If forward is True (the default) edges are traversed in forward
+direction, otherwise they are traversed in reverse direction.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.iterdata">
+<tt class="descclassname">Graph.</tt><tt class="descname">iterdata</tt><big>(</big><em>start</em><span class="optional">[</span>, <em>end</em><span class="optional">[</span>, <em>forward</em><span class="optional">[</span>, <em>condition</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.iterdata" title="Permalink to this definition">¶</a></dt>
+<dd><p>Yield the associated data for nodes in a depth first traversal
+starting at the <em>start</em> node. This method will not yield values for nodes
+without associated data.</p>
+<p>If <em>end</em> is specified traversal stops when reaching that node.</p>
+<p>If <em>condition</em> is specified and the condition callable returns
+False for the associated data this method will not yield the
+associated data and will not follow the edges for the node.</p>
+<p>If forward is True (the default) edges are traversed in forward
+direction, otherwise they are traversed in reverse direction.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.forw_bfs">
+<tt class="descclassname">Graph.</tt><tt class="descname">forw_bfs</tt><big>(</big><em>start</em><span class="optional">[</span>, <em>end</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.forw_bfs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a list of nodes starting at <em>start</em> in some bread first
+search order (following outgoing edges).</p>
+<p>When <em>end</em> is specified iteration stops at that node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.back_bfs">
+<tt class="descclassname">Graph.</tt><tt class="descname">back_bfs</tt><big>(</big><em>start</em><span class="optional">[</span>, <em>end</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.back_bfs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a list of nodes starting at <em>start</em> in some bread first
+search order (following incoming edges).</p>
+<p>When <em>end</em> is specified iteration stops at that node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.get_hops">
+<tt class="descclassname">Graph.</tt><tt class="descname">get_hops</tt><big>(</big><em>start</em><span class="optional">[</span>, <em>end</em><span class="optional">[</span>, <em>forward</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.get_hops" title="Permalink to this definition">¶</a></dt>
+<dd><p>Computes the hop distance to all nodes centered around a specified node.</p>
+<p>First order neighbours are at hop 1, their neigbours are at hop 2 etc.
+Uses <a class="reference internal" href="#altgraph.Graph.Graph.forw_bfs" title="altgraph.Graph.Graph.forw_bfs"><tt class="xref py py-meth docutils literal"><span class="pre">forw_bfs()</span></tt></a> or <a class="reference internal" href="#altgraph.Graph.Graph.back_bfs" title="altgraph.Graph.Graph.back_bfs"><tt class="xref py py-meth docutils literal"><span class="pre">back_bfs()</span></tt></a> depending on the value of
+the forward parameter.</p>
+<p>If the distance between all neighbouring nodes is 1 the hop number
+corresponds to the shortest distance between the nodes.</p>
+<p>Typical usage:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">graph</span><span class="o">.</span><span class="n">get_hops</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">8</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span> <span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">5</span><span class="p">)]</span>
+<span class="go"># node 1 is at 0 hops</span>
+<span class="go"># node 2 is at 1 hop</span>
+<span class="go"># ...</span>
+<span class="go"># node 8 is at 5 hops</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+<div class="section" id="graph-statistics">
+<h2>Graph statistics<a class="headerlink" href="#graph-statistics" title="Permalink to this headline">¶</a></h2>
+<dl class="method">
+<dt id="altgraph.Graph.Graph.connected">
+<tt class="descclassname">Graph.</tt><tt class="descname">connected</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.connected" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns True iff every node in the graph can be reached from
+every other node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.Graph.Graph.clust_coef">
+<tt class="descclassname">Graph.</tt><tt class="descname">clust_coef</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.Graph.Graph.clust_coef" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the local clustering coefficient of node.</p>
+<p>The local cluster coefficient is the proportion of the actual number
+of edges between neighbours of node and the maximum number of
+edges between those nodes.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#"><tt class="docutils literal"><span class="pre">altgraph.Graph</span></tt> &#8212; Basic directional graphs</a><ul>
+<li><a class="reference internal" href="#node-related-methods">Node related methods</a></li>
+<li><a class="reference internal" href="#edge-related-methods">Edge related methods</a></li>
+<li><a class="reference internal" href="#graph-traversal">Graph traversal</a></li>
+<li><a class="reference internal" href="#graph-statistics">Graph statistics</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="core.html"
+                        title="previous chapter"><tt class="docutils literal"><span class="pre">altgraph</span></tt> &#8212; A Python Graph Library</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="objectgraph.html"
+                        title="next chapter"><tt class="docutils literal"><span class="pre">altgraph.ObjectGraph</span></tt> &#8212; Graphs of objecs with an identifier</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="objectgraph.html" title="altgraph.ObjectGraph — Graphs of objecs with an identifier"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="core.html" title="altgraph — A Python Graph Library"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/graphalgo.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>altgraph.GraphAlgo — Graph algorithms &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="altgraph.GraphStat — Functions providing various graph statistics" href="graphstat.html" />
+    <link rel="prev" title="altgraph.ObjectGraph — Graphs of objecs with an identifier" href="objectgraph.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphstat.html" title="altgraph.GraphStat — Functions providing various graph statistics"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="objectgraph.html" title="altgraph.ObjectGraph — Graphs of objecs with an identifier"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-altgraph.GraphAlgo">
+<span id="altgraph-graphalgo-graph-algorithms"></span><h1><a class="reference internal" href="#module-altgraph.GraphAlgo" title="altgraph.GraphAlgo: Basic graphs algoritms"><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.GraphAlgo</span></tt></a> &#8212; Graph algorithms<a class="headerlink" href="#module-altgraph.GraphAlgo" title="Permalink to this headline">¶</a></h1>
+<dl class="function">
+<dt id="altgraph.GraphAlgo.dijkstra">
+<tt class="descclassname">altgraph.GraphAlgo.</tt><tt class="descname">dijkstra</tt><big>(</big><em>graph</em>, <em>start</em><span class="optional">[</span>, <em>end</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.GraphAlgo.dijkstra" title="Permalink to this definition">¶</a></dt>
+<dd><p>Dijkstra&#8217;s algorithm for shortest paths.</p>
+<p>Find shortest paths from the  start node to all nodes nearer
+than or equal to the <em>end</em> node. The edge data is assumed to be the edge length.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Dijkstra&#8217;s algorithm is only guaranteed to work correctly when all edge lengths are positive.
+This code does not verify this property for all edges (only the edges examined until the end
+vertex is reached), but will correctly compute shortest paths even for some graphs with negative
+edges, and will raise an exception if it discovers that a negative edge has caused it to make a mistake.</p>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="altgraph.GraphAlgo.shortest_path">
+<tt class="descclassname">altgraph.GraphAlgo.</tt><tt class="descname">shortest_path</tt><big>(</big><em>graph</em>, <em>start</em>, <em>end</em><big>)</big><a class="headerlink" href="#altgraph.GraphAlgo.shortest_path" title="Permalink to this definition">¶</a></dt>
+<dd><p>Find a single shortest path from the given start node to the given end node.
+The input has the same conventions as <a class="reference internal" href="#altgraph.GraphAlgo.dijkstra" title="altgraph.GraphAlgo.dijkstra"><tt class="xref py py-func docutils literal"><span class="pre">dijkstra()</span></tt></a>. The output is a list
+of the nodes in order along the shortest path.</p>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="objectgraph.html"
+                        title="previous chapter"><tt class="docutils literal"><span class="pre">altgraph.ObjectGraph</span></tt> &#8212; Graphs of objecs with an identifier</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="graphstat.html"
+                        title="next chapter"><tt class="docutils literal"><span class="pre">altgraph.GraphStat</span></tt> &#8212; Functions providing various graph statistics</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphstat.html" title="altgraph.GraphStat — Functions providing various graph statistics"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="objectgraph.html" title="altgraph.ObjectGraph — Graphs of objecs with an identifier"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/graphstat.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>altgraph.GraphStat — Functions providing various graph statistics &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="altgraph.GraphUtil — Utility functions" href="graphutil.html" />
+    <link rel="prev" title="altgraph.GraphAlgo — Graph algorithms" href="graphalgo.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphutil.html" title="altgraph.GraphUtil — Utility functions"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="graphalgo.html" title="altgraph.GraphAlgo — Graph algorithms"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-altgraph.GraphStat">
+<span id="altgraph-graphstat-functions-providing-various-graph-statistics"></span><h1><a class="reference internal" href="#module-altgraph.GraphStat" title="altgraph.GraphStat: Functions providing various graph statistics"><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.GraphStat</span></tt></a> &#8212; Functions providing various graph statistics<a class="headerlink" href="#module-altgraph.GraphStat" title="Permalink to this headline">¶</a></h1>
+<p>The module <a class="reference internal" href="#module-altgraph.GraphStat" title="altgraph.GraphStat: Functions providing various graph statistics"><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.GraphStat</span></tt></a> provides function that calculate
+graph statistics. Currently there is only one such function, more may
+be added later.</p>
+<dl class="function">
+<dt id="altgraph.GraphStat.degree_dist">
+<tt class="descclassname">altgraph.GraphStat.</tt><tt class="descname">degree_dist</tt><big>(</big><em>graph</em><span class="optional">[</span>, <em>limits</em><span class="optional">[</span>, <em>bin_num</em><span class="optional">[</span>, <em>mode</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.GraphStat.degree_dist" title="Permalink to this definition">¶</a></dt>
+<dd><p>Groups the number of edges per node into <em>bin_num</em> bins
+and returns the list of those bins. Every item in the result
+is a tuple with the center of the bin and the number of items
+in that bin.</p>
+<p>When the <em>limits</em> argument is present it must be a tuple with
+the mininum and maximum number of edges that get binned (that
+is, when <em>limits</em> is <tt class="docutils literal"><span class="pre">(4,</span> <span class="pre">10)</span></tt> only nodes with between 4
+and 10 edges get counted.</p>
+<p>The <em>mode</em> argument is used to count incoming (<tt class="docutils literal"><span class="pre">'inc'</span></tt>) or
+outgoing (<tt class="docutils literal"><span class="pre">'out'</span></tt>) edges. The default is to count the outgoing
+edges.</p>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="graphalgo.html"
+                        title="previous chapter"><tt class="docutils literal"><span class="pre">altgraph.GraphAlgo</span></tt> &#8212; Graph algorithms</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="graphutil.html"
+                        title="next chapter"><tt class="docutils literal"><span class="pre">altgraph.GraphUtil</span></tt> &#8212; Utility functions</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphutil.html" title="altgraph.GraphUtil — Utility functions"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="graphalgo.html" title="altgraph.GraphAlgo — Graph algorithms"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/graphutil.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>altgraph.GraphUtil — Utility functions &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="altgraph.Dot — Interface to the dot language" href="dot.html" />
+    <link rel="prev" title="altgraph.GraphStat — Functions providing various graph statistics" href="graphstat.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="dot.html" title="altgraph.Dot — Interface to the dot language"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="graphstat.html" title="altgraph.GraphStat — Functions providing various graph statistics"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-altgraph.GraphUtil">
+<span id="altgraph-graphutil-utility-functions"></span><h1><a class="reference internal" href="#module-altgraph.GraphUtil" title="altgraph.GraphUtil: Utility functions"><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.GraphUtil</span></tt></a> &#8212; Utility functions<a class="headerlink" href="#module-altgraph.GraphUtil" title="Permalink to this headline">¶</a></h1>
+<p>The module <a class="reference internal" href="#module-altgraph.GraphUtil" title="altgraph.GraphUtil: Utility functions"><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.GraphUtil</span></tt></a> performs a number of more
+or less useful utility functions.</p>
+<dl class="function">
+<dt id="altgraph.GraphUtil.generate_random_graph">
+<tt class="descclassname">altgraph.GraphUtil.</tt><tt class="descname">generate_random_graph</tt><big>(</big><em>node_num, edge_num[, self_loops[, multi_edges]</em><big>)</big><a class="headerlink" href="#altgraph.GraphUtil.generate_random_graph" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generates and returns a <a class="reference internal" href="graph.html#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">Graph</span></tt></a> instance
+with <em>node_num</em> nodes randomly connected by <em>edge_num</em> edges.</p>
+<p>When <em>self_loops</em> is present and True there can be edges that point from
+a node to itself.</p>
+<p>When <em>multi_edge</em> is present and True there can be duplicate edges.</p>
+<p>This method raises <tt class="xref py py-class docutils literal"><span class="pre">GraphError</span> <span class="pre">&lt;altgraph.GraphError</span></tt> when
+a graph with the requested configuration cannot be created.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="altgraph.GraphUtil.generate_scale_free_graph">
+<tt class="descclassname">altgraph.GraphUtil.</tt><tt class="descname">generate_scale_free_graph</tt><big>(</big><em>steps</em>, <em>growth_num</em><span class="optional">[</span>, <em>self_loops</em><span class="optional">[</span>, <em>multi_edges</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.GraphUtil.generate_scale_free_graph" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generates and returns a <a class="reference internal" href="graph.html#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">Graph</span></tt></a> instance that
+will have <em>steps*growth_n um</em> nodes and a scale free (powerlaw)
+connectivity.</p>
+<p>Starting with a fully connected graph with <em>growth_num</em> nodes
+at every step <em>growth_num</em> nodes are added to the graph and are connected
+to existing nodes with a probability proportional to the degree of these
+existing nodes.</p>
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">The current implementation is basically untested, although
+code inspection seems to indicate an implementation that is consistent
+with the description at
+<a class="reference external" href="http://mathworld.wolfram.com/Scale-FreeNetwork.html">Wolfram MathWorld</a></p>
+</div>
+</dd></dl>
+
+<dl class="function">
+<dt id="altgraph.GraphUtil.filter_stack">
+<tt class="descclassname">altgraph.GraphUtil.</tt><tt class="descname">filter_stack</tt><big>(</big><em>graph</em>, <em>head</em>, <em>filters</em><big>)</big><a class="headerlink" href="#altgraph.GraphUtil.filter_stack" title="Permalink to this definition">¶</a></dt>
+<dd><p>Perform a depth-first oder walk of the graph starting at <em>head</em> and
+apply all filter functions in <em>filters</em> on the node data of the nodes
+found.</p>
+<p>Returns (<em>visited</em>, <em>removes</em>, <em>orphans</em>), where</p>
+<ul class="simple">
+<li><em>visited</em>: the set of visited nodes</li>
+<li><em>removes</em>: the list of nodes where the node data doesn&#8217;t match
+all <em>filters</em>.</li>
+<li><em>orphans</em>: list of tuples (<em>last_good</em>, <em>node</em>), where
+node is not in <em>removes</em> and one of the nodes that is connected
+by an incoming edge is in <em>removes</em>. <em>Last_good</em> is the
+closest upstream node that is not in <em>removes</em>.</li>
+</ul>
+</dd></dl>
+
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="graphstat.html"
+                        title="previous chapter"><tt class="docutils literal"><span class="pre">altgraph.GraphStat</span></tt> &#8212; Functions providing various graph statistics</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="dot.html"
+                        title="next chapter"><tt class="docutils literal"><span class="pre">altgraph.Dot</span></tt> &#8212; Interface to the dot language</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="dot.html" title="altgraph.Dot — Interface to the dot language"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="graphstat.html" title="altgraph.GraphStat — Functions providing various graph statistics"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/index.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Altgraph - A basic graph library &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="#" />
+    <link rel="next" title="Release history" href="changelog.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="changelog.html" title="Release history"
+             accesskey="N">next</a> |</li>
+        <li><a href="#">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="altgraph-a-basic-graph-library">
+<h1>Altgraph - A basic graph library<a class="headerlink" href="#altgraph-a-basic-graph-library" title="Permalink to this headline">¶</a></h1>
+<p>altgraph is a fork of graphlib: a graph (network) package for constructing
+graphs, BFS and DFS traversals, topological sort, shortest paths, etc. with
+graphviz output.</p>
+<p>The primary users of this package are <a class="reference external" href="http://pypi.python.org/pypi/macholib">macholib</a> and <a class="reference external" href="http://pypi.python.org/pypi/modulegraph">modulegraph</a>.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="changelog.html">Release history</a></li>
+<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
+<li class="toctree-l1"><a class="reference internal" href="core.html"><tt class="docutils literal"><span class="pre">altgraph</span></tt> &#8212; A Python Graph Library</a></li>
+<li class="toctree-l1"><a class="reference internal" href="graph.html"><tt class="docutils literal"><span class="pre">altgraph.Graph</span></tt> &#8212; Basic directional graphs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="objectgraph.html"><tt class="docutils literal"><span class="pre">altgraph.ObjectGraph</span></tt> &#8212; Graphs of objecs with an identifier</a></li>
+<li class="toctree-l1"><a class="reference internal" href="graphalgo.html"><tt class="docutils literal"><span class="pre">altgraph.GraphAlgo</span></tt> &#8212; Graph algorithms</a></li>
+<li class="toctree-l1"><a class="reference internal" href="graphstat.html"><tt class="docutils literal"><span class="pre">altgraph.GraphStat</span></tt> &#8212; Functions providing various graph statistics</a></li>
+<li class="toctree-l1"><a class="reference internal" href="graphutil.html"><tt class="docutils literal"><span class="pre">altgraph.GraphUtil</span></tt> &#8212; Utility functions</a></li>
+<li class="toctree-l1"><a class="reference internal" href="dot.html"><tt class="docutils literal"><span class="pre">altgraph.Dot</span></tt> &#8212; Interface to the dot language</a></li>
+</ul>
+</div>
+<div class="section" id="online-resources">
+<h2>Online Resources<a class="headerlink" href="#online-resources" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference external" href="http://bitbucket.org/ronaldoussoren/altgraph/">Sourcecode repository on bitbucket</a></li>
+<li><a class="reference external" href="http://bitbucket.org/ronaldoussoren/altgraph/issues">The issue tracker</a></li>
+</ul>
+</div>
+<div class="section" id="indices-and-tables">
+<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
+<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
+<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="#">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Altgraph - A basic graph library</a><ul>
+<li><a class="reference internal" href="#online-resources">Online Resources</a></li>
+<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Next topic</h4>
+  <p class="topless"><a href="changelog.html"
+                        title="next chapter">Release history</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="changelog.html" title="Release history"
+             >next</a> |</li>
+        <li><a href="#">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/license.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>License &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="altgraph — A Python Graph Library" href="core.html" />
+    <link rel="prev" title="Release history" href="changelog.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="core.html" title="altgraph — A Python Graph Library"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="changelog.html" title="Release history"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="license">
+<h1>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h1>
+<p>Copyright (c) 2004 Istvan Albert unless otherwise noted.</p>
+<p>Parts are copyright (c) Bob Ippolito</p>
+<p>Parts are copyright (c) 2010-2014 Ronald Oussoren</p>
+<div class="section" id="mit-license">
+<h2>MIT License<a class="headerlink" href="#mit-license" title="Permalink to this headline">¶</a></h2>
+<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the &#8220;Software&#8221;), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
+so.</p>
+<p>THE SOFTWARE IS PROVIDED &#8220;AS IS&#8221;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">License</a><ul>
+<li><a class="reference internal" href="#mit-license">MIT License</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="changelog.html"
+                        title="previous chapter">Release history</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="core.html"
+                        title="next chapter"><tt class="docutils literal"><span class="pre">altgraph</span></tt> &#8212; A Python Graph Library</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="core.html" title="altgraph — A Python Graph Library"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="changelog.html" title="Release history"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/objectgraph.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>altgraph.ObjectGraph — Graphs of objecs with an identifier &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+    <link rel="next" title="altgraph.GraphAlgo — Graph algorithms" href="graphalgo.html" />
+    <link rel="prev" title="altgraph.Graph — Basic directional graphs" href="graph.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphalgo.html" title="altgraph.GraphAlgo — Graph algorithms"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="graph.html" title="altgraph.Graph — Basic directional graphs"
+             accesskey="P">previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="module-altgraph.ObjectGraph">
+<span id="altgraph-objectgraph-graphs-of-objecs-with-an-identifier"></span><h1><a class="reference internal" href="#module-altgraph.ObjectGraph" title="altgraph.ObjectGraph: A graph of objects that have a &quot;graphident&quot; attribute."><tt class="xref py py-mod docutils literal"><span class="pre">altgraph.ObjectGraph</span></tt></a> &#8212; Graphs of objecs with an identifier<a class="headerlink" href="#module-altgraph.ObjectGraph" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="altgraph.ObjectGraph.ObjectGraph">
+<em class="property">class </em><tt class="descclassname">altgraph.ObjectGraph.</tt><tt class="descname">ObjectGraph</tt><big>(</big><span class="optional">[</span><em>graph</em><span class="optional">[</span>, <em>debug</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph" title="Permalink to this definition">¶</a></dt>
+<dd><p>A graph of objects that have a &#8220;graphident&#8221; attribute. The
+value of this attribute is the key for the object in the
+graph.</p>
+<p>The optional <em>graph</em> is a previously constructed
+<a class="reference internal" href="graph.html#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">Graph</span></tt></a>.</p>
+<p>The optional <em>debug</em> level controls the amount of debug output
+(see <a class="reference internal" href="#altgraph.ObjectGraph.ObjectGraph.msg" title="altgraph.ObjectGraph.ObjectGraph.msg"><tt class="xref py py-meth docutils literal"><span class="pre">msg()</span></tt></a>, <a class="reference internal" href="#altgraph.ObjectGraph.ObjectGraph.msgin" title="altgraph.ObjectGraph.ObjectGraph.msgin"><tt class="xref py py-meth docutils literal"><span class="pre">msgin()</span></tt></a> and <a class="reference internal" href="#altgraph.ObjectGraph.ObjectGraph.msgout" title="altgraph.ObjectGraph.ObjectGraph.msgout"><tt class="xref py py-meth docutils literal"><span class="pre">msgout()</span></tt></a>).</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">the altgraph library does not generate output, the
+debug attribute and message methods are present for use
+by subclasses.</p>
+</div>
+</dd></dl>
+
+<dl class="data">
+<dt id="altgraph.ObjectGraph.ObjectGraph.graph">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">graph</tt><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.graph" title="Permalink to this definition">¶</a></dt>
+<dd><p>An <a class="reference internal" href="graph.html#altgraph.Graph.Graph" title="altgraph.Graph.Graph"><tt class="xref py py-class docutils literal"><span class="pre">Graph</span></tt></a> object that contains
+the graph data.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.addNode">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">addNode</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.addNode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Adds a <em>node</em> to the graph.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">re-adding a node that was previously removed
+using <a class="reference internal" href="#altgraph.ObjectGraph.ObjectGraph.removeNode" title="altgraph.ObjectGraph.ObjectGraph.removeNode"><tt class="xref py py-meth docutils literal"><span class="pre">removeNode()</span></tt></a> will reinstate the previously
+removed node.</p>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.createNode">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">createNode</tt><big>(</big><em>self</em>, <em>cls</em>, <em>name</em>, <em>*args</em>, <em>**kwds</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.createNode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Creates a new node using <tt class="docutils literal"><span class="pre">cls(*args,</span> <span class="pre">**kwds)</span></tt> and adds that
+node using <a class="reference internal" href="#altgraph.ObjectGraph.ObjectGraph.addNode" title="altgraph.ObjectGraph.ObjectGraph.addNode"><tt class="xref py py-meth docutils literal"><span class="pre">addNode()</span></tt></a>.</p>
+<p>Returns the newly created node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.removeNode">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">removeNode</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.removeNode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Removes a <em>node</em> from the graph when it exists. The <em>node</em> argument
+is either a node object, or the graphident of a node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.createReferences">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">createReferences</tt><big>(</big><em>fromnode</em>, <em>tonode</em><span class="optional">[</span>, <em>edge_data</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.createReferences" title="Permalink to this definition">¶</a></dt>
+<dd><p>Creates a reference from <em>fromnode</em> to <em>tonode</em>. The optional
+<em>edge_data</em> is associated with the edge.</p>
+<p><em>Fromnode</em> and <em>tonode</em> can either be node objects or the graphident
+values for nodes.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.removeReference">
+<tt class="descclassname">altgraph.ObjectGraph.</tt><tt class="descname">removeReference</tt><big>(</big><em>fromnode</em>, <em>tonode</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.removeReference" title="Permalink to this definition">¶</a></dt>
+<dd><p>Removes the reference from <em>fromnode</em> to <em>tonode</em> if it exists.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.getRawIdent">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">getRawIdent</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.getRawIdent" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns the <em>graphident</em> attribute of <em>node</em>, or the graph itself
+when <em>node</em> is <a class="reference external" href="http://docs.python.org/library/constants.html#None" title="(in Python v2.7)"><tt class="xref py py-data docutils literal"><span class="pre">None</span></tt></a>.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.getIdent">
+<tt class="descclassname">altgraph.ObjectGraph.</tt><tt class="descname">getIdent</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.getIdent" title="Permalink to this definition">¶</a></dt>
+<dd><p>Same as <tt class="xref py py-meth docutils literal"><span class="pre">getRawIdent()</span></tt>, but only if the node is part
+of the graph.</p>
+<p><em>Node</em> can either be an actual node object or the graphident of
+a node.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.findNode">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">findNode</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.findNode" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns a given node in the graph, or <tt class="xref py py-data docutils literal"><span class="pre">Node</span></tt> when it cannot
+be found.</p>
+<p><em>Node</em> is either an object with a <em>graphident</em> attribute or
+the <em>graphident</em> attribute itself.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.__contains__">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">__contains__</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.__contains__" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns True if <em>node</em> is a member of the graph. <em>Node</em> is either an
+object with a <em>graphident</em> attribute or the <em>graphident</em> attribute itself.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.flatten">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">flatten</tt><big>(</big><span class="optional">[</span><em>condition</em><span class="optional">[</span>, <em>start</em><span class="optional">]</span><span class="optional">]</span><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.flatten" title="Permalink to this definition">¶</a></dt>
+<dd><p>Yield all nodes that are entirely reachable by <em>condition</em>
+starting fromt he given <em>start</em> node or the graph root.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">objects are only reachable from the graph root
+when there is a reference from the root to the node
+(either directly or through another node)</p>
+</div>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.nodes">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">nodes</tt><big>(</big><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.nodes" title="Permalink to this definition">¶</a></dt>
+<dd><p>Yield all nodes in the graph.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.get_edges">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">get_edges</tt><big>(</big><em>node</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.get_edges" title="Permalink to this definition">¶</a></dt>
+<dd><p>Returns two iterators that yield the nodes reaching by
+outgoing and incoming edges.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.filterStack">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">filterStack</tt><big>(</big><em>filters</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.filterStack" title="Permalink to this definition">¶</a></dt>
+<dd><p>Filter the ObjectGraph in-place by removing all edges to nodes that
+do not match every filter in the given filter list</p>
+<p>Returns a tuple containing the number of:
+(<em>nodes_visited</em>, <em>nodes_removed</em>, <em>nodes_orphaned</em>)</p>
+</dd></dl>
+
+<div class="section" id="debug-output">
+<h2>Debug output<a class="headerlink" href="#debug-output" title="Permalink to this headline">¶</a></h2>
+<dl class="data">
+<dt id="altgraph.ObjectGraph.ObjectGraph.debug">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">debug</tt><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.debug" title="Permalink to this definition">¶</a></dt>
+<dd><p>The current debug level.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.msg">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">msg</tt><big>(</big><em>level</em>, <em>text</em>, <em>*args</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.msg" title="Permalink to this definition">¶</a></dt>
+<dd><p>Print a debug message at the current indentation level when the current
+debug level is <em>level</em> or less.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.msgin">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">msgin</tt><big>(</big><em>level</em>, <em>text</em>, <em>*args</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.msgin" title="Permalink to this definition">¶</a></dt>
+<dd><p>Print a debug message when the current debug level is <em>level</em> or less,
+and increase the indentation level.</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="altgraph.ObjectGraph.ObjectGraph.msgout">
+<tt class="descclassname">ObjectGraph.</tt><tt class="descname">msgout</tt><big>(</big><em>level</em>, <em>text</em>, <em>*args</em><big>)</big><a class="headerlink" href="#altgraph.ObjectGraph.ObjectGraph.msgout" title="Permalink to this definition">¶</a></dt>
+<dd><p>Decrease the indentation level and print a debug message when the
+current debug level is <em>level</em> or less.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+  <h3><a href="index.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#"><tt class="docutils literal"><span class="pre">altgraph.ObjectGraph</span></tt> &#8212; Graphs of objecs with an identifier</a><ul>
+<li><a class="reference internal" href="#debug-output">Debug output</a></li>
+</ul>
+</li>
+</ul>
+
+  <h4>Previous topic</h4>
+  <p class="topless"><a href="graph.html"
+                        title="previous chapter"><tt class="docutils literal"><span class="pre">altgraph.Graph</span></tt> &#8212; Basic directional graphs</a></p>
+  <h4>Next topic</h4>
+  <p class="topless"><a href="graphalgo.html"
+                        title="next chapter"><tt class="docutils literal"><span class="pre">altgraph.GraphAlgo</span></tt> &#8212; Graph algorithms</a></p>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="graphalgo.html" title="altgraph.GraphAlgo — Graph algorithms"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="graph.html" title="altgraph.Graph — Basic directional graphs"
+             >previous</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..7c8a150fbccf280609958046399dce8f6250fa50
GIT binary patch
literal 954
zc$@*c14aBJAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkmY;<RG
zVQ^>)BOq2~a&u{KZaN?^E-^6*BOp|0Wgv28ZDDC{WMy(7Z)PBLXlZjGW@&6?AZc?T
zV{dJ6a%FRKWn>_Ab7^j8AbM<RVlE1J+O1ekkJ}&+z4upGYOjg9*S%G0wc0~Jw5y&G
zHe-if3>J)cH~+o^j`QU>0o+5Ph%hj`dGltVH9~3uAB974uXqWnSlt!fcGd3wSZ}aZ
zpNpSH^a_ecKlG^qeZgoP-B}D%9dKK1PA3jyyJ^qEgg?B2Ph4SRdAC_V_;2#!z8$vx
zS`6dCWEfk0DOP6&-&A9!Mw~`x4Ns<5#=`s--wmG376xzl^Nbv){x}+)H~d|`K!wxu
zn=l@O!e5kXx@%9PQM;b}=0f~30>W~D8zYLlsV7qx4)LoLcaDrArmr_r0MqB&UA6RQ
zT@&xXas+0%7N%wUz}CI4P#Qh1a=_r44+1m;(EwA@VU#O#=m{wM#;+ha@|(yJzru$r
z6;NOfx9Sv&J>@2bj=upD1|z1=d0SZ^5TBq13%UZA7xc9Shm=RmAH&1w;-k6ymbzlP
zv~CIZ$K1OOdkA+d+{dm`euP8DpV4aq5u>p{@!ApWoTmqcxEyEM@&*zk-2grkvoRs6
zb3|!fV|vV_N2Pj)tTIqXVKycOLDea~O$?9j+Y&4@bx5cLCi+UUb{k`n*vvYP7xm;&
zS)y>G5M0QJc<4OYqUG^;V+*Z$J7jj|_7wB@w7eXJR6PhX7{oJ2LxwC%Hf6+4ja+KS
zSh8^t?}gem??HU9i0ze?B_yiTSOtNLWFt@Sjp<xUULVW!?R4H1=fH~S;{0&Vrz}f~
zhRPyCUJ0y?eP?CunCr_!pPI`j66{nO{jk<pZv-C|bUV>I^v6-#PBk}T<IvI7QXwe@
z)xqjDp^=+&WLWNbTy0_b+s7lStD9S8(B%B)nnXf+jMxG>KFX(zE{%3iljcxVg?xE+
zXn8_CJugC;x<2OAqEsT0d*bh@ozzwM^AzI$+)##|e*p^v3+i<DOUlJ`ft$N$<T2P=
zCUEJBx=Ni1-w4AZ2WrI;A=ibF7HB%d9JRaA#rvZC+%Dl`)Uw)=!1=6pkoqZ2cz}pL
zUm*6P`*baJ>f_0H+ey0qPxzD;%uCTpdxSZTPPt`LWOeI_GI;v(<0`Iz)&5eQ`ua0s
co&&e9MtSlb-nz1qVBgs<3eqj(f4*+Z=*v0F0ssI2
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/py-modindex.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Python Module Index &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+ 
+
+
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="#" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+
+   <h1>Python Module Index</h1>
+
+   <div class="modindex-jumpbox">
+   <a href="#cap-a"><strong>a</strong></a>
+   </div>
+
+   <table class="indextable modindextable" cellspacing="0" cellpadding="2">
+     <tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
+     <tr class="cap" id="cap-a"><td></td><td>
+       <strong>a</strong></td><td></td></tr>
+     <tr>
+       <td><img src="_static/minus.png" class="toggler"
+              id="toggle-1" style="display: none" alt="-" /></td>
+       <td>
+       <a href="core.html#module-altgraph"><tt class="xref">altgraph</tt></a></td><td>
+       <em>A directional graph for python</em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&nbsp;&nbsp;&nbsp;
+       <a href="dot.html#module-altgraph.Dot"><tt class="xref">altgraph.Dot</tt></a></td><td>
+       <em>Interface to the dot language as used by Graphviz..</em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&nbsp;&nbsp;&nbsp;
+       <a href="graph.html#module-altgraph.Graph"><tt class="xref">altgraph.Graph</tt></a></td><td>
+       <em>Basic directional graphs.</em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&nbsp;&nbsp;&nbsp;
+       <a href="graphalgo.html#module-altgraph.GraphAlgo"><tt class="xref">altgraph.GraphAlgo</tt></a></td><td>
+       <em>Basic graphs algoritms</em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&nbsp;&nbsp;&nbsp;
+       <a href="graphstat.html#module-altgraph.GraphStat"><tt class="xref">altgraph.GraphStat</tt></a></td><td>
+       <em>Functions providing various graph statistics</em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&nbsp;&nbsp;&nbsp;
+       <a href="graphutil.html#module-altgraph.GraphUtil"><tt class="xref">altgraph.GraphUtil</tt></a></td><td>
+       <em>Utility functions</em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&nbsp;&nbsp;&nbsp;
+       <a href="objectgraph.html#module-altgraph.ObjectGraph"><tt class="xref">altgraph.ObjectGraph</tt></a></td><td>
+       <em>A graph of objects that have a &#34;graphident&#34; attribute.</em></td></tr>
+   </table>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="#" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/search.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Search &mdash; altgraph 0.11 documentation</title>
+    
+    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '0.11',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="_static/searchtools.js"></script>
+    <link rel="top" title="altgraph 0.11 documentation" href="index.html" />
+  <script type="text/javascript">
+    jQuery(function() { Search.loadIndex("searchindex.js"); });
+  </script>
+  
+  <script type="text/javascript" id="searchindexloader"></script>
+   
+
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <h1 id="search-documentation">Search</h1>
+  <div id="fallback" class="admonition warning">
+  <script type="text/javascript">$('#fallback').hide();</script>
+  <p>
+    Please activate JavaScript to enable the search
+    functionality.
+  </p>
+  </div>
+  <p>
+    From here you can search these documents. Enter your search
+    words into the box below and click "search". Note that the search
+    function will automatically search for all of the words. Pages
+    containing fewer words won't appear in the result list.
+  </p>
+  <form action="" method="get">
+    <input type="text" name="q" value="" />
+    <input type="submit" value="search" />
+    <span id="search-progress" style="padding-left: 10px"></span>
+  </form>
+  
+  <div id="search-results">
+  
+  </div>
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li><a href="index.html">altgraph 0.11 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert.
+      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.1.
+    </div>
+  </body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/_build/html/searchindex.js
@@ -0,0 +1,1 @@
+Search.setIndex({envversion:42,terms:{represent:[0,9],all:[2,3,5,6,8,9],code:[6,5],edg:[9,2],breadth:3,ellips:9,per:4,follow:3,degree_dist:[4,2],whose:9,privat:2,depend:[3,2],graph:2,graph_lib:0,tail:[3,9,2],program:9,present:[2,3,4,6,8,9],aris:1,hidden_node_list:3,merchant:1,sourc:[3,2],everi:[3,4,8,6],fals:[3,2],objec:7,upstream:6,veri:2,edgefn:9,level:8,py2app:[0,2],iter:[3,8,2],item:[4,2],describe_nod:3,round:9,self_loop:6,impli:1,crow:9,tee:9,past:2,pass:9,blue:9,index:7,hide:3,neg:5,abl:9,invok:9,current:[3,4,8,9,6],version:2,"new":[3,8,9,2],growth_num:6,oussoren:1,method:[0,9,2],restore_all_edg:3,metadata:2,subtre:2,gener:[6,8,9,2],even:5,coeffici:3,here:9,behaviour:2,same:[8,5,2],path:[0,5,9,7],along:5,modifi:[3,1],valu:[0,8,3],invis:9,search:[3,7],nodes_remov:8,larger:9,reason:9,amount:8,edge_data:[3,8],permit:1,action:1,implement:[6,2],getrawid:8,via:[0,9,3],repositori:[7,2],tweak:2,modul:[2,0,7,3,4,6,9],nodes_orphan:8,"while":[9,2],clust_coef:3,iterdot:9,filenam:9,visibl:3,instal:[9,2],txt:2,from:[1,2,3,5,6,8,9],etc:[3,7],visit:6,two:[3,8],suit:0,vee:9,call:[0,9],msg:8,type:9,until:[5,9],minor:2,more:[6,4,9],reachabl:[3,8],diamond:9,minim:2,altgraph:2,visual:0,indic:6,examin:5,particular:1,sourcecod:7,herebi:1,must:[3,4,9],none:[3,8,9],graphic:9,graphid:8,restor:3,alia:9,setup:2,work:[5,2],archiv:2,can:[0,2,3,6,8,9],purpos:1,root:8,control:[8,9],claim:1,process:9,graphstat:2,accept:2,all_nbr:3,alwai:2,end:[3,5,9],anoth:[8,9],"__iter__":[3,9],classifi:2,write:9,how:9,hop:3,instead:2,simpl:9,wolfram:6,head_id:3,after:[0,3],ronald:1,befor:[3,9],forw_bf:3,mai:[3,4,9],generate_scale_free_graph:6,associ:[3,8,1],stabil:2,third:3,bind:9,author:1,correspond:[3,9],shortest_path:5,caus:[5,2],inform:9,tailor:0,callabl:3,untest:6,order:[3,5,2],furnish:1,edge_list:3,move:2,save_imag:9,graphviz:[0,9,7],dijkstra:5,through:[3,8],add_edg:[3,2],misfeatur:2,out_nbr:[3,9],still:2,paramet:[3,9],style:9,group:4,fit:1,fix:[9,2],tort:1,restore_nod:3,requir:2,hidden:[3,2],unpredicat:3,"return":[2,3,4,6,8,9],thei:[3,9],python:2,overal:9,createrefer:8,avg_hop:2,generate_random_graph:[6,2],fillcolor:9,verifi:[5,9],all_node_styl:9,now:2,bread:3,diagon:9,document:[9,1,2],name:[8,9],didn:2,arrows:9,iterdf:[3,2],leda:0,iff:3,mode:[4,9,2],found:[6,8],nodes_visit:8,side:2,mean:2,weight:9,list:[3,4,5,6,8,9],ensur:2,connect:[0,6,9,1,3],event:1,out:[0,4,9,1],all_degre:3,network:[0,7],newli:8,publish:1,neigbour:3,graphutil:2,invi:9,print:[3,8],correct:2,red:9,file_nam:9,edgevisitor:9,earlier:2,out_degre:3,manipul:0,free:[6,1],number_of_hidden_nod:3,base:[0,9,3],org:2,shortest:[0,5,7,3],modulegraph:[0,7],indent:8,convent:5,where:[3,6,2],keep:2,filter:[6,8],length:5,place:8,isn:[9,2],imposs:2,first:[3,6],oper:[3,2],softwar:1,major:2,back_bf:3,suffix:9,directli:8,save_dot:9,forw_topo_sort:[3,2],onc:9,number:[0,3,4,6,8,9],rank:9,restrict:1,fromt:8,alreadi:[3,9],messag:8,primari:7,size:[9,2],given:[8,3,5,9],silent:2,workaround:2,gif:9,data:[8,3,5,6],licens:7,system:9,construct:[8,0,7,9,3],attach:3,circl:9,testsuit:2,graphtyp:9,option:[3,8,2],copi:1,albert:1,travers:0,specifi:[3,9,2],mathworld:6,part:[8,9,1,2],holder:1,than:5,kind:1,nathan:0,provid:[3,9],remov:[6,8,2],tree:2,horizont:9,were:3,posit:5,randomli:6,fork:[0,7],macholib:[0,7],comput:[3,5],ran:9,well:0,ani:[3,1,2],dash:9,packag:[0,7,9,2],have:[6,8,2],need:9,seem:6,element:[3,2],sell:1,issu:[7,2],moreov:9,note:[9,1],also:[0,3,9,2],which:2,tupl:[8,3,4,6,2],singl:5,compat:[9,2],offload:9,distribut:[1,2],though:2,setuptool:2,previou:2,reach:[8,3,5],discov:5,most:9,sublicens:1,describe_edg:3,"class":[0,2],charg:1,renam:2,mininum:4,later:[3,4,2],request:[6,2],doe:[8,5],left:9,dot:2,base_nod:9,text:8,restore_edg:3,permiss:1,"_bf":2,find:[0,5],nearer:5,onli:[8,4,5],get_hop:3,copyright:1,explain:2,configur:6,forev:2,should:[3,9],add_nod:[3,2],neato:[9,2],local:3,gone:2,get:4,express:1,stop:3,getid:8,filter_stack:6,acces:9,cannot:[6,8],edge_styl:[9,2],drawn:9,increas:8,liabl:1,createnod:8,hide_edg:3,yield:[3,8,9,2],patch:2,"default":[3,4,9],bad:0,statist:0,contain:[8,2],attribut:2,grapherror:[0,6,3,2],view:2,set:[6,9,2],all_edg:3,orphan:6,iterdata:[3,2],displai:9,datatyp:0,see:[8,9],result:[3,4,9,2],arg:8,fail:2,closer:9,correctli:5,label:9,written:[0,9],won:[3,9],between:[3,4,2],"import":9,msgout:8,spars:2,kei:8,reinstat:8,entir:8,addit:0,both:9,findnod:8,extens:[0,2],hashabl:3,equal:5,contract:1,get_edg:8,multi_edg:6,instanc:6,edge_num:6,node_data:3,kwd:8,point:[6,9],color:9,unittest:2,walk:6,suppli:3,mistak:5,assum:5,duplic:6,liabil:1,creat:[6,8,9,2],oder:6,due:2,been:0,compon:0,edge_by_nod:3,box:9,imag:9,argument:[3,4,8,9,2],neighbour:3,func:9,ranksep:9,those:[3,4],number_of_nod:3,save:9,look:9,solid:9,removenod:8,properti:5,save_img:[9,2],node_styl:9,back_bfs_subgraph:[3,2],calcul:4,behavior:3,exist:[8,3,6,2],loos:0,loop:2,spawn:9,almost:2,readm:2,destin:3,cluster:3,itself:[6,8],incom:[3,4,8,6],tediou:9,rankdir:9,grant:1,perform:6,alphabet:2,make:5,format:9,back_topo_sort:[3,2],node_list:3,member:8,inconsist:0,inch:9,nodevisitor:9,temp_dot:9,inc:4,complet:2,http:2,closest:6,optim:0,effect:2,rais:[6,0,5,3,2],user:[7,2],distutil:2,typic:[3,9],expand:0,noninfring:1,center:[3,4],hidden_edge_list:3,fromnod:8,edge_by_id:3,person:1,without:[3,9,1,2],command:9,thi:[7,1,2,3,5,6,8,9],model:0,self:8,tonod:8,distanc:3,identifi:7,less:[6,8],when:[0,2,3,4,5,6,8,9],obtain:1,out_edg:3,shape:9,previous:[3,8],msgin:8,expos:9,tail_id:3,had:2,except:[0,5,3],add:[3,8,9,2],appli:6,input:[5,9],successor:3,match:[6,8],bin:4,around:3,transpar:9,start_id:3,removerefer:8,objectgraph:[7,2],specif:0,deprec:9,arbitrari:3,either:8,fill:9,output:2,page:[7,9],revers:3,deal:1,some:[3,5,2],"_df":2,"export":2,flatten:8,number_of_hidden_edg:3,file_typ:9,separ:9,scale:6,"__contains__":[3,8,2],pombredann:2,shall:1,subclass:8,tracker:[7,2],exit:9,condit:[3,8],damag:1,topolog:[0,7],refer:[3,8,9,2],ippolito:1,object:[3,8,2],run:2,bold:9,inspect:6,broken:2,step:6,powerlaw:6,although:6,fulli:6,about:9,actual:[3,8,2],dotti:9,restore_all_nod:3,degre:6,outgo:[3,4,8],constructor:[9,2],denni:0,effici:0,forw_bfs_subgraph:[3,2],digraph:9,basenam:9,within:9,three:3,warranti:1,right:[9,1],empti:[3,9],inc_nbr:3,chang:2,merg:1,triangl:9,wai:9,whom:1,aren:3,addnod:8,support:[0,2],avail:2,start:[8,0,5,6,3],includ:[0,9,1,2],replac:9,forward:[3,2],"function":[0,9,2],head:[3,9,6],subgraph:3,last_good:6,bin_num:4,state:[0,2],newer:0,mydot:9,inc_edg:3,line:9,"true":[3,8,6],bug:2,count:4,attr:9,consist:[3,6,2],possibl:2,whether:1,bugfix:2,access:3,maximum:[3,4],limit:[4,1],otherwis:[3,9,1],significantli:0,sort:[0,7],featur:[0,9,2],growth_n:6,inv:9,doesn:[6,2],repres:3,decreas:8,file:[9,1,2],guarante:5,bob:1,proport:[3,6],check:2,probabl:6,arrowhead:9,unhidden:3,"2to3":2,detail:9,hide_nod:3,other:[3,1,2],node_num:6,test:2,you:2,labelangl:9,node:[9,2],draw:9,intend:9,inc_degre:3,sequenc:3,vertex:5,istvan:1,create_nod:[3,2],graphlib:[0,7],unless:[9,1],bitbucket:[7,2],sphinx:2,longer:2,filterstack:8,number_of_edg:3,descript:6,apear:3,depth:[3,6],time:3,backward:9},objtypes:{"0":"py:module","1":"py:method","2":"py:class","3":"py:function","4":"py:data","5":"py:exception"},objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","class","Python class"],"3":["py","function","Python function"],"4":["py","data","Python data"],"5":["py","exception","Python exception"]},filenames:["core","license","changelog","graph","graphstat","graphalgo","graphutil","index","objectgraph","dot"],titles:["<tt class=\"docutils literal\"><span class=\"pre\">altgraph</span></tt> &#8212; A Python Graph Library","License","Release history","<tt class=\"docutils literal\"><span class=\"pre\">altgraph.Graph</span></tt> &#8212; Basic directional graphs","<tt class=\"docutils literal\"><span class=\"pre\">altgraph.GraphStat</span></tt> &#8212; Functions providing various graph statistics","<tt class=\"docutils literal\"><span class=\"pre\">altgraph.GraphAlgo</span></tt> &#8212; Graph algorithms","<tt class=\"docutils literal\"><span class=\"pre\">altgraph.GraphUtil</span></tt> &#8212; Utility functions","Altgraph - A basic graph library","<tt class=\"docutils literal\"><span class=\"pre\">altgraph.ObjectGraph</span></tt> &#8212; Graphs of objecs with an identifier","<tt class=\"docutils literal\"><span class=\"pre\">altgraph.Dot</span></tt> &#8212; Interface to the dot language"],objects:{"":{altgraph:[0,0,0,"-"]},"altgraph.Graph":{Graph:[3,2,1,""],node_data:[3,1,1,""]},"altgraph.Dot.Dot":{node_style:[9,1,1,""],style:[9,1,1,""],all_node_style:[9,1,1,""],display:[9,1,1,""]},"altgraph.Graph.Graph":{number_of_hidden_nodes:[3,1,1,""],out_edges:[3,1,1,""],inc_degree:[3,1,1,""],forw_bfs_subgraph:[3,1,1,""],edge_list:[3,1,1,""],add_node:[3,1,1,""],hidden_node_list:[3,1,1,""],iterdata:[3,1,1,""],clust_coef:[3,1,1,""],all_edges:[3,1,1,""],describe_edge:[3,1,1,""],all_degree:[3,1,1,""],get_hops:[3,1,1,""],hide_node:[3,1,1,""],out_degree:[3,1,1,""],edge_by_node:[3,1,1,""],"__contains__":[3,1,1,""],restore_edge:[3,1,1,""],describe_node:[3,1,1,""],back_topo_sort:[3,1,1,""],node_list:[3,1,1,""],forw_topo_sort:[3,1,1,""],tail:[3,1,1,""],restore_all_nodes:[3,1,1,""],all_nbrs:[3,1,1,""],restore_all_edges:[3,1,1,""],restore_node:[3,1,1,""],head:[3,1,1,""],number_of_nodes:[3,1,1,""],iterdfs:[3,1,1,""],"__iter__":[3,1,1,""],connected:[3,1,1,""],forw_bfs:[3,1,1,""],add_edge:[3,1,1,""],number_of_hidden_edges:[3,1,1,""],inc_nbrs:[3,1,1,""],out_nbrs:[3,1,1,""],hidden_edge_list:[3,1,1,""],inc_edges:[3,1,1,""],number_of_edges:[3,1,1,""],back_bfs_subgraph:[3,1,1,""],edge_data:[3,1,1,""],hide_edge:[3,1,1,""],edge_by_id:[3,1,1,""],back_bfs:[3,1,1,""]},"altgraph.GraphAlgo":{dijkstra:[5,3,1,""],shortest_path:[5,3,1,""]},altgraph:{Graph:[3,0,0,"-"],GraphStat:[4,0,0,"-"],GraphAlgo:[5,0,0,"-"],GraphUtil:[6,0,0,"-"],GraphError:[0,5,1,""],ObjectGraph:[8,0,0,"-"],Dot:[9,0,0,"-"]},"altgraph.Dot":{save_image:[9,1,1,""],save_dot:[9,1,1,""],iterdot:[9,1,1,""],"__iter__":[9,1,1,""],edge_style:[9,1,1,""],Dot:[9,2,1,""]},"altgraph.GraphStat":{degree_dist:[4,3,1,""]},"altgraph.ObjectGraph":{removeReference:[8,1,1,""],getIdent:[8,1,1,""],ObjectGraph:[8,2,1,""]},"altgraph.GraphUtil":{generate_random_graph:[6,3,1,""],generate_scale_free_graph:[6,3,1,""],filter_stack:[6,3,1,""]},"altgraph.ObjectGraph.ObjectGraph":{findNode:[8,1,1,""],createNode:[8,1,1,""],msgin:[8,1,1,""],removeNode:[8,1,1,""],addNode:[8,1,1,""],"__contains__":[8,1,1,""],graph:[8,4,1,""],createReferences:[8,1,1,""],filterStack:[8,1,1,""],msg:[8,1,1,""],flatten:[8,1,1,""],debug:[8,4,1,""],get_edges:[8,1,1,""],getRawIdent:[8,1,1,""],nodes:[8,1,1,""],msgout:[8,1,1,""]}},titleterms:{node:3,identifi:8,edg:3,graphstat:4,direct:[3,9],indic:7,tabl:7,onlin:7,histori:2,librari:[0,7],graph:[0,7,3,4,5,8,9],licens:1,custom:9,graphutil:6,valid:9,interfac:9,languag:9,basic:[3,7],method:3,updat:9,"function":[6,4],non:9,altgraph:[0,7,3,4,5,6,8,9],resourc:7,variou:4,python:0,relat:3,usag:9,util:6,objec:8,releas:2,objectgraph:8,"class":9,travers:3,algorithm:5,provid:4,graphalgo:5,mit:1,exampl:9,statist:[3,4],debug:8,output:[8,9],attribut:9,emit:9,dot:9}})
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/changelog.rst
@@ -0,0 +1,185 @@
+Release history
+===============
+
+0.12
+----
+
+- Added ``ObjectGraph.edgeData`` to retrieve the edge data
+  from a specific edge.
+
+- Added ``AltGraph.update_edge_data`` and ``ObjectGraph.updateEdgeData``
+  to update the data associated with a graph edge.
+
+0.11
+----
+
+- Stabilize the order of elements in dot file exports,
+  patch from bitbucket user 'pombredanne'.
+
+- Tweak setup.py file to remove dependency on distribute (but
+  keep the dependency on setuptools)
+
+
+0.10.2
+------
+
+- There where no classifiers in the package metadata due to a bug
+  in setup.py
+
+0.10.1
+------
+
+This is a bugfix release
+
+Bug fixes:
+
+- Issue #3: The source archive contains a README.txt
+  while the setup file refers to ReadMe.txt.
+
+  This is caused by a misfeature in distutils, as a
+  workaround I've renamed ReadMe.txt to README.txt
+  in the source tree and setup file.
+
+
+0.10
+-----
+
+This is a minor feature release
+
+Features:
+
+- Do not use "2to3" to support Python 3.
+
+  As a side effect of this altgraph now supports
+  Python 2.6 and later, and no longer supports
+  earlier releases of Python.
+
+- The order of attributes in the Dot output
+  is now always alphabetical.
+
+  With this change the output will be consistent
+  between runs and Python versions.
+
+0.9
+---
+
+This is a minor bugfix release
+
+Features:
+
+- Added ``altgraph.ObjectGraph.ObjectGraph.nodes``, a method
+  yielding all nodes in an object graph.
+
+Bugfixes:
+
+- The 0.8 release didn't work with py2app when using
+  python 3.x.
+
+
+0.8
+-----
+
+This is a minor feature release. The major new feature
+is a extensive set of unittests, which explains almost
+all other changes in this release.
+
+Bugfixes:
+
+- Installing failed with Python 2.5 due to using a distutils
+  class that isn't available in that version of Python
+  (issue #1 on the issue tracker)
+
+- ``altgraph.GraphStat.degree_dist`` now actually works
+
+- ``altgraph.Graph.add_edge(a, b, create_nodes=False)`` will
+  no longer create the edge when one of the nodes doesn't
+  exist.
+
+- ``altgraph.Graph.forw_topo_sort`` failed for some sparse graphs.
+
+- ``altgraph.Graph.back_topo_sort`` was completely broken in
+  previous releases.
+
+- ``altgraph.Graph.forw_bfs_subgraph`` now actually works.
+
+- ``altgraph.Graph.back_bfs_subgraph`` now actually works.
+
+- ``altgraph.Graph.iterdfs`` now returns the correct result
+  when the ``forward`` argument is ``False``.
+
+- ``altgraph.Graph.iterdata`` now returns the correct result
+  when the ``forward`` argument is ``False``.
+
+
+Features:
+
+- The ``altgraph.Graph`` constructor now accepts an argument
+  that contains 2- and 3-tuples instead of requireing that
+  all items have the same size. The (optional) argument can now
+  also be any iterator.
+
+- ``altgraph.Graph.Graph.add_node`` has no effect when you
+  add a hidden node.
+
+- The private method ``altgraph.Graph._bfs`` is no longer
+  present.
+
+- The private method ``altgraph.Graph._dfs`` is no longer
+  present.
+
+- ``altgraph.ObjectGraph`` now has a ``__contains__`` methods,
+  which means you can use the ``in`` operator to check if a
+  node is part of a graph.
+
+- ``altgraph.GraphUtil.generate_random_graph`` will raise
+  ``GraphError`` instead of looping forever when it is
+  impossible to create the requested graph.
+
+- ``altgraph.Dot.edge_style`` raises ``GraphError`` when
+  one of the nodes is not present in the graph. The method
+  silently added the tail in the past, but without ensuring
+  a consistent graph state.
+
+- ``altgraph.Dot.save_img`` now works when the mode is
+  ``"neato"``.
+
+0.7.2
+-----
+
+This is a minor bugfix release
+
+Bugfixes:
+
+- distutils didn't include the documentation subtree
+
+0.7.1
+-----
+
+This is a minor feature release
+
+Features:
+
+- Documentation is now generated using `sphinx <http://pypi.python.org/pypi/sphinx>`_
+  and can be viewed at <http://packages.python.org/altgraph>.
+
+- The repository has moved to bitbucket
+
+- ``altgraph.GraphStat.avg_hops`` is no longer present, the function had no
+  implementation and no specified behaviour.
+
+- the module ``altgraph.compat`` is gone, which means altgraph will no
+  longer work with Python 2.3.
+
+
+0.7.0
+-----
+
+This is a minor feature release.
+
+Features:
+
+- Support for Python 3
+
+- It is now possible to run tests using 'python setup.py test'
+
+  (The actual testsuite is still very minimal though)
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/conf.py
@@ -0,0 +1,209 @@
+# -*- coding: utf-8 -*-
+#
+# altgraph documentation build configuration file, created by
+# sphinx-quickstart on Tue Aug 31 11:04:49 2010.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+def get_version():
+    fn = os.path.join(
+            os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
+            'setup.cfg')
+    for ln in open(fn):
+        if ln.startswith('version'):
+            version = ln.split('=')[-1].strip()
+            return version
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+sys.path.insert(0,
+        os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+
+# -- General configuration -----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.autodoc' ]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'altgraph'
+copyright = u'2010-2011, Ronald Oussoren, Bob Ippolito, 2004 Istvan Albert'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = get_version()
+# The full version, including alpha/beta/rc tags.
+release = version
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+html_theme = 'nature'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+html_show_sourcelink = False
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'altgraphdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'altgraph.tex', u'altgraph Documentation',
+   u'Ronald Oussoren', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
+
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'python': ('http://docs.python.org/', None) }
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/core.rst
@@ -0,0 +1,26 @@
+:mod:`altgraph` --- A Python Graph Library
+==================================================
+
+.. module:: altgraph
+   :synopsis: A directional graph for python
+
+altgraph is a fork of `graphlib <http://pygraphlib.sourceforge.net>`_ tailored
+to use newer Python 2.3+ features, including additional support used by the
+py2app suite (modulegraph and macholib, specifically).
+
+altgraph is a python based graph (network) representation and manipulation package.
+It has started out as an extension to the `graph_lib module <http://www.ece.arizona.edu/~denny/python_nest/graph_lib_1.0.1.html>`_
+written by Nathan Denny it has been significantly optimized and expanded.
+
+The :class:`altgraph.Graph.Graph` class is loosely modeled after the `LEDA <http://www.algorithmic-solutions.com/enleda.htm>`_ 
+(Library of Efficient Datatypes)  representation. The library
+includes methods for constructing graphs, BFS and DFS traversals,
+topological sort, finding connected components, shortest paths as well as a number
+graph statistics functions. The library can also visualize graphs
+via `graphviz <http://www.research.att.com/sw/tools/graphviz/>`_.
+
+
+.. exception:: GraphError
+
+   Exception raised when methods are called with bad values of
+   an inconsistent state.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/dot.rst
@@ -0,0 +1,224 @@
+:mod:`altgraph.Dot` --- Interface to the dot language
+=====================================================
+
+.. module:: altgraph.Dot
+   :synopsis: Interface to the dot language as used by Graphviz..
+
+The :py:mod:`~altgraph.Dot` module provides a simple interface to the
+file format used in the `graphviz`_ program. The module is intended to 
+offload the most tedious part of the process (the **dot** file generation) 
+while transparently exposing most of its features.
+
+.. _`graphviz`: <http://www.research.att.com/sw/tools/graphviz/>`_
+
+To display the graphs or to generate image files the `graphviz`_
+package needs to be installed on the system, moreover the :command:`dot` and :command:`dotty` programs must
+be accesible in the program path so that they can be ran from processes spawned
+within the module. 
+
+Example usage
+-------------
+
+Here is a typical usage::
+
+    from altgraph import Graph, Dot
+
+    # create a graph
+    edges = [ (1,2), (1,3), (3,4), (3,5), (4,5), (5,4) ]
+    graph = Graph.Graph(edges)
+    
+    # create a dot representation of the graph
+    dot = Dot.Dot(graph)
+
+    # display the graph
+    dot.display()
+
+    # save the dot representation into the mydot.dot file
+    dot.save_dot(file_name='mydot.dot')
+
+    # save dot file as gif image into the graph.gif file
+    dot.save_img(file_name='graph', file_type='gif')
+
+
+Directed graph and non-directed graph
+-------------------------------------
+
+Dot class can use for both directed graph and non-directed graph
+by passing *graphtype* parameter.
+
+Example::
+
+    # create directed graph(default)
+    dot = Dot.Dot(graph, graphtype="digraph")
+
+    # create non-directed graph
+    dot = Dot.Dot(graph, graphtype="graph")
+
+
+Customizing the output
+----------------------
+
+The graph drawing process may be customized by passing
+valid :command:`dot` parameters for the nodes and edges. For a list of all
+parameters see the `graphviz`_ documentation.
+
+Example::
+
+    # customizing the way the overall graph is drawn
+    dot.style(size='10,10', rankdir='RL', page='5, 5' , ranksep=0.75)
+
+    # customizing node drawing
+    dot.node_style(1, label='BASE_NODE',shape='box', color='blue' )
+    dot.node_style(2, style='filled', fillcolor='red')
+
+    # customizing edge drawing
+    dot.edge_style(1, 2, style='dotted')
+    dot.edge_style(3, 5, arrowhead='dot', label='binds', labelangle='90')
+    dot.edge_style(4, 5, arrowsize=2, style='bold')
+
+
+    .. note:: 
+       
+       dotty (invoked via :py:func:`~altgraph.Dot.display`) may not be able to
+       display all graphics styles. To verify the output save it to an image 
+       file and look at it that way.
+
+Valid attributes
+----------------
+
+- dot styles, passed via the :py:meth:`Dot.style` method::
+
+    rankdir = 'LR'   (draws the graph horizontally, left to right)
+    ranksep = number (rank separation in inches)
+
+- node attributes, passed via the :py:meth:`Dot.node_style` method::
+
+     style = 'filled' | 'invisible' | 'diagonals' | 'rounded'
+     shape = 'box' | 'ellipse' | 'circle' | 'point' | 'triangle'
+
+- edge attributes, passed via the :py:meth:`Dot.edge_style` method::
+
+     style     = 'dashed' | 'dotted' | 'solid' | 'invis' | 'bold'
+     arrowhead = 'box' | 'crow' | 'diamond' | 'dot' | 'inv' | 'none' | 'tee' | 'vee'
+     weight    = number (the larger the number the closer the nodes will be)
+
+- valid `graphviz colors <http://www.research.att.com/~erg/graphviz/info/colors.html>`_
+
+- for more details on how to control the graph drawing process see the 
+  `graphviz reference <http://www.research.att.com/sw/tools/graphviz/refs.html>`_.
+
+
+Class interface
+---------------
+
+.. class:: Dot(graph[, nodes[, edgefn[, nodevisitor[, edgevisitor[, name[, dot[, dotty[, neato[, graphtype]]]]]]]]])
+
+  Creates a new Dot generator based on the specified 
+  :class:`Graph <altgraph.Graph.Graph>`.  The Dot generator won't reference
+  the *graph* once it is constructed.
+
+  If the *nodes* argument is present it is the list of nodes to include
+  in the graph, otherwise all nodes in *graph* are included.
+  
+  If the *edgefn* argument is present it is a function that yields the
+  nodes connected to another node, this defaults to 
+  :meth:`graph.out_nbr <altgraph.Graph.Graph.out_nbr>`. The constructor won't
+  add edges to the dot file unless both the head and tail of the edge
+  are in *nodes*.
+
+  If the *name* is present it specifies the name of the graph in the resulting
+  dot file. The default is ``"G"``.
+
+  The functions *nodevisitor* and *edgevisitor* return the default style
+  for a given edge or node (both default to functions that return an empty
+  style).
+
+  The arguments *dot*, *dotty* and *neato* are used to pass the path to 
+  the corresponding `graphviz`_ command.
+
+
+Updating graph attributes
+.........................
+
+.. method:: Dot.style(\**attr)
+
+   Sets the overall style (graph attributes) to the given attributes.
+
+   See `Valid Attributes`_ for more information about the attributes.
+
+.. method:: Dot.node_style(node, \**attr)
+
+   Sets the style for *node* to the given attributes.
+
+   This method will add *node* to the graph when it isn't already 
+   present.
+
+   See `Valid Attributes`_ for more information about the attributes.
+
+.. method:: Dot.all_node_style(\**attr)
+
+   Replaces the current style for all nodes
+
+
+.. method:: edge_style(head, tail, \**attr)
+
+   Sets the style of an edge to the given attributes. The edge will
+   be added to the graph when it isn't already present, but *head*
+   and *tail* must both be valid nodes.
+
+   See `Valid Attributes`_ for more information about the attributes.
+
+
+
+Emitting output
+...............
+
+.. method:: Dot.display([mode])
+
+   Displays the current graph via dotty.
+
+   If the *mode* is ``"neato"`` the dot file is processed with
+   the neato command before displaying.
+
+   This method won't return until the dotty command exits.
+
+.. method:: save_dot(filename)
+
+   Saves the current graph representation into the given file.
+
+   .. note::
+
+       For backward compatibility reasons this method can also
+       be called without an argument, it will then write the graph
+       into a fixed filename (present in the attribute :data:`Graph.temp_dot`).
+
+       This feature is deprecated and should not be used.
+
+
+.. method:: save_image(file_name[, file_type[, mode]])
+
+   Saves the current graph representation as an image file. The output
+   is written into a file whose basename is *file_name* and whose suffix
+   is *file_type*.
+
+   The *file_type* specifies the type of file to write, the default
+   is ``"gif"``.
+
+   If the *mode* is ``"neato"`` the dot file is processed with
+   the neato command before displaying.
+
+   .. note::
+
+       For backward compatibility reasons this method can also
+       be called without an argument, it will then write the graph
+       with a fixed basename (``"out"``).
+
+       This feature is deprecated and should not be used.
+
+.. method:: iterdot()
+
+   Yields all lines of a `graphviz`_ input file (including line endings).
+
+.. method:: __iter__()
+
+   Alias for the :meth:`iterdot` method.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/graph.rst
@@ -0,0 +1,305 @@
+:mod:`altgraph.Graph` --- Basic directional graphs
+==================================================
+
+.. module:: altgraph.Graph
+   :synopsis: Basic directional graphs.
+
+The module :mod:`altgraph.Graph` provides a class :class:`Graph` that
+represents a directed graph with *N* nodes and *E* edges.
+
+.. class:: Graph([edges])
+
+  Constructs a new empty :class:`Graph` object. If the optional
+  *edges* parameter is supplied, updates the graph by adding the
+  specified edges.
+
+  All of the elements in *edges* should be tuples with two or three
+  elements. The first two elements of the tuple are the source and
+  destination node of the edge, the optional third element is the
+  edge data.  The source and destination nodes are added to the graph
+  when the aren't already present.
+
+
+Node related methods
+--------------------
+
+.. method:: Graph.add_node(node[, node_data])
+
+   Adds a new node to the graph if it is not already present. The new
+   node must be a hashable object.
+
+   Arbitrary data can be attached to the node via the optional *node_data*
+   argument.
+
+   .. note:: the node also won't be added to the graph when it is
+      present but currently hidden.
+
+
+.. method:: Graph.hide_node(node)
+
+   Hides a *node* from the graph. The incoming and outgoing edges of
+   the node will also be hidden.
+
+   Raises :class:`altgraph.GraphError` when the node is not (visible)
+   node of the graph.
+
+
+.. method:: Graph.restore_node(node)
+
+   Restores a previously hidden *node*. The incoming and outgoing
+   edges of the node are also restored.
+
+   Raises :class:`altgraph.GraphError` when the node is not a hidden
+   node of the graph.
+
+.. method:: Graph.restore_all_nodes()
+
+   Restores all hidden nodes.
+
+.. method:: Graph.number_of_nodes()
+
+   Return the number of visible nodes in the graph.
+
+.. method:: Graph.number_of_hidden_nodes()
+
+   Return the number of hidden nodes in the graph.
+
+.. method:: Graph.node_list()
+
+   Return a list with all visible nodes in the graph.
+
+.. method:: Graph.hidden_node_list()
+
+   Return a list with all hidden nodes in the graph.
+
+.. method:: node_data(node)
+
+   Return the data associated with the *node* when it was
+   added.
+
+.. method:: Graph.describe_node(node)
+
+   Returns *node*, the node's data and the lists of outgoing
+   and incoming edges for the node.
+
+   .. note::
+
+      the edge lists should not be modified, doing so
+      can result in unpredicatable behavior.
+
+.. method:: Graph.__contains__(node)
+
+   Returns True iff *node* is a node in the graph. This
+   method is accessed through the *in* operator.
+
+.. method:: Graph.__iter__()
+
+   Yield all nodes in the graph.
+
+.. method:: Graph.out_edges(node)
+
+   Return the list of outgoing edges for *node*
+
+.. method:: Graph.inc_edges(node)
+
+   Return the list of incoming edges for *node*
+
+.. method:: Graph.all_edges(node)
+
+   Return the list of incoming and outgoing edges for *node*
+
+.. method:: Graph.out_degree(node)
+
+   Return the number of outgoing edges for *node*.
+
+.. method:: Graph.inc_degree(node)
+
+   Return the number of incoming edges for *node*.
+
+.. method:: Graph.all_degree(node)
+
+   Return the number of edges (incoming or outgoing) for *node*.
+
+Edge related methods
+--------------------
+
+.. method:: Graph.add_edge(head_id, tail_id [, edge data [, create_nodes]])
+
+   Adds a directed edge from *head_id* to *tail_id*. Arbitrary data can
+   be added via *edge_data*.  When *create_nodes* is *True* (the default),
+   *head_id* and *tail_id* will be added to the graph when the aren't
+   already present.
+
+.. method:: Graph.hide_edge(edge)
+
+   Hides an edge from the graph. The edge may be unhidden at some later
+   time.
+
+.. method:: Graph.restore_edge(edge)
+
+   Restores a previously hidden *edge*.
+
+.. method:: Graph.restore_all_edges()
+
+   Restore all edges that were hidden before, except for edges
+   referring to hidden nodes.
+
+.. method:: Graph.edge_by_node(head, tail)
+
+   Return the edge ID for an edge from *head* to *tail*,
+   or :data:`None` when no such edge exists.
+
+.. method:: Graph.edge_by_id(edge)
+
+   Return the head and tail of the *edge*
+
+.. method:: Graph.edge_data(edge)
+
+   Return the data associated with the *edge*.
+
+.. method:: Graph.update_edge_data(edge, data)
+
+   Replace the edge data for *edge* by *data*. Raises
+   :exc:`KeyError` when the edge does not exist.
+
+   .. versionadded:: 0.12
+
+.. method:: Graph.head(edge)
+
+   Return the head of an *edge*
+
+.. method:: Graph.tail(edge)
+
+   Return the tail of an *edge*
+
+.. method:: Graph.describe_edge(edge)
+
+   Return the *edge*, the associated data, its head and tail.
+
+.. method:: Graph.number_of_edges()
+
+   Return the number of visible edges.
+
+.. method:: Graph.number_of_hidden_edges()
+
+   Return the number of hidden edges.
+
+.. method:: Graph.edge_list()
+
+   Returns a list with all visible edges in the graph.
+
+.. method:: Graph.hidden_edge_list()
+
+   Returns a list with all hidden edges in the graph.
+
+Graph traversal
+---------------
+
+.. method:: Graph.out_nbrs(node)
+
+   Return a list of all nodes connected by outgoing edges.
+
+.. method:: Graph.inc_nbrs(node)
+
+   Return a list of all nodes connected by incoming edges.
+
+.. method:: Graph.all_nbrs(node)
+
+   Returns a list of nodes connected by an incoming or outgoing edge.
+
+.. method:: Graph.forw_topo_sort()
+
+   Return a list of nodes where the successors (based on outgoing
+   edges) of any given node apear in the sequence after that node.
+
+.. method:: Graph.back_topo_sort()
+
+   Return a list of nodes where the successors (based on incoming
+   edges) of any given node apear in the sequence after that node.
+
+.. method:: Graph.forw_bfs_subgraph(start_id)
+
+   Return a subgraph consisting of the breadth first
+   reachable nodes from *start_id* based on their outgoing edges.
+
+
+.. method:: Graph.back_bfs_subgraph(start_id)
+
+   Return a subgraph consisting of the breadth first
+   reachable nodes from *start_id* based on their incoming edges.
+
+.. method:: Graph.iterdfs(start[, end[, forward]])
+
+   Yield nodes in a depth first traversal starting at the *start*
+   node.
+
+   If *end* is specified traversal stops when reaching that node.
+
+   If forward is True (the default) edges are traversed in forward
+   direction, otherwise they are traversed in reverse direction.
+
+.. method:: Graph.iterdata(start[, end[, forward[, condition]]])
+
+   Yield the associated data for nodes in a depth first traversal
+   starting at the *start* node. This method will not yield values for nodes
+   without associated data.
+
+   If *end* is specified traversal stops when reaching that node.
+
+   If *condition* is specified and the condition callable returns
+   False for the associated data this method will not yield the
+   associated data and will not follow the edges for the node.
+
+   If forward is True (the default) edges are traversed in forward
+   direction, otherwise they are traversed in reverse direction.
+
+.. method:: Graph.forw_bfs(start[, end])
+
+   Returns a list of nodes starting at *start* in some bread first
+   search order (following outgoing edges).
+
+   When *end* is specified iteration stops at that node.
+
+.. method:: Graph.back_bfs(start[, end])
+
+   Returns a list of nodes starting at *start* in some bread first
+   search order (following incoming edges).
+
+   When *end* is specified iteration stops at that node.
+
+.. method:: Graph.get_hops(start[, end[, forward]])
+
+   Computes the hop distance to all nodes centered around a specified node.
+
+   First order neighbours are at hop 1, their neigbours are at hop 2 etc.
+   Uses :py:meth:`forw_bfs` or :py:meth:`back_bfs` depending on the value of
+   the forward parameter.
+
+   If the distance between all neighbouring nodes is 1 the hop number
+   corresponds to the shortest distance between the nodes.
+
+   Typical usage::
+
+        >>> print graph.get_hops(1, 8)
+        >>> [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)]
+        # node 1 is at 0 hops
+        # node 2 is at 1 hop
+        # ...
+        # node 8 is at 5 hops
+
+
+Graph statistics
+----------------
+
+.. method:: Graph.connected()
+
+   Returns True iff every node in the graph can be reached from
+   every other node.
+
+.. method:: Graph.clust_coef(node)
+
+   Returns the local clustering coefficient of node.
+
+   The local cluster coefficient is the proportion of the actual number
+   of edges between neighbours of node and the maximum number of
+   edges between those nodes.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/graphalgo.rst
@@ -0,0 +1,26 @@
+:mod:`altgraph.GraphAlgo` --- Graph algorithms
+==================================================
+
+.. module:: altgraph.GraphAlgo
+   :synopsis: Basic graphs algoritms
+
+.. function:: dijkstra(graph, start[, end])
+
+   Dijkstra's algorithm for shortest paths.
+
+   Find shortest paths from the  start node to all nodes nearer 
+   than or equal to the *end* node. The edge data is assumed to be the edge length.
+
+   .. note::
+
+       Dijkstra's algorithm is only guaranteed to work correctly when all edge lengths are positive.
+       This code does not verify this property for all edges (only the edges examined until the end
+       vertex is reached), but will correctly compute shortest paths even for some graphs with negative
+       edges, and will raise an exception if it discovers that a negative edge has caused it to make a mistake.
+
+
+.. function:: shortest_path(graph, start, end)
+
+   Find a single shortest path from the given start node to the given end node.
+   The input has the same conventions as :func:`dijkstra`. The output is a list 
+   of the nodes in order along the shortest path.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/graphstat.rst
@@ -0,0 +1,25 @@
+:mod:`altgraph.GraphStat` --- Functions providing various graph statistics
+==========================================================================
+
+.. module:: altgraph.GraphStat
+   :synopsis: Functions providing various graph statistics
+
+The module :mod:`altgraph.GraphStat` provides function that calculate
+graph statistics. Currently there is only one such function, more may
+be added later.
+
+.. function:: degree_dist(graph[, limits[, bin_num[, mode]]])
+
+   Groups the number of edges per node into *bin_num* bins
+   and returns the list of those bins. Every item in the result
+   is a tuple with the center of the bin and the number of items
+   in that bin.
+
+   When the *limits* argument is present it must be a tuple with
+   the mininum and maximum number of edges that get binned (that
+   is, when *limits* is ``(4, 10)`` only nodes with between 4
+   and 10 edges get counted.
+
+   The *mode* argument is used to count incoming (``'inc'``) or
+   outgoing (``'out'``) edges. The default is to count the outgoing
+   edges.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/graphutil.rst
@@ -0,0 +1,55 @@
+:mod:`altgraph.GraphUtil` --- Utility functions
+================================================
+
+.. module:: altgraph.GraphUtil
+   :synopsis: Utility functions
+
+The module :mod:`altgraph.GraphUtil` performs a number of more
+or less useful utility functions.
+
+.. function:: generate_random_graph(node_num, edge_num[, self_loops[, multi_edges])
+
+   Generates and returns a :class:`Graph <altgraph.Graph.Graph>` instance
+   with *node_num* nodes randomly connected by *edge_num* edges.
+
+   When *self_loops* is present and True there can be edges that point from
+   a node to itself.
+
+   When *multi_edge* is present and True there can be duplicate edges.
+
+   This method raises :class:`GraphError <altgraph.GraphError` when
+   a graph with the requested configuration cannot be created.
+
+.. function:: generate_scale_free_graph(steps, growth_num[, self_loops[, multi_edges]])
+
+    Generates and returns a :py:class:`~altgraph.Graph.Graph` instance that 
+    will have *steps*growth_n um* nodes and a scale free (powerlaw) 
+    connectivity. 
+    
+    Starting with a fully connected graph with *growth_num* nodes
+    at every step *growth_num* nodes are added to the graph and are connected 
+    to existing nodes with a probability proportional to the degree of these 
+    existing nodes.
+
+    .. warning:: The current implementation is basically untested, although
+       code inspection seems to indicate an implementation that is consistent
+       with the description at 
+       `Wolfram MathWorld <http://mathworld.wolfram.com/Scale-FreeNetwork.html>`_
+
+.. function:: filter_stack(graph, head, filters)
+
+   Perform a depth-first oder walk of the graph starting at *head* and
+   apply all filter functions in *filters* on the node data of the nodes
+   found.
+
+   Returns (*visited*, *removes*, *orphans*), where
+
+   * *visited*: the set of visited nodes
+
+   * *removes*: the list of nodes where the node data doesn't match
+     all *filters*.
+
+   * *orphans*: list of tuples (*last_good*, *node*), where 
+     node is not in *removes* and one of the nodes that is connected
+     by an incoming edge is in *removes*. *Last_good* is the
+     closest upstream node that is not in *removes*.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/index.rst
@@ -0,0 +1,41 @@
+.. altgraph documentation master file, created by
+   sphinx-quickstart on Tue Aug 31 11:04:49 2010.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Altgraph - A basic graph library
+================================
+
+altgraph is a fork of graphlib: a graph (network) package for constructing
+graphs, BFS and DFS traversals, topological sort, shortest paths, etc. with
+graphviz output.
+
+The primary users of this package are `macholib <http://pypi.python.org/pypi/macholib>`_ and `modulegraph <http://pypi.python.org/pypi/modulegraph>`_.
+
+.. toctree::
+   :maxdepth: 1
+
+   changelog
+   license
+   core
+   graph
+   objectgraph
+   graphalgo
+   graphstat
+   graphutil
+   dot
+
+Online Resources
+----------------
+
+* `Sourcecode repository on bitbucket <http://bitbucket.org/ronaldoussoren/altgraph/>`_
+
+* `The issue tracker <http://bitbucket.org/ronaldoussoren/altgraph/issues>`_
+
+Indices and tables
+------------------
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/license.rst
@@ -0,0 +1,25 @@
+License
+=======
+
+Copyright (c) 2004 Istvan Albert unless otherwise noted.
+
+Parts are copyright (c) Bob Ippolito
+
+Parts are copyright (c) 2010-2014 Ronald Oussoren
+
+MIT License
+...........
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
+so.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
new file mode 100644
--- /dev/null
+++ b/python/altgraph/doc/objectgraph.rst
@@ -0,0 +1,146 @@
+:mod:`altgraph.ObjectGraph` --- Graphs of objecs with an identifier
+===================================================================
+
+.. module:: altgraph.ObjectGraph
+   :synopsis: A graph of objects that have a "graphident" attribute.
+
+.. class:: ObjectGraph([graph[, debug]])
+
+   A graph of objects that have a "graphident" attribute. The
+   value of this attribute is the key for the object in the
+   graph.
+
+   The optional *graph* is a previously constructed
+   :class:`Graph <altgraph.Graph.Graph>`.
+
+   The optional *debug* level controls the amount of debug output
+   (see :meth:`msg`, :meth:`msgin` and :meth:`msgout`).
+
+   .. note:: the altgraph library does not generate output, the
+      debug attribute and message methods are present for use
+      by subclasses.
+
+.. data:: ObjectGraph.graph
+
+   An :class:`Graph <altgraph.Graph.Graph>` object that contains
+   the graph data.
+
+
+.. method:: ObjectGraph.addNode(node)
+
+   Adds a *node* to the graph.
+
+   .. note:: re-adding a node that was previously removed
+      using :meth:`removeNode` will reinstate the previously
+      removed node.
+
+.. method:: ObjectGraph.createNode(self, cls, name, \*args, \**kwds)
+
+   Creates a new node using ``cls(*args, **kwds)`` and adds that
+   node using :meth:`addNode`.
+
+   Returns the newly created node.
+
+.. method:: ObjectGraph.removeNode(node)
+
+   Removes a *node* from the graph when it exists. The *node* argument
+   is either a node object, or the graphident of a node.
+
+.. method:: ObjectGraph.createReferences(fromnode, tonode[, edge_data])
+
+   Creates a reference from *fromnode* to *tonode*. The optional
+   *edge_data* is associated with the edge.
+
+   *Fromnode* and *tonode* can either be node objects or the graphident
+   values for nodes.
+
+.. method:: removeReference(fromnode, tonode)
+
+   Removes the reference from *fromnode* to *tonode* if it exists.
+
+.. method:: ObjectGraph.getRawIdent(node)
+
+   Returns the *graphident* attribute of *node*, or the graph itself
+   when *node* is :data:`None`.
+
+.. method:: getIdent(node)
+
+   Same as :meth:`getRawIdent`, but only if the node is part
+   of the graph.
+
+   *Node* can either be an actual node object or the graphident of
+   a node.
+
+.. method:: ObjectGraph.findNode(node)
+
+   Returns a given node in the graph, or :data:`Node` when it cannot
+   be found.
+
+   *Node* is either an object with a *graphident* attribute or
+   the *graphident* attribute itself.
+
+.. method:: ObjectGraph.__contains__(node)
+
+   Returns True if *node* is a member of the graph. *Node* is either an
+   object with a *graphident* attribute or the *graphident* attribute itself.
+
+.. method:: ObjectGraph.flatten([condition[, start]])
+
+   Yield all nodes that are entirely reachable by *condition*
+   starting fromt he given *start* node or the graph root.
+
+   .. note:: objects are only reachable from the graph root
+      when there is a reference from the root to the node
+      (either directly or through another node)
+
+.. method:: ObjectGraph.nodes()
+
+   Yield all nodes in the graph.
+
+.. method:: ObjectGraph.get_edges(node)
+
+   Returns two iterators that yield the nodes reaching by
+   outgoing and incoming edges.
+
+.. method:: ObjectGraph.filterStack(filters)
+
+   Filter the ObjectGraph in-place by removing all edges to nodes that
+   do not match every filter in the given filter list
+
+   Returns a tuple containing the number of:
+   (*nodes_visited*, *nodes_removed*, *nodes_orphaned*)
+
+.. method:: ObjectGraph.edgeData(fromNode, toNode):
+   Return the edge data associated with the edge from *fromNode*
+   to *toNode*.  Raises :exc:`KeyError` when no such edge exists.
+
+   .. versionadded: 0.12
+
+.. method:: ObjectGraph.updateEdgeData(fromNode, toNode, edgeData)
+
+   Replace the data associated with the edge from *fromNode* to
+   *toNode* by *edgeData*.
+
+   Raises :exc:`KeyError` when the edge does not exist.
+
+Debug output
+------------
+
+.. data:: ObjectGraph.debug
+
+   The current debug level.
+
+.. method:: ObjectGraph.msg(level, text, \*args)
+
+   Print a debug message at the current indentation level when the current
+   debug level is *level* or less.
+
+.. method:: ObjectGraph.msgin(level, text, \*args)
+
+   Print a debug message when the current debug level is *level* or less,
+   and increase the indentation level.
+
+.. method:: ObjectGraph.msgout(level, text, \*args)
+
+   Decrease the indentation level and print a debug message when the
+   current debug level is *level* or less.
new file mode 100644
--- /dev/null
+++ b/python/altgraph/setup.cfg
@@ -0,0 +1,36 @@
+[metadata]
+name = altgraph
+version = 0.12
+description = Python graph (network) package
+long_description_file = 
+	README.txt
+	doc/changelog.rst
+author = Ronald Oussoren
+author_email = ronaldoussoren@mac.com
+maintainer = Ronald Oussoren
+maintainer_email = ronaldoussoren@mac.com
+url = http://packages.python.org/altgraph
+download_url = http://pypi.python.org/pypi/altgraph
+license = MIT
+classifiers = 
+	Intended Audience :: Developers
+	License :: OSI Approved :: MIT License
+	Programming Language :: Python
+	Programming Language :: Python :: 2
+	Programming Language :: Python :: 2.7
+	Programming Language :: Python :: 3
+	Programming Language :: Python :: 3.3
+	Programming Language :: Python :: 3.4
+	Topic :: Software Development :: Libraries :: Python Modules
+	Topic :: Scientific/Engineering :: Mathematics
+	Topic :: Scientific/Engineering :: Visualization
+keywords = graph
+platforms = any
+packages = altgraph
+zip-safe = 1
+
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
+
new file mode 100644
--- /dev/null
+++ b/python/altgraph/setup.py
@@ -0,0 +1,867 @@
+"""
+Shared setup file for simple python packages. Uses a setup.cfg that
+is the same as the distutils2 project, unless noted otherwise.
+
+It exists for two reasons:
+1) This makes it easier to reuse setup.py code between my own
+   projects
+
+2) Easier migration to distutils2 when that catches on.
+
+Additional functionality:
+
+* Section metadata:
+    requires-test:  Same as 'tests_require' option for setuptools.
+
+"""
+
+import sys
+import os
+import re
+import platform
+from fnmatch import fnmatch
+import os
+import sys
+import time
+import tempfile
+import tarfile
+try:
+    import urllib.request as urllib
+except ImportError:
+    import urllib
+from distutils import log
+try:
+    from hashlib import md5
+
+except ImportError:
+    from md5 import md5
+
+if sys.version_info[0] == 2:
+    from ConfigParser import RawConfigParser, NoOptionError, NoSectionError
+else:
+    from configparser import RawConfigParser, NoOptionError, NoSectionError
+
+ROOTDIR = os.path.dirname(os.path.abspath(__file__))
+
+
+#
+#
+#
+# Parsing the setup.cfg and converting it to something that can be
+# used by setuptools.setup()
+#
+#
+#
+
+def eval_marker(value):
+    """
+    Evaluate an distutils2 environment marker.
+
+    This code is unsafe when used with hostile setup.cfg files,
+    but that's not a problem for our own files.
+    """
+    value = value.strip()
+
+    class M:
+        def __init__(self, **kwds):
+            for k, v in kwds.items():
+                setattr(self, k, v)
+
+    variables = {
+        'python_version': '%d.%d'%(sys.version_info[0], sys.version_info[1]),
+        'python_full_version': sys.version.split()[0],
+        'os': M(
+            name=os.name,
+        ),
+        'sys': M(
+            platform=sys.platform,
+        ),
+        'platform': M(
+            version=platform.version(),
+            machine=platform.machine(),
+        ),
+    }
+
+    return bool(eval(value, variables, variables))
+
+
+    return True
+
+def _opt_value(cfg, into, section, key, transform = None):
+    try:
+        v = cfg.get(section, key)
+        if transform != _as_lines and ';' in v:
+            v, marker = v.rsplit(';', 1)
+            if not eval_marker(marker):
+                return
+
+            v = v.strip()
+
+        if v:
+            if transform:
+                into[key] = transform(v.strip())
+            else:
+                into[key] = v.strip()
+
+    except (NoOptionError, NoSectionError):
+        pass
+
+def _as_bool(value):
+    if value.lower() in ('y', 'yes', 'on'):
+        return True
+    elif value.lower() in ('n', 'no', 'off'):
+        return False
+    elif value.isdigit():
+        return bool(int(value))
+    else:
+        raise ValueError(value)
+
+def _as_list(value):
+    return value.split()
+
+def _as_lines(value):
+    result = []
+    for v in value.splitlines():
+        if ';' in v:
+            v, marker = v.rsplit(';', 1)
+            if not eval_marker(marker):
+                continue
+
+            v = v.strip()
+            if v:
+                result.append(v)
+        else:
+            result.append(v)
+    return result
+
+def _map_requirement(value):
+    m = re.search(r'(\S+)\s*(?:\((.*)\))?', value)
+    name = m.group(1)
+    version = m.group(2)
+
+    if version is None:
+        return name
+
+    else:
+        mapped = []
+        for v in version.split(','):
+            v = v.strip()
+            if v[0].isdigit():
+                # Checks for a specific version prefix
+                m = v.rsplit('.', 1)
+                mapped.append('>=%s,<%s.%s'%(
+                    v, m[0], int(m[1])+1))
+
+            else:
+                mapped.append(v)
+        return '%s %s'%(name, ','.join(mapped),)
+
+def _as_requires(value):
+    requires = []
+    for req in value.splitlines():
+        if ';' in req:
+            req, marker = v.rsplit(';', 1)
+            if not eval_marker(marker):
+                continue
+            req = req.strip()
+
+        if not req:
+            continue
+        requires.append(_map_requirement(req))
+    return requires
+
+def parse_setup_cfg():
+    cfg = RawConfigParser()
+    r = cfg.read([os.path.join(ROOTDIR, 'setup.cfg')])
+    if len(r) != 1:
+        print("Cannot read 'setup.cfg'")
+        sys.exit(1)
+
+    metadata = dict(
+            name        = cfg.get('metadata', 'name'),
+            version     = cfg.get('metadata', 'version'),
+            description = cfg.get('metadata', 'description'),
+    )
+
+    _opt_value(cfg, metadata, 'metadata', 'license')
+    _opt_value(cfg, metadata, 'metadata', 'maintainer')
+    _opt_value(cfg, metadata, 'metadata', 'maintainer_email')
+    _opt_value(cfg, metadata, 'metadata', 'author')
+    _opt_value(cfg, metadata, 'metadata', 'author_email')
+    _opt_value(cfg, metadata, 'metadata', 'url')
+    _opt_value(cfg, metadata, 'metadata', 'download_url')
+    _opt_value(cfg, metadata, 'metadata', 'classifiers', _as_lines)
+    _opt_value(cfg, metadata, 'metadata', 'platforms', _as_list)
+    _opt_value(cfg, metadata, 'metadata', 'packages', _as_list)
+    _opt_value(cfg, metadata, 'metadata', 'keywords', _as_list)
+
+    try:
+        v = cfg.get('metadata', 'requires-dist')
+
+    except (NoOptionError, NoSectionError):
+        pass
+
+    else:
+        requires = _as_requires(v)
+        if requires:
+            metadata['install_requires'] = requires
+
+    try:
+        v = cfg.get('metadata', 'requires-test')
+
+    except (NoOptionError, NoSectionError):
+        pass
+
+    else:
+        requires = _as_requires(v)
+        if requires:
+            metadata['tests_require'] = requires
+
+
+    try:
+        v = cfg.get('metadata', 'long_description_file')
+    except (NoOptionError, NoSectionError):
+        pass
+
+    else:
+        parts = []
+        for nm in v.split():
+            fp = open(nm, 'rU')
+            parts.append(fp.read())
+            fp.close()
+
+        metadata['long_description'] = '\n\n'.join(parts)
+
+
+    try:
+        v = cfg.get('metadata', 'zip-safe')
+    except (NoOptionError, NoSectionError):
+        pass
+
+    else:
+        metadata['zip_safe'] = _as_bool(v)
+
+    try:
+        v = cfg.get('metadata', 'console_scripts')
+    except (NoOptionError, NoSectionError):
+        pass
+
+    else:
+        if 'entry_points' not in metadata:
+            metadata['entry_points'] = {}
+
+        metadata['entry_points']['console_scripts'] = v.splitlines()
+
+    if sys.version_info[:2] <= (2,6):
+        try:
+            metadata['tests_require'] += ", unittest2"
+        except KeyError:
+            metadata['tests_require'] = "unittest2"
+
+    return metadata
+
+
+#
+#
+#
+# Bootstrapping setuptools/distribute, based on
+# a heavily modified version of distribute_setup.py
+#
+#
+#
+
+
+SETUPTOOLS_PACKAGE='setuptools'
+
+
+try:
+    import subprocess
+
+    def _python_cmd(*args):
+        args = (sys.executable,) + args
+        return subprocess.call(args) == 0
+
+except ImportError:
+    def _python_cmd(*args):
+        args = (sys.executable,) + args
+        new_args = []
+        for a in args:
+            new_args.append(a.replace("'", "'\"'\"'"))
+        os.system(' '.join(new_args)) == 0
+
+
+try:
+    import json
+
+    def get_pypi_src_download(package):
+        url = 'https://pypi.python.org/pypi/%s/json'%(package,)
+        fp = urllib.urlopen(url)
+        try:
+            try:
+                data = fp.read()
+
+            finally:
+                fp.close()
+        except urllib.error:
+            raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+        pkgdata = json.loads(data.decode('utf-8'))
+        if 'urls' not in pkgdata:
+            raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+        for info in pkgdata['urls']:
+            if info['packagetype'] == 'sdist' and info['url'].endswith('tar.gz'):
+                return (info.get('md5_digest'), info['url'])
+
+        raise RuntimeError("Cannot determine downlink link for %s"%(package,))
+
+except ImportError:
+    # Python 2.5 compatibility, no JSON in stdlib but luckily JSON syntax is
+    # simular enough to Python's syntax to be able to abuse the Python compiler
+
+    import _ast as ast
+
+    def get_pypi_src_download(package):
+        url = 'https://pypi.python.org/pypi/%s/json'%(package,)
+        fp = urllib.urlopen(url)
+        try:
+            try:
+                data = fp.read()
+
+            finally:
+                fp.close()
+        except urllib.error:
+            raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+
+        a = compile(data, '-', 'eval', ast.PyCF_ONLY_AST)
+        if not isinstance(a, ast.Expression):
+            raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+        a = a.body
+        if not isinstance(a, ast.Dict):
+            raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+        for k, v in zip(a.keys, a.values):
+            if not isinstance(k, ast.Str):
+                raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+            k = k.s
+            if k == 'urls':
+                a = v
+                break
+        else:
+            raise RuntimeError("PyPI JSON for %s doesn't contain URLs section"%(package,))
+
+        if not isinstance(a, ast.List):
+            raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+        for info in v.elts:
+            if not isinstance(info, ast.Dict):
+                raise RuntimeError("Cannot determine download link for %s"%(package,))
+            url = None
+            packagetype = None
+            chksum = None
+
+            for k, v in zip(info.keys, info.values):
+                if not isinstance(k, ast.Str):
+                    raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+                if k.s == 'url':
+                    if not isinstance(v, ast.Str):
+                        raise RuntimeError("Cannot determine download link for %s"%(package,))
+                    url = v.s
+
+                elif k.s == 'packagetype':
+                    if not isinstance(v, ast.Str):
+                        raise RuntimeError("Cannot determine download link for %s"%(package,))
+                    packagetype = v.s
+
+                elif k.s == 'md5_digest':
+                    if not isinstance(v, ast.Str):
+                        raise RuntimeError("Cannot determine download link for %s"%(package,))
+                    chksum = v.s
+
+            if url is not None and packagetype == 'sdist' and url.endswith('.tar.gz'):
+                return (chksum, url)
+
+        raise RuntimeError("Cannot determine download link for %s"%(package,))
+
+def _build_egg(egg, tarball, to_dir):
+    # extracting the tarball
+    tmpdir = tempfile.mkdtemp()
+    log.warn('Extracting in %s', tmpdir)
+    old_wd = os.getcwd()
+    try:
+        os.chdir(tmpdir)
+        tar = tarfile.open(tarball)
+        _extractall(tar)
+        tar.close()
+
+        # going in the directory
+        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
+        os.chdir(subdir)
+        log.warn('Now working in %s', subdir)
+
+        # building an egg
+        log.warn('Building a %s egg in %s', egg, to_dir)
+        _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
+
+    finally:
+        os.chdir(old_wd)
+    # returning the result
+    log.warn(egg)
+    if not os.path.exists(egg):
+        raise IOError('Could not build the egg.')
+
+
+def _do_download(to_dir, packagename=SETUPTOOLS_PACKAGE):
+    tarball = download_setuptools(packagename, to_dir)
+    version = tarball.split('-')[-1][:-7]
+    egg = os.path.join(to_dir, '%s-%s-py%d.%d.egg'
+                       % (packagename, version, sys.version_info[0], sys.version_info[1]))
+    if not os.path.exists(egg):
+        _build_egg(egg, tarball, to_dir)
+    sys.path.insert(0, egg)
+    import setuptools
+    setuptools.bootstrap_install_from = egg
+
+
+def use_setuptools():
+    # making sure we use the absolute path
+    return _do_download(os.path.abspath(os.curdir))
+
+def download_setuptools(packagename, to_dir):
+    # making sure we use the absolute path
+    to_dir = os.path.abspath(to_dir)
+    try:
+        from urllib.request import urlopen
+    except ImportError:
+        from urllib2 import urlopen
+
+    chksum, url = get_pypi_src_download(packagename)
+    tgz_name = os.path.basename(url)
+    saveto = os.path.join(to_dir, tgz_name)
+
+    src = dst = None
+    if not os.path.exists(saveto):  # Avoid repeated downloads
+        try:
+            log.warn("Downloading %s", url)
+            src = urlopen(url)
+            # Read/write all in one block, so we don't create a corrupt file
+            # if the download is interrupted.
+            data = src.read()
+
+            if chksum is not None:
+                data_sum = md5(data).hexdigest()
+                if data_sum != chksum:
+                    raise RuntimeError("Downloading %s failed: corrupt checksum"%(url,))
+
+
+            dst = open(saveto, "wb")
+            dst.write(data)
+        finally:
+            if src:
+                src.close()
+            if dst:
+                dst.close()
+    return os.path.realpath(saveto)
+
+
+
+def _extractall(self, path=".", members=None):
+    """Extract all members from the archive to the current working
+       directory and set owner, modification time and permissions on
+       directories afterwards. `path' specifies a different directory
+       to extract to. `members' is optional and must be a subset of the
+       list returned by getmembers().
+    """
+    import copy
+    import operator
+    from tarfile import ExtractError
+    directories = []
+
+    if members is None:
+        members = self
+
+    for tarinfo in members:
+        if tarinfo.isdir():
+            # Extract directories with a safe mode.
+            directories.append(tarinfo)
+            tarinfo = copy.copy(tarinfo)
+            tarinfo.mode = 448 # decimal for oct 0700
+        self.extract(tarinfo, path)
+
+    # Reverse sort directories.
+    if sys.version_info < (2, 4):
+        def sorter(dir1, dir2):
+            return cmp(dir1.name, dir2.name)
+        directories.sort(sorter)
+        directories.reverse()
+    else:
+        directories.sort(key=operator.attrgetter('name'), reverse=True)
+
+    # Set correct owner, mtime and filemode on directories.
+    for tarinfo in directories:
+        dirpath = os.path.join(path, tarinfo.name)
+        try:
+            self.chown(tarinfo, dirpath)
+            self.utime(tarinfo, dirpath)
+            self.chmod(tarinfo, dirpath)
+        except ExtractError:
+            e = sys.exc_info()[1]
+            if self.errorlevel > 1:
+                raise
+            else:
+                self._dbg(1, "tarfile: %s" % e)
+
+
+#
+#
+#
+# Definitions of custom commands
+#
+#
+#
+
+try:
+    import setuptools
+
+except ImportError:
+    use_setuptools()
+
+from setuptools import setup
+
+try:
+    from distutils.core import PyPIRCCommand
+except ImportError:
+    PyPIRCCommand = None # Ancient python version
+
+from distutils.core import Command
+from distutils.errors  import DistutilsError
+from distutils import log
+
+if PyPIRCCommand is None:
+    class upload_docs (Command):
+        description = "upload sphinx documentation"
+        user_options = []
+
+        def initialize_options(self):
+            pass
+
+        def finalize_options(self):
+            pass
+
+        def run(self):
+            raise DistutilsError("not supported on this version of python")
+
+else:
+    class upload_docs (PyPIRCCommand):
+        description = "upload sphinx documentation"
+        user_options = PyPIRCCommand.user_options
+
+        def initialize_options(self):
+            PyPIRCCommand.initialize_options(self)
+            self.username = ''
+            self.password = ''
+
+
+        def finalize_options(self):
+            PyPIRCCommand.finalize_options(self)
+            config = self._read_pypirc()
+            if config != {}:
+                self.username = config['username']
+                self.password = config['password']
+
+
+        def run(self):
+            import subprocess
+            import shutil
+            import zipfile
+            import os
+            import urllib
+            import StringIO
+            from base64 import standard_b64encode
+            import httplib
+            import urlparse
+
+            # Extract the package name from distutils metadata
+            meta = self.distribution.metadata
+            name = meta.get_name()
+
+            # Run sphinx
+            if os.path.exists('doc/_build'):
+                shutil.rmtree('doc/_build')
+            os.mkdir('doc/_build')
+
+            p = subprocess.Popen(['make', 'html'],
+                cwd='doc')
+            exit = p.wait()
+            if exit != 0:
+                raise DistutilsError("sphinx-build failed")
+
+            # Collect sphinx output
+            if not os.path.exists('dist'):
+                os.mkdir('dist')
+            zf = zipfile.ZipFile('dist/%s-docs.zip'%(name,), 'w',
+                    compression=zipfile.ZIP_DEFLATED)
+
+            for toplevel, dirs, files in os.walk('doc/_build/html'):
+                for fn in files:
+                    fullname = os.path.join(toplevel, fn)
+                    relname = os.path.relpath(fullname, 'doc/_build/html')
+
+                    print ("%s -> %s"%(fullname, relname))
+
+                    zf.write(fullname, relname)
+
+            zf.close()
+
+            # Upload the results, this code is based on the distutils
+            # 'upload' command.
+            content = open('dist/%s-docs.zip'%(name,), 'rb').read()
+
+            data = {
+                ':action': 'doc_upload',
+                'name': name,
+                'content': ('%s-docs.zip'%(name,), content),
+            }
+            auth = "Basic " + standard_b64encode(self.username + ":" +
+                 self.password)
+
+
+            boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
+            sep_boundary = '\n--' + boundary
+            end_boundary = sep_boundary + '--'
+            body = StringIO.StringIO()
+            for key, value in data.items():
+                if not isinstance(value, list):
+                    value = [value]
+
+                for value in value:
+                    if isinstance(value, tuple):
+                        fn = ';filename="%s"'%(value[0])
+                        value = value[1]
+                    else:
+                        fn = ''
+
+                    body.write(sep_boundary)
+                    body.write('\nContent-Disposition: form-data; name="%s"'%key)
+                    body.write(fn)
+                    body.write("\n\n")
+                    body.write(value)
+
+            body.write(end_boundary)
+            body.write('\n')
+            body = body.getvalue()
+
+            self.announce("Uploading documentation to %s"%(self.repository,), log.INFO)
+
+            schema, netloc, url, params, query, fragments = \
+                    urlparse.urlparse(self.repository)
+
+
+            if schema == 'http':
+                http = httplib.HTTPConnection(netloc)
+            elif schema == 'https':
+                http = httplib.HTTPSConnection(netloc)
+            else:
+                raise AssertionError("unsupported schema "+schema)
+
+            data = ''
+            loglevel = log.INFO
+            try:
+                http.connect()
+                http.putrequest("POST", url)
+                http.putheader('Content-type',
+                    'multipart/form-data; boundary=%s'%boundary)
+                http.putheader('Content-length', str(len(body)))
+                http.putheader('Authorization', auth)
+                http.endheaders()
+                http.send(body)
+            except socket.error:
+                e = socket.exc_info()[1]
+                self.announce(str(e), log.ERROR)
+                return
+
+            r = http.getresponse()
+            if r.status in (200, 301):
+                self.announce('Upload succeeded (%s): %s' % (r.status, r.reason),
+                    log.INFO)
+            else:
+                self.announce('Upload failed (%s): %s' % (r.status, r.reason),
+                    log.ERROR)
+
+                print ('-'*75)
+                print (r.read())
+                print ('-'*75)
+
+
+def recursiveGlob(root, pathPattern):
+    """
+    Recursively look for files matching 'pathPattern'. Return a list
+    of matching files/directories.
+    """
+    result = []
+
+    for rootpath, dirnames, filenames in os.walk(root):
+        for fn in filenames:
+            if fnmatch(fn, pathPattern):
+                result.append(os.path.join(rootpath, fn))
+    return result
+
+
+def importExternalTestCases(unittest,
+        pathPattern="test_*.py", root=".", package=None):
+    """
+    Import all unittests in the PyObjC tree starting at 'root'
+    """
+
+    testFiles = recursiveGlob(root, pathPattern)
+    testModules = map(lambda x:x[len(root)+1:-3].replace('/', '.'), testFiles)
+    if package is not None:
+        testModules = [(package + '.' + m) for m in testModules]
+
+    suites = []
+
+    for modName in testModules:
+        try:
+            module = __import__(modName)
+        except ImportError:
+            print("SKIP %s: %s"%(modName, sys.exc_info()[1]))
+            continue
+
+        if '.' in modName:
+            for elem in modName.split('.')[1:]:
+                module = getattr(module, elem)
+
+        s = unittest.defaultTestLoader.loadTestsFromModule(module)
+        suites.append(s)
+
+    return unittest.TestSuite(suites)
+
+
+
+class test (Command):
+    description = "run test suite"
+    user_options = [
+        ('verbosity=', None, "print what tests are run"),
+    ]
+
+    def initialize_options(self):
+        self.verbosity='1'
+
+    def finalize_options(self):
+        if isinstance(self.verbosity, str):
+            self.verbosity = int(self.verbosity)
+
+
+    def cleanup_environment(self):
+        ei_cmd = self.get_finalized_command('egg_info')
+        egg_name = ei_cmd.egg_name.replace('-', '_')
+
+        to_remove =  []
+        for dirname in sys.path:
+            bn = os.path.basename(dirname)
+            if bn.startswith(egg_name + "-"):
+                to_remove.append(dirname)
+
+        for dirname in to_remove:
+            log.info("removing installed %r from sys.path before testing"%(
+                dirname,))
+            sys.path.remove(dirname)
+
+    def add_project_to_sys_path(self):
+        from pkg_resources import normalize_path, add_activation_listener
+        from pkg_resources import working_set, require
+
+        self.reinitialize_command('egg_info')
+        self.run_command('egg_info')
+        self.reinitialize_command('build_ext', inplace=1)
+        self.run_command('build_ext')
+
+
+        # Check if this distribution is already on sys.path
+        # and remove that version, this ensures that the right
+        # copy of the package gets tested.
+
+        self.__old_path = sys.path[:]
+        self.__old_modules = sys.modules.copy()
+
+
+        ei_cmd = self.get_finalized_command('egg_info')
+        sys.path.insert(0, normalize_path(ei_cmd.egg_base))
+        sys.path.insert(1, os.path.dirname(__file__))
+
+        # Strip the namespace packages defined in this distribution
+        # from sys.modules, needed to reset the search path for
+        # those modules.
+
+        nspkgs = getattr(self.distribution, 'namespace_packages')
+        if nspkgs is not None:
+            for nm in nspkgs:
+                del sys.modules[nm]
+
+        # Reset pkg_resources state:
+        add_activation_listener(lambda dist: dist.activate())
+        working_set.__init__()
+        require('%s==%s'%(ei_cmd.egg_name, ei_cmd.egg_version))
+
+    def remove_from_sys_path(self):
+        from pkg_resources import working_set
+        sys.path[:] = self.__old_path
+        sys.modules.clear()
+        sys.modules.update(self.__old_modules)
+        working_set.__init__()
+
+
+    def run(self):
+        import unittest
+
+        # Ensure that build directory is on sys.path (py3k)
+
+        self.cleanup_environment()
+        self.add_project_to_sys_path()
+
+        try:
+            meta = self.distribution.metadata
+            name = meta.get_name()
+            test_pkg = name + "_tests"
+            suite = importExternalTestCases(unittest,
+                    "test_*.py", test_pkg, test_pkg)
+
+            runner = unittest.TextTestRunner(verbosity=self.verbosity)
+            result = runner.run(suite)
+
+            # Print out summary. This is a structured format that
+            # should make it easy to use this information in scripts.
+            summary = dict(
+                count=result.testsRun,
+                fails=len(result.failures),
+                errors=len(result.errors),
+                xfails=len(getattr(result, 'expectedFailures', [])),
+                xpass=len(getattr(result, 'expectedSuccesses', [])),
+                skip=len(getattr(result, 'skipped', [])),
+            )
+            print("SUMMARY: %s"%(summary,))
+
+        finally:
+            self.remove_from_sys_path()
+
+#
+#
+#
+#  And finally run the setuptools main entry point.
+#
+#
+#
+
+metadata = parse_setup_cfg()
+
+setup(
+    cmdclass=dict(
+        upload_docs=upload_docs,
+        test=test,
+    ),
+    **metadata
+)