phpBB
Statistics
| Revision:

root / trunk / phpBB / includes / captcha / captcha_gd.php

History | View | Annotate | Download (70.3 kB)

1 5862 davidmj
<?php
2 8147 acydburn
/**
3 5862 davidmj
*
4 5862 davidmj
* @package VC
5 8147 acydburn
* @copyright (c) 2006 phpBB Group
6 11653 git-gate
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
7 5862 davidmj
*
8 5862 davidmj
*/
9 5862 davidmj
10 8147 acydburn
/**
11 8147 acydburn
* @ignore
12 8147 acydburn
*/
13 8147 acydburn
if (!defined('IN_PHPBB'))
14 8147 acydburn
{
15 8147 acydburn
        exit;
16 8147 acydburn
}
17 7478 kellanved
18 6304 acydburn
/**
19 7478 kellanved
* Original Author - Xore (Robert Hetzler)
20 7478 kellanved
* With contributions from Neothermic
21 6304 acydburn
*
22 6058 acydburn
* @package VC
23 5862 davidmj
*/
24 5862 davidmj
class captcha
25 5862 davidmj
{
26 6584 acydburn
        var $width = 360;
27 6584 acydburn
        var $height = 96;
28 6584 acydburn
29 9283 Kellanved
30 7478 kellanved
        /**
31 7478 kellanved
        * Create the image containing $code with a seed of $seed
32 7478 kellanved
        */
33 6705 davidmj
        function execute($code, $seed)
34 5862 davidmj
        {
35 5862 davidmj
                global $config;
36 9581 Kellanved
37 9609 Kellanved
                mt_srand($seed);
38 5862 davidmj
39 7478 kellanved
                // Create image
40 7478 kellanved
                $img = imagecreatetruecolor($this->width, $this->height);
41 5862 davidmj
42 7478 kellanved
                // Generate colours
43 7478 kellanved
                $colour = new colour_manager($img, array(
44 7478 kellanved
                        'random'        => true,
45 7478 kellanved
                        'min_value'        => 60,
46 7478 kellanved
                ), 'hsv');
47 7478 kellanved
48 7478 kellanved
                $scheme = $colour->colour_scheme('background', false);
49 7478 kellanved
                $scheme = $colour->mono_range($scheme, 10, false);
50 7478 kellanved
                shuffle($scheme);
51 8147 acydburn
52 7478 kellanved
                $bg_colours = array_splice($scheme, mt_rand(6, 12));
53 7478 kellanved
54 7478 kellanved
                // Generate code characters
55 9320 Kellanved
                $characters = $sizes = $bounding_boxes = $noise = array();
56 7486 kellanved
                $width_avail = $this->width - 15;
57 7478 kellanved
                $code_len = strlen($code);
58 9403 Kellanved
                $captcha_bitmaps = $this->captcha_bitmaps();
59 7478 kellanved
60 7478 kellanved
                for ($i = 0; $i < $code_len; ++$i)
61 5862 davidmj
                {
62 7478 kellanved
                        $characters[$i] = new char_cube3d($captcha_bitmaps, $code[$i]);
63 7478 kellanved
64 7478 kellanved
                        list($min, $max) = $characters[$i]->range();
65 7478 kellanved
                        $sizes[$i] = mt_rand($min, $max);
66 7478 kellanved
67 7478 kellanved
                        $box = $characters[$i]->dimensions($sizes[$i]);
68 7478 kellanved
                        $width_avail -= ($box[2] - $box[0]);
69 7478 kellanved
                        $bounding_boxes[$i] = $box;
70 5862 davidmj
                }
71 7478 kellanved
72 9320 Kellanved
73 7478 kellanved
                // Redistribute leftover x-space
74 7478 kellanved
                $offset = array();
75 7478 kellanved
                for ($i = 0; $i < $code_len; ++$i)
76 5862 davidmj
                {
77 7478 kellanved
                        $denom = ($code_len - $i);
78 7478 kellanved
                        $denom = max(1.3, $denom);
79 11173 git-gate
                        $offset[$i] = phpbb_mt_rand(0, (int) round((1.5 * $width_avail) / $denom));
80 7478 kellanved
                        $width_avail -= $offset[$i];
81 5862 davidmj
                }
82 5862 davidmj
83 7478 kellanved
                if ($config['captcha_gd_x_grid'])
84 7478 kellanved
                {
85 7478 kellanved
                        $grid = (int) $config['captcha_gd_x_grid'];
86 7478 kellanved
                        for ($y = 0; $y < $this->height; $y += mt_rand($grid - 2, $grid + 2))
87 7478 kellanved
                        {
88 7478 kellanved
                                $current_colour = $scheme[array_rand($scheme)];
89 7478 kellanved
                                imageline($img, mt_rand(0,4), mt_rand($y - 3, $y), mt_rand($this->width - 5, $this->width), mt_rand($y - 3, $y), $current_colour);
90 7478 kellanved
                        }
91 7478 kellanved
                }
92 5862 davidmj
93 7478 kellanved
                if ($config['captcha_gd_y_grid'])
94 5862 davidmj
                {
95 7478 kellanved
                        $grid = (int) $config['captcha_gd_y_grid'];
96 7478 kellanved
                        for ($x = 0; $x < $this->width; $x += mt_rand($grid - 2, $grid + 2))
97 7478 kellanved
                        {
98 7478 kellanved
                                $current_colour = $scheme[array_rand($scheme)];
99 7478 kellanved
                                imagedashedline($img, mt_rand($x -3, $x + 3), mt_rand(0, 4), mt_rand($x -3, $x + 3), mt_rand($this->height - 5, $this->height), $current_colour);
100 7478 kellanved
                        }
101 5862 davidmj
                }
102 9403 Kellanved
                if ($config['captcha_gd_wave'] && ($config['captcha_gd_y_grid'] || $config['captcha_gd_y_grid']))
103 7478 kellanved
                {
104 9403 Kellanved
                        $this->wave($img);
105 7478 kellanved
                }
106 9403 Kellanved
107 9403 Kellanved
108 9320 Kellanved
                if ($config['captcha_gd_3d_noise'])
109 9320 Kellanved
                {
110 9609 Kellanved
                        $xoffset = mt_rand(0,9);
111 9403 Kellanved
                        $noise_bitmaps = $this->captcha_noise_bg_bitmaps();
112 9320 Kellanved
                        for ($i = 0; $i < $code_len; ++$i)
113 9320 Kellanved
                        {
114 11087 git-gate
                                $noise[$i] = new char_cube3d($noise_bitmaps, mt_rand(1, sizeof($noise_bitmaps['data'])));
115 9320 Kellanved
116 9320 Kellanved
                                list($min, $max) = $noise[$i]->range();
117 9320 Kellanved
                                //$box = $noise[$i]->dimensions($sizes[$i]);
118 9320 Kellanved
                        }
119 9320 Kellanved
                        $xoffset = 0;
120 9320 Kellanved
                        for ($i = 0; $i < $code_len; ++$i)
121 9320 Kellanved
                        {
122 9320 Kellanved
                                $dimm = $bounding_boxes[$i];
123 9320 Kellanved
                                $xoffset += ($offset[$i] - $dimm[0]);
124 9320 Kellanved
                                $yoffset = mt_rand(-$dimm[1], $this->height - $dimm[3]);
125 9320 Kellanved
126 9320 Kellanved
                                $noise[$i]->drawchar($sizes[$i], $xoffset, $yoffset, $img, $colour->get_resource('background'), $scheme);
127 9320 Kellanved
                                $xoffset += $dimm[2];
128 9320 Kellanved
                        }
129 9320 Kellanved
                }
130 9403 Kellanved
                $xoffset = 5;
131 9403 Kellanved
                for ($i = 0; $i < $code_len; ++$i)
132 9403 Kellanved
                {
133 9403 Kellanved
                        $dimm = $bounding_boxes[$i];
134 9403 Kellanved
                        $xoffset += ($offset[$i] - $dimm[0]);
135 9403 Kellanved
                        $yoffset = mt_rand(-$dimm[1], $this->height - $dimm[3]);
136 9403 Kellanved
137 9403 Kellanved
                        $characters[$i]->drawchar($sizes[$i], $xoffset, $yoffset, $img, $colour->get_resource('background'), $scheme);
138 9403 Kellanved
                        $xoffset += $dimm[2];
139 9403 Kellanved
                }
140 9283 Kellanved
                if ($config['captcha_gd_wave'])
141 9283 Kellanved
                {
142 9283 Kellanved
                        $this->wave($img);
143 9283 Kellanved
                }
144 7478 kellanved
                if ($config['captcha_gd_foreground_noise'])
145 7478 kellanved
                {
146 7478 kellanved
                        $this->noise_line($img, 0, 0, $this->width, $this->height, $colour->get_resource('background'), $scheme, $bg_colours);
147 7478 kellanved
                }
148 7478 kellanved
                // Send image
149 7478 kellanved
                header('Content-Type: image/png');
150 7478 kellanved
                header('Cache-control: no-cache, no-store');
151 7478 kellanved
                imagepng($img);
152 7478 kellanved
                imagedestroy($img);
153 7478 kellanved
        }
154 7478 kellanved
155 7478 kellanved
        /**
156 9283 Kellanved
        * Sinus
157 9283 Kellanved
        */
158 9283 Kellanved
        function wave($img)
159 9283 Kellanved
        {
160 9283 Kellanved
                global $config;
161 9283 Kellanved
162 9403 Kellanved
                $period_x = mt_rand(12,18);
163 9403 Kellanved
                $period_y = mt_rand(7,14);
164 9283 Kellanved
                $amp_x = mt_rand(5,10);
165 9283 Kellanved
                $amp_y = mt_rand(2,4);
166 9283 Kellanved
                $socket = mt_rand(0,100);
167 9283 Kellanved
168 9283 Kellanved
                $dampen_x = mt_rand($this->width/5, $this->width/2);
169 9283 Kellanved
                $dampen_y = mt_rand($this->height/5, $this->height/2);
170 9283 Kellanved
                $direction_x = (mt_rand (0, 1));
171 9283 Kellanved
                $direction_y = (mt_rand (0, 1));
172 9283 Kellanved
173 9283 Kellanved
                for ($i = 0; $i < $this->width; $i++)
174 9283 Kellanved
                {
175 9283 Kellanved
                        $dir = ($direction_x) ? $i : ($this->width - $i);
176 9283 Kellanved
                        imagecopy($img, $img, $i-1, sin($socket+ $i/($period_x + $dir/$dampen_x)) * $amp_x, $i, 0, 1, $this->height);
177 9283 Kellanved
                }
178 9283 Kellanved
                $socket = mt_rand(0,100);
179 9283 Kellanved
                for ($i = 0; $i < $this->height; $i++)
180 9283 Kellanved
                {
181 9283 Kellanved
                        $dir = ($direction_y) ? $i : ($this->height - $i);
182 9283 Kellanved
                        imagecopy($img, $img ,sin($socket + $i/($period_y + ($dir)/$dampen_y)) * $amp_y, $i-1, 0, $i, $this->width, 1);
183 9283 Kellanved
                }
184 9283 Kellanved
                return $img;
185 9283 Kellanved
        }
186 9283 Kellanved
187 9283 Kellanved
        /**
188 7478 kellanved
        * Noise line
189 7478 kellanved
        */
190 7478 kellanved
        function noise_line($img, $min_x, $min_y, $max_x, $max_y, $bg, $font, $non_font)
191 7478 kellanved
        {
192 7478 kellanved
                imagesetthickness($img, 2);
193 7478 kellanved
194 7478 kellanved
                $x1 = $min_x;
195 7478 kellanved
                $x2 = $max_x;
196 7478 kellanved
                $y1 = $min_y;
197 7478 kellanved
                $y2 = $min_y;
198 7478 kellanved
199 7478 kellanved
                do
200 5862 davidmj
                {
201 7478 kellanved
                        $line = array_merge(
202 7478 kellanved
                                array_fill(0, mt_rand(30, 60), $non_font[array_rand($non_font)]),
203 7478 kellanved
                                array_fill(0, mt_rand(30, 60), $bg)
204 7478 kellanved
                        );
205 7478 kellanved
206 7478 kellanved
                        imagesetstyle($img, $line);
207 7478 kellanved
                        imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);
208 7478 kellanved
209 7478 kellanved
                        $y1 += mt_rand(12, 35);
210 7478 kellanved
                        $y2 += mt_rand(12, 35);
211 7478 kellanved
                }
212 7478 kellanved
                while ($y1 < $max_y && $y2 < $max_y);
213 7478 kellanved
214 7478 kellanved
                $x1 = $min_x;
215 7478 kellanved
                $x2 = $min_x;
216 7478 kellanved
                $y1 = $min_y;
217 7478 kellanved
                $y2 = $max_y;
218 7478 kellanved
219 7478 kellanved
                do
220 7478 kellanved
                {
221 7478 kellanved
                        $line = array_merge(
222 7478 kellanved
                                array_fill(0, mt_rand(30, 60), $non_font[array_rand($non_font)]),
223 7478 kellanved
                                array_fill(0, mt_rand(30, 60), $bg)
224 7478 kellanved
                        );
225 7478 kellanved
226 7478 kellanved
                        imagesetstyle($img, $line);
227 7478 kellanved
                        imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);
228 7478 kellanved
229 7486 kellanved
                        $x1 += mt_rand(20, 35);
230 7486 kellanved
                        $x2 += mt_rand(20, 35);
231 7478 kellanved
                }
