Browse code

pixelisation v1

rep authored on 07/12/2015 18:00:42
Showing 9 changed files
... ...
@@ -1,5 +1,6 @@
1 1
 captain/
2 2
 drone/
3
+lila/
3 4
 pln/
4 5
 pylone3/
5 6
 screen/
6 7
new file mode 100644
7 8
Binary files /dev/null and b/.swp differ
8 9
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-a=[1,2,3]
2 1
deleted file mode 100644
3 2
Binary files a/bb.pyc and /dev/null differ
4 3
new file mode 100644
... ...
@@ -0,0 +1,247 @@
0
+#!/usr/bin/python
1
+# coding: utf-8
2
+
3
+# haacheuur 0.24
4
+# port industriel de port la nouvelle - couleur - 60cm*30cm
5
+# image source : pln.jpg
6
+# image obtenue : pln..20150910-11h59m53s.jpg
7
+
8
+import sys
9
+import Image
10
+import random
11
+import os
12
+import ImageDraw
13
+import ImageFont
14
+import ImageFilter
15
+from time import gmtime, strftime
16
+import time
17
+
18
+# modifs du 30/10/2013
19
+import ImageEnhance
20
+
21
+'''
22
+multiples 1024	: 	1024 2048 3072 4096 5120 		6144 7168 8192 		9216 10240
23
+multiples 768 :	768 1536 2304 3072 3840 4608 5376 	6144 6912 7680 8448 9216 9984 10752 
24
+
25
+'''
26
+
27
+
28
+#rapport d'allongement de la nouvelle image par rapport à la largeur de l'image originale
29
+allongement = 2
30
+
31
+#ouvertrure de l'image source et conversion en mode couleur 1bit
32
+#im1 = Image.open(str(sys.argv[1])).convert('1')
33
+#im1 = Image.open(str(sys.argv[1])).convert('L')
34
+im1 = Image.open(str(sys.argv[1]))
35
+im2 = im1.copy()
36
+im3 = Image.new("RGBA",(im1.size[0], im1.size[1]))
37
+im4 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
38
+
39
+boutImage = Image.new("RGBA",(im1.size[0], im1.size[1]))
40
+
41
+pix2 	=	 im3.resize((im3.size[0]/2, 	im3.size[1]/2), 	Image.NEAREST)
42
+pix4 	=	 im3.resize((im3.size[0]/4, 	im3.size[1]/4), 	Image.NEAREST)
43
+pix8 	=	 im3.resize((im3.size[0]/8, 	im3.size[1]/8), 	Image.NEAREST)
44
+pix16 	=	 im3.resize((im3.size[0]/16, 	im3.size[1]/16),	Image.NEAREST)
45
+pix32 	=	 im3.resize((im3.size[0]/32, 	im3.size[1]/32),	Image.NEAREST)
46
+pix64 	=	 im3.resize((im3.size[0]/64, 	im3.size[1]/64),	Image.NEAREST)
47
+pix128 	=	 im3.resize((im3.size[0]/128, 	im3.size[1]/128),	Image.NEAREST)
48
+pix256 	=	 im3.resize((im3.size[0]/256, 	im3.size[1]/256), 	Image.NEAREST)
49
+pix512 	=	 im3.resize((im3.size[0]/512, 	im3.size[1]/512), 	Image.NEAREST)
50
+pix1024 =	 im3.resize((im3.size[0]/1024,	im3.size[1]/1024), 	Image.NEAREST)
51
+
52
+Larg = im1.size[0]
53
+Haut = im1.size[1]
54
+import pickle
55
+
56
+loadfile = False
57
+
58
+class Sequence:
59
+	def __init__(s):
60
+		randomCoupeHauteur = []
61
+		s.randomCopyPosi =[]
62
+		s.proportions=[]
63
+		s.choix=[]
64
+		s.sizeOutput=None
65
+		s.sizeInput=None
66
+
67
+"""
68
+seq = dict()
69
+seq["randomCoupeHauteur"] = []
70
+seq["randomCopyPosi"] = [] 
71
+seq["proportions"] = []
72
+seq["choix"] = []
73
+seq["sizeOutput"]= im4.size
74
+seq["sizeInput"] = im1.size
75
+"""
76
+if loadfile:
77
+	seq=pickle.load(open("test.pickle"))
78
+
79
+else :
80
+	seq=Sequence()
81
+	
82
+for i in range(1):
83
+	
84
+		
85
+	# constitution de la liste des tranches horizontales
86
+	# genre comme si qu'on avait un 16 pistes :)
87
+	# nombre aleatoire compris dans les limites de l'image
88
+	def randHaut():
89
+		return random.randint(0, im1.size[1]/16)*16
90
+	
91
+	if loadfile:
92
+		randomCoupeHauteur = seq.randomCoupeHauteur
93
+		
94
+	else:
95
+		randomCoupeHauteur = [0, \
96
+		randHaut(),randHaut(),randHaut(),randHaut(), \
97
+		randHaut(),randHaut(),randHaut(),randHaut(), \
98
+		randHaut(),randHaut(),randHaut(),randHaut(), \
99
+		randHaut(),randHaut(),randHaut(),randHaut(), \
100
+		randHaut(),randHaut(),randHaut(),randHaut(), \
101
+		randHaut(),randHaut(),randHaut(),randHaut(), \
102
+		randHaut(),randHaut(),randHaut(),randHaut(), \
103
+		randHaut(),randHaut(),randHaut(),randHaut(), \
104
+		im1.size[1]]
105
+		# rangement des valeurs des plus petites au plus grandes
106
+		randomCoupeHauteur.sort()
107
+		seq.randomCoupeHauteur = randomCoupeHauteur
108
+		
109
+	# les hachures
110
+	def Hacheur(haut, bas) :
111
+		
112
+		n=0
113
+		i=0
114
+		#!!!!!!!!!!
115
+		while n<im4.size[0] :
116
+			
117
+			if loadfile:
118
+				proportions = seq.proportions
119
+				choix_rnd = seq.choix[i]
120
+				randomCopyPosi = seq.randomCopyPosi[i]
121
+			else:
122
+				'''
123
+				8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168
124
+				'''
125
+				#proportions = [(160,6),(120,4),(120,8),(80,16),(60,16),(20,32),(8,24),(8,16),(5,64),(3,24),(2,24),(1,256),(1,128),(1,64),(1,32),(1,16),(1,8)]
126
+				#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(24,32),(24,16),(16,32),(16,16),(16,8),(16,2),(16,1),(8,24),(8,16),(8,8),(8,4),(8,2),(8,1)]
127
+				#proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
128
+				proportions = [(2560,1),(1280,2),(1280,1),(640,2),(640,1),(320,4),(320,2),(160,6),(160,2),(120,4),(120,8),(120,1),(80,16),(80,4),(64,16),(64,8),(64,1),(32,1),(32,2),(32,4),(32,8),(32,32),(16,1),(16,2),(16,4),(16,16),(16,32)]
129
+				
130
+				'''
131
+				1,2,4,8,16,32,64,128,256,512,1024
132
+				'''
133
+				
134
+				seq.proportions = proportions
135
+				#proportions = seq.proportions[]
136
+				choix_rnd = random.randint(0, len(proportions)-1)
137
+				#choix_rnd = random.randint(0, len(proportions)-1)
138
+				seq.choix.append(choix_rnd)
139
+				
140
+				largeur = proportions[choix_rnd][0]
141
+
142
+				# positionnement de la copie, aleatoirement, entre 0 et la largeur totale de l'image 
143
+				randomCopyPosi = random.randint(0, (im1.size[0]-largeur))
144
+				#randomCopyPosi = seq.randomCopyPosi
145
+				seq.randomCopyPosi.append(randomCopyPosi)
146
+			
147
+			i+=1
148
+
149
+			# tirage au sort
150
+			
151
+			#seq["choix"].append(choix_rnd)
152
+			
153
+			# assignation des valeurs (paires) finales choisies
154
+			largeur = proportions[choix_rnd][0]			
155
+			repeat = proportions[choix_rnd][1]
156
+
157
+			#seq["randomCopyPosi"].append(randomCopyPosi)
158
+			
159
+			cx1 = randomCopyPosi
160
+			cx2 = randomCopyPosi + largeur
161
+			# decoupage du sample
162
+			im3 = im2.crop((cx1,haut,cx2,bas))
163
+			#print "im3 = im2.crop : "+str(im3.size)
164
+				
165
+			draw = ImageDraw.Draw(im4)
166
+					
167
+			loop = 0
168
+			
169
+			#pixelSizeList = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,4,4,8]
170
+			pixelSizeList = [1,1,1,1,4,8,16]
171
+			
172
+			#print " pixelSize = "+str(pixelSize)
173
+			
174
+			
175
+			''' COLLAGE DU SAMPLE
176
+			'''
177
+			
178
+			boutImage = im3
179
+
180
+			while loop<repeat:
181
+				
182
+				px1 = n
183
+				px2 = n + largeur
184
+				
185
+				pixelSizeIndex = random.randint(0,len(pixelSizeList)-1)
186
+				pixelSize = pixelSizeList[pixelSizeIndex]
187
+				
188
+				''' PIXELISATION '''
189
+				
190
+				boutImage = im3.resize((im3.size[0]/pixelSize, im3.size[1]/pixelSize), Image.ANTIALIAS)
191
+				boutImage = boutImage.resize((im3.size[0], im3.size[1]), Image.NEAREST)
192
+				
193
+				#lignes colorées de 1 pix
194
+#				draw = ImageDraw.Draw(boutImage)
195
+#				draw.line((0,0,0,4), fill="rgb(128,128,128)")
196
+#				draw.line((0,0,4,0), fill="rgb(128,128,128)")
197
+				
198
+				im4.paste(boutImage, (px1, haut, px2, bas))
199
+				
200
+				pix2 pix4 pix8 pix16 pix32 pix64 pix128 pix256 pix512 pix1024
201
+				
202
+				'''
203
+				draw = ImageDraw.Draw(im4)
204
+				draw.line((px1-2, haut, px1+2, haut), fill="rgb(0,0,0)")
205
+				draw.line((px1, haut-2, px1, haut+2), fill="rgb(0,0,0)")		
206
+				
207
+				draw.line((px1-2, bas-1, px1+2, bas-1), fill="rgb(0,0,0)")
208
+				draw.line((px1, bas-2, px1, bas+2), fill="rgb(0,0,0)")
209
+				'''
210
+				
211
+				n = n + largeur
212
+				loop = loop + 1
213
+	
214
+	''' OPTIONS '''	
215
+	def TrancheHorizontale() :
216
+		# tirage au hasard de la bande copiee
217
+		pos = random.randint(0, im1.size[1]-im1.size[1]/20)
218
+		# copiage
219
+		im5 = im2.crop((0,pos,im1.size[0],pos+im1.size[1]/20))
220
+		
221
+		# le soulignage en blanc
222
+		draw = ImageDraw.Draw(im5)
223
+		draw.line((0, im5.size[1]-1, im5.size[0], im5.size[1]-1), fill="black")
224
+		draw.line((0, 1, im5.size[0], 1), fill="black")
225
+		
226
+		# collage	
227
+		im4.paste(im5, (0,pos,im1.size[0],pos+im1.size[1]/20))
228
+
229
+	# HAACHEUUR
230
+	for j in range(len(randomCoupeHauteur)-1):
231
+		Hacheur(randomCoupeHauteur[j], randomCoupeHauteur[j+1])
232
+	
233
+	''' SAUVEGARDE '''
234
+	# CTRL + S
235
+	#chemin du script	: scriptpy = sys.argv[0]
236
+	#chemin de l'image	: str(sys.argv[1])
237
+	scriptpy = str(sys.argv[1])
238
+	script = scriptpy[:-3]
239
+	n = "%05d" % i
240
+	im4.save(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".png",'PNG', quality=100)
241
+	pickle.dump(seq, open(script+"."+n+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".pickle","w"))
242
+	
243
+	#print script+"."+str(i)+"_"+strftime("%Y%m%d-%Hh%Mm%Ss", gmtime())+".jpg"
244
+	#millis = int(round(time.time() * 1000))
245
+	#print "millis-secondes : "+str(millis)
246
+
0 247
similarity index 100%
1 248
rename from hacheuur.py
2 249
rename to hacheuur.old.py
3 250
similarity index 88%
4 251
rename from video2d.py
5 252
rename to hh_video2d.py
... ...
@@ -1,6 +1,17 @@
1 1
 #!/usr/bin/python
