-{include shared-links.md}
-
-{set-property html yes}
-{set-property style-sheet "http://common-lisp.net/project/cl-containers/shared/style-200.css"}
-{set-property author "Gary Warren King"}
+{include shared-header.md}
[devel-list]: http://common-lisp.net/cgi-bin/mailman/listinfo/cl-graph-devel
[cliki-home]: http://www.cliki.net//cl-graph
[tarball]: http://common-lisp.net/project/cl-graph/cl-graph.tar.gz
-<div id="header">
- <span class="logo"><a href="http://www.metabang.com/" title="metabang.com"><img src="http://common-lisp.net/project/cl-containers/shared/metabang-2.png" title="metabang.com" width="100" alt="Metabang Logo" /></a></span>
-
-## CL-Graph
-
-#### Better than sliced mangoes!
-
-</div>
--- /dev/null
+{include shared-links.md}
+{set-property html yes}
+{set-property style-sheets "http://common-lisp.net/project/cl-containers/shared/style-200.css" "user-guide.css"}
+{set-property author "Gary Warren King"}
+
+<div id="header">
+ <span class="logo"><a href="http://www.metabang.com/" title="metabang.com"><img src="http://common-lisp.net/project/cl-containers/shared/metabang-2.png" title="metabang.com" width="100" alt="Metabang Logo" /></a></span>
+
+## CL-Graph
+
+#### Better than sliced mangoes!
+
+</div>
--- /dev/null
+<div id="footer">
+<div id="buttons">
+ <a class="nav" href="http://validator.w3.org/check/referer" title="xhtml1.1"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/xhtml.gif" width="80" height="15" title="valid xhtml button" alt="valid xhtml" /></a>
+ <a class="nav" href="http://common-lisp.net/project/cl-markdown/" title="Mark with CL-Markdown"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/cl-markdown.png" width="80" height="15" title="Made with CL-Markdown" alt="CL-Markdown" /></a>
+ <a class="nav" href="http://www.catb.org/hacker-emblem/" title="hacker"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/hacker.png" width="80" height="15" title="hacker emblem" alt="hacker button" /></a>
+ <a class="nav" href="http://www.lisp.org/" title="Association of Lisp Users"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/lambda-lisp.png" width="80" height="15" title="ALU emblem" alt="ALU button" /></a>
+ <a class="nav" href="http://common-lisp.net/" title="Common-Lisp.net"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/lisp-lizard.png" width="80" height="15" title="Common-Lisp.net" alt="Common-Lisp.net button" /></a>
+</div>
+
+<span id="copyright"> Copyright (c) 2001 - 2008 Gary Warren King (gwking@metabang.com)</span>
+<span id="license-note">CL-Containers has an MIT style license</span>
+<span id="timestamp">Last updated {today} at {now}</span>
+
+</div>
+
--- /dev/null
+{include shared-header.md}
+{set-property title "CL-Graph Users Guide"}
--- /dev/null
+{docs connected-components}
+{docs connected-component-count}
+{docs find-connected-components}
+{docs connected-graph-p}
+{docs breadth-first-visitor}
+{docs breadth-first-search-graph}
+{docs dfs}
+{docs dfs-visit}
+{docs dfs-tree-edge-p}
+{docs dfs-back-edge-p}
+{docs dfs-forward-edge-p}
+{docs dfs-cross-edge-p}
+{docs dfs-edge-type}
+{docs mst-find-set}
+{docs mst-make-set}
+{docs mst-tree-union}
+{docs mst-link}
+{docs minimum-spanning-tree}
+
+{docs generate-directed-free-tree}
+
+{docs project-bipartite-graph}
+
+{docs traverse-elements}
+{docs traverse-elements-helper}
+
+{docs assortativity-coefficient}
+{docs graph-roots}
+
+{docs topological-sort}
+{docs assign-level}
+
--- /dev/null
+{docs map-over-all-combinations-of-k-vertexes}
+{docs map-over-all-combinations-of-k-edges}
+{docs tag-edges}
+{docs tag-all-edges}
+{docs untag-edges}
+{docs untag-all-edges}
+
+{docs tagged-edge-p}
+{docs untagged-edge-p}
--- /dev/null
+{docs graph->dot}
+{docs graph->dot-properties}
+{docs vertex->dot}
+{docs edge->dot}
+{comment {docs (setf dot-attribute-value)}}
+{docs dot-attribute-value}
+{docs graph->dot-external}
+{docs ensure-valid-dot-attribute}
+{docs write-name-for-dot}
--- /dev/null
+{docs edge-count}
+{docs vertex-count}
+{docs source-edge-count}
+{docs target-edge-count}
+{docs number-of-neighbors}
+{docs has-children-p}
+{docs has-parent-p}
+
+{docs source-vertex}
+{docs target-vertex}
+{docs undirected-edge-p}
+{docs directed-edge-p}
+{docs make-vertex-edges-container}
+{docs other-vertex}
+{docs vertices-share-edge-p}
+
+{docs out-edge-for-vertex-p}
+{docs in-undirected-cycle-p}
+{docs adjacentp}
+{docs depth}
+{docs edge-lessp-by-weight}
+{docs edge-lessp-by-direction}
+{docs weight}
+
+{docs rootp}
+{docs in-cycle-p}
+{docs any-undirected-cycle-p}
--- /dev/null
+{docs iterate-children}
+{docs iterate-parents}
+{docs iterate-neighbors}
+{docs iterate-edges}
+{docs iterate-source-edges}
+{docs iterate-target-edges}
+{docs source-edges}
+{docs target-edges}
+{docs child-vertexes}
+{docs parent-vertexes}
+{docs neighbor-vertexes}
+{docs iterate-vertexes}
+{docs edges}
+{docs vertexes}
+
--- /dev/null
+{docs make-graph}
+{docs add-edges-to-graph}
+{docs add-vertex}
+{docs add-edge}
+{docs add-edge-between-vertexes}
+{docs delete-edge}
+{docs delete-all-edges}
+{docs delete-edge-between-vertexes}
+{docs delete-vertex}
+{docs replace-vertex}
+{docs add-edge-to-vertex}
+
+{docs make-vertex-container}
+{docs make-edge-container}
+{docs make-edge-for-graph}
+{docs make-vertex-for-graph}
+{docs make-graph-from-vertexes}
\ No newline at end of file
--- /dev/null
+{docs force-undirected}
+
+{docs renumber-vertexes}
+{docs renumber-edges}
+{docs initialize-vertex-data}
+
+{docs complete-links}
+{docs subgraph-containing}
+{docs make-filtered-graph}
\ No newline at end of file
--- /dev/null
+A significant portion of almost any non-trivial programming
+effort goes into the manipulation of structured data. Many
+data structures can be viewed as containers. These may be
+ordered or unordered, associative (indexed) or sequential and
+so forth. The power and beauty of some programming languages
+derives in no small part from their ability to handle
+container classes well (Smalltalk comes to mind) and other
+languages have gone to great lengths to incorporate flexible
+containers into their frameworks (C++'s STL for example).
+Although Common Lisp includes a number of *containers*
+(hash-tables, lists and arrays) there are many useful data
+structures that are not built-in (e.g., binary search trees)
+and the existing containers have a fragmented interface that
+shows Lisp's peripatetic evolution.
+
+The Common Lisp Container Library ({clcl}) extends Lisp in two
+ways: it adds new container functionality and, by
+standardizing container interfaces, it makes using them
+significantly easier. The standard interface also lends
+itself to more a flexible design and development process
+since data structure decisions are easier to change as the
+program evolves. {clcl}~ thereby expends the power of Lisp and
+makes it an even better tool for both rapid prototyping
+\emph{and} production code.
+
+The remainder of this document will cover the container types
+available in {clcl}, the methods applicable to these
+containers, information about the internal design of {clcl}
+and examples of containers in use. As will become evident,
+{clcl}'s design borrows from the Standard Template Library,
+Smalltalk and existing Lisp idioms wherever possible.
--- /dev/null
+Requires [cl-variants][].
+
+{docs generate-gnm}
+{docs generate-gnp}
+{docs generate-undirected-graph-via-assortativity-matrix}
+{docs generate-undirected-graph-via-vertex-probabilities}
+{docs generate-scale-free-graph}
+{docs generate-assortative-graph-with-degree-distributions}
+{docs generate-simple-preferential-attachment-graph}
+{docs generate-preferential-attachment-graph}
+
+{docs graph-edge-mixture-matrix}
+{docs graph-mixing-matrix}
--- /dev/null
+{docs find-vertex}
+{docs search-for-vertex}
+{docs find-edge}
+{docs find-edge-between-vertexes}
+{docs find-vertex-if}
+{docs find-edge-if}
+{docs find-edges-if}
+{docs find-vertexes-if}
+{docs find-edge-between-vertexes-if}
--- /dev/null
+/* @group toc */
+
+.table-of-contents {
+ font-size: 90%;
+ margin-bottom: 1em;
+ padding-bottom: 1em;
+}
+
+.table-of-contents h2, h3, h4 {
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-top: 0;
+ margin-bottom: 1px;
+}
+
+.table-of-contents h2 {
+ font-size: inherit;
+ font-style: inherit;
+ position: relative;
+ left: 2em;
+}
+
+.table-of-contents h3 {
+ font-size: inherit;
+ font-style: inherit;
+ position: relative;
+ left: 4em;
+}
+
+.table-of-contents h4 {
+ font-size: inherit;
+ font-style: inherit;
+ position: relative;
+ left: 6em;
+}
+
+.table-of-contents h5 {
+ font-size: inherit;
+ font-style: inherit;
+ position: relative;
+ left: 8px;
+}
+
+/* @end */
+
+/* @group anchors */
+
+a.none {
+ text-decoration: none;
+ color:black }
+
+a.none:visited { text-decoration: none; color:black }
+
+a.none:active { text-decoration: none; color:black }
+
+a.none:hover { text-decoration: none; color:black }
+
+a {
+ text-decoration: none;
+ }
+
+a:visited {
+ text-decoration: none;
+}
+
+a:active {
+ text-decoration: underline;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+/* @end */
+
+/* @group Reference */
+
+.reference {
+ padding-bottom: 1em;
+}
+
+.reference h3 {
+ margin-top: 2em;
+ font-size: 110%;
+ border-bottom: 1px solid silver;
+ border-top: 4px solid gray;
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+
+
+
+/* @end */
+
+body {
+ font-family: Georgia, "Times New Roman", Times, serif;
+ margin-right: 0.5in;
+ margin-left: 0.5in;
+ margin-bottom: 0.25px;
+}
+
+h1, h2, h3, h4 {
+ font-family: "Lucida Grande", Lucida, Verdana, sans-serif;
+}
+
+h2 {
+}
+
+h3, h4 {
+ font-style: italic;
+}
+
+.hidden {
+ visibility: hidden;
+}
+
+.documentation {
+ margin-right: 1em;
+ margin-left: 1em;
+}
+
+.function {
+
+}
+
+.documentation.header {
+ display: block;
+ position: relative;
+ border-top-style: solid;
+ border-top-width: 1pt;
+ padding-top: 4px;
+ margin-top: 2em;
+}
+
+.documentation.contents {
+ top: 10px;
+ position: relative;
+}
+
+.documentation-name {
+ font-weight: bold;
+ float: left;
+ padding-right: 10px;
+ width: 125px;
+}
+
+.documentation-kind {
+ float: right;
+ font-style: italic;
+ color: gray;
+ padding-left: 10px;
+}
+
+.documentation-arguments {
+ float: left;
+ width: 350px;
+ font-style: italic;
+}
+
+.documentation p {
+ clear: both;
+ margin-right: 1em;
+ margin-left: 1em;
+}
+
+pre {
+ background-color: #ffc8ff;
+ overflow: auto;
+ padding-bottom: 5px;
+ margin-right: 1cm;
+ margin-left: 1cm;
+ font-family: "Courier New", Courier, mono;
+}
+
+.note {
+ border: 2px inset gray;
+ padding: 0.5em;
+ margin-right: 2em;
+ margin-left: 2em;
+}
+
+#footer {
+ margin-top: 2em;
+ border-top-style: inset;
+ border-top-width: 2px;
+}
+#navigation li {
+ display: inline;
+ border-right-style: dotted;
+ border-right-width: 1px;
+ border-left-style: dotted;
+ border-left-width: 1px;
+ border-collapse: collapse;
+ padding-right: 0.25em;
+ padding-left: 0.25em;
+ margin-right: 1em;
+}
+
+#navigation {
+ text-align: center;
+}
+
+#timestamp {
+ font-size: 80%;
+ text-align: right;
+}
+
--- /dev/null
+{include resources/ug-header.md}
+{set-property title "CL-Graph User's Guide"}
+{set-property style-sheet user-guide}
+{set-property docs-package cl-graph}
+
+# CL-Graph User's Guide
+
+# Table of Contents
+
+{table-of-contents :start 2 :depth 3}
+
+## Introduction
+
+In Mathematics and Computer Science, a _graph_ is a
+collection of _vertexes_ connected by _edges_. Edges may be
+_directed_ or _undirected_ (i.e., sometimes you really can't
+get there from here). Both edges and vertexes may have
+additional data associated with them. Graphs are useful
+because you can use them to represent most anything: food
+webs, hypertext, the world wide web, protein/protein
+interactions, language, who publishes with whom, etc.
+
+CL-Graph is a general graph library built on
+[cl-containers][]. It provides an open-ended API for
+building, examining and manipulating graphs as well as
+implementations of many of the usual suspects of graph
+algorithms and measures.
+
+## Using a graph
+
+### Creation and manipulation
+
+{include "user-guide-details/manipulation.mmd"}
+
+### Tell me about yourself - introspection
+
+{include "user-guide-details/introspection.mmd"}
+
+### Search
+
+{include "user-guide-details/search.mmd"}
+
+### Algorithms
+
+{include "user-guide-details/algorithms.mmd"}
+
+### Iteration
+
+{include "user-guide-details/iteration.mmd"}
+
+### CL-Graph and dotty
+
+{include "user-guide-details/dotty.mmd"}
+
+### Random Graphs
+
+{include user-guide-details/random-graphs.mmd}
+
+### Miscellaneous
+
+{include user-guide-details/miscellaneous.mmd}
+
+### Deprecated - to be removed soon
+
+{include user-guide-details/deprecated.mmd}
+
+## Index of Functions
+
+{docs-index (function macro) function}
+
+<hr>
+
+{comment
+
+#### Glossary
+
+{glossary}
+
+
+#### Footnotes
+
+{footnotes}
+}
+
+{include resources/ug-footer.md}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>currentDocument</key>
+ <string>source/user-guide-details/iteration.mmd</string>
+ <key>documents</key>
+ <array>
+ <dict>
+ <key>expanded</key>
+ <true/>
+ <key>name</key>
+ <string>source</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string>source</string>
+ </dict>
+ <dict>
+ <key>filename</key>
+ <string>../../shared/shared-links.md</string>
+ <key>lastUsed</key>
+ <date>2008-10-01T13:35:22Z</date>
+ </dict>
+ </array>
+ <key>fileHierarchyDrawerWidth</key>
+ <integer>190</integer>
+ <key>metaData</key>
+ <dict>
+ <key>../../shared/shared-links.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>41</integer>
+ <key>line</key>
+ <integer>23</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>17</integer>
+ </dict>
+ <key>source/index.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>1</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/resources/footer.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>6</integer>
+ <key>line</key>
+ <integer>14</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/resources/header.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>6</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/resources/navigation.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>1</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/resources/shared-header.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>5</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/resources/ug-header.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>2</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/algorithms.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/deprecated.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/dotty.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/introspection.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/iteration.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>6</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/manipulation.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/miscellaneous.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/motivation.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>6</integer>
+ <key>line</key>
+ <integer>29</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/random-graphs.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide-details/search.mmd</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide.css</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>0</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>0</integer>
+ </dict>
+ <key>source/user-guide.md</key>
+ <dict>
+ <key>caret</key>
+ <dict>
+ <key>column</key>
+ <integer>0</integer>
+ <key>line</key>
+ <integer>74</integer>
+ </dict>
+ <key>firstVisibleColumn</key>
+ <integer>0</integer>
+ <key>firstVisibleLine</key>
+ <integer>42</integer>
+ </dict>
+ </dict>
+ <key>openDocuments</key>
+ <array>
+ <string>source/resources/header.md</string>
+ <string>source/index.md</string>
+ <string>source/user-guide.md</string>
+ <string>source/user-guide.css</string>
+ <string>source/user-guide-details/motivation.mmd</string>
+ <string>source/user-guide-details/miscellaneous.mmd</string>
+ <string>source/user-guide-details/manipulation.mmd</string>
+ <string>source/user-guide-details/introspection.mmd</string>
+ <string>source/user-guide-details/search.mmd</string>
+ <string>source/user-guide-details/iteration.mmd</string>
+ <string>source/user-guide-details/deprecated.mmd</string>
+ <string>source/user-guide-details/dotty.mmd</string>
+ <string>source/user-guide-details/random-graphs.mmd</string>
+ <string>source/user-guide-details/algorithms.mmd</string>
+ <string>../../shared/shared-links.md</string>
+ <string>source/resources/ug-header.md</string>
+ <string>source/resources/shared-header.md</string>
+ <string>source/resources/footer.md</string>
+ <string>source/resources/navigation.md</string>
+ </array>
+ <key>showFileHierarchyDrawer</key>
+ <true/>
+ <key>windowFrame</key>
+ <string>{{611, 97}, {578, 778}}</string>
+</dict>
+</plist>