232 7478 kellanved
                while ($x1 < $max_x && $x2 < $max_x);
233 7478 kellanved
                imagesetthickness($img, 1);
234 7478 kellanved
        }
235 7478 kellanved
236 9320 Kellanved
237 9403 Kellanved
        function captcha_noise_bg_bitmaps()
238 9403 Kellanved
        {
239 9320 Kellanved
                return array(
240 9323 Kellanved
                        'width'                => 15,
241 9320 Kellanved
                        'height'        => 5,
242 9320 Kellanved
                        'data'                => array(
243 9320 Kellanved
244 9320 Kellanved
                        1 => array(
245 9323 Kellanved
                                array(1,0,0,0,1,0,0,0,0,0,0,0,0,0,0),
246 9323 Kellanved
                                array(1,0,0,0,0,1,0,0,0,0,0,0,0,0,0),
247 9403 Kellanved
                                array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
248 9403 Kellanved
                                array(1,0,0,0,0,1,0,0,0,0,0,0,1,0,0),
249 9403 Kellanved
                                array(1,0,0,0,0,0,1,0,0,0,0,1,0,0,0),
250 9320 Kellanved
                        ),
251 9320 Kellanved
                        2 => array(
252 9403 Kellanved
                                array(1,1,mt_rand(0,1),1,0,1,1,1,1,0,0,0,0,0,0),
253 9323 Kellanved
                                array(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0),
254 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
255 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
256 9403 Kellanved
                                array(0,0,0,0,0,0,0,0,0,1,1,0,1,1,1),
257 9320 Kellanved
                        ),
258 9320 Kellanved
                        3 => array(
259 9323 Kellanved
                                array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,1),
260 9323 Kellanved
                                array(1,0,0,0,0,0,0,0,0,0,0,0,0,1,0),
261 9403 Kellanved
                                array(0,0,0,0,1,0,0,0,0,0,0,0,0,0,1),
262 9323 Kellanved
                                array(1,0,0,0,0,0,0,0,0,0,0,0,0,1,0),
263 9323 Kellanved
                                array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,1),
264 9320 Kellanved
                        ),
265 9320 Kellanved
                        4 => array(
266 9323 Kellanved
                                array(1,0,1,0,1,0,0,1,1,0,0,0,0,0,0),
267 9323 Kellanved
                                array(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0),
268 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
269 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
270 9323 Kellanved
                                array(1,0,1,0,0,0,0,0,0,0,0,0,0,0,0),
271 9320 Kellanved
                        ),
272 9323 Kellanved
                        5 => array(
273 9403 Kellanved
                                array(1,1,1,1,0,0,0,1,1,1,0,0,1,0,1),
274 9323 Kellanved
                                array(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0),
275 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
276 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
277 9323 Kellanved
                                array(1,0,1,0,0,0,0,0,0,0,0,0,0,0,0),
278 9323 Kellanved
                        ),
279 9323 Kellanved
                        6 => array(
280 9403 Kellanved
                                array(mt_rand(0,1),mt_rand(0,1),mt_rand(0,1),mt_rand(0,1),mt_rand(0,1),0,mt_rand(0,1),mt_rand(0,1),mt_rand(0,1),mt_rand(0,1),mt_rand(0,1),0,mt_rand(0,1),mt_rand(0,1),mt_rand(0,1)),
281 9323 Kellanved
                                array(0,0,0,0,0,0,0,mt_rand(0,1),0,0,0,0,0,0,0),
282 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
283 9323 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
284 9323 Kellanved
                                array(mt_rand(0,1),0,mt_rand(0,1),0,0,0,0,0,0,0,0,0,0,0,0),
285 9323 Kellanved
                        ),
286 9403 Kellanved
                        7 => array(
287 9403 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,1,1,0,1,1),
288 9403 Kellanved
                                array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
289 9403 Kellanved
                                array(0,0,1,1,0,0,0,1,0,0,0,0,0,0,0),
290 9403 Kellanved
                                array(0,1,0,0,0,1,0,0,0,0,0,0,0,0,0),
291 9403 Kellanved
                                array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
292 9403 Kellanved
                        ),
293 9323 Kellanved
                ));
294 9320 Kellanved
        }
295 9320 Kellanved
296 7478 kellanved
        /**
297 7478 kellanved
        * Return bitmaps
298 7478 kellanved
        */
299 7478 kellanved
        function captcha_bitmaps()
300 7478 kellanved
        {
301 9403 Kellanved
                global $config;
302 9403 Kellanved
303 9403 Kellanved
                $chars = array(
304 9403 Kellanved
                        'A'        =>        array(
305 9403 Kellanved
                                                array(
306 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
307 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
308 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
309 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
310 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
311 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
312 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
313 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
314 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
315 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,0),
316 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
317 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
318 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
319 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
320 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
321 9403 Kellanved
                                                ),
322 9403 Kellanved
                                                array(
323 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
324 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
325 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
326 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
327 9403 Kellanved
                                                        array(0,0,1,1,0,1,1,0,0),
328 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
329 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
330 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
331 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,0),
332 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
333 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
334 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
335 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
336 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
337 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
338 9403 Kellanved
                                                ),
339 9403 Kellanved
                                                array(
340 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
341 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
342 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
343 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
344 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
345 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
346 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
347 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
348 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,1,1),
349 9403 Kellanved
                                                        array(0,0,0,0,0,1,1,1,1),
350 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,1),
351 9403 Kellanved
                                                        array(0,1,1,1,0,0,0,0,1),
352 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
353 9403 Kellanved
                                                        array(1,1,0,0,0,0,1,1,1),
354 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,0,1),
355 9403 Kellanved
                                                ),
356 9403 Kellanved
                                        ),
357 9403 Kellanved
                'B'        =>                array(
358 9403 Kellanved
                                                array(
359 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
360 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
361 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
362 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
363 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
364 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
365 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
366 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
367 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
368 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
369 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
370 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
371 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
372 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
373 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
374 9403 Kellanved
                                                ),
375 9403 Kellanved
                                                array(
376 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
377 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
378 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
379 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
380 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
381 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
382 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
383 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,0,0),
384 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
385 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
386 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
387 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
388 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
389 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
390 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
391 9403 Kellanved
                                                ),
392 9403 Kellanved
                                                array(
393 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
394 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
395 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
396 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
397 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
398 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
399 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
400 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,0,0),
401 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
402 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
403 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
404 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
405 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
406 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
407 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,0,0),
408 9403 Kellanved
                                                ),
409 9403 Kellanved
                                        ),
410 9403 Kellanved
                'C'        =>                array(
411 9403 Kellanved
                                                array(
412 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
413 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
414 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
415 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
416 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
417 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
418 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
419 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
420 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
421 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
422 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
423 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
424 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
425 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
426 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
427 9403 Kellanved
                                                ),
428 9403 Kellanved
                                                array(
429 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
430 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,1),
431 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
432 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
433 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
434 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
435 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
436 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
437 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
438 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
439 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
440 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
441 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
442 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,1),
443 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
444 9403 Kellanved
                                                ),
445 9403 Kellanved
                                        ),
446 9403 Kellanved
                'D'        =>                array(
447 9403 Kellanved
                                                array(
448 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
449 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
450 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
451 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
452 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
453 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
454 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
455 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
456 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
457 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
458 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
459 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
460 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
461 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
462 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
463 9403 Kellanved
                                                ),
464 9403 Kellanved
                                                array(
465 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
466 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
467 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
468 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
469 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
470 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
471 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
472 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
473 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
474 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
475 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
476 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
477 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
478 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
479 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
480 9403 Kellanved
                                                ),
481 9403 Kellanved
                                                array(
482 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
483 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
484 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
485 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
486 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
487 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
488 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
489 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
490 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,1),
491 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
492 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
493 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
494 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
495 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,1),
496 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
497 9403 Kellanved
                                                ),
498 9403 Kellanved
                                        ),
499 9403 Kellanved
                'E'        =>                array(
500 9403 Kellanved
                                                array(
501 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
502 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
503 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
504 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
505 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
506 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
507 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
508 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,0),
509 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
510 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
511 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
512 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
513 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
514 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
515 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
516 9403 Kellanved
                                                ),
517 9403 Kellanved
                                                array(
518 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
519 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
520 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
521 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
522 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
523 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
524 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
525 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
526 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
527 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
528 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
529 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
530 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
531 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
532 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
533 9403 Kellanved
                                                ),
534 9403 Kellanved
                                                array(
535 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
536 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
537 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
538 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
539 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
540 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
541 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
542 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
543 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
544 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
545 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
546 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
547 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
548 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
549 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,0),
550 9403 Kellanved
                                                ),
551 9403 Kellanved
                                        ),
552 9403 Kellanved
                'F'        =>                array(
553 9403 Kellanved
                                                array(
554 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
555 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
556 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
557 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
558 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
559 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
560 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
561 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
562 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
563 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
564 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
565 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
566 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
567 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
568 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
569 9403 Kellanved
                                                ),
570 9403 Kellanved
                                                array(
571 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,1),
572 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
573 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
574 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
575 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
576 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
577 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
578 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,0,0),
579 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
580 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
581 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
582 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
583 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
584 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
585 9403 Kellanved
                                                        array(1,1,1,0,0,0,0,0,0),
586 9403 Kellanved
                                                ),
587 9403 Kellanved
                                                array(
588 9403 Kellanved
                                                        array(0,0,0,1,1,0,0,0,0),
589 9403 Kellanved
                                                        array(0,0,1,1,0,0,0,0,0),
590 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,0,0),
591 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
592 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
593 9403 Kellanved
                                                        array(1,1,1,1,0,0,0,0,0),
594 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
595 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
596 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
597 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
598 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
599 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
600 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
601 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
602 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
603 9403 Kellanved
                                                ),
604 9403 Kellanved
                                        ),
605 9403 Kellanved
                'G'        =>                array(
606 9403 Kellanved
                                                array(
607 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
608 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
609 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
610 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
611 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
612 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
613 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
614 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
615 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,1,1),
616 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
617 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
618 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
619 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
620 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
621 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
622 9403 Kellanved
                                                ),
623 9403 Kellanved
                                                array(
624 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
625 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,1),
626 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
627 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
628 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
629 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
630 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
631 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
632 9403 Kellanved
                                                        array(1,0,0,0,1,1,1,1,1),
633 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
634 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
635 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
636 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
637 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,1),
638 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
639 9403 Kellanved
                                                ),
640 9403 Kellanved
                                                array(
641 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
642 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,1,1),
643 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
644 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
645 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
646 9403 Kellanved
                                                        array(1,1,1,0,0,0,0,0,1),
647 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,1,1),
648 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
649 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
650 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
651 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
652 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,1,1),
653 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,0),
654 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
655 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
656 9403 Kellanved
                                                ),
657 9403 Kellanved
                                        ),
658 9403 Kellanved
                'H'        =>                array(
659 9403 Kellanved
                                                array(
660 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
661 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
662 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
663 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
664 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
665 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
666 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
667 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
668 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
669 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
670 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
671 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
672 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
673 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
674 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
675 9403 Kellanved
                                                ),
676 9403 Kellanved
                                                array(
677 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
678 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
679 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
680 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
681 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
682 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
683 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
684 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,0),
685 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
686 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
687 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
688 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
689 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
690 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
691 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
692 9403 Kellanved
                                                ),
693 9403 Kellanved
                                                array(
694 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
695 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
696 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
697 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
698 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
699 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
700 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
701 9403 Kellanved
                                                        array(1,0,0,1,1,1,0,0,0),
702 9403 Kellanved
                                                        array(1,1,1,1,0,1,1,0,0),
703 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
704 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
705 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
706 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
707 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
708 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
709 9403 Kellanved
                                                ),
710 9403 Kellanved
                                        ),
711 9403 Kellanved
                'I'        =>                array(
712 9403 Kellanved
                                                array(
713 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
714 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
715 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
716 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
717 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
718 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
719 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
720 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
721 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
722 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
723 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
724 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
725 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
726 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
727 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
728 9403 Kellanved
                                                ),
729 9403 Kellanved
                                                array(
730 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
731 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
732 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
733 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
734 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
735 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
736 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
737 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
738 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
739 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
740 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
741 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
742 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
743 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
744 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
745 9403 Kellanved
                                                ),
746 9403 Kellanved
                                                array(
747 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
748 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
749 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
750 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
751 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
752 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
753 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
754 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
755 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
756 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
757 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
758 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
759 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
760 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
761 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
762 9403 Kellanved
                                                ),
763 9403 Kellanved
                                        ),
