cremefraiche 1.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +114 -0
  3. data/bin/cremefraiche +117 -0
  4. data/bin/cremefraicheGui +26 -0
  5. data/cremefraiche.gemspec +24 -0
  6. data/doc/gui_howto.pdf +0 -0
  7. data/lib/LANG +1 -0
  8. data/lib/basic_logging.rb +170 -0
  9. data/lib/busy_indicator/.busy_function_test.rb.swp +0 -0
  10. data/lib/busy_indicator/.busy_indicator.rb.swp +0 -0
  11. data/lib/busy_indicator/.color_output.rb.swp +0 -0
  12. data/lib/busy_indicator/busy_function_test.rb +50 -0
  13. data/lib/busy_indicator/busy_indicator.rb +89 -0
  14. data/lib/busy_indicator/color_output.rb +45 -0
  15. data/lib/cfprawn.rb +387 -0
  16. data/lib/confcheck.rb +103 -0
  17. data/lib/config +187 -0
  18. data/lib/configuration.rb +234 -0
  19. data/lib/configuration.rb~ +247 -0
  20. data/lib/cremefraiche.rb +181 -0
  21. data/lib/emlfile.rb +136 -0
  22. data/lib/file_checking.rb +82 -0
  23. data/lib/gui/.ButtonLabel.rb.swp +0 -0
  24. data/lib/gui/.conf_value.rb.swp +0 -0
  25. data/lib/gui/.cremefraicheGui.rb.swp +0 -0
  26. data/lib/gui/.message_dialog.rb.swp +0 -0
  27. data/lib/gui/AboutDialog.rb +63 -0
  28. data/lib/gui/ButtonLabel.rb +41 -0
  29. data/lib/gui/ConfDialog.rb +610 -0
  30. data/lib/gui/HowtoDialog.rb +183 -0
  31. data/lib/gui/conf_option.rb +274 -0
  32. data/lib/gui/conf_value.rb +58 -0
  33. data/lib/gui/cremefraicheGui.rb +568 -0
  34. data/lib/gui/gtk-about.xpm +90 -0
  35. data/lib/gui/gtk-close.xpm +90 -0
  36. data/lib/gui/gtk-execute.xpm +118 -0
  37. data/lib/gui/gtk-open.xpm +147 -0
  38. data/lib/gui/gtk-properties.xpm +378 -0
  39. data/lib/gui/gtk-quit.xpm +352 -0
  40. data/lib/gui/gtk-remove.xpm +123 -0
  41. data/lib/gui/gtk-save.xpm +214 -0
  42. data/lib/gui/gtk-stop.xpm +344 -0
  43. data/lib/gui/help.xpm +463 -0
  44. data/lib/gui/icon.xpm +300 -0
  45. data/lib/gui/message_dialog.rb +34 -0
  46. data/lib/gui/okay.xpm +49 -0
  47. data/lib/gui/preferences-color.xpm +252 -0
  48. data/lib/gui/view.xpm +75 -0
  49. data/lib/html2text.rb +195 -0
  50. data/lib/icon/icon.xpm +300 -0
  51. data/lib/icon/icon_big.xpm +661 -0
  52. data/lib/license.rb +38 -0
  53. data/lib/log.conf +65 -0
  54. data/lib/tag_munging.rb +89 -0
  55. data/lib/translating.rb +78 -0
  56. data/lib/translations +609 -0
  57. data/lib/version.rb +25 -0
  58. metadata +221 -0
