Node Overlap Removal by Growing a Tree

Node Overlap Removal by Growing a Tree
Lev Nachmanson1 , Arlind Nocaj2 , Sergey Bereg3 , Leishi Zhang4 , and
Alexander Holroyd1
1
Microsoft Research, Redmond, USA
University of Konstanz, Konstanz, Germany
3
The University of Texas at Dallas, Richardson, USA
4
Middlesex University, London,UK
[email protected], [email protected], [email protected],
[email protected], [email protected]
2
Abstract. Node overlap removal is a necessary step in many scenarios
including laying out a graph, or visualizing a tag cloud. Our contribution
is a new overlap removal algorithm that iteratively builds a Minimum
Spanning Tree on a Delaunay triangulation of the node centers and removes the node overlaps by ”growing” the tree. The algorithm is simple
to implement yet produces high quality layouts. According to our experiments it runs several times faster than the current state-of-the-art
methods.
1
Introduction
Removing node overlap after laying out a graph is a common task in network
visualization. Most graph layout algorithms [23] consider nodes as points that do
not occupy any geometrical space. In practice, nodes often have shapes, labels,
and so on. These shapes and labels may overlap in the visualization and affect
the visual readability. To remove such overlaps a specialized algorithm is usually
applied.
The main contribution of this paper is a new node overlap removal algorithm
that we call Growing Tree, or GTree further on. The basic idea is to first capture
most of the overlap and the local structure with a specific spanning tree on top
of a proximity graph, and then resolve the overlap by letting the tree ”grow”.
We compare GTree with PRISM [6], which is widely used for the same purpose. Needing more area than PRISM, our method preserves the original layout
well and is up to eight times faster than PRISM. To compare the two algorithms we implemented GTree in the open source graph visualization software
Graphviz 1 , where PRISM is the default overlap removal algorithm. On the other
side, GTree is the default in MSAGL2 , where we also have an implementation
of PRISM. We ran comparisons by using both tools.
1
2
http://www.graphviz.org/
https://github.com/Microsoft/automatic-graph-layout
2
Related Work
There is vast research on node overlap removal. Some methods, including hierarchical layouts [4], incorporate the overlap removal with the layout step. Likewise,
force-directed methods [5] have been extended to take the node sizes into account [17, 16, 24], but it is difficult to guarantee overlap-free layouts without
increasing the repulsive forces extensively. Dwyer et al. [2] show how to avoid
node overlaps with Stress Majorization [7]. The method can remove node overlaps during the layout step, but it needs an initial state that is overlap free;
sometimes such a state is not given.
Another approach, which we also choose, is to use a post-processing step. In
Cluster Busting [18, 8] the nodes are iteratively moved towards the centers of
their Voronoi cells. The process has the disadvantage of distributing the nodes
uniformly in a given bounding box.
Imamichi et al. [15] approximate the node shapes by circles and minimize a
function penalizing the circle overlaps.
Starting from the center of a node, RWorldle [22] removes the overlaps by
discovering the free space around a node by using a spiral curve and then utilizing
this space. The approach requires a large number of intersection queries that are
time consuming. This idea is extended by Strobelt et al. [21] to discover available
space by scanning the plane with a line or a circle.
Another set of node overlap removal algorithms focus on the idea of defining
pairwise node constraints and translating the nodes to satisfy the constraints [20,
11, 19, 13]. These methods consider horizontal and vertical problems separately,
which often leads to a distorted aspect ratio [6]. A Force-transfer-algorithm is
introduced by Huang et al. [14]; horizontal and vertical scans of overlapped nodes
create forces moving nodes vertically and horizontally; the algorithm takes O(n2 )
steps, where n is the number of the nodes. Gomez et al. [9] develop Mixed Integer
Optimization for Layout Arrangement to remove overlaps in a set of rectangles.
The paper discusses the quality of the layout, which seems to be high, but not
the effectiveness of the method, which relies on a mixed integer problem solver.
Dwyer et al. [3] reduce the overlap removal to a quadratic problem and solve it
efficiently in O(n log n) steps. According to Gansner and Hu [6], the quality and
the speed of the method of Dwyer et al. [3] is very similar to the ones of PRISM.
The ProjSnippet method [10] generates good quality layouts. The method
requires O(n2 ) amount of memory, at least if applied directly as described in the
paper, and the usage of a nonlinear problem solver.
In PRISM [6, 12], a Delaunay triangulation on the node centers is used as the
starting point of an iterative step. Then a stress model for node overlap removal
is built on the edges of the triangulation and the stress function of the model
is minimized. GTree also starts with building this Delaunay triangulation, but
then the algorithms diverge.
3
GTree Algorithm
An input to GTree is a set of nodes V , where each node i ∈ V is represented
by an axis-aligned rectangle Bi with the center pi . We assume that for different
i, j ∈ V the centers pi , pj are different too. If this is not the case, we randomly
shift the nodes by tiny offsets. We denote by D a Delaunay triangulation of the
set {pi : i ∈ V }, and let E be the set of edges of D.
On a high level, our method proceeds as follows. First we calculate the triangulation D, then we define a cost function on E and build a minimum cost
spanning tree on D for this cost function. Finally, we let the tree “grow”. The
steps are repeated until there are no more overlaps. The last several steps are
slightly modified. Now we explain the algorithm in more detail.
We define the cost function c on E in such a way that the larger the overlap
on an edge becomes, the smaller the cost of this edge comes to be. Let (i, j) ∈ E.
If the rectangles Bi and Bj do not overlap then c(i, j) = dist(Bi , Bj ), that is
the distance between Bi and Bj . Otherwise, for a real number t let us denote by
Bj (t) a rectangle with the same dimensions as Bj and with the same orientation,
but with the center at pi + t(pj − pi ). We find tij > 1 such that the rectangles Bi
and Bj (tij ) touch each other. Let s = kpj − pi k, where kk denotes the Euclidean
norm. We set c(i, j) = −(tij − 1)s. See Figure 1 for an illustration.
s pj
pi
overlapping nodes
Bj
d
d = tij s
cij = s − d
dist(Bi , Bj )
Bi
cij = dist(Bi , Bj )
non overlapping nodes
Fig. 1: Cost function cij for edges of the Delaunay triangulation. For overlapping
nodes −cij is equal to the minimal distance that is necessary to shift the boxes
along the edge direction so they touch each other.
Having the cost function ready, we compute a minimum spanning tree T on
D.
the set of vertices V for which the cost,
P Remember that it is a tree with
0
c(e),
is
minimal,
where
E
is
the
set of edges of the tree. We use Prim’s
0
e∈E
algorithm to find T .
The algorithm proceeds by growing T , similar to the growth of a tree in
nature. It starts from the root of T . For each child of the root overlapping with
the root, it extends the edge connecting the root and the child to remove the
overlap. To achieve this, it keeps the root fixed but translates the sub-tree of the
child. The edges between the root and other children remain unchanged. The
algorithm recursively processes the children of the root in the same manner. This
process is described in Algorithm 1.
The number tij in line 5 of Algorithm 1 is the same as in the definition of
the cost of the edge (i, j) when Bi and Bj overlap, and is 1 otherwise.
Algorithm 1: Growing T
1
2
3
4
5
6
Input: Current center positions p and root r
Output: New center positions p0
p0r = pr
GrowAtNode (r)
function GrowAtNode (i)
foreach j ∈ Children(i) do
p0j = p0i + tij (pj − pi )
GrowAtNode (j);
The algorithm does not update all positions for the child sub-tree nodes
immediately, but updates only the root of the sub-tree. Using the initial positions
of a parent and a child, and the new position of the parent, the algorithm obtains
the new position of the child in line 5. In total, Algorithm 1 works in O(|V |)
steps. The choice of the root of the tree does not matter. Different roots produce
the same results modulo a translation of the plane by a vector. Indeed it can be
(a) iteration 1
(d) iteration 4
(b) iteration 2
(e) iteration 5
(c) iteration 3
(f) final overlap free graph
with original shapes
Fig. 2: Overlap removal process with the minimum spanning tree on the proximity graph, where the latter here is a Delaunay triangulation on rectangle centers.
The blue edges form a tree; there are four different trees in the figure. The tree
edges connecting overlapped nodes are thick and solid. In each iteration the
thick edges are elongated and the dashed tree edges shift accordingly. Overlap
is completely resolved in four iterations.
shown that after applying the algorithm, for any i, j ∈ V the vector p0j − p0i is
defined uniquely by the path from i to j in T .
While an overlap along any edge of the triangulation exists, we iterate, starting from finding a Delaunay triangulation, then building a minimum spanning
tree on it, and finally running Algorithm 1. See Figure 2 for an example.
When there are no overlaps on the edges of the triangulation, as noticed
by Gansner and Hu [6], overlaps are still possible. We follow the same idea as
PRISM and modify the iteration step. In addition to calculating the Delaunay
triangulation we run a sweep-line algorithm to find all overlapping node pairs
and augment the Delaunay graph D with each such a pair. As a consequence,
the resulting minimum spanning tree contains non-Delaunay edges catching the
overlaps, and the rest of the overlaps are removed. This stage usually requires
much less time than the previous one.
It is possible to create an example where the algorithm will not remove all
overlaps. However, such examples are extremely rare and have not been seen yet
in practice of using MSAGL or in our experiments. MSAGL applies random tiny
changes to the initial layout which prevents GTree from cycling.
4
Comparing PRISM and GTree by Measuring Layout
Similarity, Quality, and Run Time
Our data includes the same set of graphs that was used by the authors of PRISM
to compare it with other algorithms [6]. The set is available in the Graphviz
open source package3 . We also used a small collection of random graphs and
a collection of about 10,000 files residing here4 . For the experiments we use a
modified version of Dot, where we can invoke either GTree or Prism for the overlap removal step, and we also used MSAGL, where we implemented PRISM and
GTree. MSAGL was used only to obtain the quality measures. We ran the experiments on a PC with Linux, 64bit and an Intel Core i7-2600K [email protected]
with 16GB RAM.
Some of resulting layouts can be seen in Figures 3, 5, 6.
One can try to resolve overlap by scaling the node centers of the original
layout. If there are no two coincident node centers this will work, but the resulting
layout may require a huge area if some centers are close to each other. We
consider the area of the final layout as one of the quality measures, and usually
PRISM produces a smaller area than GTree, see Table 1.
In addition to comparing the areas, we compare some other layout properties.
Following Gansner and Hu [6], we look at edge length dissimilarity, denoted as
σedge . This measure reflects the relative change of the edge lengths of a Delaunay
Triangulation on the node centers of the original layout.
The other measure, which is denoted by σdisp , is the Procrustean similarity [1]. It shows how close the transformation of the original graph is to a com3
4
http://www.graphviz.org
https://www.dropbox.com/sh/4q0k89yrv4x3ae3/AAA3xyKFRhLyyHXcG9jpcgata?dl=0
PRISM
original layout
GTree
Fig. 3: Comparison between PRISM, original, and GTree layouts. In four top
rows the initial layouts were generated randomly. At the bottom are the drawings of nodes of graph ”root” which was initially laid out by the Multi Dimensional Scaling algorithm of MSAGL. In our opinion, the initial structure is more
preserved in the right column, containing the results of GTree.
bination of a scale, a rotation, and a shift transformation. PRISM and GTree
performs similar in the last two measures as Table 1 shows.
To distinguish the methods further, we measure the change in the set of k
closest neighbors of the nodes. Namely, let p1 , . . . , pn be the positions of the
node centers, and let k be an integer such that 0 < k ≤ n. Let I = {1, . . . , n}
be the set of node indices. For each i ∈ I we define Nk (i) ⊂ I \ {i}, such
that |Nk (p, i)| = k, and for every j ∈ I \ Nk (p, i) and for every j 0 ∈ Nk (p, i)
holds kpj − pi k ≥ kpj 0 − pi k. In other words, Nk (p, i) represents a set of k
closest neighbors of i, excluding i. Let p01 , . . . , p0n be transformed node centers.
To see how much the layout is distorted nearby node i, we intersect Nk (p, i)
and Nk (p0 , i). We measure the distortion as (k − m)2 , where m is the number of
elements in the intersection. One can see that if the node preserves its k closest
neighbors then the distortion is zero.
Our experiments for k from 8 to 12 show that under this measure GTree
produced a smaller error, showing less distortion, on 8 graphs from 14, and on
the rest PRISM produced a better result, see Table 2. GTree produced a smaller
error on all small random graphs from other collections5 .
Table 1: Similarity to the initial layout (left) and number of iterations for different graph sizes and different initialization methods (right). PR stands for
PRISM
Graph
dpd
unix
rowe
size
ngk10 4
NaN
b124
b143
mode
b102
xx
root
badvoro
b100
σedge
σdisp
area
PR GTree
PR GTree
PR GTree
0.34
0.22
0.29
0.39
0.30
0.56
0.55
0.67
0.54
0.71
0.75
1.09
0.88
0.84
0.28
0.19
0.26
0.37
0.30
0.44
0.53
0.70
0.50
0.77
0.70
1.19
0.92
0.98
0.37
0.24
0.23
0.24
0.27
0.73
0.97
1.12
0.59
1.43
1.65
2.89
2.27
3.08
0.36
0.20
0.24
0.26
0.30
0.51
0.83
0.93
0.53
1.27
1.42
2.45
2.42
3.14
0.82 0.84
2.38 2.38
0.68 0.73
1.09 1.28
0.00 0.00
4.03 4.34
5.52 6.22
3.62 3.88
1.53 2.29
4.50 6.62
6.21 9.57
34.58 91.87
25.68 47.43
20.64 37.38
init. layout:
Graph |V |
dpd
36
unix
41
rowe
43
size
47
ngk10 4 50
NaN
76
b124
79
b143
135
mode
213
b102
302
xx
302
root
1054
badvoro1235
b100
1463
neato
|E|
108
49
68
55
100
121
281
366
269
611
611
1083
1616
5806
PR GTree
4
3
5
7
6
8
14
21
37
60
83
95
40
80
7
4
4
3
3
3
4
6
8
24
18
18
20
24
SFDP
PR GTree
3
12
13
9
14
24
30
37
11
113
50
99
50
136
6
5
7
5
7
6
12
12
6
19
19
22
23
28
We ran tests on the graphs from a subdirectory of the same site called
“dot files”, let us call this set of graphs collection A. Each graph from A represents the control flow of a method from a version of the .NET framework. A
contains 10077 graphs. The graph sizes do not exceed several thousands. We
used the Multi Dimensional Scaling algorithms of MSAGL for the initial layout
in this test. The results of the run are summarized in Table 3.
5
https://www.dropbox.com/sh/4q0k89yrv4x3ae3/AAA3xyKFRhLyyHXcG9jpcgata?dl=0
Table 2: k closest neighbors error, the Multi Dimensional Scaling algorithm of
MSAGL was used for the initial layout. PR stands for PRISM.
Graph
dpd
unix
rowe
size
ngk10 4
NaN
b124
b143
mode
b102
xx
root
badvoro
b100
k=8
k=9
k = 10
k = 11
k = 12
PR GTree
PR GTree
PR GTree
PR GTree
PR GTree
7.75 6.06
8.56 7.05
6.28 8.09
4.68 6.09
6.76 7.4
11.83 8.95
11.03 11.44
13.49 12.39
16.91 11.46
15.99 14.62
15.68 15.65
17.09 15.7
16.18 15.15
18 19.25
9.61 7.36
10.51 8.8
7.09 9.95
5.47 6.47
7.52 9.26
14.46 11.5
13.22 13.56
16.31 14.99
20.58 13.95
19.61 18.78
19.01 19.45
20.89 19.36
20.16 18.98
22.11 23.65
9.5
8
10.95 10.02
7.49 10.49
6.28 7.57
8.28 11.38
17.32 13.88
14.76 15.54
19.49 17.93
24.68 16.85
23.38 22.77
23.05 23.37
25.48 23.3
24.37 23.28
26.79 28.69
10.14 8.5
11.66 10.54
9.12 11.4
6.89 8.13
10.72 13.74
19.88 16.37
15.91 17.32
23.11 21.04
29.54 19.92
27.28 26.77
26.98 27.35
30.48 27.66
29.18 28.03
32.03 34.46
9.97 7.64
13 11.41
11.05 12.51
8.26 10.02
11.92 14.66
22.17 19.7
18.23 20.04
26.53 24.43
34.48 22.56
32.15 31.45
31.29 32.47
35.74 32.83
34.29 33.29
37.44 40.5
Table 3: Statistics on collection A. Here k-cn stands for k-closest neighbors, and
“iters” stands for the number of iterations. Each cell contains the number of
graphs for the measure on which the method performed better. We can see that
PRISM produced a layout of smaller area than the one of GTree on 8498 graph,
against 1579 graphs where GTree required less area. From the other side, GTree
gives better results on all other measures. The columns of k-cn and “iters” do
not sum to 10077, the number of graphs in A, because some of the results were
equal for PRISM and GTree.
Method
PRISM
GTree
k-cn σedge σdisp
area
3237 4741 4114 8498
4088 5336 5963 1579
iters time
46
7
9986 10070
Runtime Comparison
Both methods remove the overlappiteratively using the proximity graph. However, while PRISM needs O(|V | · |V |) time to solve the stress model, GTree
needs only O(|V |) time per iteration with the growing tree procedure. Therefore, GTree is asymptotically faster in a single iteration. In addition, as Table 1
(right) shows, GTree usually needs fewer iterations than PRISM, especially on
larger graphs. The overall runtime can be seen in Figure 4. It shows that GTree
outperforms PRISM on larger graphs.
In Figure 5 we experiment with the way we expand the edges. Instead of the
formula p0j = p0i +tij (pj −pi ), which resolves the overlap between the nodes i and
j immediately, we use the update p0j = p0i + min(tij , 1.5)(pj − pi ). As a result,
the algorithm runs a little bit slower but produces layouts with smaller area.
Overlap Removal Method
Graph
|V|
|E|
dpd
36
108
0.01
0.00
unix
41
49
0.00
0.00
rowe
43
68
0.01
0.01
size
47
55
0.00
0.01
ngk10_4
50
100
0.00
0.00
NaN
76
121
0.01
0.00
b124
79
281
0.01
0.01
b143
135
366
0.03
0.00
mode
213
269
0.08
0.02
b102
302
611
0.19
0.07
xx
302
611
0.27
0.05
root
1054 1083
1.19
0.21
badvoro
1235 1616
0.58
0.26
b100
1463 5806
1.46
0.37
Time in s
2
1
PRISM
GTree
●
PRISM GTree
●
●
●
●
●●
0
●
●
●
●
●
●
●
●
●
●
●
0
500
1000
1500
Graph size |V|
Fig. 4: Runtimes for PRISM and GTree.
48398d080dfcccced48da1980
6282bc21f6
cfdf1932665dcb4cd3c
866808df
de34214b4c258c9333ec3
51e045ca826077ae765
964b86fc1bba0e
d13da6273c9b4da
16c3ae29c0bc713
8e24e9b4e
0f6784e49852c0be0da23b16
a97ef281eafc34b1630d450a1df
a7c99ccf6ddf6f5ebbe
c4fd8
842bc5775657c1e0d67
4cc20a0b7651e486
66c0220688a999aaf7f1702d1
03716a2c341e5edaa31
c1c30f30d40c4f1f84924622f
b79798b186d6b82288e8be4017d
f2b6201774de40a29b504b1f716
47e0067f4d853afd2012f04daa8
72cbb37db85ed3c6eda5dcf8
431430c49
56292d076643
d58478d9c273ad4f4b2e091324
f95344b0ae31693f3a2746597d4
1562abef0d8241
658d208447d8ec5d6de8
f2c7b3bb4d44f977d0ab8a42351
b9ae94e6935503603341ecf4
fcbd9ad14139718bc6fcc8b4
4ff4e275c710c3b
a387210a27b
81dabfaba8
5c81103c751345d0ee0f4bd
21407f8a6d7
81dabfaba8
d7203571944b
6a8f5bafb1
69f4ecb77d
952316a1a5a785
37d80ae421dba4a70730338860
bf01c8a262
e82f47b8d4949ba4af69b38cbc19
33ff9e43d5ab
99bd3e7feeb710
63b079bd5847
e079d2c
ef13d45b1277ac9a0444adb
26a185dde9a93dd
92fb5d4a0805
ac487676a04e4
21407f8a6d7
1ff8ff951ee9
88d8b220746882d
4e8259973f1f
6a8f5bafb1
81dabfaba8
533E
f496bcf0889b301d77819c
f8128d574c356631b8a9
9696c0950295d8cb5
1a220eb692c
e079d2c
f0bd1521
f7b22b9640
c5d5be3942
f8ff39eab120851f143bf19
4f0cbd3fbf0cb1e8c
e8ebe1bf5f421c1223
11180ae7706510211bc4
d4f958b03a98
67b6a4dca3a6d
c2f32e2cf9
81dabfaba8
a27037332d9fa5c43bcfe94c0
f6e6236b48bc3
32c958c9997
fa2afbd869
f52a45620969f0df4e6ae1dcd7
4c82921f4ad3f07066540
ef8b68bb5772f3
40f253cd228f7ac2d0aee
60d0128bdb61ae40e98638bd1391
e33792703
ff07977fca5513098d220d1eb3a
383f5c65cc6c25aa0a0e6dbb
24431c3eb075102f07cc2c1be
3b2f08d52e4bca3f9ca7bbbd6
f78e145a127014eb43345a0c
fb039d7a2a9fe73b5f468eba9
89a36b13f8c344b
12fcb26b3de00ef98719c2ca
5256925081c812
a7fe7
b06bbfa920aa95dd
675E
403126
8fb60d769e4c387
1562abef0d8241
d370c12dbc
e64f22a31
99da1f8a5
46e412a3
f33ec11db496f7bfcb024f
52a6c2063bccd83110c32
e920b915087
86633c26be93ada8b
af0268dddd
c4f31ea3844e12da27ad47c6
666f11bb45c3a8dcf26e1ed79
3089106e3b
b9
c90f755c8b6612d
663E
e920b915087
3089106e3b
317E
51e045ca826077ae765
e842
e03b8bc0435a
d378760b814eaecb6efe636e0efc4
b69e426d974e1907e88
b5c747cc9
e842
c4d32527b670afb370d643
b5c747cc9
a97ef281eafc34b1630d450a1df
9652ab8b55fdb2a36d1f3fe020
e851f5ddd920
b656f0ed2202b8e46eb
7528dd86b
0f6784e49852c0be0da23b16
4f2e020854dfacce46a12
431430c49
66c0220688a999aaf7f1702d1
842bc5775657c1e0d67
800422ab81d804eef3e7b91dfba91
b79798b186d6b82288e8be4017d
03716a2c341e5edaa31
4cc20a0b7651e486
72cbb37db85ed3c6eda5dcf8
f2b6201774de40a29b504b1f716
f5d636e14a6cd716362158d
d58478d9c273ad4f4b2e091324
45ba4d4c61c9601a26d59e47e0260
c96782ef56711c5d6a3f69
3cdc90c57243373efaba65a
e3bdbca0e2256fffa8a59018
47e0067f4d853afd2012f04daa8
1f5df34ad75a55a76ef4afa0a47
f66fe4df3d189e69ce10c9c
f841118350a27b7ea29a9c9d
658d208447d8ec5d6de8
1322fb0818783e6f9a4f173d47c52
910b00285f11bb90d0a15641
4a38abc630c82b0c48dfbf5271
f95344b0ae31693f3a2746597d4
56292d076643
f2c7b3bb4d44f977d0ab8a42351
75ba8d840070942eb4e737849
e343cea291b79a2ed4e
c1c30f30d40c4f1f84924622f
383f5c65cc6c25aa0a0e6dbb
1562abef0d8241
4c82921f4ad3f07066540
24431c3eb075102f07cc2c1be
ff07977fca5513098d220d1eb3a
b9ae94e6935503603341ecf4
f52a45620969f0df4e6ae1dcd7
fcbd9ad14139718bc6fcc8b4
3b2f08d52e4bca3f9ca7bbbd6
40f253cd228f7ac2d0aee
11180ae7706510211bc4
f78e145a127014eb43345a0c
60d0128bdb61ae40e98638bd1391
4f0cbd3fbf0cb1e8c
e8ebe1bf5f421c1223
4ff4e275c710c3b
ef8b68bb5772f3
fb039d7a2a9fe73b5f468eba9
37d80ae421dba4a70730338860
d4f958b03a98
5c81103c751345d0ee0f4bd
67b6a4dca3a6d
e33792703
f6e6236b48bc3
a387210a27b
33ff9e43d5ab
952316a1a5a785
e82f47b8d4949ba4af69b38cbc19
bf01c8a262
63b079bd5847
d7203571944b
a27037332d9fa5c43bcfe94c0
e079d2c
32c958c9997
99bd3e7feeb710
21407f8a6d7
e079d2c
1a220eb692c
f496bcf0889b301d77819c
fa2afbd869
26a185dde9a93dd
f8ff39eab120851f143bf19
f8128d574c356631b8a9
6a8f5bafb1
81dabfaba8
ef13d45b1277ac9a0444adb
9696c0950295d8cb5
81dabfaba8
69f4ecb77d
92fb5d4a0805
21407f8a6d7
8fb60d769e4c387
c2f32e2cf9
81dabfaba8
f0bd1521
f713a8b311ffa05ce3683ad10
ac487676a04e4
4e8259973f1f
f7b22b9640
675E 1ff8ff951ee9
12fcb26b3de00ef98719c2ca
c5d5be3942
89a36b13f8c344b
88d8b220746882d
fbdc3ca37406f66635c8b226e
a7fe7
b06bbfa920aa95dd
2d7b7fb6c9ad6821752651f7
533E6a8f5bafb1
5256925081c812
81dabfaba8
14a3c17f3d
a3ff993 73ca543bf1
3b1563a23eb9
d370c12dbc
a0befe6dd1ca7b165786835
403126
30cc206b1878485
07f8a9e55a16beddb3c9153b0
5f865c374cb3fe976dd376b8
23ad1
6448451ac2ceade90715378b
81dabfaba8
5807acd8d58e006f43
86276bb1e23f2c7ffcbe82a0
052bb6e3
b23526044
80874aa8
a7fe7 f29dfb9
6a8f5bafb1
57c77c341f94afddef07e6
96325ea
9f24ba80192c339a64c0
341E01
151E
c935c7f4d1090ac
4e3cfd27a
1de26f6b12b0d292f94184
e4b45b7a2f884d3734bfd5985656
531806429433
30d6138b63eb
6a8f5bafb1
5e9156098c064
369E
e49aaa5cc4e44355d6a0
47b2da3d
b62cd1d0a0
1727041c622518c9dd24f7c211
41a8b095c7fd3
b36e0be6f67fc25286127456
a8e9
3ba7afb0e48ae1
319bc900218b
5ce1fcfb042b
151bcc2a8de7ea634
8cbcf5cb5
290907417e13
5eea496cc301b2a9721
0da9135 47ebc3f17
fa90ddf10bd574
1d529eb4
78cc16f965adc5f712ea2372c6
8d0d8314d211d80
247e407f45b353f8
f20f7f513e
6c541cad8de1b15
585E07
e64f22a31
20f234fdcd0e1fc50261ce8
d4f7b7fba7afcf7a72397353ec
2a47a6a27 30417faf916
eff3468631dd4
e8386a8e1c8a
81dabfaba8
fe821bce
23ad1
3cfae
761e0f72f95
efb52b499303115c33fd
d285240b89cb
39d025b265f9790490781cb201
e3fd0c7b3
534E
15d44ab97
162d8039483d8
619E
7e494b f787d827958c
010957669f3770aac
0f167280
f22c27c0f0a54e
0f940646
8cbae42a3900
67219ef689f0146b544
0fabab47
23ad1
78b2d75d00166
653ae44d45dcadeb481b53027d
a8e9
c110ba7 cf5a6049ad
8606837526d81cdec
285E
ddfeabe456a9de5f5784
99da1f8a5
f603819d560c5603259aa05dca
5e80f85274
6f578c5128
dcc5d5e9d6c4e
71cf45dd4e91bcca945137b40e
0a185946ee443342b07d8e1
fc73
1b82200
1333074979f2d0b ad9142a65f5eab78b4ca5e
65fd8495
815cc0b83d733b3cadc253f7
c0f34a6003e048573fd
0bc7f8f513e0e74b270
6ba0776fc8e
85a34bc9616ff
fb58e11
381E
49704867bee95
e1fa7f549e5a0893bb42da5
87a7e69a72412
cca7040e47789
82d201 78c8463ea a3781072b
459E
b1ffbabb24d71f67d1e0ce23c51
233E
cc3f63d
62f36ea98a
e618df70814a
3f9ddf1ffbc0d38b
3b63cdc0f
32c4684b55361
e3a76d31ca59a
bd7aca295ca
a9012b7bb5
23ad1
46e412a3
683E
a54d477232
78
8462bb2eec1a62d19a15865e57c92
102f1
370E
3b0c08dd2ca
5e80f85274
aac615ae78
bf141dbce
e3e284d0cc803d98d674f9c3f6d
3dafb9a29c00
acacfc83af504 0f5db6ce12751ddcc64e
38fa61352f5086d2cb51
e287d497450664a4c0f4efc338
632E
342E
6b1bb9b0e
d495de0b35f6
c96cb3
422E 696E
a8e9
e06cc38155ff6781cf944d745
2f43cba12702078b4e0d3bfdae2bc
f3c4311de0e931f08c232b 6a3c6921b0aeceda3
8f95518f48528
b7b899dc8bc6a32b28cb098fa16
87a7e69a72412
90dccb18c0
bbb13dc62adf2de2a42b6
620E
155d892827c33ed3cae3
a849f9d352e
31055116421c96b37f72a262bb
65fd8495
549fa15d68f0b3bee6192f888cd8
713db1c1 616d8a7b
4d22e1
a8e9
a7a7f3681dad1250b01cf80bc17 8c7cd9b93b1cbe48e1
a164d9f60fbbdd
16a795a1d63f30df
550E
f36cce089
300E 444E
97a7eea3f
ca3d67754cf62fdafbf0a1e0 4348f3abcb7716
c10cb9baf4dcb43e24
3eca1f94dc181
07
684E
51192117f9b4
b46b0756dba915943839e90a55
a2984b7a11e49440420058c1d80
be9c5958196ed
460E
ee3b6be71d59b
e17fea65
c8fc17180bea86
cfff3acd8e9d
f9df653b86fb8df
8be0efdd94a6383e87fbfded4f
3c1edc8de4795936
234E50f4d9b97aefe bb828f1a326
382E
e65185ca
454E
8a9eb2806b0aa
2043b477ac0393676a4309514d0
354E
89a2505da6179a80202d4a6c3
8d5137b16a
69ce90c9b2
8292af691429f8d9ed481ff71ffd
558d8534f92fddfe
357679fea1e2f
34d06d1ed6
062fc905b9eb35
8f9cdc26798117dd3e9ee4a8770
ff5c9b242337c
ef42184297591d
238805e2194c3
a5a
6bbd5b422edb8e358dcc20eecf9
162E
e84330eef281284a
22bd92e302816
582E
35b941379e1af658078cffb83a2
2ced414a91575a48f2dd29a
630E
380E a8f0fe2eb7bc1471
a141a557a60912051f3c135
06eff1db45cdf
ac6e99186
09847696ae
bdec8c86db51b9
ea920d9f5b295119
6d52dd1b198bb
aebb7b91b
d66f542ef1ce4d02c59bec65e
09e64744536c5e1
6819fd5a6cdd280dd
fd28c194a46fde909b019c52f
d17f8f4eeb8e63d 4a9d79c960b8d33e39251e5f66
c b701e7
331675c046693f
212af4
2c514b0cd8f7d3
28533c 615cd6b5e3d21c
e1d01ef89f
5fdf
a3b6df27179b175c88fa4c9cf9f
8c932e1e502dca
74e86
2ef209509e2a
7204950f6233bf9c9e1f00d4a870
c8a6c26d4fd9f 75b14f1719d 881d373
a4c7d0
10a7d61c201c67a5e78542807cd
73e6ed83012
587E
2e31175cbd52fcd08360fe86d20
75eea05672a5
70815f0352b43dc1562133ab6eb
38f162cf917ce7298663a1f1c607
8304a439f91fc90b3fe8dd35be8
4e12f7ff0918
345d26b3f821fe
801E67513d
e9 bce
4f2de229621272
85221d5e9e
6bf214d9e7fa5f2df
ccceeef40edda787e0b91491c8c8566892cd9a0889
aff6d7896e0e142bbc3e78
69
8b98c3ddbe0b336
af4a1fac3e2076
73d12 b082f7a5ff
6577
9fe716e738eaea34e
648E
de9efa12873949
7ab64a969
c71043819b6a79
8896166adc0
c338481d79773
02c2ba83680ab57f236a33d702
5997cb0c083422
ef2d4636934472
ef6361295eba07
330342f283ef2
5782807b5f575e0a8
588E
4ad5d68f07981a
a031c9192ae8e75
d4b2 19398d3cd6b9c674f
316Ef2e7cc
d2498
876d120b38b0e88817
bc4824f07a9d2bba6
084d4bfa5853e
020df871874cd
be7d637c50c
7c0ab977f5a3c4ab6d625f5033 52126553e52385d16
85fc23f1c88b4
d9f4abac731a9e
462E
e4ae306d9bd669c70
8e2d970b2f820ee35
a2c4b1d72e2da483a86ae0c62e5
cd62a9caef7
3acbf8a1537e4e1a1
eedc819a68add6
cf
2d886da042b5384b4
9fe65061641 4f6f7f
4c52fdd8e396692
e5
8d6e6e0cd9b842a47
47cd70f 31f2f9aef958979f9f3532b9b
f2a57e4d4f0cec516891e3
964cb56d8f69ff058
20949455f573f
c4507c22d19
cef12b6
affb2d716803a2d3e
6505e29f4a11d9530
f1b0d754353a6
f4bef37b6a94bfd00
a7167d5eb5408b3839903
f28b78d4803c
c21eb96fe100a1efaa128181b7
825c7994d5da13afe519861818
4995c71223c9f6067324d387a2
360E
548c0081a62132b44
bd2484
28f7bfc40c88e6a
c471b6fdbfb852661
3aeb78ea51020a44f2d2615436dae
e1e8c
8c8b5bde6
57948adb5dead
8be752bc95d436a90493bec9
418E
a738ba39
a84844dfd0052b3b5
d2647f8b6d8661d08
c54f0fc1e05
15b3ad672cd2f713a
9ccd974150a18260b207b6584caa
57f7fd2eecec93c8b
4f35e206816c3bd22
a9497e0757b0969bde707ed5
ee91c97828
fff03efcd
9dd5bf47f
724dabdce9744d061
4dbf4395236fb03ed
d 3bec1c012b498
3089106e3b
503737b64d432c60d6ac557e0e6
541ab86a2e
298E
2e1313c
baba65f670ee34a88
8d52f183ec
51e74bec5513083bb
00cbeb87c182ca0785f
660ffeb76fc59
c72df69b40156a3254
9937ccba1469
c3bbf401938827
086bdbdb31bd777fb65dd6dd2d0e79ab6c66dc
6331b3f
96deede0c6b44119
ac34ec0f0488b17ec
536264e787cf70469
297E
bba6e6e194ccf
dd84fe6a65cfac7bca03ebd
9f
00d0dd018fe879f96
6a91
f722890f70a32dce3baff371a3089106e3b
86569bffb49adf6b3d0ebac
05fed5e 8b092
7c13bf753da 04904a458422a5b9
18083a711d
84e4ede82074
fb16636aae
1467f017b74e 7c1767485953d9c2 76E 248df40dae
459236f07c73814faf5
7e74e1587f3a4d208
b9
682E
450d3a2d49cbfd
58e3dcc618
82a65ed4b69
b2babf3244213
af4abb0d6a99
c4f31ea3844e12da27ad47c6
792fd6f9df1fa1e33
b074e
681E
81
44cbb41a9cfc15497eacd294
5ba4693031
30c3f3bf8463d3843dc57d8e98
63a3d4fb9d38a0182be6e39e76 99237fce1358
3711
ff9d64ddf49a20f
3b0a8a1c2e5050bd
664E
06209
ac284d73563
4856000a6802ddfc121ef40432297
3dafe1619016463f521f
8066f87a88f4e
64ef1d545
bfc6564cbdeeffac00a141c90f755c8b6612d
472a156cf2b55f
609E ab48d1f65812bc0f8ab6941c3b5
275afb2b215b966d9fac51b96b9
a54092a3033f7d5e41e0a76c1
cab04b7c14a
5c6a2
3b6b2c549de670d7bf5fc0ee
1112164c2f7a
332E 1ebeec
817
274Ee8b
ca5af2
318E
663E
699e3db878047
b38049e00
6a91 eee44624da
9b6c
ce
0a963fef991ecbe29a71f00ed5a3
9
1b34fb150
617809d979f
4dccb
84e4ede82074
666f11bb45c3a8dcf26e1ed79
1d792d81508E
2759e82e30d6d
9c1305d59c37e9be9f13d7d049c
0a49c95f107c0aa57c9b5748
9be88247
cab04b7c14a
07283
a9058241db5b6b6c25569acdf5
4e4a79111d
1a830d9f
51ec95518d1b3
69f2611acc42c36ed7cc
1ed67841
52f247fc3b
2573e1bf51f1b307f4640 3089106e3b
e153c6e676c7369b285b4e9033a
654E
340E
317E 7c7c
593caebf2037317648bb451aa798593dcf973b110d00cecdc1e756
6472c2861e0e0dd681
e7ef998
2ef949c4a39b
f72564578be
3aa0ce5efcf79bc3ecced1886e89
4f05b 244E
8fa622d9f842c5572a545ed72982
376E
256E626E
c3c93c700edc0cb4f95f03c04
49E
0efbd
8cd4d
ffd1b1af3b6864078f3
a96e47ff37983425a3e452095
1d4ea80c7194689d69f9592186
c5255d
00265
e03b8bc0435a
a
bf 5c609b12c
b5f038f79a3
320Ebb828f1a32694da691e20e3
226E73ba1714ee
a7e89580
c32d2697e8
fe6be3206549f5b5564acde84783
86e9b0428
3a8173d6c
969a58db14386cb9d2f51ec
b473716
97c9d726e27304311901a52ce
84e4ede82074
731857fe189fb398e80a0594
8c8b5bde6
793E a7d2
6a80cbe
00880e6f50c765ebc1f85d3e9
dea1d1
375E
975fedfb64df
3dcf8f454
647f55670 8a
f
8b06a67a
6e186b
40b49a5a9bb256c7a3286e56
81bcc35f82891
ffccaa9e3
5a7a610a8a
32b98f11f3d01d6
319E 2601085bde1b2450d64509f36
2e53009d4a375
908f9ad506eae9ab6ada185e3 296E 644E 93ea0
d93a80739fc1edb41a11b7294
8f143077e
484E
1b13908a9f0763c0ae54af9062080
1c08373
638E
df61d5f5fc
17dafa5ebaafd48440e3
32979f8cf86
4379b5ed
629e42
56e1a896
200E
8ea965ab6ee8dedb6c3333e9 1ed5d7f63b8c6
672E27709106
2dd8cc4d693415f93c0f8fc
6c998bf2a5edd
c5acd20cad2
b354cd9e9dbb0bfa 294E
24dfe1a997a
c6b5321a
262E
351dd0aefe480c
5a0b4b906a
eb8
65a1
254E
66abc181ac4
59a8b435ccd
6c93f24516f01d
3089106e3b
d378760b814eaecb6efe636e0efc4
cab04b7c14a
6c89dc59ee7aaebbbd6bb64
a9a36ef02f bb92d1da1f38d52f8ff
90cc275011c2013c61eb11
1c08373
f0d99f1695e93c4a13
8f7c875500073
474E 428E 4b683
383db224d7508ef072bea21d0
336E
a49284e9
2832ed5cea6
33e1def0f45e707
46f754ea06f070dbc023e571a876
35b8742610
eb8
52f247fc3b
e4dba079d5fcb1f165920a3bf
ebd8ffc2ac3a90efb8af9
efe092824916a5637ee35d439589
3a0ff0
04767
d382
aeb8
be8f4199f
cab04b7c14a
171192dc1f8e6ea551548a910c00
65694ca6d575
eccf7c722ddf
ee91c97828
e1e4c23db39d8bd633c3a
cab04b7c14a
768E 37f57e81ebed95
408E
406E
6bce02baf91781a831e1b95
668d636002
1172dca23
552E
eb8483E 4c6c8c
637E
444189d179b5db71fe
3089106e3b 400E
634E
6c632ad9c42228bb337
504E 402E404E
e2a5d11499b7e
3f16509139c7dad5163b91799
448E
b630e1af6ae1997f0e8ba750
b12441ecff15fa12c
216E
cab04b7c14a
629e42
eb8
46969c4
0668
901b2105a902ee7791
438E 214E
ca5af2
88ebe2e8782c c0b727
617809d979f
cab04b7c14a
4f04c39708f
476E
c29ce10bb8d19b498355aa04
3b4fdad8e0429d112
d886e4b76537a99bc71b8a9331c94
34c8c8dc0f6e41c7e7b2
1f4f0fdf
199E
358E
0acc5bb8ca4
dca32af03698c988b22
644f112bb0aa452ee7040a
69fdd1a1f4768c5efe7
e7ef998
398E be6b73bd46a7a5183e8c91a
ae32701
cab04b7c14a
236E
1e1fbbe14ac24e0518
6a80cbe
23c1ec53358d237c1
278E
eccfe5ff0af70fe9fbec8b2360f90
45827dbdd8
335E
4c6c8c 1aaaab063
966d271c22e75c7538
be8f4199f
412E
4c6c8c
be8f4199f
2
3bbfc7bfdbbb1ba1bfad7517
aa868f65c34cdb64f1fad19a
45827dbdd8
84e4f1c582427a98d7b
b4dfef6
d8f4a9e463a1e89217f
0acc5bb8ca4
4f8c642b53c349c687534bda35db
784E
1927c743a0d440a5a0
bac77c3f414a
427E
be8f4199f
dd2ba36
d0eb84 3219b6b71443
cd856f
5f2592b20f13356b7fc8b42
2342b759c03
499f6985db294c
6b5aaa4bdf44b2c898854
d12bd75c24b110ef90cdd35d3
473E
eb8
e4e2f4e6d
421
8e69341faa4489
1c08373
4c6c8c
45827dbdd8
bb5e89c8963
ea890ccca2f7c2107351
79b69c612
4280833ef80172
fbba7215e7c13173a60206
6139fa6adc88d
16c508ab98483d430bbe
da0d7bbcf3002f5daf56e299b8a8ecea892
05d4b1ed6a6135eec3abd3f2
08769f73d31c1a99be2d9363f
396b16a892fe
9d8988c0945d6 c0174bbe7ae8460aed10cc9e3aefac763
3f0a2b4eb62f
76889f7d35e
4280833ef80172
e3aefac763
1d163eac141def176461c
7e493ee44b28
731E
4280833ef80172
ad1dd724f1c3e
396b16a892fe
db6c4213a717bc
50023f6f88
4280833ef80172
11f088bfd8
a153512d9823c2a62e0e5e9f7
460aed10cc9
230cc6bbc66b24eae94fa03d
bbe0a8f93dc1
e3aefac763
396b16a892fe
3828a2c682419423cf
b5e86c73d1198f 837ebf4bde22e1f1535cb662
08dade990b2282
5be631dff7b97697be7dc0a2f07f2
50962c93b4cb293f5beb59eb
83c397b8bf7f
4280833ef80172
b5e86c73d1198f
83c397b8bf7f
460aed10cc9
83c397b8bf7f
391256c872
460aed10cc9
71a48d11b2e7e56b1df128bd
3b566eaa70ed401479d43a9
797E
460aed10cc9
18115fa32ff1cb99
a6a196a504c3a7657d1fa41
6236a67933a619a6a3d48
173fd00917644f0f1f3e3
f490de272a7f6e4af346d40 a5520019b8a73bc141b5fd416a
04390dec6f1779353c07f5
3e814305b42beb41b8c706
97284d4c3a5d499853f0e
01db23a60422ba93a68611cc0
11bb8ed3ae227d3acefc
0b8694c9ef9b27b9c3d8
d6125ef42bd9958
e0ad365c2fb444358201
0c72a426929600000f5
f4c69e5e212f89348122e8
88a4f0337c2189c3fc7b31
4399cf78123dedd0dfe9776104
81e20155999fa64e0ae6fd
9e650e89bb
5d69639a5e3bdd3d
3d475ea3aeca51b60212dd
e7a887d88c2318beba51
71512ec7d43f958f2b6da
fe4e848cb5291ee59a2
f62b136b2171
6fb7a84e370ef70feac5cb
275a0407e33e9b8aa9cdd051
293a225dc56dd1e0564e6bb
805004328dad9d315d
89ced1a7906d58d687d5a04
46125fcc583c0f494a3a1d3
678bf739c344b9ad41da1
cd1e9af3dec2
df5dba74c75b228de48c
4a36db80f1ab1e97
16da5f1301b36df4df0f
284f14a259991806654e743124d3a6ed3381a6341c6
21dff35936370ae5f
30d9d350943c0e3ff7594b50
af9c489df53
b07bbdc8cca5985d4c4
dd12f26f8d9bb55
d550a7f392c787661aadd48
5838586c293d455
3ef07ae75d29a707
1c07453d584f3d14b1876fdb
da24f74aad2ff519009d1f38c
6d4a4a5a5af91b895272c30
6b3f3fa236bb90592d23a
3703059dbc5a8
23f94655294d3ff537f2915fa
d
53069e384a2
8a46e6
4727c415d06bcbef
8e307415fb435445ced7
8df
f9d09
38b3b0d9
c360aaeb167487c9578a8f
8df
3eecb304bab2136a76deda
53069e384a2
a2eab7c9fa641e5f
53069e384a2
ff
21dff35936370ae5f
8bdb6a91c6dee925b557c705b3
bf65cfddeb00ff847feae0c
46f754ea06f070dbc023e571a876
3aeb78ea51020a44f2d2615436dae
7c13bf753da
3089106e3b
171192dc1f8e6ea551548a910c00
51ec95518d1b3
6bce02baf91781a831e1b95
4f05b
1c08373
dca32af03698c988b22
2832ed5cea6
be8f4199f
34c8c8dc0f6e41c7e7b2
eccfe5ff0af70fe9fbec8b2360f90
4f8c642b53c349c687534bda35db
84e4f1c582427a98d7b
69fdd1a1f4768c5efe7
c5255d
86e9b0428
484E
4c6c8c
2e53009d4a375
c6b5321a
65a1
200E
0acc5bb8ca4
d382
aeb8
3b566eaa70ed401479d43a9
71a48d11b2e7e56b1df128bd
be8f4199f
173fd00917644f0f1f3e3
cd856f
eb8
04390dec6f1779353c07f5
84e4f1c582427a98d7b
d886e4b76537a99bc71b8a9331c94
04767
eb8
4c6c8c
cd856f
38b3b0d9
4c6c8c
cab04b7c14a
617809d979f
b12441ecff15fa12c
644f112bb0aa452ee7040a
23c1ec53358d237c1
1f4f0fdf
ae32701
1e1fbbe14ac24e0518
2
cab04b7c14a
3bbfc7bfdbbb1ba1bfad7517
e7ef998
6a80cbe
b4dfef6
1927c743a0d440a5a0
3219b6b71443
dd2ba36
9d8988c0945d6
499f6985db294c
784E
6b5aaa4bdf44b2c898854
4280833ef80172
e3aefac763
396b16a892fe
d886e4b76537a99bc71b8a9331c94
966d271c22e75c7538
1aaaab063
4280833ef80172
bb5e89c8963
396b16a892fe
bf65cfddeb00ff847feae0c
ca5af2
c0b727
be6b73bd46a7a5183e8c91a
d0eb84
427E
4c6c8c
45827dbdd8
1172dca23
3b4fdad8e0429d112
b630e1af6ae1997f0e8ba750
88ebe2e8782c
421
2342b759c03
473E
1c08373
bb92d1da1f38d52f8ff
668d636002
e2a5d11499b7e
4f04c39708f
cab04b7c14a
444189d179b5db71fe
bac77c3f414a
eb8
6c89dc59ee7aaebbbd6bb64
e4dba079d5fcb1f165920a3bf
52f247fc3b
eccf7c722ddf
cab04b7c14a
637E
901b2105a902ee7791
412E
45827dbdd8
08769f73d31c1a99be2d9363f
4280833ef80172
396b16a892fe
4280833ef80172
460aed10cc9
c0174bbe7ae8
50023f6f88
460aed10cc9
e3aefac763
460aed10cc9
83c397b8bf7f
4280833ef80172
01db23a60422ba93a68611cc0
83c397b8bf7f
7e493ee44b28
e3aefac763
e4e2f4e6d
8e69341faa4489
79b69c612
fbba7215e7c13173a60206
6139fa6adc88d
da0d7bbcf30
3f0a2b4eb62f
16c508ab98483d430bbe
ad1dd724f1c3e
b5e86c73d1198f
a153512d982
11f088bfd8
3828a2c682419423cf
83c397b8bf7f
3c2a62e0e5e9f7
837ebf4bde22e1f1535cb662
797E
460aed10cc9
76889f7d35e
02f5daf56e299b8a8ecea892
731E
db6c4213a717bc
bbe0a8f93dc1
5be631dff7b97697be7dc0a2f07f2
b5e86c73d1198f
460aed10cc9
0b8694c9ef9b27b9c3d8
391256c872
a5520019b8a73bc141b5fd416a
f490de272a7f6e4af346d40
97284d4c3a5d499853f0e
d6125ef42bd9958
88a4f0337c2189c3fc7b31
e0ad365c2fb444358201
0c72a426929600000f5
f62b136b2171
71512ec7d43f958f2b6da
81e20155999fa64e0ae6fd
fe4e848cb5291ee59a2
e7a887d88c2318beba51
6fb7a84e370ef70feac5cb
89ced1a7906d58d687d5a04
df5dba74c75b228de48c
4a36db80f1ab1e97
dd12f26f8d9bb55
d550a7f392c787661aadd48
3ef07ae75d29a707
1c07453d584f3d14b1876fdb
6d4a4a5a5af91b895272c30
3124d3a6ed3381a6341c6
b07bbdc8cca5985d4c4
8df
21dff35936370ae5f
d
8e307415fb435445ced7
c360aaeb167487c9578a8f
4727c415d06bcbef
46125fcc583c0f494a3a1d3
8df
53069e384a2
8a46e6
30d9d350943c0e3ff7594b50
f9d09
38b3b0d9
5838586c293d455
6b3f3fa236bb90592d23a
3703059dbc5a8
af9c489df53
293a225dc56dd1e0564e6bb
284f14a259991806654e74
678bf739c344b9ad41da1
53069e384a2
cd1e9af3dec2
275a0407e33e9b8aa9cdd051
16da5f1301b36df4df0f
805004328dad9d315d
9e650e89bb
4399cf78123dedd0dfe9776104
5d69639a5e3bdd3d
f4c69e5e212f89348122e8
3d475ea3aeca51b60212dd
8bdb6a91c6dee925b557c705b3
275a0407e33e9b8aa9cdd051
46125fcc583c0f494a3a1d3
a9a36ef02f
cab04b7c14a
a49284e9
ebd8ffc2ac3a90efb8af9
cab04b7c14a
216E
05d4b1ed6a6135eec3abd3f2
3e814305b42beb41b8c706
11bb8ed3ae227d3acefc
3eecb304bab2136a76deda
53069e384a2
30d9d350943c0e3ff7594b50
ff
21dff35936370ae5f
a2eab7c9fa641e5f
4869e993f2bb10f
53069e384a2
da24f74aad2ff519009d1f38c
a78eb40ae56aaa9
8bdb6a91c6dee925b557c705b3
ff
21dff35936370ae5f
23f94655294d3ff537f2915fa
da24f74aad2ff519009d1f38c
23f94655294d3ff537f2915fa
2dd8cc4d693415f93c0f8fc
93ea0
27709106
262E
254E
3a0ff0
37f57e81ebed95
552E
476E
398E
aa868f65c34cdb64f1fad19a
0acc5bb8ca4
be8f4199f
1d163eac141def176461c
50962c93b4cb293f5beb59eb
173fd00917644f0f1f3e3
04390dec6f1779353c07f5
c360aaeb167487c9578a8f
3eecb304bab2136a76deda
8df
8a46e6
4727c415d06bcbef
91ecbe29a71f00ed5a3
32979f8cf86
638E
672E
1b13908a9f0763c0ae54af9062080
2601085bde1b2450d64509f36
66abc181ac4
634E
214E
be8f4199f
be8f4199f
d8f4a9e463a1e89217f
ea890ccca2f7c2107351
08dade990b2282
8e307415fb435445ced7
d
8df
3703059dbc5a8
af9c489df53
f9d09
768E
404E
438E
278E
855d26296eda4eb7
3124d3a6ed3381a6341c6
5838586c293d455
6b3f3fa236bb90592d23a
ee91c97828
402E
504E
358E
236E
d12bd75c24b110ef90cdd35d3
6236a67933a619a6a3d48
21dff35936370ae5f
f62b136b2171
cd1e9af3dec2
4399cf78123dedd0dfe9776104
11f088bfd8
3c2a62e0e5e9f7
53069e384a2
53069e384a2
df5dba74c75b228de48c
b07bbdc8cca5985d4c4
6d4a4a5a5af91b895272c30
408E
448E
5f2592b20f13356b7fc8b42
230cc6bbc66b24eae94fa03d
a6a196a504c3a7657d1fa41
9e650e89bb
e4e2f4e6d
76889f7d35e
ad1dd724f1c3e
a5520019b8a73bc141b5fd416a
71512ec7d43f958f2b6da
293a225dc56dd1e0564e6bb
406E
400E
eccfe5ff0af70fe9fbec8b2360f90
3b566eaa70ed401479d43a9
18115fa32ff1cb99
1927c743a0d440a5a0
fe4e848cb5291ee59a2
294E
b354cd9e9dbb0bfa
351dd0aefe480c
4379b5ed
efe092824916a5637ee35d439589
aeb8
45827dbdd8
3bbfc7bfdbbb1ba1bfad7517
16c508ab98483d430bbe
a153512d982
97284d4c3a5d499853f0e
644E
56e1a896
8f7c875500073
4b683
428E
f0f45e707
d382
3089106e3b
0668
199E
335E
4f8c642b53c349c687534bda35db
71a48d11b2e7e56b1df128bd
23c1ec53358d237c1
499f6985db294c
02f5daf56e299b8a8ecea892
88a4f0337c2189c3fc7b31
f490de272a7f6e4af346d40
46969c4
0acc5bb8ca4
966d271c22e75c7538
8e69341faa4489
fbba7215e7c13173a60206
284f14a259991806654e74
d550a7f392c787661aadd48
296E
c5acd20cad2
6c93f24516f01d
95e93c4a13
474E
33e1de
65694ca6d575
629e42
8b06a67a
40b49a5a9bb256c7a3286e56
8c8b5bde6
df61d5f5fc
f55670
908f9ad506eae9ab6ada185e3
6c998bf2a5edd
59a8b435ccd
f0d99f16
4c6c8c
eb8
503737b64d432c60d6ac557e0e6
7e74e1587f3a4d208
ffd1b1af3b6864078f3
00880e6f50c765ebc1f85d3e9
319E
6a80cbe
0a963fef9
2ef949c4a39b
bb828f1a326
226E
0a49c95f107c0aa57c9b5748
69f2611acc42c36ed7cc
a96e47ff37983425a3e452095
c32d2697e8
f
c6b5321a
65a1
336E
483E
eb8
644f112bb0aa452ee7040a
1f4f0fdf
784E
200E
24dfe1a997a
35b8742610
be8f4199f
320E
73ba1714ee
2759e82e30d6d
52f247fc3b
a7e89580
0efbd
a7d2
8a
275afb2b215b966d9fac51b96b9
9c1305d59c37e9be9f13d7d049c
b38049e00
e7ef998
f72564578be
94da691e20e3
b473716
647
9937ccba1469
dd84fe6a65cfac7bca03ebd
ab48d1f65812bc0f8ab6941c3b5
ca5af2
cab04b7c14a
07283
340E
256E
a
617809d979f
817
1b34fb150
626E
8593dcf973b110d00cecdc1e756
593caebf2037317648bb451aa79
c3c93c700edc0cb4f95f03c04
69fdd1a1f4768c5efe7
3b4fdad8e0429d112
cab04b7c14a
637E
b12441ecff15fa12c
cab04b7c14a
b4dfef6
5d69639a5e3bdd3d
484E
5a0b4b906a
2832ed5cea6
34c8c8dc0f6e41c7e7b2
dca32af03698c988b22
e7ef998
79b69c612
3828a2c682419423cf
837ebf4bde22e1f1535cb662
16da5f1301b36df4df0f
1c07453d584f3d14b1876fdb
a78eb40ae56aaa9
171192dc1f8e6ea551548a910c00
46f754ea06f070dbc023e571a876
6bce02baf91781a831e1b95
3f16509139c7dad5163b91799
4f04c39708f
52f247fc3b
a49284e9
b630e1af6ae1997f0e8ba750
3219b6b71443
da0d7bbcf30
731E
391256c872
676bbe7d1c1fb71742df534ce8
6aae8d25951
cd0d985a366cad7e
90cc275011c2013c61eb11
e2a5d11499b7e
66abc181ac4
cab04b7c14a
cab04b7c14a
ebd8ffc2ac3a90efb8af9
cab04b7c14a
6a80cbe
dd2ba36
3f0a2b4eb62f
b5e86c73d1198f
89ced1a7906d58d687d5a04
4a36db80f1ab1e97
855d26296eda4eb7
4869e993f2bb10f
a77622f2ff77ffeeb2
6aae8d25951
383db224d7508ef072bea21d0
6c632ad9c42228bb337
1b13908a9f0763c0ae54af9062080
617809d979f
cab04b7c14a
ae32701
6b5aaa4bdf44b2c898854
6139fa6adc88d
e3aefac763
db6c4213a717bc
797E
eb8
1c08373
91ecbe29a71f00ed5a3
8b06a67a
1172dca23
668d636002
df61d5f5fc
4379b5ed
f
ca5af2
2
d0eb84
e3aefac763
bbe0a8f93dc1
678bf739c344b9ad41da1
3ef07ae75d29a707
8c8b5bde6
320E
93ea0
638E
27709106
262E
c0b727
1e1fbbe14ac24e0518
1aaaab063
421
7e493ee44b28
83c397b8bf7f
83c397b8bf7f
460aed10cc9
dd12f26f8d9bb55
a78eb40ae56aaa9
eccf7c722ddf
254E
88ebe2e8782c
be6b73bd46a7a5183e8c91a
460aed10cc9
50023f6f88
b5e86c73d1198f
5be631dff7b97697be7dc0a2f07f2
460aed10cc9
e4dba079d5fcb1f165920a3bf
319E
1ebeec
332E
508E
793E
d93a80739fc1edb41a11b7294
d378760b814eaecb6efe636e0efc4
0a963fef9
e1e4c23db39d8bd633c3a
a7e89580
6a80cbe
c0174bbe7ae8
e3aefac763
460aed10cc9
4280833ef80172
8a
644E
672E
444189d179b5db71fe
901b2105a902ee7791
aa868f65c34cdb64f1fad19a
4280833ef80172
4280833ef80172
83c397b8bf7f
460aed10cc9
805004328dad9d315d
b38049e00
ffd1b1af3b6864078f3
32979f8cf86
6c89dc59ee7aaebbbd6bb64
94da691e20e3
3a0ff0
37f57e81ebed95
476E
398E
4c6c8c
4280833ef80172
396b16a892fe
396b16a892fe
e7a887d88c2318beba51
73ba1714ee
226E
296E
65694ca6d575
552E
634E
214E
278E
412E
9d8988c0945d6
396b16a892fe
e0ad365c2fb444358201
81e20155999fa64e0ae6fd
f4c69e5e212f89348122e8
3d475ea3aeca51b60212dd
294E
b354cd9e9dbb0bfa
768E
404E
438E
236E
427E
4280833ef80172
bb5e89c8963
0b8694c9ef9b27b9c3d8
d6125ef42bd9958
0c72a426929600000f5
6fb7a84e370ef70feac5cb
676bbe7d1c1fb71742df534ce8
cd0d985a366cad7e
402E
504E
448E
358E
4c6c8c
45827dbdd8
01db23a60422ba93a68611cc0
3e814305b42beb41b8c706
11bb8ed3ae227d3acefc
56e1a896
351dd0aefe480c
ee91c97828
400E
2342b759c03
473E
1c08373
a6a196a504c3a7657d1fa41
6236a67933a619a6a3d48
a7d2
f55670
908f9ad506eae9ab6ada185e3
efe092824916a5637ee35d439589
f0f45e707
3089106e3b
bac77c3f414a
216E
50962c93b4cb293f5beb59eb
18115fa32ff1cb99
647
793E
c5acd20cad2
8f7c875500073
4b683
406E
408E
04767
4c6c8c
be8f4199f
be8f4199f
45827dbdd8
230cc6bbc66b24eae94fa03d
08dade990b2282
3089106e3b
275afb2b215b966d9fac51b96b9
0a49c95f107c0aa57c9b5748
00880e6f50c765ebc1f85d3e9
c29ce10bb8d19b498355aa04
bb828f1a326
a7167d5eb5408b3839903
9ccd974150a18260b207b6584caa
609E
cab04b7c14a
3dcf8f454
459236f07c73814faf5
18083a711d
ac284d73563
b074e
e8b
1ed67841
654E
a9497e0757b0969bde707ed5
541ab86a2e
297E
81
58e3dcc618
eee44624da
1d792d81
32b98f11f3d01d6
2dd8cc4d693415f93c0f8fc
a9a36ef02f
bb92d1da1f38d52f8ff
0efbd
a
8593dcf973b110d00cecdc1e756
593caebf2037317648bb451aa79
6c93f24516f01d
428E
474E
33e1de
336E
45827dbdd8
335E
08769f73d31c1a99be2d9363f
1d163eac141def176461c
2ef949c4a39b
c32d2697e8
40b49a5a9bb256c7a3286e56
2601085bde1b2450d64509f36
cab04b7c14a
e7ef998
340E
626E
256E
8f143077e
bd2484
9dd5bf47f
298E
9ab6c66dc
06209
274E
699e3db878047
6a91
49E
1d4ea80c7194689d69f9592186
97c9d726e27304311901a52ce
6e186b
5a7a610a8a
2e53009d4a375
a96e47ff37983425a3e452095
ac284d73563
609E
617809d979f
52f247fc3b
f72564578be
508E
1ed67841
654E
8cd4d
dea1d1
1ed5d7f63b8c6
a2c4b1d72e2da483a86ae0c62e5
c21eb96fe100a1efaa128181b7
4c52fdd8e396692
360E
418E
c54f0fc1e05
248df40dae
450d3a2d49cbfd
76E
44cbb41a9cfc15497eacd294
3aa0ce5efcf79bc3ecced1886e89
5c609b12c
3a8173d6c
86e9b0428
975fedfb64df
629e42
1c08373
02c2ba83680ab57f236a33d702
876d120b38b0e88817
f2a57e4d4f0cec516891e3
28f7bfc40c88e6a
8c8b5bde6
cf
4f6f7f
e1e8c
bdbdb31bd777fb65dd6dd2d0e7
7c1767485953d9c2
a54092a3033f7d5e41e0a76c1
9b6c
84e4ede82074
375E
e03b8bc0435a
ffccaa9e3
de9efa12873949
e5
f1b0d754353a6
47cd70f
9fe65061641
31f2f9aef958979f9f3532b9b
6a91
472a156cf2b55f
5ba4693031
a9058241db5b6b6c25569acdf5
00265
c5255d
81bcc35f82891
020df871874cd
2a9caef7
086
b2babf3244213
792fd6f9df1fa1e33
ff9d64ddf49a20f
d2498
d9f4abac731a9e
85fc23f1c88b4
5997cb0c083422
3bec1c012b498
d
536264e787cf70469
1467f017b74e
99237fce1358
6577
c71043819b6a79
084d4bfa5853e
7ab64a969
eedc819a68add6
19398d3cd6b9c674f
f28b78d4803c
c471b6fdbfb852661
15b3ad672cd2f713a
2e1313c
9f
00d0dd018fe879f96
376E
17dafa5ebaafd48440e3
4e12f7ff0918
8b98c3ddbe0b336
588E
330342f283ef2
cd6
8e2d970b2f820ee35
f4bef37b6a94bfd00
825c7994d5da13afe519861818
724dabdce9744d061
51e74bec5513083bb
ac34ec0f0488b17ec
1112164c2f7a
4e4a79111d
244E
bf
8ea965ab6ee8dedb6c3333e9
69
8896166adc0
e4ae306d9bd669c70
a84844dfd0052b3b5
96deede0c6b44119
8066f87a88f4e
51ec95518d1b3
6472c2861e0e0dd681
b5f038f79a3
969a58db14386cb9d2f51ec
731857fe189fb398e80a0594
9937ccba1469
7e74e1587f3a4d208
459236f07c73814faf5
69f2611acc42c36ed7cc
18083a711d
cab04b7c14a
ca5af2
07283
1d792d81
fe6be3206549f5b5564acde84783
503737b64d432c60d6ac557e0e6
a9497e0757b0969bde707ed5
dd84fe6a65cfac7bca03ebd
2759e82e30d6d
297E
9dd5bf47f
81
817
1b34fb150
eee44624da
6a91
8fa622d9f842c5572a545ed72982
9ccd974150a18260b207b6584caa
ab48d1f65812bc0f8ab6941c3b5
9c1305d59c37e9be9f13d7d049c
541ab86a2e
360E
298E
1ebeec
332E
e8b
274E
699e3db878047
b074e
58e3dcc618
06209
6c998bf2a5edd
95e93c4a13
59a8b435ccd
f0d99f16
24dfe1a997a
5a0b4b906a
199E
0acc5bb8ca4
05d4b1ed6a6135eec3abd3f2
418E
9ab6c66dc
450d3a2d49cbfd
76E
44cbb41a9cfc15497eacd294
472a156cf2b55f
a54092a3033f7d5e41e0a76c1
a9058241db5b6b6c25569acdf5
a7167d5eb5408b3839903
c21eb96fe100a1efaa128181b7
eedc819a68add6
f1b0d754353a6
28f7bfc40c88e6a
248df40dae
6a91
7c1767485953d9c2
b2babf3244213
5ba4693031
9b6c
49E
8f143077e
0668
629e42
eb8
46969c4
d12bd75c24b110ef90cdd35d3
ea890ccca2f7c2107351
c54f0fc1e05
bdbdb31bd777fb65dd6dd2d0e7
086
536264e787cf70469
1467f017b74e
dea1d1
35b8742610
483E
eb8
d8f4a9e463a1e89217f
5f2592b20f13356b7fc8b42
3bec1c012b498
d
724dabdce9744d061
2e1313c
9f
5a7a610a8a
eb8
3f16509139c7dad5163b91799
c29ce10bb8d19b498355aa04
bd2484
8c8b5bde6
e1e8c
ff9d64ddf49a20f
c3c93c700edc0cb4f95f03c04
32b98f11f3d01d6
cf
4c52fdd8e396692
9fe65061641
15b3ad672cd2f713a
a84844dfd0052b3b5
51e74bec5513083bb
3aa0ce5efcf79bc3ecced1886e89
b473716
3dcf8f454
97c9d726e27304311901a52ce
6e186b
3a8173d6c
31f2f9aef958979f9f3532b9b
f28b78d4803c
c471b6fdbfb852661
792fd6f9df1fa1e33
99237fce1358
1112164c2f7a
1d4ea80c7194689d69f9592186
8cd4d
376E
5c609b12c
00265
eb8
e1e4c23db39d8bd633c3a
6c632ad9c42228bb337
244E
6472c2861e0e0dd681
bf
1a830d9f
57f7fd2eecec93c8b
8066f87a88f4e
4e4a79111d
9
ce
5c6a2
9be88247
ac34ec0f0488b17ec
00d0dd018fe879f96
63a3d4fb9d38a0182be6e39e76
64ef1d545
3711
664E
318E
629e42
baba65f670ee34a88
4f35e206816c3bd22
96deede0c6b44119
bba6e6e194ccf
04904a458422a5b9
4856000a6802ddfc121ef40432297
682E
82a65ed4b69
375E
1c08373
4f6f7f
47cd70f
f4bef37b6a94bfd00
d9f4abac731a9e
e5
2a9caef7
cd6
affb2d716803a2d3e
825c7994d5da13afe519861818
d2647f8b6d8661d08
4dbf4395236fb03ed
af4abb0d6a99
8b092
6331b3f
05fed5e
84e4ede82074
81bcc35f82891
ffccaa9e3
1ed5d7f63b8c6
23dc3a52fed9c119610b5e8
71e6b
af0268dddd
d7c27cc6f7b02a31eb64d
a849f9d352e
32fe7eee5283
87a7e69a72412
916c686a1e82dba72524a
71e6b
665b76844ff78fc2cf66ca2 a849f9d352e
87a7e69a72412
34d7bb6af4fcd8d630de72500c8
3db761b596844f133c
be233fafa38d931d894
deb3089920548bf1ecb23f0d 32fe7eee5283
a849f9d352e
af0268dddd
c71aa521578164debd0c5 e920b915087
87a7e69a72412
78
f33ec11db496f7bfcb024f
52a6c2063bccd83110c32
597E
b4ce21e0a3df1d097277d6
71e6b
a849f9d352e
84907547f36d0ff7
e920b915087
86633c26be93ada8b
08500a6044
af0268dddd
26fa7360ab81be9d4434a
01938827
c4507c22d19
8d52f183ec
7c7c
b5f038f79a3
975fedfb64df
90cc275011c2013c61eb11
383db224d7508ef072bea21d0
85fc23f1c88b4
8e2d970b2f820ee35
3acbf8a1537e4e1a1
6505e29f4a11d9530
345d26b3f821fe
affb2d716803a2d3e
6505e29f4a11d9530
baba65f670ee34a88
bba6e6e194ccf
63a3d4fb9d38a0182be6e39e76
9
1a830d9f
4f05b
7c7c
587E
8c932e1e502dca
ccceeef40edda78
5782807b5f575e0a8
bc4824f07a9d2bba6
3acbf8a1537e4e1a1
57f7fd2eecec93c8b
4f35e206816c3bd22
4dbf4395236fb03ed
04904a458422a5b9
af4abb0d6a99
4856000a6802ddfc121ef40432297
64ef1d545
9be88247
317E
d4b2
52126553e52385d16
d2647f8b6d8661d08
3aeb78ea51020a44f2d2615436dae
7c13bf753da
8b092
3711
ce
3089106e3b
7e0b91491c8c8566892cd9a0889
aff6d7896e0e142bbc3e78
2ef209509e2a
a4c7d0
67513d
9fe716e738eaea34e
ef6361295eba07
4ad5d68f07981a
548c0081a62132b44
964cb56d8f69ff058
20949455f573f
c3bbf4
682E
82a65ed4b69
318E
84e4ede82074
2573e1bf51f1b307f4640
7204950f6233bf9c9e1f00d4a870
331675c046693f
212af4
28533c
8304a439f91fc90b3fe8dd35be8
801E
57948adb5dead
4995c71223c9f6067324d387a2
01938827
6331b3f
05fed5e
664E
5c6a2
4dccb
3b6b2c549de670d7bf5fc0ee
666f11bb45c3a8dcf26e1ed79
e153c6e676c7369b285b4e9033a
a031c9192ae8e75
8d6e6e0cd9b842a47
2d886da042b5384b4
c4507c22d19
a738ba39
8d52f183ec
84e4ede82074
681E
663E
bfc6564cbdeeffac00a141
3dafe1619016463f521f
02c2ba83680ab57f236a33d702
020df871874cd
52126553e52385d16
8d6e6e0cd9b842a47
548c0081a62132b44
ef2d4636934472
7c0ab977f5a3c4ab6d625f5033
c338481d79773
be7d637c50c
462E
cef12b6
ee91c97828
3089106e3b
660ffeb76fc59
3089106e3b
fb16636aae
3b0a8a1c2e5050bd
c90f755c8b6612d
30c3f3bf8463d3843dc57d8e98
7e0b91491c8c8566892cd9a0889
876d120b38b0e88817
a2c4b1d72e2da483a86ae0c62e5
f2a57e4d4f0cec516891e3
084d4bfa5853e
bdec8c86db51b9
615cd6b5e3d21c
aebb7b91b
fd28c194a46fde909b019c52f
b082f7a5ff
73d12
38f162cf917ce7298663a1f1c607
6bf214d9e7fa5f2df
f2e7cc
316E
a849f9d352e
08500a6044
b9
c4f31ea3844e12da27ad47c6
7204950f6233bf9c9e1f00d4a870
aff6d7896e0e142bbc3e78
de9efa12873949
c71043819b6a79
d2498
648E
78
597E
71e6b
e920b915087
fff03efcd
f722890f70a32dce3baff371a
86569bffb49adf6b3d0ebac
d66f542ef1ce4d02c59bec65e
a3b6df27179b175c88fa4c9cf9f
2ef209509e2a
ccceeef40edda78
6577
af4a1fac3e2076
e9
87a7e69a72412
b4ce21e0a3df1d097277d6
c72df69b40156a3254
35b941379e1af658078cffb83a2
a141a557a60912051f3c135
ef42184297591d
bdec8c86db51b9
331675c046693f
587E
4e12f7ff0918
8b98c3ddbe0b336
7ab64a969
af0268dddd
f33ec11db496f7bfcb024f
84907547f36d0ff7
00cbeb87c182ca0785f
2043b477ac0393676a4309514d0
8292af691429f8d9ed481ff71ffd
3c1edc8de4795936
69ce90c9b2
ac6e99186
212af4
615cd6b5e3d21c
345d26b3f821fe
69
8be752bc95d436a90493bec9
a2984b7a11e49440420058c1d80
c10cb9baf4dcb43e24
be9c5958196ed
bb828f1a326
e84330eef281284a
ea920d9f5b295119
8c932e1e502dca
a4c7d0
67513d
86633c26be93ada8b
31055116421c96b37f72a262bb
16a795a1d63f30df
07
50f4d9b97aefe
ff5c9b242337c
630E
6d52dd1b198bb
28533c
588E
26fa7360ab81be9d4434a
2f43cba12702078b4e0d3bfdae2bc
af0268dddd
a8e9
f36cce089
354E
357679fea1e2f
582E
aebb7b91b
8304a439f91fc90b3fe8dd35be8
801E
85a34bc9616ff
8462bb2eec1a62d19a15865e57c92
0f5db6ce12751ddcc64e
8f95518f48528
bbb13dc62adf2de2a42b6
ee3b6be71d59b
f9df653b86fb8df
234E
8d5137b16a
34d06d1ed6
67219ef689f0146b544
f603819d560c5603259aa05dca
3f9ddf1ffbc0d38b
acacfc83af504
aac615ae78
a8e9
684E
444E
382E
fd28c194a46fde909b019c52f
5997cb0c083422
330342f283ef2
19398d3cd6b9c674f
20f234fdcd0e1fc50261ce8
ddfeabe456a9de5f5784
dcc5d5e9d6c4e
ad9142a65f5eab78b4ca5e
32c4684b55361
683E
620E
616d8a7b
300E
8f9cdc26798117dd3e9ee4a8770
b082f7a5ff
73d12
bc4824f07a9d2bba6
52a6c2063bccd83110c32
653ae44d45dcadeb481b53027d
162d8039483d8
1333074979f2d0b
233E
381E
cc3f63d
696E
422E
e17fea65
964cb56d8f69ff058
57948adb5dead
c3bbf4
84e4ede82074
3b0a8a1c2e5050bd
84e4ede82074
4dccb
3089106e3b
8ea965ab6ee8dedb6c3333e9
17dafa5ebaafd48440e3
964b86fc1bba0e
8e24e9b4e
ee91c97828
a738ba39
fb16636aae
681E
969a58db14386cb9d2f51ec
731857fe189fb398e80a0594
d93a80739fc1edb41a11b7294
cfdf1932665dcb4cd3c
866808df de34214b4c258c9333ec3
d13da6273c9b4da
16c3ae29c0bc713
c4fd8
d4f7b7fba7afcf7a72397353ec
619E
a8e9
49704867bee95
a031c9192ae8e75
20949455f573f
4995c71223c9f6067324d387a2
e920b915087
c71aa521578164debd0c5
5e9156098c064
5eea496cc301b2a9721
3cfae
370E
3dafb9a29c00
342E
4348f3abcb7716
2d886da042b5384b4
c338481d79773
e49aaa5cc4e44355d6a0
a8e9
07
285E
e3a76d31ca59a
8c7cd9b93b1cbe48e1
7c0ab977f5a3c4ab6d625f5033
af4a1fac3e2076
f2e7cc
be7d637c50c
462E
cef12b6
660ffeb76fc59
bfc6564cbdeeffac00a141
2573e1bf51f1b307f4640
8fa622d9f842c5572a545ed72982
fe6be3206549f5b5564acde84783
48398d080dfcccced48da1980 6282bc21f6
a7c99ccf6ddf6f5ebbe
316E
fff03efcd
3b6b2c549de670d7bf5fc0ee
e153c6e676c7369b285b4e9033a
a849f9d352e
08500a6044
deb3089920548bf1ecb23f0d
1727041c622518c9dd24f7c211
369E
585E
fb58e11
713db1c1
162E
881d373
4f2de229621272
8896166adc0
5782807b5f575e0a8
e4ae306d9bd669c70
70815f0352b43dc1562133ab6eb
6bf214d9e7fa5f2df
648E
87a7e69a72412
71e6b
f722890f70a32dce3baff371a
f29dfb9
9f24ba80192c339a64c0
01
b62cd1d0a0
6c541cad8de1b15
f22c27c0f0a54e
b3cadc253f7
90dccb18c0
ca3d67754cf62fdafbf0a1e0
4a9d79c960b8d33e39251e5f66
75b14f1719d
75eea05672a5
d4b2
af0268dddd
78
597E
8be752bc95d436a90493bec9
00cbeb87c182ca0785f
86569bffb49adf6b3d0ebac
341E
d285240b89cb
b1ffbabb24d71f67d1e0ce23c51
e618df70814a
2c514b0cd8f7d3
c8a6c26d4fd9f
9fe716e738eaea34e
ef6361295eba07
4ad5d68f07981a
ef2d4636934472
bce
a849f9d352e
b4ce21e0a3df1d097277d6
84907547f36d0ff7
26fa7360ab81be9d4434a
c72df69b40156a3254
96325ea
151bcc2a8de7ea634
f787d827958c
8606837526d81cdec
09847696ae
d17f8f4eeb8e63d
5fdf
85221d5e9e
2e31175cbd52fcd08360fe86d20
38f162cf917ce7298663a1f1c607
73e6ed83012
20f234fdcd0e1fc50261ce8
67219ef689f0146b544
85a34bc9616ff
2f43cba12702078b4e0d3bfdae2bc
2043b477ac0393676a4309514d0
d66f542ef1ce4d02c59bec65e
a3b6df27179b175c88fa4c9cf9f
ea920d9f5b295119
4a9d79c960b8d33e39251e5f66
881d373
75b14f1719d
4f2de229621272
85221d5e9e
2e31175cbd52fcd08360fe86d20
8462bb2eec1a62d19a15865e57c92
a2984b7a11e49440420058c1d80
35b941379e1af658078cffb83a2
a141a557a60912051f3c135
ef42184297591d
ac6e99186
2c514b0cd8f7d3
c8a6c26d4fd9f
75eea05672a5
70815f0352b43dc1562133ab6eb
f603819d560c5603259aa05dca
bbb13dc62adf2de2a42b6
c10cb9baf4dcb43e24
8292af691429f8d9ed481ff71ffd
3c1edc8de4795936
69ce90c9b2
e84330eef281284a
6d52dd1b198bb
5fdf
10a7d61c201c67a5e78542807cd
73e6ed83012
bce
0f5db6ce12751ddcc64e
be9c5958196ed
bb828f1a326
ff5c9b242337c
630E
09847696ae
d17f8f4eeb8e63d
e1d01ef89f
74e86
32fe7eee5283
3f9ddf1ffbc0d38b
a8e9
31055116421c96b37f72a262bb
07
357679fea1e2f
582E
34d06d1ed6
6819fd5a6cdd280dd
09e64744536c5e1
3db761b596844f133c
a849f9d352e
8f9cdc26798117dd3e9ee4a8770
16a795a1d63f30df
50f4d9b97aefe
354E
382E
8d5137b16a
162E
f36cce089
a8e9
234E
300E
e17fea65
6bbd5b422edb8e358dcc20eecf9
be233fafa38d931d894
e4b45b7a2f884d3734bfd5985656
ddfeabe456a9de5f5784
dcc5d5e9d6c4e
ad9142a65f5eab78b4ca5e
4348f3abcb7716
ca3d67754cf62fdafbf0a1e0
89a2505da6179a80202d4a6c3
06eff1db45cdf
a8f0fe2eb7bc1471
b701e7
c
87a7e69a72412
665b76844ff78fc2cf66ca2
34d7bb6af4fcd8d630de72500c8
6448451ac2ceade90715378b
5807acd8d58e006f43
a7a7f3681dad1250b01cf80bc17
06eff1db45cdf
2ced414a91575a48f2dd29a
22bd92e302816
10a7d61c201c67a5e78542807cd
a8f0fe2eb7bc1471
6819fd5a6cdd280dd
09e64744536c5e1
e1d01ef89f
b06bbfa920aa95dd
ac487676a04e4
12fcb26b3de00ef98719c2ca
6bbd5b422edb8e358dcc20eecf9
89a2505da6179a80202d4a6c3
062fc905b9eb35
558d8534f92fddfe
238805e2194c3
af0268dddd
b701e7
78b2d75d00166
e3e284d0cc803d98d674f9c3f6d
8be0efdd94a6383e87fbfded4f
cfff3acd8e9d
e65185ca
454E
65fd8495
a5a
8d0d8314d211d80
e8386a8e1c8a
7e494b
d495de0b35f6
549fa15d68f0b3bee6192f888cd8
b46b0756dba915943839e90a55
c8fc17180bea86
5e80f85274
71e6b
32fe7eee5283
87a7e69a72412
32fe7eee5283
fa90ddf10bd574
30417faf916
97a7eea3f
3eca1f94dc181
51192117f9b4
460E
87a7e69a72412
a849f9d352e
a849f9d352e
87a7e69a72412
e9
30c3f3bf8463d3843dc57d8e98
3dafe1619016463f521f
761e0f72f95
815cc0b83d733
62f36ea98a
3b0c08dd2ca
6b1bb9b0e
4d22e1
550E
23ad1
78
6a3c6921b0aeceda3
8a9eb2806b0aa
380E
c
71e6b
74e86
a849f9d352e
a0befe6dd1ca7b165786835
f8128d574c356631b8a9
a7fe7
6ba0776fc8e
e287d497450664a4c0f4efc338
a164d9f60fbbdd
65fd8495
87a7e69a72412
459E
0a185946ee443342b07d8e1
0bc7f8f513e0e74b270
e1fa7f549e5a0893bb42da5
e06cc38155ff6781cf944d745
155d892827c33ed3cae3
c96cb3
0f940646
5e80f85274
71cf45dd4e91bcca945137b40e
38fa61352f5086d2cb51
f3c4311de0e931f08c232b
d7c27cc6f7b02a31eb64d
a54d477232
632E
bf141dbce
23ad1
010957669f3770aac
86276bb1e23f2c7ffcbe82a0
b7b899dc8bc6a32b28cb098fa16
a3781072b
cca7040e47789
102f1
23ad1
78cc16f965adc5f712ea2372c6
247e407f45b353f8
39d025b265f9790490781cb201
5f865c374cb3fe976dd376b8
deb3089920548bf1ecb23f0d
a849f9d352e
916c686a1e82dba72524a
89a36b13f8c344b
e82f47b8d4949ba4af69b38cbc19
403126
052bb6e3
3b1563a23eb9
ef13d45b1277ac9a0444adb
bf01c8a262
5256925081c812
37d80ae421dba4a70730338860
a7fe7
5ce1fcfb042b
6f578c5128
a9012b7bb5
bd7aca295ca
81dabfaba8
3e048573fd
78c8463ea
3b63cdc0f
8cbcf5cb5
b36e0be6f67fc25286127456
07f8a9e55a16beddb3c9153b0
30cc206b1878485
57c77c341f94afddef07e6
be233fafa38d931d894
675E
531806429433
41a8b095c7fd3
290907417e13
fc73
c0f34a600
6a8f5bafb1
82d201
47b2da3d
8fb60d769e4c387
f713a8b311ffa05ce3683ad10
fbdc3ca37406f66635c8b226e
2d7b7fb6c9ad6821752651f7
1de26f6b12b0d292f94184
3db761b596844f133c
c71aa521578164debd0c5
15d44ab97
8cbae42a3900
4e3cfd27a
30d6138b63eb
f8ff39eab120851f143bf19
a27037332d9fa5c43bcfe94c0
916c686a1e82dba72524a
34d7bb6af4fcd8d630de72500c8
cf5a6049ad
c110ba7
1727041c622518c9dd24f7c211
d4f7b7fba7afcf7a72397353ec
653ae44d45dcadeb481b53027d
683E
acacfc83af504
8f95518f48528
ee3b6be71d59b
f9df653b86fb8df
444E
8be0efdd94a6383e87fbfded4f
062fc905b9eb35
2ced414a91575a48f2dd29a
32c4684b55361
aac615ae78
cfff3acd8e9d
22bd92e302816
5e9156098c064
162d8039483d8
233E
684E
8c7cd9b93b1cbe48e1
b46b0756dba915943839e90a55
d7c27cc6f7b02a31eb64d
1ff8ff951ee9
4e8259973f1f
3ba7afb0e48ae1
2a47a6a27
efb52b499303115c33fd
0f167280
21407f8a6d7
151E
f20f7f513e
eff3468631dd4
fe821bce
e3fd0c7b3
b23526044
6a8f5bafb1
cc3f63d
3dafb9a29c00
620E
90dccb18c0
713db1c1
e65185ca
558d8534f92fddfe
238805e2194c3
1333074979f2d0b
381E
696E
342E
616d8a7b
d495de0b35f6
454E
a5a
380E
5eea496cc301b2a9721
a8e9
285E
370E
422E
e3e284d0cc803d98d674f9c3f6d
62f36ea98a
549fa15d68f0b3bee6192f888cd8
97a7eea3f
8a9eb2806b0aa
87a7e69a72412
71e6b
619E
3cfae
49704867bee95
b1ffbabb24d71f67d1e0ce23c51
e618df70814a
cca7040e47789
a7a7f3681dad1250b01cf80bc17
af0268dddd
32fe7eee5283
23dc3a52fed9c119610b5e8
e49aaa5cc4e44355d6a0
07
f22c27c0f0a54e
b3cadc253f7
fb58e11
e3a76d31ca59a
6ba0776fc8e
e287d497450664a4c0f4efc338
6b1bb9b0e
c8fc17180bea86
71e6b
a849f9d352e
b7b899dc8bc6a32b28cb098fa16
e4b45b7a2f884d3734bfd5985656
585E
f787d827958c
8606837526d81cdec
3e048573fd
102f1
3b0c08dd2ca
38fa61352f5086d2cb51
f3c4311de0e931f08c232b
155d892827c33ed3cae3
9f24ba80192c339a64c0
a8e9
d285240b89cb
78b2d75d00166
815cc0b83d733
a3781072b
78c8463ea
a54d477232
e851f5ddd920
f496bcf0889b301d77819c
4f0cbd3fbf0cb1e8c
e8ebe1bf5f421c1223
92fb5d4a0805
c935c7f4d1090ac
319bc900218b
73ca543bf1
534E
0fabab47
1b82200
e33792703
fb039d7a2a9fe73b5f468eba9
23dc3a52fed9c119610b5e8
665b76844ff78fc2cf66ca2
47ebc3f17
0da9135
23ad1
81dabfaba8
80874aa8
5c81103c751345d0ee0f4bd
e06cc38155ff6781cf944d745
26a185dde9a93dd
6448451ac2ceade90715378b
5807acd8d58e006f43
369E
6c541cad8de1b15
e8386a8e1c8a
7e494b
6f578c5128
fc73
99da1f8a5
a9012b7bb5
632E
3eca1f94dc181
51192117f9b4
c4d32527b670afb370d643
f52a45620969f0df4e6ae1dcd7
11180ae7706510211bc4
b9ae94e6935503603341ecf4
40f253cd228f7ac2d0aee
60d0128bdb61ae40e98638bd1391
e1fa7f549e5a0893bb42da5
e842
56292d076643
ff07977fca5513098d220d1eb3a
99bd3e7feeb710
e079d2c
1a220eb692c
a0befe6dd1ca7b165786835
f29dfb9
01
b62cd1d0a0
8d0d8314d211d80
30417faf916
761e0f72f95
341E
151bcc2a8de7ea634
5ce1fcfb042b
fa90ddf10bd574
2a47a6a27
15d44ab97
96325ea
531806429433
41a8b095c7fd3
3ba7afb0e48ae1
290907417e13
f20f7f513e
8cbae42a3900
cf5a6049ad
e3fd0c7b3
c110ba7
c0f34a600
a164d9f60fbbdd
550E
460E
431430c49
4c82921f4ad3f07066540
9696c0950295d8cb5
63b079bd5847
14a3c17f3d
1d529eb4
24431c3eb075102f07cc2c1be
b5c747cc9
f2c7b3bb4d44f977d0ab8a42351
d4f958b03a98
33ff9e43d5ab
e079d2c
383f5c65cc6c25aa0a0e6dbb
f95344b0ae31693f3a2746597d4
67b6a4dca3a6d
d7203571944b
c2f32e2cf9
88d8b220746882d
6a8f5bafb1
a3ff993
3b2f08d52e4bca3f9ca7bbbd6
f78e145a127014eb43345a0c
952316a1a5a785
81dabfaba8
21407f8a6d7
81dabfaba8
533E
e343cea291b79a2ed4e
c1c30f30d40c4f1f84924622f
f7b22b9640
c5d5be3942
4a38abc630c82b0c48dfbf5271
75ba8d840070942eb4e737849
7528dd86b
f0bd1521
81dabfaba8
658d208447d8ec5d6de8
910b00285f11bb90d0a15641
c4fd8
f6e6236b48bc3
6a8f5bafb1
f841118350a27b7ea29a9c9d
a7c99ccf6ddf6f5ebbe
534E
0fabab47
3b63cdc0f
bd7aca295ca
c96cb3
4d22e1
5e80f85274
65fd8495
a849f9d352e
b69e426d974e1907e88
319bc900218b
47ebc3f17
6a8f5bafb1
1b82200
82d201
46e412a3
bf141dbce
78
87a7e69a72412
6a3c6921b0aeceda3
0a185946ee443342b07d8e1
0bc7f8f513e0e74b270
eff3468631dd4
efb52b499303115c33fd
fe821bce
0f167280
30d6138b63eb
8cbcf5cb5
23ad1
0f940646
65fd8495
23ad1
87a7e69a72412
459E
71cf45dd4e91bcca945137b40e
e842
0da9135
1d529eb4
e64f22a31
b23526044
6a8f5bafb1
47b2da3d
23ad1
5e80f85274
010957669f3770aac
51e045ca826077ae765
1322fb0818783e6f9a4f173d47c52
1f5df34ad75a55a76ef4afa0a47
f66fe4df3d189e69ce10c9c
ef8b68bb5772f3
247e407f45b353f8
39d025b265f9790490781cb201
cfdf1932665dcb4cd3c
0f6784e49852c0be0da23b16
72cbb37db85ed3c6eda5dcf8
45ba4d4c61c9601a26d59e47e0260
47e0067f4d853afd2012f04daa8
a387210a27b
4ff4e275c710c3b
964b86fc1bba0e
b5c747cc9
4cc20a0b7651e486
d58478d9c273ad4f4b2e091324
32c958c9997
69f4ecb77d
81dabfaba8
78cc16f965adc5f712ea2372c6
de34214b4c258c9333ec3
8e24e9b4e
9652ab8b55fdb2a36d1f3fe020
66c0220688a999aaf7f1702d1
b79798b186d6b82288e8be4017d
fa2afbd869
81dabfaba8
151E
c935c7f4d1090ac
23ad1
81dabfaba8
80874aa8
4e3cfd27a
800422ab81d804eef3e7b91dfba91
fcbd9ad14139718bc6fcc8b4
e3bdbca0e2256fffa8a59018
a7fe7
052bb6e3
73ca543bf1
d370c12dbc
fbdc3ca37406f66635c8b226e
2d7b7fb6c9ad6821752651f7
07f8a9e55a16beddb3c9153b0
86276bb1e23f2c7ffcbe82a0
1de26f6b12b0d292f94184
b36e0be6f67fc25286127456
6282bc21f6
866808df
16c3ae29c0bc713
4f2e020854dfacce46a12
f2b6201774de40a29b504b1f716
03716a2c341e5edaa31
c96782ef56711c5d6a3f69
3b1563a23eb9
14a3c17f3d
a3ff993
f713a8b311ffa05ce3683ad10
30cc206b1878485
5f865c374cb3fe976dd376b8
57c77c341f94afddef07e6
48398d080dfcccced48da1980
d13da6273c9b4da
a97ef281eafc34b1630d450a1df
b656f0ed2202b8e46eb
842bc5775657c1e0d67
f5d636e14a6cd716362158d
3cdc90c57243373efaba65a
c4d32527b670afb370d643
e851f5ddd920
1322fb0818783e6f9a4f173d47c52
f66fe4df3d189e69ce10c9c
800422ab81d804eef3e7b91dfba91
910b00285f11bb90d0a15641
e343cea291b79a2ed4e
b69e426d974e1907e88
e842
b5c747cc9
1f5df34ad75a55a76ef4afa0a47
45ba4d4c61c9601a26d59e47e0260
4a38abc630c82b0c48dfbf5271
75ba8d840070942eb4e737849
e3bdbca0e2256fffa8a59018
e842
b5c747cc9
9652ab8b55fdb2a36d1f3fe020
b656f0ed2202b8e46eb
4f2e020854dfacce46a12
f5d636e14a6cd716362158d
c96782ef56711c5d6a3f69
3cdc90c57243373efaba65a
f841118350a27b7ea29a9c9d
7528dd86b
676bbe7d1c1fb71742df534ce8
bf65cfddeb00ff847feae0c
855d26296eda4eb7
6aae8d25951
a2eab7c9fa641e5f
4869e993f2bb10f
a77622f2ff77ffeeb2
9c9e2e0f2da8758e436c
cd0d985a366cad7e
a77622f2ff77ffeeb2
9c9e2e0f2da8758e436c
9c9e2e0f2da8758e436c
(a) initial layout
(b) PRISM
(c) GTree
Fig. 5: root graph with 1054 nodes and 1083 edges. (a) initial layout with
NEATO, (b) applying PRISM, (c) applying GTree.
5
Conclusion & Future Work
We proposed a new overlap removal algorithm that uses the minimum spanning
tree. The algorithm is simple and easy to implement, and yet it preserves the
initial layout well and is efficient.
Although we introduced our approach in the context of graph visualization,
our method can also be used for any other purpose where overlap needs to be
resolved while maintaining the initial layout. Finding a measure of how well an
overlap removal algorithm preserves clusters of the initial layout seems to be an
interesting challenge.
GTree
GTree
original
original
PRISM
PRISM
Fig. 6: Results for GTree and PRISM initialized with SFDP. From top to bottom
and left to right: b100, b102, b124, b143, badvoro, dpd, mode, - NaN, ngk10 4,
root, rowe, size, unix, and xx. To make the original drawings more readable
they have been changed; In most cases the nodes were diminished and the edges
removed. The drawings were scaled differently.
Bibliography
[1] I. Borg and P. Groenen. Modern multidimensional scaling: Theory and
applications. Springer, 2005.
[2] T. Dwyer, Y. Koren, and K. Marriott. Ipsep-cola: An incremental procedure for separation constraint layout of graphs. IEEE Trans. Vis. Comput.
Graph., 12(5):821–828, 2006.
[3] T. Dwyer, K. Marriott, and P. J. Stuckey. Fast node overlap removal. In
Graph Drawing, pages 153–164. Springer, 2006.
[4] C. Friedrich and F. Schreiber. Flexible layering in hierarchical drawings
with nodes of arbitrary size. In V. Estivill-Castro, editor, ACSC, volume 26
of CRPIT, pages 369–376. Australian Computer Society, 2004.
[5] T. M. J. Fruchterman and E. M. Reingold. Graph drawing by force-directed
placement. Software - Practice and Experience, 21(11):1129–1164, 1991.
[6] E. R. Gansner and Y. Hu. Efficient, proximity-preserving node overlap
removal. J. Graph Algorithms Appl., 14(1):53–74, 2010.
[7] E. R. Gansner, Y. Koren, and S. C. North. Graph drawing by stress majorization. In J. Pach, editor, Graph Drawing, volume 3383 of Lecture Notes
in Computer Science, pages 239–250. Springer, 2004.
[8] E. R. Gansner and S. C. North. Improved force-directed layouts. In
S. Whitesides, editor, Graph Drawing, volume 1547 of Lecture Notes in
Computer Science, pages 364–373. Springer, 1998.
[9] E. Gomez-Nieto, W. Casaca, L. G. Nonato, and G. Taubin. Mixed integer
optimization for layout arrangement. In Graphics, Patterns and Images
(SIBGRAPI), 2013 26th SIBGRAPI-Conference on, pages 115–122. IEEE,
2013.
[10] E. Gomez-Nieto, F. San Roman, P. Pagliosa, W. Casaca, E. Helou, M. Ferreira de Oliveira, and L. Nonato. Similarity preserving snippet-based visualization of web search results. 2013.
[11] K. Hayashi, M. Inoue, T. Masuzawa, and H. Fujiwara. A layout adjustment
problem for disjoint rectangles preserving orthogonal order. Systems and
Computers in Japan, 33(2):31–42, 2002.
[12] Y. Hu. Visualizing graphs with node and edge labels. CoRR, abs/0911.0626,
2009.
[13] X. Huang and W. Lai. Force-transfer: A new approach to removing overlapping nodes in graph layout. In M. J. Oudshoorn, editor, ACSC, volume 16
of CRPIT, pages 349–358. Australian Computer Society, 2003.
[14] X. Huang, W. Lai, A. Sajeev, and J. Gao. A new algorithm for removing node overlapping in graph visualization. Information Sciences,
177(14):2821–2844, 2007.
[15] T. Imamichi, Y. Arahori, J. Gim, S.-H. Hong, and H. Nagamochi. Removing
node overlaps using multi-sphere scheme. In I. G. Tollis and M. Patrignani,
editors, Graph Drawing, volume 5417 of Lecture Notes in Computer Science,
pages 296–301. Springer, 2008.
[16] W. Li, P. Eades, and N. S. Nikolov. Using spring algorithms to remove
node overlapping. In S.-H. Hong, editor, APVIS, volume 45 of CRPIT,
pages 131–140. Australian Computer Society, 2005.
[17] C.-C. Lin, H.-C. Yen, and J.-H. Chuang. Drawing graphs with nonuniform
nodes using potential fields. J. Vis. Lang. Comput., 20(6):385–402, 2009.
[18] K. A. Lyons, H. Meijer, and D. Rappaport. Algorithms for cluster busting
in anchored graph drawing. J. Graph Algorithms Appl., 2(1), 1998.
[19] K. Marriott, P. J. Stuckey, V. Tam, and W. He. Removing node overlapping
in graph layout using constrained optimization. Constraints, 8(2):143–171,
2003.
[20] K. Misue, P. Eades, W. Lai, and K. Sugiyama. Layout adjustment and the
mental map. J. Vis. Lang. Comput., 6(2):183–210, 1995.
[21] H. Strobelt, M. Spicker, A. Stoffel, D. Keim, and O. Deussen. Rolled-out
wordles: A heuristic method for overlap removal of 2d data representatives.
In Computer Graphics Forum, volume 31, pages 1135–1144. Wiley Online
Library, 2012.
[22] H. Strobelt, M. Spicker, A. Stoffel, D. A. Keim, and O. Deussen. Rolled-out
wordles: A heuristic method for overlap removal of 2d data representatives.
Comput. Graph. Forum, 31(3):1135–1144, 2012.
[23] R. Tamassia. Handbook of Graph Drawing and Visualization (Discrete
Mathematics and Its Applications). Chapman & Hall/CRC, 2007.
[24] X. Wang and I. Miyamoto. Generating customized layouts. In F.-J. Brandenburg, editor, Graph Drawing, volume 1027 of Lecture Notes in Computer
Science, pages 504–515. Springer, 1995.