764 9403 Kellanved
                'J'        =>                array(
765 9403 Kellanved
                                                array(
766 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
767 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
768 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
769 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
770 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
771 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
772 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
773 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
774 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
775 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
776 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
777 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
778 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
779 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,0,0),
780 9403 Kellanved
                                                        array(0,0,1,1,0,0,0,0,0),
781 9403 Kellanved
                                                ),
782 9403 Kellanved
                                                array(
783 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
784 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
785 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
786 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
787 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
788 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
789 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
790 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
791 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
792 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
793 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
794 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
795 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
796 9403 Kellanved
                                                        array(1,1,0,0,1,0,0,0,0),
797 9403 Kellanved
                                                        array(1,0,1,1,0,0,0,0,0),
798 9403 Kellanved
                                                ),
799 9403 Kellanved
                                                array(
800 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
801 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
802 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
803 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
804 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
805 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
806 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
807 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
808 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
809 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
810 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
811 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
812 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
813 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,0,0),
814 9403 Kellanved
                                                        array(0,0,1,1,0,0,0,0,0),
815 9403 Kellanved
                                                ),
816 9403 Kellanved
                                        ),
817 9403 Kellanved
                'K'        =>                array(
818 9403 Kellanved
                                                array(    // New 'K', supplied by NeoThermic
819 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
820 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
821 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
822 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
823 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,0),
824 9403 Kellanved
                                                        array(1,0,0,1,0,0,0,0,0),
825 9403 Kellanved
                                                        array(1,0,1,0,0,0,0,0,0),
826 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,0,0),
827 9403 Kellanved
                                                        array(1,0,1,0,0,0,0,0,0),
828 9403 Kellanved
                                                        array(1,0,0,1,0,0,0,0,0),
829 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,0),
830 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
831 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
832 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
833 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
834 9403 Kellanved
                                                ),
835 9403 Kellanved
                                                array(
836 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
837 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
838 9403 Kellanved
                                                        array(0,1,0,0,0,0,1,0,0),
839 9403 Kellanved
                                                        array(0,1,0,0,0,1,0,0,0),
840 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,0,0),
841 9403 Kellanved
                                                        array(0,1,0,1,0,0,0,0,0),
842 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,0,0),
843 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
844 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,0,0),
845 9403 Kellanved
                                                        array(0,1,0,1,0,0,0,0,0),
846 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,0,0),
847 9403 Kellanved
                                                        array(0,1,0,0,0,1,0,0,0),
848 9403 Kellanved
                                                        array(0,1,0,0,0,0,1,0,0),
849 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
850 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
851 9403 Kellanved
                                                ),
852 9403 Kellanved
                                                array(
853 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
854 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
855 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
856 9403 Kellanved
                                                        array(0,1,0,0,0,1,0,0,0),
857 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,0,0),
858 9403 Kellanved
                                                        array(0,1,0,1,0,0,0,0,0),
859 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,0,0),
860 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
861 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,0,0),
862 9403 Kellanved
                                                        array(0,1,0,1,0,0,0,0,0),
863 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,0,0),
864 9403 Kellanved
                                                        array(0,1,0,0,0,1,0,0,0),
865 9403 Kellanved
                                                        array(0,1,0,0,0,0,1,0,0),
866 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
867 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
868 9403 Kellanved
                                                ),
869 9403 Kellanved
                                        ),
870 9403 Kellanved
                'L'        =>                array(
871 9403 Kellanved
                                                array(
872 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
873 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
874 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
875 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
876 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
877 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
878 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
879 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
880 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
881 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
882 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
883 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
884 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
885 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
886 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
887 9403 Kellanved
                                                ),
888 9403 Kellanved
                                                array(
889 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
890 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
891 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
892 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
893 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
894 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
895 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
896 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
897 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
898 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
899 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
900 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
901 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
902 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
903 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
904 9403 Kellanved
                                                ),
905 9403 Kellanved
                                                array(
906 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
907 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
908 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
909 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
910 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
911 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
912 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
913 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
914 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
915 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
916 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
917 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
918 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
919 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,0,0),
920 9403 Kellanved
                                                        array(0,0,1,1,1,0,0,0,0),
921 9403 Kellanved
                                                ),
922 9403 Kellanved
                                        ),
923 9403 Kellanved
                'M'        =>                array(
924 9403 Kellanved
                                                array(
925 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
926 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
927 9403 Kellanved
                                                        array(1,0,1,0,0,0,1,0,1),
928 9403 Kellanved
                                                        array(1,0,1,0,0,0,1,0,1),
929 9403 Kellanved
                                                        array(1,0,1,0,0,0,1,0,1),
930 9403 Kellanved
                                                        array(1,0,0,1,0,1,0,0,1),
931 9403 Kellanved
                                                        array(1,0,0,1,0,1,0,0,1),
932 9403 Kellanved
                                                        array(1,0,0,1,0,1,0,0,1),
933 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
934 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
935 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
936 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
937 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
938 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
939 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
940 9403 Kellanved
                                                ),
941 9403 Kellanved
                                                array(
942 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
943 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
944 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
945 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
946 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
947 9403 Kellanved
                                                        array(0,1,0,1,0,1,0,1,0),
948 9403 Kellanved
                                                        array(0,1,0,1,0,1,0,1,0),
949 9403 Kellanved
                                                        array(0,1,0,1,0,1,0,1,0),
950 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,1,0),
951 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,1,0),
952 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
953 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
954 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
955 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
956 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
957 9403 Kellanved
                                                ),
958 9403 Kellanved
                                                array(
959 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
960 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
961 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
962 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
963 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
964 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
965 9403 Kellanved
                                                        array(0,1,1,1,0,1,1,1,0),
966 9403 Kellanved
                                                        array(1,1,0,1,1,1,0,1,1),
967 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
968 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
969 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
970 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
971 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
972 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
973 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
974 9403 Kellanved
                                                ),
975 9403 Kellanved
                                        ),
976 9403 Kellanved
                'N'        =>                array(
977 9403 Kellanved
                                                array(
978 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,0,1),
979 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,0,1),
980 9403 Kellanved
                                                        array(1,0,1,0,0,0,0,0,1),
981 9403 Kellanved
                                                        array(1,0,1,0,0,0,0,0,1),
982 9403 Kellanved
                                                        array(1,0,0,1,0,0,0,0,1),
983 9403 Kellanved
                                                        array(1,0,0,1,0,0,0,0,1),
984 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
985 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
986 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
987 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,1),
988 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,1),
989 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,1),
990 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,1),
991 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,1),
992 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,1),
993 9403 Kellanved
                                                ),
994 9403 Kellanved
                                                array(
995 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
996 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
997 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,1,0),
998 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,1,0),
999 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,1,0),
1000 9403 Kellanved
                                                        array(0,1,0,1,0,0,0,1,0),
1001 9403 Kellanved
                                                        array(0,1,0,1,0,0,0,1,0),
1002 9403 Kellanved
                                                        array(0,1,0,1,0,0,0,1,0),
1003 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,1,0),
1004 9403 Kellanved
                                                        array(0,1,0,0,1,1,0,1,0),
1005 9403 Kellanved
                                                        array(0,1,0,0,0,1,0,1,0),
1006 9403 Kellanved
                                                        array(0,1,0,0,0,1,1,1,0),
1007 9403 Kellanved
                                                        array(0,1,0,0,0,0,1,1,0),
1008 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1009 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1010 9403 Kellanved
                                                ),
1011 9403 Kellanved
                                                array(
1012 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1013 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1014 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1015 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1016 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1017 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1018 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1019 9403 Kellanved
                                                        array(1,0,1,1,1,1,0,0,0),
1020 9403 Kellanved
                                                        array(1,1,1,0,0,1,1,0,0),
1021 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1022 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1023 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1024 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1025 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1026 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1027 9403 Kellanved
                                                ),
1028 9403 Kellanved
                                        ),
1029 9403 Kellanved
                'O'        =>                array(
1030 9403 Kellanved
                                                array(
1031 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1032 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1033 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1034 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1035 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1036 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1037 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1038 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1039 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1040 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1041 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1042 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1043 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1044 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1045 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1046 9403 Kellanved
                                                ),
1047 9403 Kellanved
                                                array(
1048 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1049 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1050 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1051 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1052 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1053 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1054 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1055 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1056 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1057 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1058 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1059 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1060 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1061 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1062 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1063 9403 Kellanved
                                                ),
1064 9403 Kellanved
                                                array(
1065 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1066 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1067 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1068 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1069 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1070 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1071 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1072 9403 Kellanved
                                                        array(0,1,1,1,1,1,0,0,0),
1073 9403 Kellanved
                                                        array(1,1,1,0,0,1,1,0,0),
1074 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1075 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1076 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1077 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1078 9403 Kellanved
                                                        array(1,1,0,0,0,1,1,0,0),
1079 9403 Kellanved
                                                        array(0,1,1,1,1,1,0,0,0),
1080 9403 Kellanved
                                                ),
1081 9403 Kellanved
                                        ),
1082 9403 Kellanved
                'P'        =>                array(
1083 9403 Kellanved
                                                array(
1084 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1085 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
1086 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1087 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1088 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1089 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1090 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
1091 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1092 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1093 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1094 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1095 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1096 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1097 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1098 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1099 9403 Kellanved
                                                ),
1100 9403 Kellanved
                                                array(
1101 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1102 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1103 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1104 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1105 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1106 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1107 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1108 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1109 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1110 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1111 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1112 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1113 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1114 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1115 9403 Kellanved
                                                        array(1,1,1,0,0,0,0,0,0),
1116 9403 Kellanved
                                                ),
1117 9403 Kellanved
                                                array(
1118 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1119 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1120 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1121 9403 Kellanved
                                                        array(1,0,1,1,0,0,0,0,0),
1122 9403 Kellanved
                                                        array(1,1,0,1,1,0,0,0,0),
1123 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,0),
1124 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,0),
1125 9403 Kellanved
                                                        array(1,0,0,1,1,0,0,0,0),
1126 9403 Kellanved
                                                        array(1,1,1,1,0,0,0,0,0),
1127 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1128 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1129 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1130 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1131 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1132 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1133 9403 Kellanved
                                                ),
1134 9403 Kellanved
                                        ),
1135 9403 Kellanved
                'Q'        =>                array(
1136 9403 Kellanved
                                                array(
1137 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1138 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1139 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1140 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1141 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1142 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1143 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1144 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1145 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1146 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1147 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1148 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,1),
1149 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,1),
1150 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1151 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
1152 9403 Kellanved
                                                ),
1153 9403 Kellanved
                                                array(
1154 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1155 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1156 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1157 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1158 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1159 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1160 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1161 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1162 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1163 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
1164 9403 Kellanved
                                                        array(1,1,0,0,1,1,0,1,1),
1165 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,0),
1166 9403 Kellanved
                                                        array(0,0,0,0,0,0,1,1,0),
1167 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,1,1),
1168 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1169 9403 Kellanved
                                                ),
1170 9403 Kellanved
                                                array(
1171 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1172 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1173 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1174 9403 Kellanved
                                                        array(0,0,0,0,0,1,1,1,1),
1175 9403 Kellanved
                                                        array(0,0,0,0,1,1,0,0,1),
1176 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,1),
1177 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,1),
1178 9403 Kellanved
                                                        array(0,0,0,0,1,1,0,1,1),
1179 9403 Kellanved
                                                        array(0,0,0,0,0,1,1,0,1),
1180 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1181 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1182 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1183 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1184 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1185 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1186 9403 Kellanved
                                                ),
1187 9403 Kellanved
                                        ),
1188 9403 Kellanved
                'R'        =>                array(
1189 9403 Kellanved
                                                array(
1190 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1191 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
1192 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1193 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1194 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1195 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1196 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
1197 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1198 9403 Kellanved
                                                        array(1,1,1,0,0,0,0,0,0),
1199 9403 Kellanved
                                                        array(1,0,0,1,0,0,0,0,0),
1200 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,0),
1201 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
1202 9403 Kellanved
                                                        array(1,0,0,0,0,0,1,0,0),
1203 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,1,0),
1204 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1205 9403 Kellanved
                                                ),
1206 9403 Kellanved
                                                array(
1207 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1208 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1209 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1210 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1211 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1212 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,1),
1213 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1214 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,0,0),
1215 9403 Kellanved
                                                        array(0,1,1,0,0,0,0,0,0),
1216 9403 Kellanved
                                                        array(0,1,1,1,0,0,0,0,0),
1217 9403 Kellanved
                                                        array(0,1,0,1,1,0,0,0,0),
1218 9403 Kellanved
                                                        array(0,1,0,0,1,1,0,0,0),
1219 9403 Kellanved
                                                        array(0,1,0,0,0,1,1,0,0),
1220 9403 Kellanved
                                                        array(0,1,0,0,0,0,1,1,0),
1221 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1222 9403 Kellanved
                                                ),
1223 9403 Kellanved
                                                array(
1224 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1225 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1226 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1227 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1228 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1229 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1230 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1231 9403 Kellanved
                                                        array(1,1,1,1,1,0,0,0,0),
1232 9403 Kellanved
                                                        array(1,1,0,0,1,1,0,0,0),
1233 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1234 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1235 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1236 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1237 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1238 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1239 9403 Kellanved
                                                ),