2 2
 # coding: utf-8
3 3
 
4
+# sys.popen youtube.dl
5
+'''
6
+youtube-dl $1
7
+'''
8
+
9
+# rename file
10
+'''
11
+sys.popen("mv $1 $2")
12
+'''
13
+
14
+# mosaique
4 15
 '''
5 16
 ffmpeg -i drone.mp4 -vf fps=30 ./drone/img%03d.jpg
6 17
 '''
... ...
@@ -34,18 +45,28 @@ script = os.getcwd()
34 34
 print script
35 35
 
36 36
 index = 1
37
-allongement = 16	#4818
38
-im1 = Image.open("./capt/img001.jpg")
39
-im2 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]*allongement))
37
+allongement = 32	#4818
38
+
39
+im1 = Image.open("./lila/img001.jpg")
40
+im2 = Image.new("RGBA",(im1.size[0]*allongement, im1.size[1]))
40 41
 largeur = im1.size[0]
41
-hauteur = im1.size[1]
42 42
 
43
-positiony = 0
43
+for x in range(0,allongement):	
44
+	positionx = 0
45
+
46
+	for y in range(1,33):
47
+		z = x*allongement + y
48
+		im1 = Image.open("./lila/img%03.1i.jpg" % z)
49
+		im2.paste(im1, (positionx,0))
50
+		positionx = positionx + largeur
51
+	im2.save(script+"/"+str(x)+".2.png",'PNG', quality=100)
44 52
 
