aboutsummaryrefslogtreecommitdiff
path: root/examples/01_boundingrect+pmpd_ambient/01_boundingrect+pmpd_ambient.pd
blob: fb06f28c7a26fb5f9ba5a5a9a816292246d8993e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
#N canvas 554 96 1099 664 12;
#N canvas 310 102 970 684 structure 0;
#X obj 124 43 pd_mass -0.7 0.7 \$0;
#X obj 189 113 pd_link \$0;
#X obj 27 290 pd_mass -1 0 \$0;
#X obj 123 558 pd_mass -0.7 -0.7 \$0;
#X obj 399 624 pd_mass 0 -1 \$0;
#X obj 436 16 pd_mass 0 1 \$0;
#X obj 680 64 pd_mass 0.7 0.7 \$0;
#X obj 766 285 pd_mass 1 0 \$0;
#X obj 748 552 pd_mass 0.7 -0.7 \$0;
#X obj 407 274 pd_mass 0 0 \$0;
#X obj 124 314 pd_link \$0;
#X obj 49 445 pd_link \$0;
#X obj 198 502 pd_link \$0;
#X obj 69 161 pd_link \$0;
#X obj 201 187 pd_link \$0;
#X obj 213 373 pd_link \$0;
#X obj 279 598 pd_link \$0;
#X obj 410 562 pd_link \$0;
#X obj 580 585 pd_link \$0;
#X obj 310 327 pd_link \$0;
#X obj 388 330 pd_link \$0;
#X obj 468 330 pd_link \$0;
#X obj 338 427 pd_link \$0;
#X obj 509 422 pd_link \$0;
#X obj 304 26 pd_link \$0;
#X obj 441 57 pd_link \$0;
#X obj 347 129 pd_link \$0;
#X obj 308 231 pd_link \$0;
#X obj 304 280 pd_link \$0;
#X obj 393 227 pd_link \$0;
#X obj 475 227 pd_link \$0;
#X obj 529 278 pd_link \$0;
#X obj 604 358 pd_link \$0;
#X obj 678 291 pd_link \$0;
#X obj 604 221 pd_link \$0;
#X obj 499 135 pd_link \$0;
#X obj 571 43 pd_link \$0;
#X obj 612 101 pd_link \$0;
#X obj 749 179 pd_link \$0;
#X obj 763 429 pd_link \$0;
#X obj 671 510 pd_link \$0;
#X connect 0 0 10 0;
#X connect 0 0 13 1;
#X connect 0 0 15 0;
#X connect 0 0 24 0;
#X connect 0 0 25 0;
#X connect 0 0 27 0;
#X connect 0 0 35 0;
#X connect 1 0 2 0;
#X connect 1 1 5 0;
#X connect 2 0 1 0;
#X connect 2 0 11 0;
#X connect 2 0 12 0;
#X connect 2 0 13 0;
#X connect 2 0 22 0;
#X connect 2 0 26 0;
#X connect 2 0 28 0;
#X connect 3 0 10 1;
#X connect 3 0 11 1;
#X connect 3 0 14 1;
#X connect 3 0 16 0;
#X connect 3 0 17 0;
#X connect 3 0 19 0;
#X connect 3 0 23 0;
#X connect 4 0 12 1;
#X connect 4 0 15 1;
#X connect 4 0 16 1;
#X connect 4 0 18 0;
#X connect 4 0 20 1;
#X connect 4 0 32 0;
#X connect 4 0 40 0;
#X connect 5 0 1 1;
#X connect 5 0 14 0;
#X connect 5 0 24 1;
#X connect 5 0 29 1;
#X connect 5 0 34 0;
#X connect 5 0 36 0;
#X connect 5 0 37 0;
#X connect 6 0 25 1;
#X connect 6 0 26 1;
#X connect 6 0 30 1;
#X connect 6 0 32 1;
#X connect 6 0 33 1;
#X connect 6 0 36 1;
#X connect 6 0 38 0;
#X connect 7 0 23 1;
#X connect 7 0 31 1;
#X connect 7 0 35 1;
#X connect 7 0 37 1;
#X connect 7 0 38 1;
#X connect 7 0 39 0;
#X connect 7 0 40 1;
#X connect 8 0 17 1;
#X connect 8 0 18 1;
#X connect 8 0 21 1;
#X connect 8 0 22 1;
#X connect 8 0 33 0;
#X connect 8 0 34 1;
#X connect 8 0 39 1;
#X connect 9 0 19 1;
#X connect 9 0 20 0;
#X connect 9 0 21 0;
#X connect 9 0 27 1;
#X connect 9 0 28 1;
#X connect 9 0 29 0;
#X connect 9 0 30 0;
#X connect 9 0 31 0;
#X connect 10 0 0 0;
#X connect 10 1 3 0;
#X connect 11 0 2 0;
#X connect 11 1 3 0;
#X connect 12 0 2 0;
#X connect 12 1 4 0;
#X connect 13 0 2 0;
#X connect 13 1 0 0;
#X connect 14 0 5 0;
#X connect 14 1 3 0;
#X connect 15 0 0 0;
#X connect 15 1 4 0;
#X connect 16 0 3 0;
#X connect 16 1 4 0;
#X connect 17 0 3 0;
#X connect 17 1 8 0;
#X connect 18 0 4 0;
#X connect 18 1 8 0;
#X connect 19 0 3 0;
#X connect 19 1 9 0;
#X connect 20 0 9 0;
#X connect 20 1 4 0;
#X connect 21 0 9 0;
#X connect 21 1 8 0;
#X connect 22 0 2 0;
#X connect 22 1 8 0;
#X connect 23 0 3 0;
#X connect 23 1 7 0;
#X connect 24 0 0 0;
#X connect 24 1 5 0;
#X connect 25 0 0 0;
#X connect 25 1 6 0;
#X connect 26 0 2 0;
#X connect 26 1 6 0;
#X connect 27 0 0 0;
#X connect 27 1 9 0;
#X connect 28 0 2 0;
#X connect 28 1 9 0;
#X connect 29 0 9 0;
#X connect 29 1 5 0;
#X connect 30 0 9 0;
#X connect 30 1 6 0;
#X connect 31 0 9 0;
#X connect 31 1 7 0;
#X connect 32 0 4 0;
#X connect 32 1 6 0;
#X connect 33 0 8 0;
#X connect 33 1 6 0;
#X connect 34 0 5 0;
#X connect 34 1 8 0;
#X connect 35 0 0 0;
#X connect 35 1 7 0;
#X connect 36 0 5 0;
#X connect 36 1 6 0;
#X connect 37 0 5 0;
#X connect 37 1 7 0;
#X connect 38 0 6 0;
#X connect 38 1 7 0;
#X connect 39 0 7 0;
#X connect 39 1 8 0;
#X connect 40 0 4 0;
#X connect 40 1 7 0;
#X restore 272 322 pd structure;
#N canvas 621 151 504 293 init 0;
#X msg 200 169 setK \$1;
#X msg 274 143 setD \$1;
#X msg 416 115 setM \$1;
#X floatatom 200 94 5 -10 200 0 - - -, f 5;
#X floatatom 274 92 5 0 0 0 - - -, f 5;
#X floatatom 416 92 5 0 0 0 - - -, f 5;
#X obj 200 143 / 10;
#X obj 200 117 + 1;
#X obj 274 116 / 10;
#X msg 200 67 100;
#X msg 274 68 25;
#X msg 416 66 50;
#X floatatom 341 92 5 0 0 0 - - -, f 5;
#X obj 341 116 / 10;
#X msg 341 143 setD2 \$1;
#X msg 341 68 1;
#X obj 200 201 s \$0-link;
#X obj 416 143 s \$0-mass;
#X obj 42 50 loadbang;
#X obj 44 202 s \$0-mass;
#X msg 44 84 setXmin -3.8;
#X msg 57 109 setXmax 3.8;
#X msg 75 133 setYmin -3.8;
#X msg 88 159 setYmax 3.8;
#X connect 0 0 16 0;
#X connect 1 0 16 0;
#X connect 2 0 17 0;
#X connect 3 0 7 0;
#X connect 4 0 8 0;
#X connect 5 0 2 0;
#X connect 6 0 0 0;
#X connect 7 0 6 0;
#X connect 8 0 1 0;
#X connect 9 0 3 0;
#X connect 10 0 4 0;
#X connect 11 0 5 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 15 0 12 0;
#X connect 18 0 20 0;
#X connect 18 0 21 0;
#X connect 18 0 22 0;
#X connect 18 0 23 0;
#X connect 20 0 19 0;
#X connect 21 0 19 0;
#X connect 22 0 19 0;
#X connect 23 0 19 0;
#X restore 272 295 pd init;
#X obj 287 1761 pix_texture;
#X obj 287 1789 square 4;
#X obj 287 831 pix_separator;
#X obj 492 804 pix_separator;
#X obj 492 1748 pix_texture;
#X obj 492 1776 square 4;
#X obj 665 798 r reset;
#X obj 18 27 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577
0;
#X text 41 66 1.- Create the Gem Window;
#X msg 526 62 0 \, destroy;
#X msg 492 37 reset \, create \, 1;
#X obj 492 90 gemwin;
#X text 627 38 <- 1;
#X obj 18 131 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577
0;
#X obj 447 222 t b b;
#X obj 447 138 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 525 153 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 548 170 loadbang;
#X obj 479 299 s \$0-link;
#X obj 447 327 s \$0-mass;
#X msg 576 226 reset;
#X msg 550 250 resetL;
#X msg 525 271 resetF;
#X obj 525 199 t b b b;
#X obj 447 195 metro 50;
#X obj 479 356 iAmbient2D \$0-mass 0 -1;
#X obj 571 302 s reset;
#X obj 458 255 s metro;
#X text 471 136 <- 2;
#X text 27 233 inside init and structure subpatches you have all the
pmpd magics \, Thanks to Cyrille Henry for the models !!!;
#X text 72 308 You don't need to open them.;
#X obj 24 440 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577
0;
#X msg 483 449 force2D 0 5;
#X msg 539 475 force2D 5 0;
#X msg 485 503 force2D 0 -5;
#X msg 384 476 force2D -5 0;
#X obj 484 535 s \$0-mass;
#X obj 539 420 loadbang;
#X text 576 449 <- UP;
#X text 578 505 <- DOWN;
#X text 625 477 <- RIGHT;
#X text 476 476 <- LEFT;
#X text 24 181 IMPORTANT :: for this to work you must have the pd_mass
and pd_link abstraction patches in same folder as this one.;
#X text 40 155 2.- Start the Physical Modeling rendering;
#X text 46 461 3.- Test the Physical Modeling interaction;
#X text 75 482 ( move the structure );
#X obj 493 774 pix_rgba;
#X obj 26 589 cnv 15 600 180 empty empty empty 20 12 0 14 -260097 -66577
0;
#X text 49 628 2.- Setup your camera;
#X obj 493 732 pix_video;
#X obj 493 616 gemhead;
#X msg 384 680 colorspace RGBA;
#X msg 636 619 dialog;
#X msg 636 684 device /dev/dv1394-0;
#X msg 636 661 driver 1;
#X text 633 644 only linuxDV;
#X text 635 603 MACOSX;
#X text 634 704 video 4 linux;
#X msg 637 721 driver 0;
#X msg 637 744 device /dev/video0;
#X text 244 798 resize video input to save CPU ->;
#X text 546 147 <- here you can RESET ALL;
#X obj 24 863 cnv 15 650 250 empty empty empty 20 12 0 14 -258113 -66577
0;
#X floatatom 602 1047 5 0 0 0 - - -, f 5;
#X obj 493 1083 pix_opencv_contours_boundingrect;
#X floatatom 657 893 5 0 0 0 - - -, f 5;
#X obj 493 893 pix_opencv_bgsubstract;
#X msg 665 830 set;
#X obj 493 942 pix_opencv_morphology;
#X floatatom 658 943 5 0 0 0 - - -, f 5;
#X obj 493 988 pix_opencv_morphology;
#X floatatom 658 989 5 0 0 0 - - -, f 5;
#X msg 602 1024 1000;
#X obj 647 1023 loadbang;
#X msg 657 869 24;
#X msg 658 918 -2;
#X msg 659 965 2;
#X obj 689 869 loadbang;
#X obj 689 917 loadbang;
#X obj 690 964 loadbang;
#X msg 930 1448 setXmin \$1;
#X msg 930 1470 setXmax \$1;
#X msg 1012 1473 setYmin \$1;
#X msg 1013 1447 setYmax \$1;
#X floatatom 996 1235 5 0 0 0 - - -, f 5;
#X floatatom 1054 1234 5 0 0 0 - - -, f 5;
#X floatatom 1104 1234 5 0 0 0 - - -, f 5;
#X floatatom 1155 1233 5 0 0 0 - - -, f 5;
#X floatatom 996 1336 5 0 0 0 - - -, f 5;
#X floatatom 1055 1338 5 0 0 0 - - -, f 5;
#X floatatom 1104 1326 5 0 0 0 - - -, f 5;
#X floatatom 1155 1326 5 0 0 0 - - -, f 5;
#X obj 994 1367 +;
#X floatatom 994 1395 5 0 0 0 - - -, f 5;
#X floatatom 1055 1393 5 0 0 0 - - -, f 5;
#X obj 1055 1313 * -1;
#X obj 1055 1366 -;
#X obj 1054 1260 - 72;
#X obj 996 1260 - 90;
#X obj 1054 1289 / 18;
#X obj 996 1293 / 22.5;
#X obj 1104 1283 / 22.5;
#X obj 1155 1283 / 18;
#X msg 1089 1175 0 0 0 0 0;
#X obj 916 1502 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2;
#X obj 916 1419 r metro;
#X text 1103 1205 Xorigin Yorigin Width Height;
#X obj 1166 1175 r reset;
#X obj 996 1205 unpack 0 0 0 0;
#X obj 603 1127 route 0 1 2 3 4;
#X msg 1292 1450 setXmin \$1;
#X msg 1292 1472 setXmax \$1;
#X msg 1374 1475 setYmin \$1;
#X msg 1375 1449 setYmax \$1;
#X floatatom 1358 1237 5 0 0 0 - - -, f 5;
#X floatatom 1416 1236 5 0 0 0 - - -, f 5;
#X floatatom 1466 1236 5 0 0 0 - - -, f 5;
#X floatatom 1517 1235 5 0 0 0 - - -, f 5;
#X floatatom 1358 1340 5 0 0 0 - - -, f 5;
#X floatatom 1417 1340 5 0 0 0 - - -, f 5;
#X floatatom 1466 1328 5 0 0 0 - - -, f 5;
#X floatatom 1517 1328 5 0 0 0 - - -, f 5;
#X obj 1356 1369 +;
#X floatatom 1356 1397 5 0 0 0 - - -, f 5;
#X floatatom 1417 1395 5 0 0 0 - - -, f 5;
#X obj 1417 1315 * -1;
#X obj 1417 1368 -;
#X obj 1416 1262 - 72;
#X obj 1358 1262 - 90;
#X obj 1416 1291 / 18;
#X obj 1358 1295 / 22.5;
#X obj 1466 1285 / 22.5;
#X obj 1517 1285 / 18;
#X msg 1451 1177 0 0 0 0 0;
#X obj 1278 1504 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2;
#X obj 1278 1421 r metro;
#X text 1465 1207 Xorigin Yorigin Width Height;
#X obj 1528 1177 r reset;
#X obj 1358 1207 unpack 0 0 0 0;
#X msg 1685 1446 setXmin \$1;
#X msg 1685 1468 setXmax \$1;
#X msg 1767 1471 setYmin \$1;
#X msg 1768 1445 setYmax \$1;
#X floatatom 1751 1233 5 0 0 0 - - -, f 5;
#X floatatom 1809 1232 5 0 0 0 - - -, f 5;
#X floatatom 1859 1232 5 0 0 0 - - -, f 5;
#X floatatom 1910 1231 5 0 0 0 - - -, f 5;
#X floatatom 1751 1334 5 0 0 0 - - -, f 5;
#X floatatom 1810 1336 5 0 0 0 - - -, f 5;
#X floatatom 1859 1324 5 0 0 0 - - -, f 5;
#X floatatom 1910 1324 5 0 0 0 - - -, f 5;
#X obj 1749 1365 +;
#X floatatom 1749 1393 5 0 0 0 - - -, f 5;
#X floatatom 1810 1391 5 0 0 0 - - -, f 5;
#X obj 1810 1311 * -1;
#X obj 1810 1364 -;
#X obj 1809 1258 - 72;
#X obj 1751 1258 - 90;
#X obj 1809 1287 / 18;
#X obj 1751 1291 / 22.5;
#X obj 1859 1281 / 22.5;
#X obj 1910 1281 / 18;
#X msg 1844 1173 0 0 0 0 0;
#X obj 1671 1500 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2;
#X obj 1671 1417 r metro;
#X text 1858 1203 Xorigin Yorigin Width Height;
#X obj 1921 1173 r reset;
#X obj 1751 1203 unpack 0 0 0 0;
#X obj 698 894 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577
0;
#X text 698 893 <- threshold fo the background substraction;
#X obj 699 941 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577
0;
#X obj 700 987 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577
0;
#X text 700 941 <- erode to avoid noise (negative values);
#X text 701 987 <- dilate contours (positive values);
#X obj 698 830 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577
0;
#X text 698 829 <- set the background;
#X obj 700 1047 cnv 15 310 20 empty empty empty 20 12 0 14 -258113
-66577 0;
#X text 701 1047 <- set minimal area to detect to avoid noisy things
;
#X obj 22 1182 cnv 15 800 250 empty empty empty 20 12 0 14 -261234
-66577 0;
#X floatatom 603 1239 5 0 0 0 - - -, f 5;
#X floatatom 661 1238 5 0 0 0 - - -, f 5;
#X floatatom 711 1238 5 0 0 0 - - -, f 5;
#X floatatom 762 1237 5 0 0 0 - - -, f 5;
#X floatatom 603 1342 5 0 0 0 - - -, f 5;
#X floatatom 662 1342 5 0 0 0 - - -, f 5;
#X floatatom 711 1330 5 0 0 0 - - -, f 5;
#X floatatom 762 1330 5 0 0 0 - - -, f 5;
#X obj 601 1371 +;
#X floatatom 601 1399 5 0 0 0 - - -, f 5;
#X floatatom 662 1397 5 0 0 0 - - -, f 5;
#X obj 662 1317 * -1;
#X obj 662 1370 -;
#X obj 661 1264 - 72;
#X obj 603 1264 - 90;
#X obj 661 1293 / 18;
#X obj 603 1297 / 22.5;
#X obj 711 1287 / 22.5;
#X obj 762 1287 / 18;
#X msg 696 1179 0 0 0 0 0;
#X obj 523 1423 r metro;
#X text 710 1209 Xorigin Yorigin Width Height;
#X obj 773 1179 r reset;
#X obj 603 1209 unpack 0 0 0 0;
#X text 44 1205 this is coordinate conversions maths to pass from pix
coordinates to gem coordinates.;
#X obj 23 1448 cnv 15 800 150 empty empty empty 20 12 0 14 -261234
-66577 0;
#X msg 537 1452 setXmin \$1;
#X msg 537 1474 setXmax \$1;
#X msg 619 1477 setYmin \$1;
#X msg 620 1451 setYmax \$1;
#X obj 523 1506 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2;
#X text 41 1461 iAmbient2D defines a place with force from bottom to
top. like a ball in wather. With the setX/Ymax/min we define a rectangle
where this force is applied for each of our detected contours.;
#X text 45 1543 think also in possible uses of;
#X obj 265 1543 iLine2D;
#X obj 329 1544 iSeg2D;
#X obj 385 1545 iCircle2D;
#X text 918 1546 We do the same for so many contours as the number
of them we want to be able to interact with our structure;
#X obj 22 1631 cnv 15 650 60 empty empty empty 20 12 0 14 -258113 -66577
0;
#X obj 287 1668 spigot;
#X obj 326 1643 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
0 1;
#X text 46 886 4.- Setup the parameters for your analysis;
#X text 44 1654 5.- hide the analysis;
#X text 347 1641 <- click here to chow the original video image;
#X obj 492 1719 translateXYZ 0 0 -0.1;
#X obj 491 1695 separator;
#X obj 287 1697 separator;
#X floatatom 654 1718 5 0 0 0 - - -, f 5;
#X obj 288 1724 translateXYZ 0 0 -0.05;
#X obj 492 834 pix_resize 180 144;
#X connect 2 0 3 0;
#X connect 4 0 219 0;
#X connect 5 0 229 0;
#X connect 6 0 7 0;
#X connect 8 0 69 0;
#X connect 11 0 13 0;
#X connect 12 0 13 0;
#X connect 16 0 21 0;
#X connect 16 1 20 0;
#X connect 16 1 27 0;
#X connect 16 1 29 0;
#X connect 17 0 26 0;
#X connect 18 0 25 0;
#X connect 19 0 25 0;
#X connect 22 0 21 0;
#X connect 23 0 20 0;
#X connect 24 0 20 0;
#X connect 25 0 24 0;
#X connect 25 1 23 0;
#X connect 25 2 22 0;
#X connect 25 2 28 0;
#X connect 26 0 16 0;
#X connect 34 0 38 0;
#X connect 35 0 38 0;
#X connect 36 0 38 0;
#X connect 37 0 38 0;
#X connect 39 0 35 0;
#X connect 48 0 5 0;
#X connect 48 0 4 0;
#X connect 51 0 48 0;
#X connect 52 0 51 0;
#X connect 53 0 51 0;
#X connect 54 0 51 0;
#X connect 55 0 51 0;
#X connect 56 0 51 0;
#X connect 60 0 51 0;
#X connect 61 0 51 0;
#X connect 65 0 66 1;
#X connect 66 0 225 0;
#X connect 66 1 111 0;
#X connect 67 0 68 1;
#X connect 68 0 70 0;
#X connect 69 0 68 0;
#X connect 70 0 72 0;
#X connect 71 0 70 1;
#X connect 72 0 66 0;
#X connect 73 0 72 1;
#X connect 74 0 65 0;
#X connect 75 0 74 0;
#X connect 76 0 67 0;
#X connect 77 0 71 0;
#X connect 78 0 73 0;
#X connect 79 0 76 0;
#X connect 80 0 77 0;
#X connect 81 0 78 0;
#X connect 82 0 106 0;
#X connect 83 0 106 0;
#X connect 84 0 106 0;
#X connect 85 0 106 0;
#X connect 86 0 100 0;
#X connect 87 0 99 0;
#X connect 88 0 103 0;
#X connect 89 0 104 0;
#X connect 90 0 82 0;
#X connect 90 0 94 0;
#X connect 91 0 98 0;
#X connect 91 0 85 0;
#X connect 92 0 94 1;
#X connect 93 0 98 1;
#X connect 94 0 83 0;
#X connect 94 0 95 0;
#X connect 97 0 91 0;
#X connect 98 0 96 0;
#X connect 98 0 84 0;
#X connect 99 0 101 0;
#X connect 100 0 102 0;
#X connect 101 0 97 0;
#X connect 102 0 90 0;
#X connect 103 0 92 0;
#X connect 104 0 93 0;
#X connect 105 0 110 0;
#X connect 107 0 106 0;
#X connect 109 0 105 0;
#X connect 110 0 86 0;
#X connect 110 1 87 0;
#X connect 110 2 88 0;
#X connect 110 3 89 0;
#X connect 111 0 204 0;
#X connect 111 1 110 0;
#X connect 111 2 140 0;
#X connect 111 3 169 0;
#X connect 112 0 136 0;
#X connect 113 0 136 0;
#X connect 114 0 136 0;
#X connect 115 0 136 0;
#X connect 116 0 130 0;
#X connect 117 0 129 0;
#X connect 118 0 133 0;
#X connect 119 0 134 0;
#X connect 120 0 112 0;
#X connect 120 0 124 0;
#X connect 121 0 128 0;
#X connect 121 0 115 0;
#X connect 122 0 124 1;
#X connect 123 0 128 1;
#X connect 124 0 113 0;
#X connect 124 0 125 0;
#X connect 127 0 121 0;
#X connect 128 0 126 0;
#X connect 128 0 114 0;
#X connect 129 0 131 0;
#X connect 130 0 132 0;
#X connect 131 0 127 0;
#X connect 132 0 120 0;
#X connect 133 0 122 0;
#X connect 134 0 123 0;
#X connect 135 0 140 0;
#X connect 137 0 136 0;
#X connect 139 0 135 0;
#X connect 140 0 116 0;
#X connect 140 1 117 0;
#X connect 140 2 118 0;
#X connect 140 3 119 0;
#X connect 141 0 165 0;
#X connect 142 0 165 0;
#X connect 143 0 165 0;
#X connect 144 0 165 0;
#X connect 145 0 159 0;
#X connect 146 0 158 0;
#X connect 147 0 162 0;
#X connect 148 0 163 0;
#X connect 149 0 141 0;
#X connect 149 0 153 0;
#X connect 150 0 157 0;
#X connect 150 0 144 0;
#X connect 151 0 153 1;
#X connect 152 0 157 1;
#X connect 153 0 142 0;
#X connect 153 0 154 0;
#X connect 156 0 150 0;
#X connect 157 0 155 0;
#X connect 157 0 143 0;
#X connect 158 0 160 0;
#X connect 159 0 161 0;
#X connect 160 0 156 0;
#X connect 161 0 149 0;
#X connect 162 0 151 0;
#X connect 163 0 152 0;
#X connect 164 0 169 0;
#X connect 166 0 165 0;
#X connect 168 0 164 0;
#X connect 169 0 145 0;
#X connect 169 1 146 0;
#X connect 169 2 147 0;
#X connect 169 3 148 0;
#X connect 181 0 195 0;
#X connect 182 0 194 0;
#X connect 183 0 198 0;
#X connect 184 0 199 0;
#X connect 185 0 189 0;
#X connect 185 0 207 0;
#X connect 186 0 193 0;
#X connect 186 0 210 0;
#X connect 187 0 189 1;
#X connect 188 0 193 1;
#X connect 189 0 190 0;
#X connect 189 0 208 0;
#X connect 192 0 186 0;
#X connect 193 0 191 0;
#X connect 193 0 209 0;
#X connect 194 0 196 0;
#X connect 195 0 197 0;
#X connect 196 0 192 0;
#X connect 197 0 185 0;
#X connect 198 0 187 0;
#X connect 199 0 188 0;
#X connect 200 0 204 0;
#X connect 201 0 211 0;
#X connect 203 0 200 0;
#X connect 204 0 181 0;
#X connect 204 1 182 0;
#X connect 204 2 183 0;
#X connect 204 3 184 0;
#X connect 207 0 211 0;
#X connect 208 0 211 0;
#X connect 209 0 211 0;
#X connect 210 0 211 0;
#X connect 219 0 226 0;
#X connect 220 0 219 1;
#X connect 224 0 6 0;
#X connect 225 0 224 0;
#X connect 226 0 228 0;
#X connect 227 0 224 3;
#X connect 228 0 2 0;
#X connect 229 0 68 0;