1240 9403 Kellanved
                                        ),
1241 9403 Kellanved
                'S'        =>                array(
1242 9403 Kellanved
                                                array(
1243 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1244 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1245 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1246 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1247 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1248 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1249 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1250 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1251 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,1,0),
1252 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1253 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1254 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1255 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1256 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1257 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1258 9403 Kellanved
                                                ),
1259 9403 Kellanved
                                                array(
1260 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,1),
1261 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,1),
1262 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1263 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1264 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1265 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1266 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1267 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1268 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,1,0),
1269 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1270 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1271 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1272 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1273 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,0),
1274 9403 Kellanved
                                                        array(1,0,1,1,1,1,1,0,0),
1275 9403 Kellanved
                                                ),
1276 9403 Kellanved
                                                array(
1277 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1278 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1279 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1280 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1281 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1282 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1283 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1284 9403 Kellanved
                                                        array(0,1,1,1,1,0,0,0,0),
1285 9403 Kellanved
                                                        array(1,0,0,0,0,1,0,0,0),
1286 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1287 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,0,0),
1288 9403 Kellanved
                                                        array(0,1,1,1,1,0,0,0,0),
1289 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
1290 9403 Kellanved
                                                        array(1,0,0,0,1,1,0,0,0),
1291 9403 Kellanved
                                                        array(0,1,1,1,1,0,0,0,0),
1292 9403 Kellanved
                                                ),
1293 9403 Kellanved
                                        ),
1294 9403 Kellanved
                'T'        =>                array(
1295 9403 Kellanved
                                                array(
1296 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
1297 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1298 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1299 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1300 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1301 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1302 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1303 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1304 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1305 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1306 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1307 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1308 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1309 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1310 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1311 9403 Kellanved
                                                ),
1312 9403 Kellanved
                                                array(
1313 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
1314 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
1315 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1316 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1317 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1318 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1319 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1320 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1321 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1322 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1323 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1324 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1325 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1326 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1327 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
1328 9403 Kellanved
                                                ),
1329 9403 Kellanved
                                                array(
1330 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1331 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1332 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1333 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,1,0),
1334 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1335 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1336 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1337 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1338 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1339 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1340 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1341 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1342 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1343 9403 Kellanved
                                                        array(0,0,0,0,1,1,0,0,0),
1344 9403 Kellanved
                                                        array(0,0,0,0,0,1,1,1,0),
1345 9403 Kellanved
                                                ),
1346 9403 Kellanved
                                        ),
1347 9403 Kellanved
                'U'        =>                array(
1348 9403 Kellanved
                                                array(
1349 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1350 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1351 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1352 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1353 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1354 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1355 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1356 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1357 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1358 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1359 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1360 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1361 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1362 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1363 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1364 9403 Kellanved
                                                ),
1365 9403 Kellanved
                                                array(
1366 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1367 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1368 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1369 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1370 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1371 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1372 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1373 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1374 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1375 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1376 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1377 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1378 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1379 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
1380 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1381 9403 Kellanved
                                                ),
1382 9403 Kellanved
                                                array(
1383 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1384 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1385 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1386 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1387 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1388 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1389 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1390 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,1),
1391 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,1),
1392 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,1),
1393 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,1),
1394 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,1),
1395 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,1,1),
1396 9403 Kellanved
                                                        array(0,0,1,1,0,0,1,1,1),
1397 9403 Kellanved
                                                        array(0,0,0,1,1,1,1,0,1),
1398 9403 Kellanved
                                                ),
1399 9403 Kellanved
                                        ),
1400 9403 Kellanved
                'V'        =>                array(
1401 9403 Kellanved
                                                array(
1402 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1403 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1404 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1405 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1406 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1407 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1408 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1409 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1410 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1411 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1412 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1413 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1414 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1415 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1416 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1417 9403 Kellanved
                                                ),
1418 9403 Kellanved
                                                array(
1419 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1420 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1421 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1422 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1423 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1424 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1425 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1426 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1427 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1428 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1429 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1430 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1431 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1432 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1433 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1434 9403 Kellanved
                                                ),
1435 9403 Kellanved
                                                array(
1436 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1437 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1438 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1439 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1440 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1441 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1442 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1443 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1444 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1445 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1446 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1447 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1448 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1449 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1450 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1451 9403 Kellanved
                                                ),
1452 9403 Kellanved
                                        ),
1453 9403 Kellanved
                'W'        =>                array(
1454 9403 Kellanved
                                                array(
1455 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1456 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1457 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1458 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1459 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1460 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
1461 9403 Kellanved
                                                        array(1,0,0,0,1,0,0,0,1),
1462 9403 Kellanved
                                                        array(1,0,0,1,0,1,0,0,1),
1463 9403 Kellanved
                                                        array(1,0,0,1,0,1,0,0,1),
1464 9403 Kellanved
                                                        array(1,0,0,1,0,1,0,0,1),
1465 9403 Kellanved
                                                        array(1,0,1,0,0,0,1,0,1),
1466 9403 Kellanved
                                                        array(1,0,1,0,0,0,1,0,1),
1467 9403 Kellanved
                                                        array(1,0,1,0,0,0,1,0,1),
1468 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1469 9403 Kellanved
                                                        array(1,1,0,0,0,0,0,1,1),
1470 9403 Kellanved
                                                ),
1471 9403 Kellanved
                                                array(
1472 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1473 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1474 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1475 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1476 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1477 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1478 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1479 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,1,0),
1480 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,1,0),
1481 9403 Kellanved
                                                        array(0,1,0,1,1,1,0,1,0),
1482 9403 Kellanved
                                                        array(0,1,0,1,0,1,0,1,0),
1483 9403 Kellanved
                                                        array(0,1,1,1,0,1,1,1,0),
1484 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
1485 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1486 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1487 9403 Kellanved
                                                ),
1488 9403 Kellanved
                                                array(
1489 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1490 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1491 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1492 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1493 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1494 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1495 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1496 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,1,0),
1497 9403 Kellanved
                                                        array(0,1,0,0,1,0,0,1,0),
1498 9403 Kellanved
                                                        array(0,1,0,1,1,1,0,1,0),
1499 9403 Kellanved
                                                        array(0,1,0,1,0,1,0,1,0),
1500 9403 Kellanved
                                                        array(0,1,1,1,0,1,1,1,0),
1501 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
1502 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1503 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1504 9403 Kellanved
                                                ),
1505 9403 Kellanved
                                        ),
1506 9403 Kellanved
                'X'        =>                array(
1507 9403 Kellanved
                                                array(
1508 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1509 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1510 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1511 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1512 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1513 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1514 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1515 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1516 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1517 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1518 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1519 9403 Kellanved
                                                        array(0,1,0,0,0,0,1,0,0),
1520 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1521 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1522 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1523 9403 Kellanved
                                                ),
1524 9403 Kellanved
                                                array(
1525 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1526 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1527 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1528 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1529 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1530 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1531 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1532 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1533 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1534 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1535 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1536 9403 Kellanved
                                                        array(0,1,0,0,0,0,1,0,0),
1537 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1538 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1539 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1540 9403 Kellanved
                                                ),
1541 9403 Kellanved
                                                array(
1542 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1543 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1544 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1545 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1546 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1547 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1548 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1549 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1550 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
1551 9403 Kellanved
                                                        array(0,0,1,1,0,1,1,0,0),
1552 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
1553 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
1554 9403 Kellanved
                                                        array(0,0,1,1,0,1,1,0,0),
1555 9403 Kellanved
                                                        array(0,1,1,0,0,0,1,1,0),
1556 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1557 9403 Kellanved
                                                ),
1558 9403 Kellanved
                                        ),
1559 9403 Kellanved
                'Y'        =>                array(
1560 9403 Kellanved
                                                array(
1561 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1562 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1563 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1564 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1565 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1566 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1567 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1568 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1569 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1570 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1571 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1572 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1573 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1574 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1575 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1576 9403 Kellanved
                                                ),
1577 9403 Kellanved
                                                array(
1578 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1579 9403 Kellanved
                                                        array(1,1,1,0,0,0,1,1,1),
1580 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1581 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,1,0),
1582 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1583 9403 Kellanved
                                                        array(0,0,1,0,0,0,1,0,0),
1584 9403 Kellanved
                                                        array(0,0,0,1,0,1,0,0,0),
1585 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1586 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1587 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1588 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1589 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1590 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1591 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1592 9403 Kellanved
                                                        array(0,0,0,1,1,1,0,0,0),
1593 9403 Kellanved
                                                ),
1594 9403 Kellanved
                                                array(
1595 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1596 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1597 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1598 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1599 9403 Kellanved
                                                        array(0,0,0,1,0,0,0,0,1),
1600 9403 Kellanved
                                                        array(0,0,0,1,1,0,0,0,1),
1601 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,1,1),
1602 9403 Kellanved
                                                        array(0,0,0,0,1,1,0,1,0),
1603 9403 Kellanved
                                                        array(0,0,0,0,0,1,1,1,0),
1604 9403 Kellanved
                                                        array(0,0,0,0,0,0,1,0,0),
1605 9403 Kellanved
                                                        array(0,0,0,0,0,1,1,0,0),
1606 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
1607 9403 Kellanved
                                                        array(0,0,0,0,1,1,0,0,0),
1608 9403 Kellanved
                                                        array(0,0,1,1,1,0,0,0,0),
1609 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1610 9403 Kellanved
                                                ),
1611 9403 Kellanved
                                        ),
1612 9403 Kellanved
                'Z'        =>                array(
1613 9403 Kellanved
                                                array(
1614 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
1615 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1616 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1617 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,1,0),
1618 9403 Kellanved
                                                        array(0,0,0,0,0,0,1,0,0),
1619 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
1620 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
1621 9403 Kellanved
                                                        array(0,0,0,0,1,0,0,0,0),
1622 9403 Kellanved
                                                        array(0,0,0,1,0,0,0,0,0),
1623 9403 Kellanved
                                                        array(0,0,0,1,0,0,0,0,0),
1624 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,0),
1625 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1626 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1627 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,1),
1628 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
1629 9403 Kellanved
                                                ),
1630 9403 Kellanved
                                                array(
1631 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
1632 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1633 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,1),
1634 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,1,0),
1635 9403 Kellanved
                                                        array(0,0,0,0,0,0,1,0,0),
1636 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
1637 9403 Kellanved
                                                        array(0,0,0,0,0,1,0,0,0),
1638 9403 Kellanved
                                                        array(0,0,1,1,1,1,1,0,0),
1639 9403 Kellanved
                                                        array(0,0,0,1,0,0,0,0,0),
1640 9403 Kellanved
                                                        array(0,0,0,1,0,0,0,0,0),
1641 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,0),
1642 9403 Kellanved
                                                        array(0,1,0,0,0,0,0,0,0),
1643 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1644 9403 Kellanved
                                                        array(1,0,0,0,0,0,0,0,0),
1645 9403 Kellanved
                                                        array(1,1,1,1,1,1,1,1,1),
1646 9403 Kellanved
                                                ),
1647 9403 Kellanved
                                                array(
1648 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1649 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1650 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1651 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1652 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1653 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1654 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1655 9403 Kellanved
                                                        array(0,0,0,0,0,0,0,0,0),
1656 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,0),
1657 9403 Kellanved
                                                        array(0,0,0,0,0,1,1,0,0),
1658 9403 Kellanved
                                                        array(0,0,0,0,1,1,0,0,0),
1659 9403 Kellanved
                                                        array(0,0,0,1,1,0,0,0,0),
1660 9403 Kellanved
                                                        array(0,0,1,1,0,0,0,0,0),
1661 9403 Kellanved
                                                        array(0,0,1,0,0,0,0,0,0),
1662 9403 Kellanved
                                                        array(0,1,1,1,1,1,1,1,0),
1663 9403 Kellanved
                                                ),
1664 9403 Kellanved
                                        ),
1665 9403 Kellanved
                                );