53
+'''
54
+# VERSION BATAILLE NAVALE
45 55
 for x in range(0,allongement):	
46 56
 	positionx = 0
47 57
 
48
-	for y in range(1,17):
58
+	for y in range(1,6):
49 59
 		z = x*10 + y
50 60
 		im1 = Image.open("./capt/img%03.1i.jpg" % z)
51 61
 		#print "z="+str(z)
... ...
@@ -61,6 +82,10 @@ for x in range(0,allongement):
61 61
 
62 62
 im2.save(script+"/"+str(x)+".2.png",'PNG', quality=100)
63 63
 
64
+'''
65
+
66
+
67
+
64 68
 '''
65 69
 1145  ffmpeg -i noir...png.mp4 noir...png.enscribe.norm.wav -c:a copy -c:v copy noir..HQ..mp4
66 70
  1146  ffmpeg -i noir...png.mp4 -i noir...png.enscribe.norm.wav -c:a copy -c:v copy noir..HQ..mp4
67 71
new file mode 100644
... ...
@@ -0,0 +1,19 @@
0
+#N canvas 436 346 437 512 10;
1
+#X obj 137 157 pix_texture;
2
+#X obj 137 157 pix_texture;
3
+#X obj 137 207 rectangle 8192 144;
4
+#X obj 137 33 inlet;
5
+#X obj 137 311 outlet;
6
+#X obj 137 77 pix_image \$1;
7
+#X msg 258 81 quality 0;
8
+#X obj 258 61 loadbang;
9
+#X obj 137 354 translateXYZ 8192 0 0;
10
+#X obj 137 252 translateXYZ 16384 0 0;
11
+#X obj 137 376 translateXYZ 20384 0 0;
12
+#X connect 0 0 2 0;
13
+#X connect 2 0 9 0;
14
+#X connect 3 0 5 0;
15
+#X connect 5 0 0 0;
16
+#X connect 6 0 0 0;
17
+#X connect 7 0 6 0;
18
+#X connect 9 0 4 0;
0 19
new file mode 100644
... ...
@@ -0,0 +1,359 @@
0
+#N canvas 56 475 1313 378 10;
1
+#X obj 257 175 gemhead;
2
+#X obj 264 -99 gemwin;
3
+#X msg 277 -129 0 \, destroy;
4
+#X text 261 -56 10272 856;
5
+#X text 263 -32 5136 428;
6
+#X obj 256 431 translateXYZ;
7
+#X floatatom 357 370 10 0 0 0 - - -, f 10;
8
+#X floatatom 450 -385 10 0 0 0 - - -, f 10;
9
+#X msg 376 -382 8192;
10
+#X obj 401 -331 +;
11
+#X floatatom 408 -300 5 0 0 0 - - -, f 5;
12
+#X obj 459 -430 *;
13
+#X msg 486 -492 3;
14
+#X msg 428 -492 8192;
15
+#X obj 449 250 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
16
+-1 -1;
17
+#X obj 574 326 f;
18
+#X msg 625 -274 8192 \, -40960 60000;
19
+#X obj 309 222 t b b b;
20
+#X obj 682 242 sel 1;
21
+#X obj 530 326 +;
22
+#X obj 557 354 * -1;
23
+#X floatatom 294 257 5 0 0 0 - - -, f 5;
24
+#X msg 626 651 768;
25
+#X msg 666 651 -41472;
26
+#X obj 637 415 < -40960;
27
+#X obj 470 287 f 300;
28
+#X floatatom 501 205 5 -2048 4096 0 - - -, f 5;
29
+#X obj 569 245 t b b;
30
+#X msg 601 286 0;
31
+#X obj 569 202 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
32
+-1 -1;
33
+#X text 513 850 une quatrieme image pour boucler...;
34
+#X msg 556 285 -7680;
35
+#X floatatom 490 386 10 0 0 0 - - -, f 10;
36
+#X obj 537 147 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
37
+1;
38
+#X obj 537 169 t a b;
39
+#X obj 508 828 pix_write 0 0 1024 768;
40
+#X msg 508 807 auto 1 \, file /home/rep/Projets/HH_/screen/screencap/test
41
+90;
42
+#X obj 257 136 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
43
+1;
44
+#X msg 293 1509 pd~ start mp3.pd;
45
+#X msg 365 1543 pd~ stop;
46
+#X obj 327 1625 pd~ -ninsig 2 -noutsig 2 -fifo 20;
47
+#X obj 492 1692 dac~;
48
+#X msg 406 30 256;
49
+#X msg 425 6 128;
50
+#X msg 443 -16 64;
51
+#X msg 462 -40 32;
52
+#X msg 480 -57 16;
53
+#X msg 499 -70 8;
54
+#X obj 388 -130 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
55
+-1 -1 4;
56
+#X obj 388 -106 route 0 1 2 3 4 5 6;
57
+#X obj 499 68 t f;
58
+#X msg 552 495 7680;
59
+#X obj 670 316 sel 1;
60
+#X obj 625 130 t b b;
61
+#X msg 657 171 0;
62
+#X msg 612 170 -7680;
63
+#X msg 433 175 0, f 4;
64
+#X msg 460 143 1;
65
+#X msg 399 106 -1;
66
+#X obj 659 358 > 7810;
67
+#X obj 592 34 expr;
68
+#X floatatom 759 468 5 0 0 0 - - -, f 5;
69
+#X floatatom 844 470 5 0 0 0 - - -, f 5;
70
+#X floatatom 929 468 5 0 0 0 - - -, f 5;
71
+#X floatatom 759 389 5 0 0 0 - - -, f 5;
72
+#X obj 759 416 expr $f1 \; if ($f1 > 0 \, $f1 * 2 \, 0) \; if ($f1
73
+<= 0 \, $f1 / 2 \, 0);
74
+#X text 753 372 an example of multiple expressions and the use of 'if'
75
+;
76
+#X msg 636 702 16384 288;
77
+#X msg 388 51 512;
78
+#X msg 803 535 7680;
79
+#X msg 803 554 8192;
80
+#X floatatom 737 529 5 0 0 0 - - -, f 5;
81
+#X floatatom 692 510 5 0 0 0 - - -, f 5;
82
+#X obj 713 557 *;
83
+#X floatatom 697 604 5 0 0 0 - - -, f 5;
84
+#X obj 806 610;
85
+#X msg 803 298 -120000;
86
+#X obj 256 542 0.1.1 0.2.png;
87
+#X obj 294 275 * 1000;
88
+#X msg 154 221 7800;
89
+#X msg 182 248 -515710;
90
+#X floatatom 167 284 5 0 0 0 - - -, f 5;
91
+#X obj 624 458 < -41472;
92
+#X obj 340 319 * 100;
93
+#X floatatom 344 299 5 0 0 0 - - -, f 5;
94
+#X msg 540 23 2048;
95
+#X obj 634 391 < -125710;
96
+#X obj 256 642 0.1.1 5.2.png;
97
+#X obj 256 562 0.1.1 1.2.png;
98
+#X obj 256 582 0.1.1 2.2.png;
99
+#X obj 256 602 0.1.1 3.2.png;
100
+#X obj 256 622 0.1.1 4.2.png;
101
+#X obj 256 662 0.1.1 6.2.png;
102
+#X obj 256 682 0.1.1 7.2.png;
103
+#X obj 256 702 0.1.1 8.2.png;
104
+#X obj 256 722 0.1.1 9.2.png;
105
+#X obj 256 742 0.1.1 10.2.png;
106
+#X obj 256 762 0.1.1 11.2.png;
107
+#X obj 256 782 0.1.1 12.2.png;
108
+#X obj 256 802 0.1.1 13.2.png;
109
+#X obj 256 822 0.1.1 14.2.png;
110
+#X obj -474 814 0.1.1 15.2.png;
111
+#X obj -474 834 0.1.1 16.2.png;
112
+#X obj -474 854 0.1.1 17.2.png;
113
+#X obj -474 874 0.1.1 18.2.png;
114
+#X obj -474 894 0.1.1 19.2.png;
115
+#X obj -474 914 0.1.1 20.2.png;
116
+#X obj -474 934 0.1.1 21.2.png;
117
+#X obj -474 954 0.1.1 22.2.png;
118
+#X obj -474 974 0.1.1 23.2.png;
119
+#X obj -474 994 0.1.1 24.2.png;
120
+#X obj -474 1014 0.1.1 25.2.png;
121
+#X obj -474 1034 0.1.1 26.2.png;
122
+#X obj -474 1054 0.1.1 27.2.png;
123
+#X obj -474 1074 0.1.1 28.2.png;
124
+#X obj -474 1094 0.1.1 29.2.png;
125
+#X obj -474 1114 0.1.1 30.2.png;
126
+#X obj -474 1134 0.1.1 31.2.png;
127
+#X obj 66 542 0.1.1 0.2.png;
128
+#X obj 66 642 0.1.1 5.2.png;
129
+#X obj 66 562 0.1.1 1.2.png;
130
+#X obj 66 582 0.1.1 2.2.png;
131
+#X obj 66 602 0.1.1 3.2.png;
132
+#X obj 66 622 0.1.1 4.2.png;
133
+#X obj 66 662 0.1.1 6.2.png;
134
+#X obj 66 682 0.1.1 7.2.png;
135
+#X obj 66 702 0.1.1 8.2.png;
136
+#X obj 66 722 0.1.1 9.2.png;
137
+#X obj 66 742 0.1.1 10.2.png;
138
+#X obj 66 762 0.1.1 11.2.png;
139
+#X obj 66 782 0.1.1 12.2.png;
140
+#X obj 66 802 0.1.1 13.2.png;
141
+#X obj 66 822 0.1.1 14.2.png;
142
+#X floatatom 120 493 5 0 0 0 - - -, f 5;
143
+#X floatatom 310 489 5 0 0 0 - - -, f 5;
144
+#X obj 66 448 separator;
145
+#X obj 256 448 separator;
146
+#X obj 66 509 translateXYZ 0 -146 0;
147
+#X obj 256 505 translateXYZ 0 144 0;
148
+#X obj -134 542 0.1.1 0.2.png;
149
+#X obj -134 642 0.1.1 5.2.png;
150
+#X obj -134 562 0.1.1 1.2.png;
151
+#X obj -134 582 0.1.1 2.2.png;
152
+#X obj -134 602 0.1.1 3.2.png;
153
+#X obj -134 622 0.1.1 4.2.png;
154
+#X obj -134 662 0.1.1 6.2.png;
155
+#X obj -134 682 0.1.1 7.2.png;
156
+#X obj -134 702 0.1.1 8.2.png;
157
+#X obj -134 722 0.1.1 9.2.png;
158
+#X obj -134 742 0.1.1 10.2.png;
159
+#X obj -134 762 0.1.1 11.2.png;
160
+#X obj -134 782 0.1.1 12.2.png;
161
+#X obj -134 802 0.1.1 13.2.png;
162
+#X obj -134 822 0.1.1 14.2.png;
163
+#X floatatom -80 493 5 0 0 0 - - -, f 5;
164
+#X obj -134 448 separator;
165
+#X floatatom 14 404 5 0 0 0 - - -, f 5;
166
+#X obj -134 509 translateXYZ 0 -436 0;
167
+#X obj -324 542 0.1.1 0.2.png;
168
+#X obj -324 642 0.1.1 5.2.png;
169
+#X obj -324 562 0.1.1 1.2.png;
170
+#X obj -324 582 0.1.1 2.2.png;
171
+#X obj -324 602 0.1.1 3.2.png;
172
+#X obj -324 622 0.1.1 4.2.png;
173
+#X obj -324 662 0.1.1 6.2.png;
174
+#X obj -324 682 0.1.1 7.2.png;
175
+#X obj -324 702 0.1.1 8.2.png;
176
+#X obj -324 722 0.1.1 9.2.png;
177
+#X obj -324 742 0.1.1 10.2.png;
178
+#X obj -324 762 0.1.1 11.2.png;
179
+#X obj -324 782 0.1.1 12.2.png;
180
+#X obj -324 802 0.1.1 13.2.png;
181
+#X obj -324 822 0.1.1 14.2.png;
182
+#X floatatom -240 479 5 0 0 0 - - -, f 5;
183
+#X obj -324 448 separator;
184
+#X obj -324 509 translateXYZ 0 436 0;
185
+#X floatatom 303 364 5 0 0 0 - - -, f 5;
186
+#X msg 395 333 -143;
187
+#X msg 303 341 -435;
188
+#X msg 262 -175 frame 30 \, offset 0 40 \, border 0 \, perspec -1 1
189
+-1 1 1 200000 \, dimen 1400 384 \, create \, 1;
190
+#X connect 0 0 17 0;
191
+#X connect 0 0 5 0;
192
+#X connect 2 0 1 0;
193
+#X connect 5 0 135 0;
194
+#X connect 5 0 136 0;
195
+#X connect 5 0 155 0;
196
+#X connect 5 0 174 0;
197
+#X connect 6 0 5 3;
198
+#X connect 7 0 9 1;
199
+#X connect 8 0 9 0;
200
+#X connect 9 0 10 0;
201
+#X connect 11 0 7 0;
202
+#X connect 12 0 11 1;
203
+#X connect 13 0 11 0;
204
+#X connect 14 0 25 0;
205
+#X connect 15 0 19 1;
206
+#X connect 17 2 25 0;
207
+#X connect 18 0 27 0;
208
+#X connect 19 0 15 0;
209
+#X connect 19 0 20 0;
210
+#X connect 20 0 32 0;
211
+#X connect 20 0 59 0;
212
+#X connect 20 0 86 0;
213
+#X connect 21 0 78 0;
214
+#X connect 25 0 19 0;
215
+#X connect 26 0 25 1;
216
+#X connect 27 0 31 0;
217
+#X connect 27 1 28 0;
218
+#X connect 28 0 15 0;
219
+#X connect 29 0 27 0;
220
+#X connect 31 0 19 0;
221
+#X connect 32 0 5 1;
222
+#X connect 33 0 34 0;
223
+#X connect 34 1 29 0;
224
+#X connect 36 0 35 0;
225
+#X connect 37 0 0 0;
226
+#X connect 38 0 40 0;
227
+#X connect 39 0 40 0;
228
+#X connect 40 1 41 0;
229
+#X connect 40 2 41 1;
230
+#X connect 42 0 50 0;
231
+#X connect 43 0 50 0;
232
+#X connect 44 0 50 0;
233
+#X connect 45 0 50 0;
234
+#X connect 46 0 50 0;
235
+#X connect 47 0 50 0;
236
+#X connect 48 0 49 0;
237
+#X connect 49 0 68 0;
238
+#X connect 49 1 42 0;
239
+#X connect 49 2 43 0;
240
+#X connect 49 3 44 0;
241
+#X connect 49 4 45 0;
242
+#X connect 49 5 46 0;
243
+#X connect 49 6 47 0;
244
+#X connect 50 0 26 0;
245
+#X connect 52 0 53 0;
246
+#X connect 53 0 55 0;
247
+#X connect 53 1 54 0;
248
+#X connect 54 0 15 0;
249
+#X connect 56 0 26 0;
250
+#X connect 57 0 26 0;
251
+#X connect 58 0 26 0;
252
+#X connect 59 0 52 0;
253
+#X connect 64 0 65 0;
254
+#X connect 65 0 61 0;
255
+#X connect 65 1 62 0;
256
+#X connect 65 2 63 0;
257
+#X connect 68 0 50 0;
258
+#X connect 71 0 73 1;
259
+#X connect 72 0 73 0;
260
+#X connect 73 0 74 0;
261
+#X connect 76 0 86 1;
262
+#X connect 77 0 88 0;
263
+#X connect 78 0 5 1;
264
+#X connect 79 0 81 0;
265
+#X connect 80 0 81 0;
266
+#X connect 81 0 5 1;
267
+#X connect 83 0 6 0;
268
+#X connect 84 0 83 0;
269
+#X connect 85 0 50 0;
270
+#X connect 86 0 18 0;
271
+#X connect 87 0 92 0;
272
+#X connect 88 0 89 0;
273
+#X connect 89 0 90 0;
274
+#X connect 90 0 91 0;
275
+#X connect 91 0 87 0;
276
+#X connect 92 0 93 0;
277
+#X connect 93 0 94 0;
278
+#X connect 94 0 95 0;
279
+#X connect 95 0 96 0;
280
+#X connect 96 0 97 0;
281
+#X connect 97 0 98 0;
282
+#X connect 98 0 99 0;
283
+#X connect 99 0 100 0;
284
+#X connect 101 0 102 0;
285
+#X connect 102 0 103 0;
286
+#X connect 103 0 104 0;
287
+#X connect 104 0 105 0;
288
+#X connect 105 0 106 0;
289
+#X connect 106 0 107 0;
290
+#X connect 107 0 108 0;
291
+#X connect 108 0 109 0;
292
+#X connect 109 0 110 0;
293
+#X connect 110 0 111 0;
294
+#X connect 111 0 112 0;
295
+#X connect 112 0 113 0;
296
+#X connect 113 0 114 0;
297
+#X connect 114 0 115 0;
298
+#X connect 115 0 116 0;
299
+#X connect 116 0 117 0;
300
+#X connect 118 0 120 0;
301
+#X connect 119 0 124 0;
302
+#X connect 120 0 121 0;
303
+#X connect 121 0 122 0;
304
+#X connect 122 0 123 0;
305
+#X connect 123 0 119 0;
306
+#X connect 124 0 125 0;
307
+#X connect 125 0 126 0;
308
+#X connect 126 0 127 0;
309
+#X connect 127 0 128 0;
310
+#X connect 128 0 129 0;
311
+#X connect 129 0 130 0;
312
+#X connect 130 0 131 0;
313
+#X connect 131 0 132 0;
314
+#X connect 133 0 137 2;
315
+#X connect 134 0 138 2;
316
+#X connect 135 0 137 0;
317
+#X connect 136 0 138 0;
318
+#X connect 137 0 118 0;
319
+#X connect 138 0 77 0;
320
+#X connect 139 0 141 0;
321
+#X connect 140 0 145 0;
322
+#X connect 141 0 142 0;
323
+#X connect 142 0 143 0;
324
+#X connect 143 0 144 0;
325
+#X connect 144 0 140 0;
326
+#X connect 145 0 146 0;
327
+#X connect 146 0 147 0;
328
+#X connect 147 0 148 0;
329
+#X connect 148 0 149 0;
330
+#X connect 149 0 150 0;
331
+#X connect 150 0 151 0;
332
+#X connect 151 0 152 0;
333
+#X connect 152 0 153 0;
334
+#X connect 154 0 157 2;
335
+#X connect 155 0 157 0;
336
+#X connect 156 0 157 2;
337
+#X connect 157 0 139 0;
338
+#X connect 158 0 160 0;
339
+#X connect 159 0 164 0;
340
+#X connect 160 0 161 0;
341
+#X connect 161 0 162 0;
342
+#X connect 162 0 163 0;
343
+#X connect 163 0 159 0;
344
+#X connect 164 0 165 0;
345
+#X connect 165 0 166 0;
346
+#X connect 166 0 167 0;
347
+#X connect 167 0 168 0;
348
+#X connect 168 0 169 0;
349
+#X connect 169 0 170 0;
350
+#X connect 170 0 171 0;
351
+#X connect 171 0 172 0;
352
+#X connect 173 0 175 2;
353
+#X connect 174 0 175 0;
354
+#X connect 175 0 158 0;
355
+#X connect 176 0 5 2;
356
+#X connect 177 0 6 0;
357
+#X connect 178 0 176 0;
358
+#X connect 179 0 1 0;