data/lib/gui/view.xpm ADDED
@@ -0,0 +1,75 @@
1
+ /* XPM */
2
+ static char * view_xpm[] = {
3
+ "24 24 48 1",
4
+ " c None",
5
+ ". c #000000",
6
+ "+ c #252525",
7
+ "@ c #707070",
8
+ "# c #A4A4A4",
9
+ "$ c #C5C5C5",
10
+ "% c #FFFFFF",
11
+ "& c #FFFFFE",
12
+ "* c #9A8567",
13
+ "= c #754C24",
14
+ "- c #C3C3C3",
15
+ "; c #B8B8B8",
16
+ "> c #828282",
17
+ ", c #383838",
18
+ "' c #1B1B1B",
19
+ ") c #7A7A7A",
20
+ "! c #EEEEEE",
21
+ "~ c #E3DCD6",
22
+ "{ c #653100",
23
+ "] c #673300",
24
+ "^ c #663300",
25
+ "/ c #A5A5A5",
26
+ "( c #1A1A1A",
27
+ "_ c #EFEFEF",
28
+ ": c #7F5222",
29
+ "< c #612E00",
30
+ "[ c #696969",
31
+ "} c #5B2400",
32
+ "| c #6B3600",
33
+ "1 c #000200",
34
+ "2 c #F1F1F1",
35
+ "3 c #6A3500",
36
+ "4 c #130A00",
37
+ "5 c #8D8D8D",
38
+ "6 c #010101",
39
+ "7 c #7F7F7F",
40
+ "8 c #E2DBD5",
41
+ "9 c #E6E0D9",
42
+ "0 c #B6B6B6",
43
+ "a c #353535",
44
+ "b c #232323",
45
+ "c c #818181",
46
+ "d c #AAAAA7",
47
+ "e c #533D20",
48
+ "f c #512900",
49
+ "g c #553F22",
50
+ "h c #82827F",
51
+ "i c #5C5C5C",
52
+ " ",
53
+ " ",
54
+ " ",
55
+ " ",
56
+ " ",
57
+ " ",
58
+ " ",
59
+ " ..... ",
60
+ " ............. ",
61
+ " .+@#$%&*==*%-;>,.. ",
62
+ " ')!%%%%~{]^^]{~%%%%/( ",
63
+ " _%%%%%:^^<<^^:%%%%% . ",
64
+ " [%%%%%}^|11|^}%%%%/ ",
65
+ " +2%%%:^3443^:%%%5 ",
66
+ " 67!%8{]33]{9%0a ",
67
+ " .bcdeffghi.. ",
68
+ " ..... ",
69
+ " ",
70
+ " ",
71
+ " ",
72
+ " ",
73
+ " ",
74
+ " ",
75
+ " "};
data/lib/html2text.rb ADDED
@@ -0,0 +1,195 @@
1
+ #encoding: UTF-8
2
+
3
+ =begin
4
+ /***************************************************************************
5
+ * ©2023-2023, Michael Uplawski <michael.uplawski@uplawski.eu> *
6
+ * *
7
+ * This program is free software; you can redistribute it and/or modify *
8
+ * it under the terms of the WTFPL 2.0 or later version of the LICENSE. *
9
+ * See https://wtfpl2.com/ for details. *
10
+ * *
11
+ * This program is distributed in the hope that it will be useful, *
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
14
+ * *
15
+ ***************************************************************************/
16
+ =end
17
+ require 'rubygems'
18
+ require 'nokogiri'
19
+ require_relative 'basic_logging'
20
+ require_relative 'configuration'
21
+ require_relative 'tag_munging'
22
+ # An object of this class formats the HTML from an email for rendering
23
+ # in a PRAWN-generated PDF-file
24
+
25
+ class Html2Text
26
+ include BasicLogging
27
+ include TagMunging
28
+
29
+ def initialize( html)
30
+ #remove line-breaks
31
+ html.gsub!("\n", ' ')
32
+ # whatever...
33
+ html.gsub!("<BR>", "\n")
34
+ html.gsub!("<BR/>", "\n")
35
+ html.gsub!("<br>", "\n")
36
+ html.gsub!("<br/>", "\n")
37
+ html.gsub!("<br />", "\n")
38
+ # Try to remove html-comments
39
+ html.gsub! /\<!--.*(-->?)/, ''
40
+ html.gsub! /\s+/, ' '
41
+ @html = Nokogiri::HTML::fragment(html)
42
+ define_tag_handlers if @html
43
+ @out_text = ''
44
+ end
45
+
46
+ # def text(tag = @html)
47
+ def text()
48
+ @out_text = handle(@html)
49
+ # remove empty lines
50
+ @out_text.gsub! /^$\n/, ''
51
+ # replace multiple white-spaces by 1
52
+ @out_text.gsub! /\t+/, "\t"
53
+ @out_text.gsub! /\ +/, ' '
54
+ return @out_text
55
+ end
56
+
57
+ #TODO: verify children in the node-list
58
+ def handle(tag = @html)
59
+ debug('handle tag ' << tag.name)
60
+ tcontent = ''
61
+ if(tag.respond_to?(:children) )
62
+ tag.children().each do |t|
63
+ debug("\tchild tag " << t.name)
64
+ tresult = nil
65
+ handler = @@tag_handlers[t.name.downcase]
66
+ if(!handler)
67
+ handler = @@tag_handlers['any']
68
+ end
69
+ tresult = handler.call(t)
70
+ tcontent << (tresult ? tresult : '')
71
+ end
72
+ else
73
+ tcontent = tag.to_s
74
+ end
75
+ tcontent.gsub("=09", " ")
76
+ end
77
+
78
+ private
79
+ def define_tag_handlers
80
+ @@tag_handlers = {}
81
+
82
+ do_nothing = Proc.new() do |value|
83
+ debug("do_nothing() - value is " << value)
84
+ ''
85
+ end
86
+
87
+ @@tag_handlers['a'] = Proc.new() do |value|
88
+ v = handle(value)
89
+ link_color = "#" << $CONF.link_color if $CONF.link_color
90
+ link_color ||= DEF_LINK_COLOR
91
+
92
+ # someting in Nokogiri prevents me from setting the link content,
93
+ # I write the tag explicitly.
94
+ link = '<link href="' << value['href'] << '">'
95
+ link << '<color rgb="' << link_color << '">'
96
+ link << v << '</color></link>'
97
+ =begin
98
+ # DOES NOT WORK:
99
+ link = new_tag(@html, 'link', :content => v, :href => value['href'])
100
+ color = new_tag(@html, 'color', :parent => link)
101
+ color['rgb'] = link_color
102
+ =end
103
+ debug('link is : ' << link.to_s)
104
+ link
105
+ end
106
+
107
+ @@tag_handlers['strong'] = Proc.new() do |value|
108
+ "<b>" << handle(value) <<"</b>"
109
+ end
110
+ @@tag_handlers['body'] = Proc.new() do |value|
111
+ handle(value)
112
+ end
113
+ @@tag_handlers['blockquote'] = Proc.new() do |value|
114
+ content = "\n ------------------------------- "
115
+ handle(value).split("\n").each do |l|
116
+ content << "\n| " << l
117
+ end
118
+ content << "\n ------------------------------- "
119
+ content
120
+ end
121
+
122
+ @@tag_handlers['div'] = Proc.new() do |value|
123
+ "\n" << handle(value)
124
+ end
125
+
126
+ @@tag_handlers['style'] = do_nothing
127
+ @@tag_handlers['meta'] = do_nothing
128
+ @@tag_handlers['head'] = do_nothing
129
+ @@tag_handlers['doctype'] = do_nothing
130
+ @@tag_handlers['img'] = do_nothing
131
+
132
+ @@tag_handlers['center'] = Proc.new() do |value|
133
+ handle(value)
134
+ end
135
+
136
+ @@tag_handlers['font'] = Proc.new() do |value|
137
+ handle(value)
138
+ end
139
+
140
+ @@tag_handlers['span'] = Proc.new() do |value|
141
+ handle(value)
142
+ end
143
+
144
+ @@tag_handlers['tbody'] = Proc.new() do |value|
145
+ handle(value)
146
+ end
147
+
148
+
149
+ @@tag_handlers['title'] = Proc.new() do |value|
150
+ "<b>" << handle(value ) << "</b>\n"
151
+ end
152
+
153
+ @@tag_handlers['td'] = Proc.new() do |value|
154
+ debug("\t\thandler td : " << value)
155
+ v = handle(value)
156
+ ntag = ''
157
+ if(v && !v.strip.empty?)
158
+ ntag << v
159
+ end
160
+ ntag
161
+ end
162
+ @@tag_handlers['table'] = Proc.new() do |value|
163
+ handle(value)
164
+ end
165
+
166
+ @@tag_handlers['center'] = Proc.new() do |value|
167
+ "\n" << handle(value)
168
+ end
169
+
170
+ @@tag_handlers['tr'] = Proc.new() do |value|
171
+ "\n" << handle(value )
172
+ end
173
+
174
+ @@tag_handlers['p'] = Proc.new() do |value|
175
+ "\n" << handle(value )
176
+ end
177
+
178
+ @@tag_handlers['b'] = Proc.new() do |value|
179
+ '<b>' << handle(value) << ' </b>'
180
+ end
181
+
182
+ @@tag_handlers['i'] = Proc.new() do |value|
183
+ "<i>" << handle(value)<< "</i>"
184
+ end
185
+ @@tag_handlers['any'] = Proc.new() do |value|
186
+ debug("\t\thandling any : |" << value << "|")
187
+ unless value.to_s.strip.empty?
188
+ value
189
+ else
190
+ nil
191
+ end
192
+ end
193
+ end
194
+ end
195
+
data/lib/icon/icon.xpm ADDED
@@ -0,0 +1,300 @@
1
+ /* XPM */
2
+ static char * icon_xpm[] = {
3
+ "48 48 249 2",
4
+ " c None",
5
+ ". c #000200",
6
+ "+ c #0C0F0B",
7
+ "@ c #790200",
8
+ "# c #1A1C19",
9
+ "$ c #B5001B",
10
+ "% c #272927",
11
+ "& c #C30000",
12
+ "* c #B10704",
13
+ "= c #CB0001",
14
+ "- c #BC0502",
15
+ "; c #2C2D2B",
16
+ "> c #BC0713",
17
+ ", c #BD090C",
18
+ "' c #C90A0B",
19
+ ") c #762223",
20
+ "! c #C90C1A",
21
+ "~ c #B5121D",
22
+ "{ c #CA0D14",
23
+ "] c #A51815",
24
+ "^ c #BF111C",
25
+ "/ c #C01223",
26
+ "( c #5A2C59",
27
+ "_ c #C21417",
28
+ ": c #B71624",
29
+ "< c #393B38",
30
+ "[ c #84234B",
31
+ "} c #3C3A3D",
32
+ "| c #C1162A",
33
+ "1 c #C31725",
34
+ "2 c #3C3D3B",
35
+ "3 c #652D64",
36
+ "4 c #B61A3A",
37
+ "5 c #6C2C67",
38
+ "6 c #3E403E",
39
+ "7 c #B91D37",
40
+ "8 c #702E75",
41
+ "9 c #C81D1B",
42
+ "0 c #40423F",
43
+ "a c #C91F16",
44
+ "b c #A7272B",
45
+ "c c #BE212F",
46
+ "d c #5D3A5D",
47
+ "e c #434749",
48
+ "f c #454744",
49
+ "g c #CC2425",
50
+ "h c #633F63",
51
+ "i c #484A47",
52
+ "j c #CD262C",
53
+ "k c #BE2E42",
54
+ "l c #B33334",
55
+ "m c #834140",
56
+ "n c #714270",
57
+ "o c #4F504E",
58
+ "p c #CC2F2D",
59
+ "q c #C2313F",
60
+ "r c #8A3D71",
61
+ "s c #91413F",
62
+ "t c #CF3335",
63
+ "u c #625153",
64
+ "v c #6A4C6E",
65
+ "w c #A93C74",
66
+ "x c #575856",
67
+ "y c #AF3C71",
68
+ "z c #C23C4E",
69
+ "A c #C13C53",
70
+ "B c #CE3B37",
71
+ "C c #585C5F",
72
+ "D c #765176",
73
+ "E c #5B5C5A",
74
+ "F c #D03D3E",
75
+ "G c #A84382",
76
+ "H c #5F5D61",
77
+ "I c #625D5C",
78
+ "J c #C94147",
79
+ "K c #5E605D",
80
+ "L c #B34571",
81
+ "M c #755A76",
82
+ "N c #C54468",
83
+ "O c #CF4546",
84
+ "P c #666468",
85
+ "Q c #646663",
86
+ "R c #BB4B71",
87
+ "S c #BB4D78",
88
+ "T c #67677C",
89
+ "U c #D64B4B",
90
+ "V c #6B6D6A",
91
+ "W c #766975",
92
+ "X c #B75586",
93
+ "Y c #D5524D",
94
+ "Z c #D55252",
95
+ "` c #726E6C",
96
+ " . c #6F716E",
97
+ ".. c #C95769",
98
+ "+. c #727074",
99
+ "@. c #D45855",
100
+ "#. c #DA5757",
101
+ "$. c #D25960",
102
+ "%. c #737472",
103
+ "&. c #B95D8B",
104
+ "*. c #D55A5C",
105
+ "=. c #8D6C7E",
106
+ "-. c #6C7878",
107
+ ";. c #757A7C",
108
+ ">. c #707C7C",
109
+ ",. c #D76360",
110
+ "'. c #7B7C79",
111
+ "). c #6D807F",
112
+ "!. c #B96C6D",
113
+ "~. c #7E7C80",
114
+ "{. c #A371A1",
115
+ "]. c #80827F",
116
+ "^. c #AC70B6",
117
+ "/. c #B6709B",
118
+ "(. c #DA6B65",
119
+ "_. c #D56D73",
120
+ ":. c #DA6D6C",
121
+ "<. c #AF74B3",
122
+ "[. c #C7728A",
123
+ "}. c #C3739C",
124
+ "|. c #DB746F",
125
+ "1. c #B17AB2",
126
+ "2. c #E77274",
127
+ "3. c #BA7BB6",
128
+ "4. c #CF7992",
129
+ "5. c #8D8F8C",
130
+ "6. c #DA7B79",
131
+ "7. c #BC7FAD",
132
+ "8. c #D67B8A",
133
+ "9. c #BB80B4",
134
+ "0. c #B981BA",
135
+ "a. c #B986AB",
136
+ "b. c #E0807E",
137
+ "c. c #949693",
138
+ "d. c #E9807B",
139
+ "e. c #C887B0",
140
+ "f. c #BE8ABB",
141
+ "g. c #DE8686",
142
+ "h. c #C38CB8",
143
+ "i. c #BE8DC4",
144
+ "j. c #AF94C4",
145
+ "k. c #E28C98",
146
+ "l. c #E08E8C",
147
+ "m. c #D694AB",
148
+ "n. c #C197CC",
149
+ "o. c #B69DB3",
150
+ "p. c #C797C1",
151
+ "q. c #C597C7",
152
+ "r. c #D094C8",
153
+ "s. c #D99AA3",
154
+ "t. c #E19B94",
155
+ "u. c #C79EC6",
156
+ "v. c #D29CBB",
157
+ "w. c #E89A90",
158
+ "x. c #E19D9B",
159
+ "y. c #D29DCF",
160
+ "z. c #CAA1C9",
161
+ "A. c #ED9B9E",
162
+ "B. c #C9A3D0",
163
+ "C. c #D4A4C2",
164
+ "D. c #D9A5B7",
165
+ "E. c #E6A4A8",
166
+ "F. c #C6A9D7",
167
+ "G. c #E9A4A3",
168
+ "H. c #CBA9CF",
169
+ "I. c #E5A7A3",
170
+ "J. c #E4A8AA",
171
+ "K. c #C8ACDD",
172
+ "L. c #D1ACCD",
173
+ "M. c #D6ADC9",
174
+ "N. c #CEAFDB",
175
+ "O. c #D2AFD6",
176
+ "P. c #DBADDD",
177
+ "Q. c #D7B0DE",
178
+ "R. c #CEB5DC",
179
+ "S. c #C8BBBB",
180
+ "T. c #E8B3B3",
181
+ "U. c #DFB4CA",
182
+ "V. c #D5B6D5",
183
+ "W. c #F2B4B0",
184
+ "X. c #DDBCD5",
185
+ "Y. c #D8BED5",
186
+ "Z. c #EABCB9",
187
+ "`. c #D6BFDC",
188
+ " + c #C6C8C5",
189
+ ".+ c #E9BFC8",
190
+ "++ c #E1C1CE",
191
+ "@+ c #D6C2E5",
192
+ "#+ c #DCC2D9",
193
+ "$+ c #E9C3C4",
194
+ "%+ c #EFC2C5",
195
+ "&+ c #DFC5DD",
196
+ "*+ c #D4C8E9",
197
+ "=+ c #EFC9CA",
198
+ "-+ c #EACBCA",
199
+ ";+ c #DFCCE2",
200
+ ">+ c #D1D3D0",
201
+ ",+ c #E3D1D9",
202
+ "'+ c #E2D2EE",
203
+ ")+ c #E1D6E9",
204
+ "!+ c #D9DBD8",
205
+ "~+ c #E1DDEF",
206
+ "{+ c #E7DDF4",
207
+ "]+ c #F0DDE2",
208
+ "^+ c #ECDFDF",
209
+ "/+ c #EAE0E7",
210
+ "(+ c #F5DEDB",
211
+ "_+ c #E1E4E0",
212
+ ":+ c #F1DEED",
213
+ "<+ c #E9E2EE",
214
+ "[+ c #E4E7F4",
215
+ "}+ c #EDE7E6",
216
+ "|+ c #EBE8ED",
217
+ "1+ c #E9EBE8",
218
+ "2+ c #F6E8E9",
219
+ "3+ c #EAECE9",
220
+ "4+ c #F3E9F0",
221
+ "5+ c #EEEBF0",
222
+ "6+ c #F1EBEA",
223
+ "7+ c #E8EEF0",
224
+ "8+ c #ECEEEB",
225
+ "9+ c #FFEAED",
226
+ "0+ c #EEF0ED",
227
+ "a+ c #EFF0FA",
228
+ "b+ c #EFF2EE",
229
+ "c+ c #F1F3F0",
230
+ "d+ c #EEF4F6",
231
+ "e+ c #F7F2F0",
232
+ "f+ c #ECF5FD",
233
+ "g+ c #F6F3F8",
234
+ "h+ c #F3F5F2",
235
+ "i+ c #FCF2F9",
236
+ "j+ c #EBF9F9",
237
+ "k+ c #F5F7F4",
238
+ "l+ c #F0F8FF",
239
+ "m+ c #F3F8FB",
240
+ "n+ c #FCF6F5",
241
+ "o+ c #F9F7FB",
242
+ "p+ c #F7F9F6",
243
+ "q+ c #F1FBF5",
244
+ "r+ c #F2FCF7",
245
+ "s+ c #F9FBF7",
246
+ "t+ c #FDFAFF",
247
+ "u+ c #F1FEFF",
248
+ "v+ c #FAFCF9",
249
+ "w+ c #FFFBF9",
250
+ "x+ c #FBFDFA",
251
+ "y+ c #F8FEFF",
252
+ "z+ c #FDFFFC",
253
+ " ",
254
+ " ",
255
+ " ",
256
+ " ",
257
+ " ",
258
+ " ",
259
+ " & ",
260
+ " { & U j Z ",
261
+ " * @ j.r ~ a. ",
262
+ ". % V E E E E E E E E E E E E E E E C u ] H ( n T b [ d E E E E E E E H C E E E E E E E E Q ; . ",
263
+ "; V +z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+9+#.z+y.z+z+d.k.P.z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+z+>+ .o ",
264
+ "0 z+o 5.z+z+z+z+z+z+z+z+z+z+z+z+y+z+z+Z.@.'+L.z+z+:.E.q.4+z+x+y+x+v+v+v+v+s+s+s+s+t+s+z+ 0 z+Q ",
265
+ "2 z+z+Q %.z+z+z+z+z+z+z+z+z+w+z+z+z+z+=+#.@+#+z+z+U %+q.<+z+v+v+v+t+s+s+s+s+s+s+s+o+z+ 0 0+z+E ",
266
+ "2 z+z+z+'.K z+z+z+z+z+z+z+z+z+z+z+z+z+(+U R.#+z+n+F ]+q.4+z+s+s+y+s+s+s+o+s+s+o+p+z+ f c+z+z+E ",
267
+ "2 z+z+z+z+c.o s+z+z+z+z+z+z+z+z+w+x+z+2+Y C.V.z+=+#.:+p.g+x+s+s+s+s+w+s+s+s+p+p+z+ i p+t+k+z+E ",
268
+ "2 z+z+z+z+z+ 6 1+z+v+z+x+x+x+x+v+v+z+w+#.m.O.z+g.b.)+z.x+s+s+s+s+s+p+p+p+p+k+z+c.i s+v+g+k+z+E ",
269
+ "2 z+z+z+z+z+z+ +< >+z+x+x+w+v+v+v+s+v+z+:.8.B.y+U =+O.X.z+s+o+n+p+p+p+n+k+k+z+].x v+s+k+k+h+z+E ",
270
+ "2 z+z+z+x+x+v+z+!+6 z+s+v+s+s+s+t+s+z+G.$.q..+B y+f.<+x+p+p+k+k+k+k+k+k+z+].K z+x+c+h+h+c+z+C ",
271
+ "2 z+z+x+x+x+v+v+z+5+f z+x+s+s+s+s+s+y+2+t N.z w.)+p.s+p+k+k+o+k+k+k+k+z+Q < z+p+c+c+c+c+g+z+E ",
272
+ "2 z+z+v+v+v+v+s+p+z+ . c.z+x+s+s+s+s+s+z+Z 4.1 n+p.#+v+n+k+k+k+k+h+s+z+V %.x +w+c+d+c+c+g+z+E ",
273
+ "< z+z+s+s+s+s+s+z+_+0 }+Q %.z+x+s+s+s+o+y+T.& ..{+f.5+p+k+m+k+k+d+k+z+V .z+ +0 w+e+c+c+c+c+z+E ",
274
+ "< z+x+s+s+s+s+z+t+f +z+z+'.I 0+8+3+3+3+8+}+& /.1.L.0+1+1+7+1+1+1+8+K %.z+b+z+'.'.z+e+b+b+b+z+E ",
275
+ "< z+v+s+s+s+s+z+Q c.z+k+s+z+5.E .V V ` -.s = [ 8 W .V V V V V .x 5.z+c+b+k+o+e +p+b+b+b+z+x ",
276
+ "< z+s+m+s+p+z+5.P z+e+k+k+g+z+c+0+0+0+m+}+t G.c <.|+b+7+3+3+3+3+1+0+s+b+b+b+d+s+ +0 m+7+0+0+z+x ",
277
+ "< z+s+o+k+z+ f v+v+k+k+d+e+e+n+n+s+v+y+,.b.l+| X ;+x+k+k+k+h+h+k+h+b+b+b+b+7+6+z+'.;.z+0+8+z+x ",
278
+ "< z+s+k+v+1+< !+v+h+e+m+y+y+y+m+6+]+^+T.p p+R.[.q K.y+h+b+b+b+b+b+b+b+b+0+0+0+0+b+c+f s+5+z+x ",
279
+ "< z+s+m+z+i z+d+e+y+y+$+:.F g 9 g g & 9 9 / O ' R ++d+u+d+6+6+0+0+0+7+8+8+5+8+8+k+ +0 c+1+z+x ",
280
+ "< z+d+z+ .].z+c+e+u+-+t 9 (.x.D.v.z...7 7.G y R k & _ p |.$+u+u+d+8+8+8+6+8+8+8+8+|+z+~.%.z+z+x ",
281
+ "< z+z+ o z+b+c+u+Z.{ l.5+@+i.0.n.}._ M.^.<.H.K.n.1 w w 7 > p t.}+u+6+6+8+3+3+3+5+3+8+c+f z+x ",
282
+ "< z+>+2 0+k+c+c+e+g Z.a+0.f.Y.5+c+g T.<+9./+s+k+u+I.: ^.B.f.L $ 9 x.j+d+3+1+1+1+1+3+1+s+ 0 z+x ",
283
+ "2 z+} +z+c+c+m+J.@.u+9.L.h+r+u+F _.m+9.Y.c+8+7+6+q+F R ~+6+~+O.&.> F |+j+1+3+3+1+3+3+1+s+'.5.V ",
284
+ "0 K z+e+b+b+u+g.l.`.u.k+c+u+*.O u+p.u.c+8+8+8+3+j+-+> h.d+8+c+d+`.A _ ,+j+1+1+5+3+3+1+3+c+x % ",
285
+ ". ].z+0+b+b+b+j+l.b.N.;+u+u+,.B r+L.f.5+0+8+3+3+3+3+j+|.4 *+b+5+1+b+f+_.| ;+b+3+1+3+3+3+3+k+ ++ ",
286
+ "; k+g+0+0+0+0+d+$+t F.[+^+F F u+V.9./+0+6+6+1+1+1+1+1+c+p S [+0+1+3+b+u+O L )+b+3+1+3+1+1+1+z+x ",
287
+ "< s+b+0+6+8+8+0+m+@.^ J a 6.m+H.3.<+b+1+3+3+3+5+1+3+1+d+-+, e.j+1+1+1+j+I.z n.5+3+1+3+1+3+3+z+x ",
288
+ "2 z+z+z+z+z+z+z+z+z+A.N U.{+r.y.i+z+z+z+z+z+z+z+z+z+z+z+z+W.! M.y+z+z+z+T.2.Q.:+z+z+z+z+z+z+z+K ",
289
+ "# '.%.%.%. . . . . .;.v 5 3 h +.%. . . . . . . . . . . .` >.) ^ =.>.-.).l m D M %. . . . . .'.% ",
290
+ " *.* !.S.!.- {.o. ",
291
+ " s.c 9 ' p. ",
292
+ " ;+7.3.0.9.&+ ",
293
+ " L.z.&+ ",
294
+ " ",
295
+ " ",
296
+ " ",
297
+ " ",
298
+ " ",
299
+ " ",
300
+ " "};