1666 7478 kellanved
                return array(
1667 7478 kellanved
                        'width'                => 9,
1668 7478 kellanved
                        'height'        => 15,
1669 7478 kellanved
                        'data'                => array(
1670 7478 kellanved
1671 11087 git-gate
                        'A' =>        $chars['A'][mt_rand(0, min(sizeof($chars['A']), $config['captcha_gd_fonts']) -1)],
1672 11087 git-gate
                        'B' =>        $chars['B'][mt_rand(0, min(sizeof($chars['B']), $config['captcha_gd_fonts']) -1)],
1673 11087 git-gate
                        'C' =>        $chars['C'][mt_rand(0, min(sizeof($chars['C']), $config['captcha_gd_fonts']) -1)],
1674 11087 git-gate
                        'D' =>        $chars['D'][mt_rand(0, min(sizeof($chars['D']), $config['captcha_gd_fonts']) -1)],
1675 11087 git-gate
                        'E' =>        $chars['E'][mt_rand(0, min(sizeof($chars['E']), $config['captcha_gd_fonts']) -1)],
1676 11087 git-gate
                        'F' =>        $chars['F'][mt_rand(0, min(sizeof($chars['F']), $config['captcha_gd_fonts']) -1)],
1677 11087 git-gate
                        'G' =>        $chars['G'][mt_rand(0, min(sizeof($chars['G']), $config['captcha_gd_fonts']) -1)],
1678 11087 git-gate
                        'H' =>        $chars['H'][mt_rand(0, min(sizeof($chars['H']), $config['captcha_gd_fonts']) -1)],
1679 11087 git-gate
                        'I' =>        $chars['I'][mt_rand(0, min(sizeof($chars['I']), $config['captcha_gd_fonts']) -1)],
1680 11087 git-gate
                        'J' =>        $chars['J'][mt_rand(0, min(sizeof($chars['J']), $config['captcha_gd_fonts']) -1)],
1681 11087 git-gate
                        'K' =>        $chars['K'][mt_rand(0, min(sizeof($chars['K']), $config['captcha_gd_fonts']) -1)],
1682 11087 git-gate
                        'L' =>        $chars['L'][mt_rand(0, min(sizeof($chars['L']), $config['captcha_gd_fonts']) -1)],
1683 11087 git-gate
                        'M' =>        $chars['M'][mt_rand(0, min(sizeof($chars['M']), $config['captcha_gd_fonts']) -1)],
1684 11087 git-gate
                        'N' =>        $chars['N'][mt_rand(0, min(sizeof($chars['N']), $config['captcha_gd_fonts']) -1)],
1685 11087 git-gate
                        'O' =>        $chars['O'][mt_rand(0, min(sizeof($chars['O']), $config['captcha_gd_fonts']) -1)],
1686 11087 git-gate
                        'P' =>        $chars['P'][mt_rand(0, min(sizeof($chars['P']), $config['captcha_gd_fonts']) -1)],
1687 11087 git-gate
                        'Q' =>        $chars['Q'][mt_rand(0, min(sizeof($chars['Q']), $config['captcha_gd_fonts']) -1)],
1688 11087 git-gate
                        'R' =>        $chars['R'][mt_rand(0, min(sizeof($chars['R']), $config['captcha_gd_fonts']) -1)],
1689 11087 git-gate
                        'S' =>        $chars['S'][mt_rand(0, min(sizeof($chars['S']), $config['captcha_gd_fonts']) -1)],
1690 11087 git-gate
                        'T' =>        $chars['T'][mt_rand(0, min(sizeof($chars['T']), $config['captcha_gd_fonts']) -1)],
1691 11087 git-gate
                        'U' =>        $chars['U'][mt_rand(0, min(sizeof($chars['U']), $config['captcha_gd_fonts']) -1)],
1692 11087 git-gate
                        'V' =>        $chars['V'][mt_rand(0, min(sizeof($chars['V']), $config['captcha_gd_fonts']) -1)],
1693 11087 git-gate
                        'W' =>        $chars['W'][mt_rand(0, min(sizeof($chars['W']), $config['captcha_gd_fonts']) -1)],
1694 11087 git-gate
                        'X' =>        $chars['X'][mt_rand(0, min(sizeof($chars['X']), $config['captcha_gd_fonts']) -1)],
1695 11087 git-gate
                        'Y' =>        $chars['Y'][mt_rand(0, min(sizeof($chars['Y']), $config['captcha_gd_fonts']) -1)],
1696 11087 git-gate
                        'Z' =>        $chars['Z'][mt_rand(0, min(sizeof($chars['Z']), $config['captcha_gd_fonts']) -1)],
1697 9403 Kellanved
1698 7478 kellanved
                        '1' => array(
1699 7478 kellanved
                                array(0,0,0,1,1,0,0,0,0),
1700 7478 kellanved
                                array(0,0,1,0,1,0,0,0,0),
1701 7478 kellanved
                                array(0,1,0,0,1,0,0,0,0),
1702 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1703 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1704 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1705 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1706 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1707 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1708 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1709 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1710 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1711 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1712 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1713 7478 kellanved
                                array(0,1,1,1,1,1,1,1,0),
1714 7478 kellanved
                        ),
1715 7478 kellanved
                        '2' => array(    // New '2' supplied by Anon
1716 7478 kellanved
                                array(0,0,0,1,1,1,0,0,0),
1717 7478 kellanved
                                array(0,0,1,0,0,0,1,0,0),
1718 7478 kellanved
                                array(0,1,0,0,0,0,1,1,0),
1719 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1720 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1721 7478 kellanved
                                array(0,0,0,0,0,0,0,1,1),
1722 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1723 7478 kellanved
                                array(0,0,0,0,0,0,1,0,0),
1724 7478 kellanved
                                array(0,0,0,0,0,1,0,0,0),
1725 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1726 7478 kellanved
                                array(0,0,0,1,0,0,0,0,0),
1727 7478 kellanved
                                array(0,0,1,0,0,0,0,0,0),
1728 7478 kellanved
                                array(0,1,0,0,0,0,0,0,0),
1729 7478 kellanved
                                array(1,1,1,1,1,1,1,1,1),
1730 7478 kellanved
                                array(0,0,0,0,0,0,0,0,0),
1731 7478 kellanved
                        ),
1732 7478 kellanved
                        '3' => array(
1733 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1734 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1735 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1736 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1737 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1738 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1739 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1740 7478 kellanved
                                array(0,0,0,0,0,1,1,0,0),
1741 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1742 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1743 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1744 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1745 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1746 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1747 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1748 7478 kellanved
                        ),
1749 7478 kellanved
                        '4' => array(
1750 7478 kellanved
                                array(0,0,0,0,0,0,1,1,0),
1751 7478 kellanved
                                array(0,0,0,0,0,1,0,1,0),
1752 7478 kellanved
                                array(0,0,0,0,1,0,0,1,0),
1753 7478 kellanved
                                array(0,0,0,1,0,0,0,1,0),
1754 7478 kellanved
                                array(0,0,1,0,0,0,0,1,0),
1755 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1756 7478 kellanved
                                array(1,0,0,0,0,0,0,1,0),
1757 7478 kellanved
                                array(1,0,0,0,0,0,0,1,0),
1758 7478 kellanved
                                array(1,1,1,1,1,1,1,1,1),
1759 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1760 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1761 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1762 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1763 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1764 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1765 7478 kellanved
                        ),
1766 7478 kellanved
                        '5' => array(
1767 7478 kellanved
                                array(1,1,1,1,1,1,1,1,1),
1768 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1769 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1770 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1771 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1772 7478 kellanved
                                array(0,1,0,0,0,0,0,0,0),
1773 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1774 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1775 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1776 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1777 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1778 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1779 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1780 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1781 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1782 7478 kellanved
                        ),
1783 7478 kellanved
                        '6' => array(
1784 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1785 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1786 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1787 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1788 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1789 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1790 7478 kellanved
                                array(1,0,0,1,1,1,1,0,0),
1791 7478 kellanved
                                array(1,0,1,0,0,0,0,1,0),
1792 7478 kellanved
                                array(1,1,0,0,0,0,0,0,1),
1793 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1794 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1795 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1796 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1797 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1798 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1799 7478 kellanved
                        ),
1800 7478 kellanved
                        '7' => array(
1801 7478 kellanved
                                array(1,1,1,1,1,1,1,1,1),
1802 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1803 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1804 7478 kellanved
                                array(0,0,0,0,0,0,0,1,0),
1805 7478 kellanved
                                array(0,0,0,0,0,0,1,0,0),
1806 7478 kellanved
                                array(0,0,0,0,0,1,0,0,0),
1807 7478 kellanved
                                array(0,0,0,0,0,1,0,0,0),
1808 7478 kellanved
                                array(0,0,0,0,1,0,0,0,0),
1809 7478 kellanved
                                array(0,0,0,1,0,0,0,0,0),
1810 7478 kellanved
                                array(0,0,0,1,0,0,0,0,0),
1811 7478 kellanved
                                array(0,0,1,0,0,0,0,0,0),
1812 7478 kellanved
                                array(0,1,0,0,0,0,0,0,0),
1813 7478 kellanved
                                array(0,1,0,0,0,0,0,0,0),
1814 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1815 7478 kellanved
                                array(1,0,0,0,0,0,0,0,0),
1816 7478 kellanved
                        ),
1817 7478 kellanved
                        '8' => array(
1818 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1819 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1820 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1821 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1822 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1823 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1824 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1825 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1826 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1827 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1828 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1829 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1830 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1831 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1832 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1833 7478 kellanved
                        ),
1834 7478 kellanved
                        '9' => array(
1835 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1836 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1837 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1838 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1839 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1840 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1841 7478 kellanved
                                array(1,0,0,0,0,0,0,1,1),
1842 7478 kellanved
                                array(0,1,0,0,0,0,1,0,1),
1843 7478 kellanved
                                array(0,0,1,1,1,1,0,0,1),
1844 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1845 7478 kellanved
                                array(0,0,0,0,0,0,0,0,1),
1846 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1847 7478 kellanved
                                array(1,0,0,0,0,0,0,0,1),
1848 7478 kellanved
                                array(0,1,0,0,0,0,0,1,0),
1849 7478 kellanved
                                array(0,0,1,1,1,1,1,0,0),
1850 7478 kellanved
                        ),
1851 7478 kellanved
                        )
1852 7478 kellanved
                );
1853 7478 kellanved
        }
1854 7478 kellanved
}
1855 7478 kellanved
1856 7478 kellanved
/**
1857 7478 kellanved
* @package VC
1858 7478 kellanved
*/
1859 7478 kellanved
class char_cube3d
1860 7478 kellanved
{
1861 7478 kellanved
        var $bitmap;
1862 7478 kellanved
        var $bitmap_width;
1863 7478 kellanved
        var $bitmap_height;
1864 7478 kellanved
1865 7478 kellanved
        var $basis_matrix = array(array(1, 0, 0), array(0, 1, 0), array(0, 0, 1));
1866 7478 kellanved
        var $abs_x = array(1, 0);
1867 7478 kellanved
        var $abs_y = array(0, 1);
1868 7478 kellanved
        var $x = 0;
1869 7478 kellanved
        var $y = 1;
1870 7478 kellanved
        var $z = 2;
1871 7478 kellanved
        var $letter = '';
1872 7478 kellanved
1873 7478 kellanved
        /**
1874 7478 kellanved
        */
1875 7478 kellanved
        function char_cube3d(&$bitmaps, $letter)
1876 7478 kellanved
        {
1877 7478 kellanved
                $this->bitmap                        = $bitmaps['data'][$letter];
1878 7478 kellanved
                $this->bitmap_width                = $bitmaps['width'];
1879 7478 kellanved
                $this->bitmap_height        = $bitmaps['height'];
1880 7478 kellanved
1881 7478 kellanved
                $this->basis_matrix[0][0] = mt_rand(-600, 600);
1882 7478 kellanved
                $this->basis_matrix[0][1] = mt_rand(-600, 600);
1883 7478 kellanved
                $this->basis_matrix[0][2] = (mt_rand(0, 1) * 2000) - 1000;
1884 7478 kellanved
                $this->basis_matrix[1][0] = mt_rand(-1000, 1000);
1885 7478 kellanved
                $this->basis_matrix[1][1] = mt_rand(-1000, 1000);
1886 7478 kellanved
                $this->basis_matrix[1][2] = mt_rand(-1000, 1000);
1887 7478 kellanved
1888 7478 kellanved
                $this->normalize($this->basis_matrix[0]);
1889 7478 kellanved
                $this->normalize($this->basis_matrix[1]);
1890 7478 kellanved
                $this->basis_matrix[2] = $this->cross_product($this->basis_matrix[0], $this->basis_matrix[1]);
1891 7478 kellanved
                $this->normalize($this->basis_matrix[2]);
1892 7478 kellanved
1893 7478 kellanved
                // $this->basis_matrix[1] might not be (probably isn't) orthogonal to $basis_matrix[0]
1894 7478 kellanved
                $this->basis_matrix[1] = $this->cross_product($this->basis_matrix[0], $this->basis_matrix[2]);
1895 7478 kellanved
                $this->normalize($this->basis_matrix[1]);
1896 7478 kellanved
1897 7478 kellanved
                // Make sure our cube is facing into the canvas (assuming +z == in)
1898 7478 kellanved
                for ($i = 0; $i < 3; ++$i)
1899 7478 kellanved
                {
1900 7478 kellanved
                        if ($this->basis_matrix[$i][2] < 0)
1901 6267 davidmj
                        {
1902 7478 kellanved
                                $this->basis_matrix[$i][0] *= -1;
1903 7478 kellanved
                                $this->basis_matrix[$i][1] *= -1;
1904 7478 kellanved
                                $this->basis_matrix[$i][2] *= -1;
1905 5985 davidmj
                        }
1906 5985 davidmj
                }
1907 6133 davidmj
1908 7478 kellanved
                // Force our "z" basis vector to be the one with greatest absolute z value
1909 7478 kellanved
                $this->x = 0;
1910 7478 kellanved
                $this->y = 1;
1911 7478 kellanved
                $this->z = 2;
1912 7478 kellanved
1913 7478 kellanved
                // Swap "y" with "z"
1914 7478 kellanved
                if ($this->basis_matrix[1][2] > $this->basis_matrix[2][2])
1915 5862 davidmj
                {
1916 7478 kellanved
                        $this->z = 1;
1917 7478 kellanved
                        $this->y = 2;
1918 7478 kellanved
                }
1919 7478 kellanved
1920 7478 kellanved
                // Swap "x" with "z"
1921 7478 kellanved
                if ($this->basis_matrix[0][2] > $this->basis_matrix[$this->z][2])
1922 7478 kellanved
                {
1923 7478 kellanved
                        $this->x = $this->z;
1924 7478 kellanved
                        $this->z = 0;
1925 7478 kellanved
                }
1926 7478 kellanved
1927 7478 kellanved
                // Still need to determine which of $x,$y are which.
1928 7478 kellanved
                // wrong orientation if y's y-component is less than it's x-component
1929 7478 kellanved
                // likewise if x's x-component is less than it's y-component
1930 7478 kellanved
                // if they disagree, go with the one with the greater weight difference.
1931 7478 kellanved
                // rotate if positive
1932 7478 kellanved
                $weight = (abs($this->basis_matrix[$this->x][1]) - abs($this->basis_matrix[$this->x][0])) + (abs($this->basis_matrix[$this->y][0]) - abs($this->basis_matrix[$this->y][1]));
1933 7478 kellanved
1934 7478 kellanved
                // Swap "x" with "y"
1935 7478 kellanved
                if ($weight > 0)
1936 7478 kellanved
                {
1937 7478 kellanved
                        list($this->x, $this->y) = array($this->y, $this->x);
1938 7478 kellanved
                }
1939 7478 kellanved
1940 7478 kellanved
                $this->abs_x = array($this->basis_matrix[$this->x][0], $this->basis_matrix[$this->x][1]);
1941 7478 kellanved
                $this->abs_y = array($this->basis_matrix[$this->y][0], $this->basis_matrix[$this->y][1]);
1942 7478 kellanved
1943 7478 kellanved
                if ($this->abs_x[0] < 0)
1944 7478 kellanved
                {
1945 7478 kellanved
                        $this->abs_x[0] *= -1;
1946 7478 kellanved
                        $this->abs_x[1] *= -1;
1947 7478 kellanved
                }
1948 7478 kellanved
1949 7478 kellanved
                if ($this->abs_y[1] > 0)
1950 7478 kellanved
                {
1951 7478 kellanved
                        $this->abs_y[0] *= -1;
1952 7478 kellanved
                        $this->abs_y[1] *= -1;
1953 7478 kellanved
                }
1954 7478 kellanved
1955 7478 kellanved
                $this->letter = $letter;
1956 7478 kellanved
        }
1957 7478 kellanved
1958 7478 kellanved
        /**
1959 7478 kellanved
        * Draw a character
1960 7478 kellanved
        */
1961 7478 kellanved
        function drawchar($scale, $xoff, $yoff, $img, $background, $colours)
1962 7478 kellanved
        {
1963 7478 kellanved
                $width        = $this->bitmap_width;
1964 7478 kellanved
                $height        = $this->bitmap_height;
1965 7478 kellanved
                $bitmap        = $this->bitmap;
1966 7478 kellanved
1967 7478 kellanved
                $colour1 = $colours[array_rand($colours)];
1968 7478 kellanved
                $colour2 = $colours[array_rand($colours)];
1969 7478 kellanved
1970 7478 kellanved
                $swapx = ($this->basis_matrix[$this->x][0] > 0);
1971 7478 kellanved
                $swapy = ($this->basis_matrix[$this->y][1] < 0);
1972 7478 kellanved
1973 7478 kellanved
                for ($y = 0; $y < $height; ++$y)
1974 7478 kellanved
                {
1975 7478 kellanved
                        for ($x = 0; $x < $width; ++$x)
1976 5862 davidmj
                        {
1977 7478 kellanved
                                $xp = ($swapx) ? ($width - $x - 1) : $x;
1978 7478 kellanved
                                $yp = ($swapy) ? ($height - $y - 1) : $y;
1979 7478 kellanved
1980 7478 kellanved
                                if ($bitmap[$height - $yp - 1][$xp])
1981 7478 kellanved
                                {
1982 7478 kellanved
                                        $dx = $this->scale($this->abs_x, ($xp - ($swapx ? ($width / 2) : ($width / 2) - 1)) * $scale);
1983 7478 kellanved
                                        $dy = $this->scale($this->abs_y, ($yp - ($swapy ? ($height / 2) : ($height / 2) - 1)) * $scale);
1984 7478 kellanved
                                        $xo = $xoff + $dx[0] + $dy[0];
1985 7478 kellanved
                                        $yo = $yoff + $dx[1] + $dy[1];
1986 7478 kellanved
1987 7478 kellanved
                                        $origin = array(0, 0, 0);
1988 7478 kellanved
                                        $xvec = $this->scale($this->basis_matrix[$this->x], $scale);
1989 7478 kellanved
                                        $yvec = $this->scale($this->basis_matrix[$this->y], $scale);
1990 7478 kellanved
                                        $face_corner = $this->sum2($xvec, $yvec);
1991 7478 kellanved
1992 7478 kellanved
                                        $zvec = $this->scale($this->basis_matrix[$this->z], $scale);
1993 7478 kellanved
                                        $x_corner = $this->sum2($xvec, $zvec);
1994 7478 kellanved
                                        $y_corner = $this->sum2($yvec, $zvec);
1995 7478 kellanved
1996 7478 kellanved
                                        imagefilledpolygon($img, $this->gen_poly($xo, $yo, $origin, $xvec, $x_corner,$zvec), 4, $colour1);
1997 7478 kellanved
                                        imagefilledpolygon($img, $this->gen_poly($xo, $yo, $origin, $yvec, $y_corner,$zvec), 4, $colour2);
1998 7478 kellanved
1999 7478 kellanved
                                        $face = $this->gen_poly($xo, $yo, $origin, $xvec, $face_corner, $yvec);
2000 7478 kellanved
2001 7478 kellanved
                                        imagefilledpolygon($img, $face, 4, $background);
2002 7478 kellanved
                                        imagepolygon($img, $face, 4, $colour1);
2003 7478 kellanved
                                }
2004 5862 davidmj
                        }
2005 5862 davidmj
                }
2006 7478 kellanved
        }
2007 7478 kellanved
2008 7478 kellanved
        /*
2009 7478 kellanved
        * return a roughly acceptable range of sizes for rendering with this texttype
2010 7478 kellanved
        */
2011 7478 kellanved
        function range()
2012 7478 kellanved
        {
2013 7478 kellanved
                return array(3, 4);
2014 7478 kellanved
        }
2015 7478 kellanved
2016 7478 kellanved
        /**
2017 7478 kellanved
        * Vector length
2018 7478 kellanved
        */
2019 7478 kellanved
        function vectorlen($vector)
2020 7478 kellanved
        {
2021 7478 kellanved
                return sqrt(pow($vector[0], 2) + pow($vector[1], 2) + pow($vector[2], 2));
2022 7478 kellanved
        }
2023 7478 kellanved
2024 7478 kellanved
        /**
2025 7478 kellanved
        * Normalize
2026 7478 kellanved
        */
2027 7478 kellanved
        function normalize(&$vector, $length = 1)
2028 7478 kellanved
        {
2029 7478 kellanved
                $length = (( $length < 1) ? 1 : $length);
2030 7478 kellanved
                $length /= $this->vectorlen($vector);
2031 7478 kellanved
                $vector[0] *= $length;
2032 7478 kellanved
                $vector[1] *= $length;
2033 7478 kellanved
                $vector[2] *= $length;
2034 7478 kellanved
        }
2035 7478 kellanved
2036 7478 kellanved
        /**
2037 7478 kellanved
        */
2038 7478 kellanved
        function cross_product($vector1, $vector2)
2039 7478 kellanved
        {
2040 7478 kellanved
                $retval = array(0, 0, 0);
2041 7478 kellanved
                $retval[0] =  (($vector1[1] * $vector2[2]) - ($vector1[2] * $vector2[1]));
2042 7478 kellanved
                $retval[1] = -(($vector1[0] * $vector2[2]) - ($vector1[2] * $vector2[0]));
2043 7478 kellanved
                $retval[2] =  (($vector1[0] * $vector2[1]) - ($vector1[1] * $vector2[0]));
2044 7478 kellanved
2045 7478 kellanved
                return $retval;
2046 7478 kellanved
        }
2047 7478 kellanved
2048 7478 kellanved
        /**
2049 7478 kellanved
        */
2050 7478 kellanved
        function sum($vector1, $vector2)
2051 7478 kellanved
        {
2052 7478 kellanved
                return array($vector1[0] + $vector2[0], $vector1[1] + $vector2[1], $vector1[2] + $vector2[2]);
2053 7478 kellanved
        }
2054 7478 kellanved
2055 7478 kellanved
        /**
2056 7478 kellanved
        */
2057 7478 kellanved
        function sum2($vector1, $vector2)
2058 7478 kellanved
        {
2059 7478 kellanved
                return array($vector1[0] + $vector2[0], $vector1[1] + $vector2[1]);
2060 7478 kellanved
        }
2061 7478 kellanved
2062 7478 kellanved
        /**
2063 7478 kellanved
        */
2064 7478 kellanved
        function scale($vector, $length)
2065 7478 kellanved
        {
2066 7478 kellanved
                if (sizeof($vector) == 2)
2067 5862 davidmj
                {
2068 7478 kellanved
                        return array($vector[0] * $length, $vector[1] * $length);
2069 7478 kellanved
                }
2070 7478 kellanved
2071 7478 kellanved
                return array($vector[0] * $length, $vector[1] * $length, $vector[2] * $length);
2072 7478 kellanved
        }
2073 7478 kellanved
2074 7478 kellanved
        /**
2075 7478 kellanved
        */
2076 7478 kellanved
        function gen_poly($xoff, $yoff, &$vec1, &$vec2, &$vec3, &$vec4)
2077 7478 kellanved
        {
2078 7478 kellanved
                $poly = array();
2079 7478 kellanved
                $poly[0] = $xoff + $vec1[0];
2080 7478 kellanved
                $poly[1] = $yoff + $vec1[1];
2081 7478 kellanved
                $poly[2] = $xoff + $vec2[0];
2082 7478 kellanved
                $poly[3] = $yoff + $vec2[1];
2083 7478 kellanved
                $poly[4] = $xoff + $vec3[0];
2084 7478 kellanved
                $poly[5] = $yoff + $vec3[1];
2085 7478 kellanved
                $poly[6] = $xoff + $vec4[0];
2086 7478 kellanved
                $poly[7] = $yoff + $vec4[1];
2087 7478 kellanved
2088 7478 kellanved
                return $poly;
2089 7478 kellanved
        }
2090 7478 kellanved
2091 7478 kellanved
        /**
2092 7478 kellanved
        * dimensions
2093 7478 kellanved
        */
2094 7478 kellanved
        function dimensions($size)
2095 7478 kellanved
        {
2096 7478 kellanved
                $xn = $this->scale($this->basis_matrix[$this->x], -($this->bitmap_width / 2) * $size);
2097 7478 kellanved
                $xp = $this->scale($this->basis_matrix[$this->x], ($this->bitmap_width / 2) * $size);
2098 7478 kellanved
                $yn = $this->scale($this->basis_matrix[$this->y], -($this->bitmap_height / 2) * $size);
2099 7478 kellanved
                $yp = $this->scale($this->basis_matrix[$this->y], ($this->bitmap_height / 2) * $size);
2100 7478 kellanved
2101 7478 kellanved
                $p = array();
2102 7478 kellanved
                $p[0] = $this->sum2($xn, $yn);
2103 7478 kellanved
                $p[1] = $this->sum2($xp, $yn);
2104 7478 kellanved
                $p[2] = $this->sum2($xp, $yp);
2105 7478 kellanved
                $p[3] = $this->sum2($xn, $yp);
2106 7478 kellanved
2107 7478 kellanved
                $min_x = $max_x = $p[0][0];
2108 7478 kellanved
                $min_y = $max_y = $p[0][1];
2109 7478 kellanved
2110 7478 kellanved
                for ($i = 1; $i < 4; ++$i)
2111 7478 kellanved
                {
2112 7478 kellanved
                        $min_x = ($min_x > $p[$i][0]) ? $p[$i][0] : $min_x;
2113 7478 kellanved
                        $min_y = ($min_y > $p[$i][1]) ? $p[$i][1] : $min_y;
2114 7478 kellanved
                        $max_x = ($max_x < $p[$i][0]) ? $p[$i][0] : $max_x;
2115 7478 kellanved
                        $max_y = ($max_y < $p[$i][1]) ? $p[$i][1] : $max_y;
2116 7478 kellanved
                }
2117 7478 kellanved
2118 7478 kellanved
                return array($min_x, $min_y, $max_x, $max_y);
2119 7478 kellanved
        }
2120 7478 kellanved
}
2121 7478 kellanved
2122 7478 kellanved
/**
2123 7478 kellanved
* @package VC
2124 7478 kellanved
*/
2125 7478 kellanved
class colour_manager
2126 7478 kellanved
{
2127 7478 kellanved
        var $img;
2128 7478 kellanved
        var $mode;
2129 7478 kellanved
        var $colours;
2130 7478 kellanved
        var $named_colours;
2131 7478 kellanved
2132 7478 kellanved
        /**
2133 7478 kellanved
        * Create the colour manager, link it to the image resource
2134 7478 kellanved
        */
2135 7478 kellanved
        function colour_manager($img, $background = false, $mode = 'ahsv')
2136 7478 kellanved
        {
2137 7478 kellanved
                $this->img = $img;
2138 7478 kellanved
                $this->mode = $mode;
2139 7478 kellanved
                $this->colours = array();
2140 7478 kellanved
                $this->named_colours = array();
2141 7478 kellanved
2142 7478 kellanved
                if ($background !== false)
2143 7478 kellanved
                {
2144 7478 kellanved
                        $bg = $this->allocate_named('background', $background);
2145 7478 kellanved
                        imagefill($this->img, 0, 0, $bg);
2146 7478 kellanved
                }
2147 7478 kellanved
        }
2148 7478 kellanved
2149 7478 kellanved
        /**
2150 7478 kellanved
        * Lookup a named colour resource
2151 7478 kellanved
        */
2152 7478 kellanved
        function get_resource($named_colour)
2153 7478 kellanved
        {
2154 7478 kellanved
                if (isset($this->named_colours[$named_colour]))
2155 7478 kellanved
                {
2156 7478 kellanved
                        return $this->named_colours[$named_colour];
2157 7478 kellanved
                }
2158 7478 kellanved
2159 7478 kellanved
                if (isset($this->named_rgb[$named_colour]))
2160 7478 kellanved
                {
2161 7478 kellanved
                        return $this->allocate_named($named_colour, $this->named_rgb[$named_colour], 'rgb');
2162 7478 kellanved
                }
2163 7478 kellanved
2164 7478 kellanved
                return false;
2165 7478 kellanved
        }
2166 7478 kellanved
2167 7478 kellanved
        /**
2168 7478 kellanved
        * Assign a name to a colour resource
2169 7478 kellanved
        */
2170 7478 kellanved
        function name_colour($name, $resource)
2171 7478 kellanved
        {
2172 7478 kellanved
                $this->named_colours[$name] = $resource;
2173 7478 kellanved
        }
2174 7478 kellanved
2175 7478 kellanved
        /**
2176 7478 kellanved
        * names and allocates a colour resource
2177 7478 kellanved
        */
2178 7478 kellanved
        function allocate_named($name, $colour, $mode = false)
2179 7478 kellanved
        {
2180 7478 kellanved
                $resource = $this->allocate($colour, $mode);
2181 7478 kellanved
2182 7478 kellanved
                if ($resource !== false)
2183 7478 kellanved
                {
2184 7478 kellanved
                        $this->name_colour($name, $resource);
2185 7478 kellanved
                }
2186 7478 kellanved
                return $resource;
2187 7478 kellanved
        }
2188 7478 kellanved
2189 7478 kellanved
        /**
2190 7478 kellanved
        * allocates a specified colour into the image
2191 7478 kellanved
        */
2192 7478 kellanved
        function allocate($colour, $mode = false)
2193 7478 kellanved
        {
2194 7478 kellanved
                if ($mode === false)
2195 7478 kellanved
                {
2196 7478 kellanved
                        $mode = $this->mode;
2197 7478 kellanved
                }
2198 7486 kellanved
2199 7478 kellanved
                if (!is_array($colour))
2200 7478 kellanved
                {
2201 7478 kellanved
                        if (isset($this->named_rgb[$colour]))
2202 5862 davidmj
                        {
2203 7478 kellanved
                                return $this->allocate_named($colour, $this->named_rgb[$colour], 'rgb');
2204 5862 davidmj
                        }
2205 6584 acydburn
2206 7478 kellanved
                        if (!is_int($colour))
2207 5862 davidmj
                        {
2208 7478 kellanved
                                return false;
2209 5862 davidmj
                        }
2210 7478 kellanved
2211 7478 kellanved
                        $mode = 'rgb';
2212 7478 kellanved
                        $colour = array(255 & ($colour >> 16), 255 & ($colour >>  8), 255 & $colour);
2213 5862 davidmj
                }
2214 5862 davidmj
2215 7478 kellanved
                if (isset($colour['mode']))
2216 7478 kellanved
                {
2217 7478 kellanved
                        $mode = $colour['mode'];
2218 7478 kellanved
                        unset($colour['mode']);
2219 7478 kellanved
                }
2220 5862 davidmj
2221 7478 kellanved
                if (isset($colour['random']))
2222 5862 davidmj
                {
2223 7478 kellanved
                        unset($colour['random']);
2224 7478 kellanved
                        // everything else is params
2225 7478 kellanved
                        return $this->random_colour($colour, $mode);
2226 7478 kellanved
                }
2227 8147 acydburn
2228 7486 kellanved
                $rgb                = colour_manager::model_convert($colour, $mode, 'rgb');
2229 7478 kellanved
                $store                = ($this->mode == 'rgb') ? $rgb : colour_manager::model_convert($colour, $mode, $this->mode);
2230 7478 kellanved
                $resource        = imagecolorallocate($this->img, $rgb[0], $rgb[1], $rgb[2]);
2231 7478 kellanved
                $this->colours[$resource] = $store;
2232 5862 davidmj
2233 7478 kellanved
                return $resource;
2234 7478 kellanved
        }
2235 7478 kellanved
2236 7478 kellanved
        /**
2237 7478 kellanved
        * randomly generates a colour, with optional params
2238 7478 kellanved
        */
2239 7478 kellanved
        function random_colour($params = array(), $mode = false)
2240 7478 kellanved
        {
2241 7478 kellanved
                if ($mode === false)
2242 7478 kellanved
                {
2243 7478 kellanved
                        $mode = $this->mode;
2244 5862 davidmj
                }
2245 5862 davidmj
2246 7478 kellanved
                switch ($mode)
2247 7478 kellanved
                {
2248 7478 kellanved
                        case 'rgb':
2249 7478 kellanved
                                // @TODO random rgb generation. do we intend to do this, or is it just too tedious?
2250 7478 kellanved
                        break;
2251 7478 kellanved
2252 7478 kellanved
                        case 'ahsv':
2253 7478 kellanved
                        case 'hsv':
2254 7478 kellanved
                        default:
2255 7478 kellanved
2256 7478 kellanved
                                $default_params = array(
2257 7478 kellanved
                                        'hue_bias'                        => false,        // degree / 'r'/'g'/'b'/'c'/'m'/'y'   /'o'
2258 7478 kellanved
                                        'hue_range'                        => false,        // if hue bias, then difference range +/- from bias
2259 7478 kellanved
                                        'min_saturation'        => 30,                // 0 - 100
2260 7486 kellanved
                                        'max_saturation'        => 80,                // 0 - 100
2261 7478 kellanved
                                        'min_value'                        => 30,                // 0 - 100
2262 7486 kellanved
                                        'max_value'                        => 80,                // 0 - 100
2263 7478 kellanved
                                );
2264 7478 kellanved
2265 7478 kellanved
                                $alt = ($mode == 'ahsv') ? true : false;
2266 7478 kellanved
                                $params = array_merge($default_params, $params);
2267 7478 kellanved
2268 7478 kellanved
                                $min_hue                = 0;
2269 7478 kellanved
                                $max_hue                = 359;
2270 7478 kellanved
                                $min_saturation        = max(0, $params['min_saturation']);
2271 7478 kellanved
                                $max_saturation        = min(100, $params['max_saturation']);
2272 7478 kellanved
                                $min_value                = max(0, $params['min_value']);
2273 7478 kellanved
                                $max_value                = min(100, $params['max_value']);
2274 7478 kellanved
2275 7478 kellanved
                                if ($params['hue_bias'] !== false)
2276 7478 kellanved
                                {
2277 7478 kellanved
                                        if (is_numeric($params['hue_bias']))
2278 7478 kellanved
                                        {
2279 7478 kellanved
                                                $h = intval($params['hue_bias']) % 360;
2280 7478 kellanved
                                        }
2281 7478 kellanved
                                        else
2282 7478 kellanved
                                        {
2283 7478 kellanved
                                                switch ($params['hue_bias'])
2284 7478 kellanved
                                                {
2285 7478 kellanved
                                                        case 'o':
2286 7478 kellanved
                                                                $h = $alt ?  60 :  30;
2287 7478 kellanved
                                                        break;
2288 7478 kellanved
2289 7478 kellanved
                                                        case 'y':
2290 7478 kellanved
                                                                $h = $alt ? 120 :  60;
2291 7478 kellanved
                                                        break;
2292 7478 kellanved
2293 7478 kellanved
                                                        case 'g':
2294 7478 kellanved
                                                                $h = $alt ? 180 : 120;
2295 7478 kellanved
                                                        break;
2296 7478 kellanved
2297 7478 kellanved
                                                        case 'c':
2298 7478 kellanved
                                                                $h = $alt ? 210 : 180;
2299 7478 kellanved
                                                        break;
2300 7478 kellanved
2301 7478 kellanved
                                                        case 'b':
2302 7478 kellanved
                                                                $h = 240;
2303 7478 kellanved
                                                        break;
2304 7478 kellanved
2305 7478 kellanved
                                                        case 'm':
2306 7478 kellanved
                                                                $h = 300;
2307 7478 kellanved
                                                        break;
2308 7478 kellanved
2309 7478 kellanved
                                                        case 'r':
2310 7478 kellanved
                                                        default:
2311 7478 kellanved
                                                                $h = 0;
2312 7478 kellanved
                                                        break;
2313 7478 kellanved
                                                }
2314 7478 kellanved
                                        }
2315 7478 kellanved
2316 7478 kellanved
                                        $min_hue = $h + 360;
2317 7478 kellanved
                                        $max_hue = $h + 360;
2318 7478 kellanved
2319 7478 kellanved
                                        if ($params['hue_range'])
2320 7478 kellanved
                                        {
2321 7478 kellanved
                                                $min_hue -= min(180, $params['hue_range']);
2322 7478 kellanved
                                                $max_hue += min(180, $params['hue_range']);
2323 7478 kellanved
                                        }
2324 7478 kellanved
                                }
2325 7478 kellanved
2326 7478 kellanved
                                $h = mt_rand($min_hue, $max_hue);
2327 7478 kellanved
                                $s = mt_rand($min_saturation, $max_saturation);
2328 7478 kellanved
                                $v = mt_rand($min_value, $max_value);
2329 7478 kellanved
2330 7478 kellanved
                                return $this->allocate(array($h, $s, $v), $mode);
2331 7478 kellanved
2332 7478 kellanved
                        break;
2333 7478 kellanved
                }
2334 5862 davidmj
        }
2335 5862 davidmj
2336 7478 kellanved
        /**
2337 7478 kellanved
        */
2338 7478 kellanved
        function colour_scheme($resource, $include_original = true)
2339 5862 davidmj
        {
2340 7486 kellanved
                $mode = 'hsv';
2341 7478 kellanved
2342 7478 kellanved
                if (($pre = $this->get_resource($resource)) !== false)
2343 6267 davidmj
                {
2344 7478 kellanved
                        $resource = $pre;
2345 7478 kellanved
                }
2346 6912 acydburn
2347 7478 kellanved
                $colour = colour_manager::model_convert($this->colours[$resource], $this->mode, $mode);
2348 7478 kellanved
                $results = ($include_original) ? array($resource) : array();
2349 7478 kellanved
                $colour2 = $colour3 = $colour4 = $colour;
2350 8147 acydburn
                $colour2[0] += 150;
2351 7486 kellanved
                $colour3[0] += 180;
2352 7486 kellanved
                $colour4[0] += 210;
2353 7478 kellanved
2354 7486 kellanved
2355 7478 kellanved
                $results[] = $this->allocate($colour2, $mode);
2356 7478 kellanved
                $results[] = $this->allocate($colour3, $mode);
2357 7478 kellanved
                $results[] = $this->allocate($colour4, $mode);
2358 7478 kellanved
2359 7478 kellanved
                return $results;
2360 7478 kellanved
        }
2361 7478 kellanved
2362 7478 kellanved
        /**
2363 7478 kellanved
        */
2364 7478 kellanved
        function mono_range($resource, $count = 5, $include_original = true)
2365 7478 kellanved
        {
2366 7478 kellanved
                if (is_array($resource))
2367 7478 kellanved
                {
2368 7478 kellanved
                        $results = array();
2369 7478 kellanved
                        for ($i = 0, $size = sizeof($resource); $i < $size; ++$i)
2370 6912 acydburn
                        {
2371 7478 kellanved
                                $results = array_merge($results, $this->mono_range($resource[$i], $count, $include_original));
2372 6912 acydburn
                        }
2373 7478 kellanved
                        return $results;
2374 7478 kellanved
                }
2375 6912 acydburn
2376 7478 kellanved
                $mode = (in_array($this->mode, array('hsv', 'ahsv'), true) ? $this->mode : 'ahsv');
2377 7478 kellanved
                if (($pre = $this->get_resource($resource)) !== false)
2378 7478 kellanved
                {
2379 7478 kellanved
                        $resource = $pre;
2380 7478 kellanved
                }
2381 7478 kellanved
2382 7478 kellanved
                $colour = colour_manager::model_convert($this->colours[$resource], $this->mode, $mode);
2383 7478 kellanved
2384 7478 kellanved
                $results = array();
2385 7478 kellanved
                if ($include_original)
2386 7478 kellanved
                {
2387 7478 kellanved
                        $results[] = $resource;
2388 7478 kellanved
                        $count--;
2389 7478 kellanved
                }
2390 7478 kellanved
2391 7486 kellanved
                // This is a hard problem. I chicken out and try to maintain readability at the cost of less randomness.
2392 7486 kellanved
2393 7486 kellanved
                while ($count > 0)
2394 7478 kellanved
                {
2395 7486 kellanved
                        $colour[1] = ($colour[1] + mt_rand(40,60)) % 99;
2396 7486 kellanved
                        $colour[2] = ($colour[2] + mt_rand(40,60));
2397 7486 kellanved
                        $results[] = $this->allocate($colour, $mode);
2398 7486 kellanved
                        $count--;
2399 6267 davidmj
                }
2400 7478 kellanved
                return $results;
2401 6267 davidmj
        }
2402 7478 kellanved
2403 7478 kellanved
        /**
2404 7478 kellanved
        * Convert from one colour model to another
2405 7478 kellanved
        */
2406 7478 kellanved
        function model_convert($colour, $from_model, $to_model)
2407 7478 kellanved
        {
2408 7478 kellanved
                if ($from_model == $to_model)
2409 7478 kellanved
                {
2410 7478 kellanved
                        return $colour;
2411 7478 kellanved
                }
2412 7478 kellanved
2413 7478 kellanved
                switch ($to_model)
2414 7478 kellanved
                {
2415 7478 kellanved
                        case 'hsv':
2416 7478 kellanved
2417 7478 kellanved
                                switch ($from_model)
2418 7478 kellanved
                                {
2419 7478 kellanved
                                        case 'ahsv':
2420 7478 kellanved
                                                return colour_manager::ah2h($colour);
2421 7478 kellanved
                                        break;
2422 7478 kellanved
2423 7478 kellanved
                                        case 'rgb':
2424 7478 kellanved
                                                return colour_manager::rgb2hsv($colour);
2425 7478 kellanved
                                        break;
2426 7478 kellanved
                                }
2427 7478 kellanved
                        break;
2428 7478 kellanved
2429 7478 kellanved
                        case 'ahsv':
2430 7478 kellanved
2431 7478 kellanved
                                switch ($from_model)
2432 7478 kellanved
                                {
2433 7478 kellanved
                                        case 'hsv':
2434 7478 kellanved
                                                return colour_manager::h2ah($colour);
2435 7478 kellanved
                                        break;
2436 7478 kellanved
2437 7478 kellanved
                                        case 'rgb':
2438 7478 kellanved
                                                return colour_manager::h2ah(colour_manager::rgb2hsv($colour));
2439 7478 kellanved
                                        break;
2440 7478 kellanved
                                }
2441 7478 kellanved
                        break;
2442 7478 kellanved
2443 7478 kellanved
                        case 'rgb':
2444 7478 kellanved
                                switch ($from_model)
2445 7478 kellanved
                                {
2446 7478 kellanved
                                        case 'hsv':
2447 7478 kellanved
                                                return colour_manager::hsv2rgb($colour);
2448 7478 kellanved
                                        break;
2449 7478 kellanved
2450 7478 kellanved
                                        case 'ahsv':
2451 7478 kellanved
                                                return colour_manager::hsv2rgb(colour_manager::ah2h($colour));
2452 7478 kellanved
                                        break;
2453 7478 kellanved
                                }
2454 7478 kellanved
                        break;
2455 7478 kellanved
                }
2456 7478 kellanved
                return false;
2457 7478 kellanved
        }
2458 7478 kellanved
2459 7478 kellanved
        /**
2460 7478 kellanved
        * Slightly altered from wikipedia's algorithm
2461 7478 kellanved
        */
2462 7478 kellanved
        function hsv2rgb($hsv)
2463 7478 kellanved
        {
2464 7478 kellanved
                colour_manager::normalize_hue($hsv[0]);
2465 7478 kellanved
2466 7478 kellanved
                $h = $hsv[0];
2467 7478 kellanved
                $s = min(1, max(0, $hsv[1] / 100));
2468 7478 kellanved
                $v = min(1, max(0, $hsv[2] / 100));
2469 8147 acydburn
2470 7478 kellanved
                // calculate hue sector
2471 7478 kellanved
                $hi = floor($hsv[0] / 60);
2472 7478 kellanved
2473 7478 kellanved
                // calculate opposite colour
2474 7478 kellanved
                $p = $v * (1 - $s);
2475 7478 kellanved
2476 7478 kellanved
                // calculate distance between hex vertices
2477 7478 kellanved
                $f = ($h / 60) - $hi;
2478 7478 kellanved
2479 7478 kellanved
                // coming in or going out?
2480 7478 kellanved
                if (!($hi & 1))
2481 7478 kellanved
                {
2482 7478 kellanved
                        $f = 1 - $f;
2483 7478 kellanved
                }
2484 7478 kellanved
2485 7478 kellanved
                // calculate adjacent colour
2486 7478 kellanved
                $q = $v * (1 - ($f * $s));
2487 8147 acydburn
2488 7478 kellanved
                switch ($hi)
2489 7478 kellanved
                {
2490 7478 kellanved
                        case 0:
2491 7478 kellanved
                                $rgb = array($v, $q, $p);
2492 7478 kellanved
                        break;
2493 7478 kellanved
2494 7478 kellanved
                        case 1:
2495 7478 kellanved
                                $rgb = array($q, $v, $p);
2496 7478 kellanved
                        break;
2497 7478 kellanved
2498 7478 kellanved
                        case 2:
2499 7478 kellanved
                                $rgb = array($p, $v, $q);
2500 7478 kellanved
                        break;
2501 7478 kellanved
2502 7478 kellanved
                        case 3:
2503 7478 kellanved
                                $rgb = array($p, $q, $v);
2504 7478 kellanved
                        break;
2505 7478 kellanved
2506 7478 kellanved
                        case 4:
2507 7478 kellanved
                                $rgb = array($q, $p, $v);
2508 7478 kellanved
                        break;
2509 7478 kellanved
2510 7478 kellanved
                        case 5:
2511 7478 kellanved
                                $rgb = array($v, $p, $q);
2512 7478 kellanved
                        break;
2513 7478 kellanved
2514 7478 kellanved
                        default:
2515 7478 kellanved
                                return array(0, 0, 0);
2516 7478 kellanved
                        break;
2517 7478 kellanved
                }
2518 8147 acydburn
2519 7478 kellanved
                return array(255 * $rgb[0], 255 * $rgb[1], 255 * $rgb[2]);
2520 7478 kellanved
        }
2521 7478 kellanved
2522 7478 kellanved
        /**
2523 7478 kellanved
        * (more than) Slightly altered from wikipedia's algorithm
2524 7478 kellanved
        */
2525 7478 kellanved
        function rgb2hsv($rgb)
2526 7478 kellanved
        {
2527 7478 kellanved
                $r = min(255, max(0, $rgb[0]));
2528 7478 kellanved
                $g = min(255, max(0, $rgb[1]));
2529 7478 kellanved
                $b = min(255, max(0, $rgb[2]));
2530 7478 kellanved
                $max = max($r, $g, $b);
2531 7478 kellanved
                $min = min($r, $g, $b);
2532 7478 kellanved
2533 7478 kellanved
                $v = $max / 255;
2534 7478 kellanved
                $s = (!$max) ? 0 : 1 - ($min / $max);
2535 7478 kellanved
2536 7478 kellanved
                // if max - min is 0, we want hue to be 0 anyway.
2537 7478 kellanved
                $h = $max - $min;
2538 7478 kellanved
2539 7478 kellanved
                if ($h)
2540 7478 kellanved
                {
2541 7478 kellanved
                        switch ($max)
2542 7478 kellanved
                        {
2543 7478 kellanved
                                case $g:
2544 7478 kellanved
                                        $h = 120 + (60 * ($b - $r) / $h);
2545 7478 kellanved
                                break;
2546 7478 kellanved
2547 7478 kellanved
                                case $b:
2548 7478 kellanved
                                        $h = 240 + (60 * ($r - $g) / $h);
2549 7478 kellanved
                                break;
2550 7478 kellanved
2551 7478 kellanved
                                case $r:
2552 7478 kellanved
                                        $h = 360 + (60 * ($g - $b) / $h);
2553 7478 kellanved
                                break;
2554 7478 kellanved
                        }
2555 7478 kellanved
                }
2556 7478 kellanved
                colour_manager::normalize_hue($h);
2557 7478 kellanved
2558 7478 kellanved
                return array($h, $s * 100, $v * 100);
2559 7478 kellanved
        }
2560 7478 kellanved
2561 7478 kellanved
        /**
2562 7478 kellanved
        */
2563 7478 kellanved
        function normalize_hue(&$hue)
2564 7478 kellanved
        {
2565 7478 kellanved
                $hue %= 360;
2566 7478 kellanved
2567 7478 kellanved
                if ($hue < 0)
2568 7478 kellanved
                {
2569 7478 kellanved
                        $hue += 360;
2570 7478 kellanved
                }
2571 7478 kellanved
        }
2572 7478 kellanved
2573 7478 kellanved
        /**
2574 7478 kellanved
        * Alternate hue to hue
2575 7478 kellanved
        */
2576 7478 kellanved
        function ah2h($ahue)
2577 7478 kellanved
        {
2578 7478 kellanved
                if (is_array($ahue))
2579 7478 kellanved
                {
2580 7478 kellanved
                        $ahue[0] = colour_manager::ah2h($ahue[0]);
2581 7478 kellanved
                        return $ahue;
2582 7478 kellanved
                }
2583 7478 kellanved
                colour_manager::normalize_hue($ahue);
2584 7478 kellanved
2585 7478 kellanved
                // blue through red is already ok
2586 7478 kellanved
                if ($ahue >= 240)
2587 7478 kellanved
                {
2588 7478 kellanved
                        return $ahue;
2589 7478 kellanved
                }
2590 7478 kellanved
2591 7478 kellanved
                // ahue green is at 180
2592 7478 kellanved
                if ($ahue >= 180)
2593 7478 kellanved
                {
2594 7478 kellanved
                        // return (240 - (2 * (240 - $ahue)));
2595 7478 kellanved
                        return (2 * $ahue) - 240; // equivalent
2596 7478 kellanved
                }
2597 7478 kellanved
2598 7478 kellanved
                // ahue yellow is at 120   (RYB rather than RGB)
2599 7478 kellanved
                if ($ahue >= 120)
2600 7478 kellanved
                {
2601 7478 kellanved
                        return $ahue - 60;
2602 7478 kellanved
                }
2603 7478 kellanved
2604 7478 kellanved
                return $ahue / 2;
2605 7478 kellanved
        }
2606 7478 kellanved
2607 7478 kellanved
        /**
2608 7478 kellanved
        * hue to Alternate hue
2609 7478 kellanved
        */
2610 7478 kellanved
        function h2ah($hue)
2611 7478 kellanved
        {
2612 7478 kellanved
                if (is_array($hue))
2613 7478 kellanved
                {
2614 7478 kellanved
                        $hue[0] = colour_manager::h2ah($hue[0]);
2615 7478 kellanved
                        return $hue;
2616 7478 kellanved
                }
2617 7478 kellanved
                colour_manager::normalize_hue($hue);
2618 7478 kellanved
2619 7478 kellanved
                // blue through red is already ok
2620 7478 kellanved
                if ($hue >= 240)
2621 7478 kellanved
                {
2622 7478 kellanved
                        return $hue;
2623 7478 kellanved
                }
2624 7478 kellanved
                else if ($hue <= 60)
2625 7478 kellanved
                {
2626 7478 kellanved
                        return $hue * 2;
2627 7478 kellanved
                }
2628 7478 kellanved
                else if ($hue <= 120)
2629 7478 kellanved
                {
2630 7478 kellanved
                        return $hue + 60;
2631 7478 kellanved
                }
2632 7478 kellanved
                else
2633 7478 kellanved
                {
2634 7478 kellanved
                        return ($hue + 240) / 2;
2635 7478 kellanved
                }
2636 7478 kellanved
        }
2637 6267 davidmj
}