phpBB

Code Changes

File: includes/captcha/captcha_gd.php

  Unmodified   Added   Modified   Removed
Line 26Line 26
{
var $width = 360;
var $height = 96;

{
var $width = 360;
var $height = 96;

 



/**
* Create the image containing $code with a seed of $seed


/**
* Create the image containing $code with a seed of $seed

Line 33Line 34
	function execute($code, $seed)
{
global $config;

	function execute($code, $seed)
{
global $config;

		srand($seed);

		

		mt_srand($seed);

// Create image

		mt_srand($seed);

// Create image

Line 52Line 53
		$bg_colours = array_splice($scheme, mt_rand(6, 12));

// Generate code characters

		$bg_colours = array_splice($scheme, mt_rand(6, 12));

// Generate code characters

		$characters = $sizes = $bounding_boxes = array();

		$characters = $sizes = $bounding_boxes = $noise = array();

		$width_avail = $this->width - 15;
$code_len = strlen($code);

		$width_avail = $this->width - 15;
$code_len = strlen($code);



 
		$captcha_bitmaps = $this->captcha_bitmaps();

		$captcha_bitmaps = $this->captcha_bitmaps();

 


		for ($i = 0; $i < $code_len; ++$i)
{
$characters[$i] = new char_cube3d($captcha_bitmaps, $code[$i]);

		for ($i = 0; $i < $code_len; ++$i)
{
$characters[$i] = new char_cube3d($captcha_bitmaps, $code[$i]);

Line 68Line 69
			$width_avail -= ($box[2] - $box[0]);
$bounding_boxes[$i] = $box;
}

			$width_avail -= ($box[2] - $box[0]);
$bounding_boxes[$i] = $box;
}

 



// Redistribute leftover x-space
$offset = array();


// Redistribute leftover x-space
$offset = array();

Line 75Line 77
		{
$denom = ($code_len - $i);
$denom = max(1.3, $denom);

		{
$denom = ($code_len - $i);
$denom = max(1.3, $denom);

			$offset[$i] = mt_rand(0, (1.5 * $width_avail) / $denom);

			$offset[$i] = phpbb_mt_rand(0, (int) round((1.5 * $width_avail) / $denom));

			$width_avail -= $offset[$i];
}


			$width_avail -= $offset[$i];
}


Line 97Line 99
				$current_colour = $scheme[array_rand($scheme)];
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);
}

				$current_colour = $scheme[array_rand($scheme)];
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);
}

 
		}
if ($config['captcha_gd_wave'] && ($config['captcha_gd_y_grid'] || $config['captcha_gd_y_grid']))
{
$this->wave($img);

		}


		}


 
		
if ($config['captcha_gd_3d_noise'])
{
$xoffset = mt_rand(0,9);
$noise_bitmaps = $this->captcha_noise_bg_bitmaps();
for ($i = 0; $i < $code_len; ++$i)
{
$noise[$i] = new char_cube3d($noise_bitmaps, mt_rand(1, sizeof($noise_bitmaps['data'])));

list($min, $max) = $noise[$i]->range();
//$box = $noise[$i]->dimensions($sizes[$i]);
}
$xoffset = 0;
for ($i = 0; $i < $code_len; ++$i)
{
$dimm = $bounding_boxes[$i];
$xoffset += ($offset[$i] - $dimm[0]);
$yoffset = mt_rand(-$dimm[1], $this->height - $dimm[3]);

$noise[$i]->drawchar($sizes[$i], $xoffset, $yoffset, $img, $colour->get_resource('background'), $scheme);
$xoffset += $dimm[2];
}
}

		$xoffset = 5;
for ($i = 0; $i < $code_len; ++$i)
{

		$xoffset = 5;
for ($i = 0; $i < $code_len; ++$i)
{

Line 109Line 138
			$characters[$i]->drawchar($sizes[$i], $xoffset, $yoffset, $img, $colour->get_resource('background'), $scheme);
$xoffset += $dimm[2];
}

			$characters[$i]->drawchar($sizes[$i], $xoffset, $yoffset, $img, $colour->get_resource('background'), $scheme);
$xoffset += $dimm[2];
}

		




		if ($config['captcha_gd_wave'])
{
$this->wave($img);
}

		if ($config['captcha_gd_foreground_noise'])
{
$this->noise_line($img, 0, 0, $this->width, $this->height, $colour->get_resource('background'), $scheme, $bg_colours);
}

		if ($config['captcha_gd_foreground_noise'])
{
$this->noise_line($img, 0, 0, $this->width, $this->height, $colour->get_resource('background'), $scheme, $bg_colours);
}



 
		// Send image
header('Content-Type: image/png');
header('Cache-control: no-cache, no-store');
imagepng($img);
imagedestroy($img);

		// Send image
header('Content-Type: image/png');
header('Cache-control: no-cache, no-store');
imagepng($img);
imagedestroy($img);

 
	}

/**
* Sinus
*/
function wave($img)
{
global $config;

$period_x = mt_rand(12,18);
$period_y = mt_rand(7,14);
$amp_x = mt_rand(5,10);
$amp_y = mt_rand(2,4);
$socket = mt_rand(0,100);

$dampen_x = mt_rand($this->width/5, $this->width/2);
$dampen_y = mt_rand($this->height/5, $this->height/2);
$direction_x = (mt_rand (0, 1));
$direction_y = (mt_rand (0, 1));

for ($i = 0; $i < $this->width; $i++)
{
$dir = ($direction_x) ? $i : ($this->width - $i);
imagecopy($img, $img, $i-1, sin($socket+ $i/($period_x + $dir/$dampen_x)) * $amp_x, $i, 0, 1, $this->height);
}
$socket = mt_rand(0,100);
for ($i = 0; $i < $this->height; $i++)
{
$dir = ($direction_y) ? $i : ($this->height - $i);
imagecopy($img, $img ,sin($socket + $i/($period_y + ($dir)/$dampen_y)) * $amp_y, $i-1, 0, $i, $this->width, 1);
}
return $img;

	}

/**

	}

/**

Line 169Line 232
		}
while ($x1 < $max_x && $x2 < $max_x);
imagesetthickness($img, 1);

		}
while ($x1 < $max_x && $x2 < $max_x);
imagesetthickness($img, 1);

 
	}


function captcha_noise_bg_bitmaps()
{
return array(
'width' => 15,
'height' => 5,
'data' => array(

1 => array(
array(1,0,0,0,1,0,0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,1,0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,1,0,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0,0,0,1,0,0,0),
),
2 => array(
array(1,1,mt_rand(0,1),1,0,1,1,1,1,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,1,1,0,1,1,1),
),
3 => array(
array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,0,0,0,0,0,1,0),
array(0,0,0,0,1,0,0,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,1),
),
4 => array(
array(1,0,1,0,1,0,0,1,1,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(1,0,1,0,0,0,0,0,0,0,0,0,0,0,0),
),
5 => array(
array(1,1,1,1,0,0,0,1,1,1,0,0,1,0,1),
array(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(1,0,1,0,0,0,0,0,0,0,0,0,0,0,0),
),
6 => array(
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)),
array(0,0,0,0,0,0,0,mt_rand(0,1),0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(mt_rand(0,1),0,mt_rand(0,1),0,0,0,0,0,0,0,0,0,0,0,0),
),
7 => array(
array(0,0,0,0,0,0,0,0,0,0,1,1,0,1,1),
array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
array(0,0,1,1,0,0,0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,1,0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
),
));

	}

/**

	}

/**

Line 176Line 299
	*/
function captcha_bitmaps()
{

	*/
function captcha_bitmaps()
{

		return array(
'width' => 9,
'height' => 15,
'data' => array(

		global $config;








			'A' => array(



		$chars = array(
'A' => array(
array(

				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),

				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),

Line 198Line 320
				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

			'B' => array(





































						array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,1,1,0,1,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,1,1,1,1,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,0,0,0,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,1,1,1,1,1,0,0),
array(0,1,1,0,0,0,1,1,0),
array(1,1,0,0,0,0,0,1,1),
array(1,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,1,1),
array(0,0,0,0,0,1,1,1,1),
array(0,0,0,1,1,1,0,0,1),
array(0,1,1,1,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,1,0,0,0,0,1,1,1),
array(0,1,1,1,1,1,1,0,1),
),
),
'B' => array(
array(

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 215Line 373
				array(1,0,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
),

				array(1,0,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
),

			'C' => array(





































						array(
array(1,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
),
array(
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,1,1,1,1,0,0),
),
),
'C' => array(
array(

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 232Line 426
				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

			'D' => array(




















						array(
array(0,0,1,1,1,1,1,0,1),
array(0,1,0,0,0,0,0,1,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,1),
array(0,0,1,1,1,1,1,0,1),
),
),
'D' => array(
array(

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 249Line 462
				array(1,0,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
),

				array(1,0,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
),

			'E' => array(





































						array(
array(1,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
),
array(
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,1,1,1,1,1,0,1),
array(0,1,1,0,0,0,1,1,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,1,0,0,0,1,1,1),
array(0,0,1,1,1,1,1,0,1),
),
),
'E' => array(
array(

				array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),

				array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),

Line 266Line 515
				array(1,0,0,0,0,0,0,0,0),
array(1,1,1,1,1,1,1,1,1),
),

				array(1,0,0,0,0,0,0,0,0),
array(1,1,1,1,1,1,1,1,1),
),

			'F' => array(





































						array(
array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,1),
array(1,1,1,1,1,1,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,1,1,1,1,1,0,0),
array(0,1,1,0,0,0,1,1,0),
array(1,1,0,0,0,0,0,1,1),
array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,1),
array(1,1,0,0,0,0,0,1,1),
array(0,1,1,1,1,1,1,1,0),
),
),
'F' => array(
array(

				array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),

				array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),

Line 283Line 568
				array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
),

				array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
),

			'G' => array(





































						array(
array(0,1,1,1,1,1,1,1,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(1,1,1,0,0,0,0,0,0),
),
array(
array(0,0,0,1,1,0,0,0,0),
array(0,0,1,1,0,0,0,0,0),
array(0,1,1,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(1,1,1,1,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
),
),
'G' => array(
array(

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 300Line 621
				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

			'H' => array(





































						array(
array(0,0,1,1,1,1,1,0,1),
array(0,1,0,0,0,0,0,1,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,1,1,1,1,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,1),
array(0,0,1,1,1,1,1,0,1),
),
array(
array(0,0,1,1,1,1,1,0,1),
array(0,1,1,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,1,1,0,0,0,0,0,1),
array(0,0,1,1,1,1,1,1,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,1,1),
array(1,1,1,1,1,1,1,1,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
),
),
'H' => array(
array(

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

Line 317Line 674
				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

			'I' => array(





































						array(
array(1,1,1,0,0,0,1,1,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,1,1,1,1,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,0,0,0,1,1,1),
),
array(
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,1,1,1,0,0,0),
array(1,1,1,1,0,1,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
),
),
'I' => array(
array(

				array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),

				array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),

Line 334Line 727
				array(0,0,0,0,1,0,0,0,0),
array(1,1,1,1,1,1,1,1,1),
),

				array(0,0,0,0,1,0,0,0,0),
array(1,1,1,1,1,1,1,1,1),
),

			'J' => array(





































						array(
array(0,0,0,1,1,1,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,1,1,0,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,1,1,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,1,1,0,0,0),
),
),
'J' => array(
array(

				array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),

				array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),

Line 351Line 780
				array(0,1,0,0,1,0,0,0,0),
array(0,0,1,1,0,0,0,0,0),
),

				array(0,1,0,0,1,0,0,0,0),
array(0,0,1,1,0,0,0,0,0),
),

			'K' => array(    // New 'K', supplied by NeoThermic





































						array(
array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(1,0,0,0,0,1,0,0,0),
array(1,0,0,0,0,1,0,0,0),
array(1,1,0,0,1,0,0,0,0),
array(1,0,1,1,0,0,0,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(1,0,0,0,0,1,0,0,0),
array(1,0,0,0,0,1,0,0,0),
array(0,1,0,0,1,0,0,0,0),
array(0,0,1,1,0,0,0,0,0),
),
),
'K' => array(
array( // New 'K', supplied by NeoThermic

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,1,0,0),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,1,0,0),

Line 368Line 833
				array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),
),

				array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),
),

			'L' => array(





































						array(
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,1,0,0),
array(0,1,0,0,0,1,0,0,0),
array(0,1,0,0,1,0,0,0,0),
array(0,1,0,1,0,0,0,0,0),
array(0,1,1,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,1,0,0,0,0,0,0),
array(0,1,0,1,0,0,0,0,0),
array(0,1,0,0,1,0,0,0,0),
array(0,1,0,0,0,1,0,0,0),
array(0,1,0,0,0,0,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,0,0,0,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,1,0,0,0),
array(0,1,0,0,1,0,0,0,0),
array(0,1,0,1,0,0,0,0,0),
array(0,1,1,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,1,0,0,0,0,0,0),
array(0,1,0,1,0,0,0,0,0),
array(0,1,0,0,1,0,0,0,0),
array(0,1,0,0,0,1,0,0,0),
array(0,1,0,0,0,0,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
),
),
'L' => array(
array(

				array(0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),

				array(0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),

Line 385Line 886
				array(1,0,0,0,0,0,0,0,0),
array(1,1,1,1,1,1,1,1,1),
),

				array(1,0,0,0,0,0,0,0,0),
array(1,1,1,1,1,1,1,1,1),
),

			'M' => array(





































						array(
array(0,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,1),
array(1,1,1,1,1,1,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,1,0,0,0,0,0,0),
array(0,0,1,1,1,0,0,0,0),
),
),
'M' => array(
array(

				array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,0,1,0,0,0,1,0,1),

				array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,0,1,0,0,0,1,0,1),

Line 402Line 939
				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

			'N' => array(





































						array(
array(0,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,0,0,0,1,1,0),
array(0,1,1,0,0,0,1,1,0),
array(0,1,1,0,0,0,1,1,0),
array(0,1,0,1,0,1,0,1,0),
array(0,1,0,1,0,1,0,1,0),
array(0,1,0,1,0,1,0,1,0),
array(0,1,0,0,1,0,0,1,0),
array(0,1,0,0,1,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,0,0,0,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,1,1,1,0,1,1,1,0),
array(1,1,0,1,1,1,0,1,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
),
),
'N' => array(
array(

				array(1,1,0,0,0,0,0,0,1),
array(1,1,0,0,0,0,0,0,1),
array(1,0,1,0,0,0,0,0,1),

				array(1,1,0,0,0,0,0,0,1),
array(1,1,0,0,0,0,0,0,1),
array(1,0,1,0,0,0,0,0,1),

Line 419Line 992
				array(1,0,0,0,0,0,0,1,1),
array(1,0,0,0,0,0,0,1,1),
),

				array(1,0,0,0,0,0,0,1,1),
array(1,0,0,0,0,0,0,1,1),
),

			'O' => array(





































						array(
array(0,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,0,0,0,0,1,0),
array(0,1,1,0,0,0,0,1,0),
array(0,1,1,0,0,0,0,1,0),
array(0,1,0,1,0,0,0,1,0),
array(0,1,0,1,0,0,0,1,0),
array(0,1,0,1,0,0,0,1,0),
array(0,1,0,0,1,0,0,1,0),
array(0,1,0,0,1,1,0,1,0),
array(0,1,0,0,0,1,0,1,0),
array(0,1,0,0,0,1,1,1,0),
array(0,1,0,0,0,0,1,1,0),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,0,0,0,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(1,0,1,1,1,1,0,0,0),
array(1,1,1,0,0,1,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
),
),
'O' => array(
array(

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 436Line 1045
				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

			'P' => array(





































						array(
array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,1,1,1,1,1,0,0,0),
array(1,1,1,0,0,1,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,0,0,0,0,0,1,0,0),
array(1,1,0,0,0,1,1,0,0),
array(0,1,1,1,1,1,0,0,0),
),
),
'P' => array(
array(

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 453Line 1098
				array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
),

				array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
),

			'Q' => array(





































						array(
array(1,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(1,1,1,0,0,0,0,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,1,1,0,0,0,0,0),
array(1,1,0,1,1,0,0,0,0),
array(1,0,0,0,1,0,0,0,0),
array(1,0,0,0,1,0,0,0,0),
array(1,0,0,1,1,0,0,0,0),
array(1,1,1,1,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
),
),
'Q' => array(
array(

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 470Line 1151
				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,1),
),

				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,1),
),

			'R' => array(





































						array(
array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,1,0,0,0,1),
array(1,1,0,0,1,1,0,1,1),
array(0,1,1,1,1,1,1,1,0),
array(0,0,0,0,0,0,1,1,0),
array(0,0,0,0,0,0,0,1,1),
array(0,0,0,0,0,0,0,0,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,1,1,1,1),
array(0,0,0,0,1,1,0,0,1),
array(0,0,0,0,1,0,0,0,1),
array(0,0,0,0,1,0,0,0,1),
array(0,0,0,0,1,1,0,1,1),
array(0,0,0,0,0,1,1,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
),
),
'R' => array(
array(

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(1,1,1,1,1,1,1,0,0),
array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 487Line 1204
				array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),
),

				array(1,0,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),
),

			'S' => array(





































						array(
array(1,1,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,1,1,1,1,0,0),
array(0,1,1,0,0,0,0,0,0),
array(0,1,1,1,0,0,0,0,0),
array(0,1,0,1,1,0,0,0,0),
array(0,1,0,0,1,1,0,0,0),
array(0,1,0,0,0,1,1,0,0),
array(0,1,0,0,0,0,1,1,0),
array(1,1,1,0,0,0,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,1,1,1,1,0,0,0,0),
array(1,1,0,0,1,1,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
),
),
'S' => array(
array(

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

				array(0,0,1,1,1,1,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,0,0,0,0,0,0,0,1),

Line 504Line 1257
				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

			'T' => array(





































						array(
array(0,0,1,1,1,1,1,0,1),
array(0,1,0,0,0,0,0,1,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(0,0,1,1,1,1,1,0,0),
array(0,0,0,0,0,0,0,1,0),
array(0,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,1,0,0,0,0,0,1,0),
array(1,0,1,1,1,1,1,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,1,1,1,1,0,0,0,0),
array(1,0,0,0,0,1,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,1,0,0,0,0,0,0,0),
array(0,1,1,1,1,0,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(1,0,0,0,1,1,0,0,0),
array(0,1,1,1,1,0,0,0,0),
),
),
'T' => array(
array(

				array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),

				array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),

Line 521Line 1310
				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),

				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),

			'U' => array(





































						array(
array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,1,0,0,0,1),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,1,1,0,0,0),
),
array(
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,1,1,1,1,1,1,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,1,0,0,0),
array(0,0,0,0,0,1,1,1,0),
),
),
'U' => array(
array(

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

Line 538Line 1363
				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

				array(0,1,0,0,0,0,0,1,0),
array(0,0,1,1,1,1,1,0,0),
),

			'V' => array(





































						array(
array(1,0,0,0,0,0,0,0,0),
array(1,1,1,0,0,0,1,1,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,0,0,0,1,1,0),
array(0,0,1,1,1,1,1,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,1,0,0,0,0,0,1),
array(0,0,1,0,0,0,0,0,1),
array(0,0,1,0,0,0,0,0,1),
array(0,0,1,0,0,0,0,0,1),
array(0,0,1,0,0,0,0,0,1),
array(0,0,1,0,0,0,0,1,1),
array(0,0,1,1,0,0,1,1,1),
array(0,0,0,1,1,1,1,0,1),
),
),
'V' => array(
array(

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

Line 555Line 1416
				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),

				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),

			'W' => array(    // New 'W', supplied by MHobbit





































						array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(1,1,1,0,0,0,1,1,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),
),
'W' => array(
array(

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),

Line 572Line 1469
				array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
),

				array(1,1,0,0,0,0,0,1,1),
array(1,1,0,0,0,0,0,1,1),
),

			'X' => array(





































						array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(1,1,1,0,0,0,1,1,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,1,0,0,1,0),
array(0,1,0,0,1,0,0,1,0),
array(0,1,0,1,1,1,0,1,0),
array(0,1,0,1,0,1,0,1,0),
array(0,1,1,1,0,1,1,1,0),
array(0,1,1,0,0,0,1,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,0,0,0,0,0,0,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,1,0,0,1,0),
array(0,1,0,0,1,0,0,1,0),
array(0,1,0,1,1,1,0,1,0),
array(0,1,0,1,0,1,0,1,0),
array(0,1,1,1,0,1,1,1,0),
array(0,1,1,0,0,0,1,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,0,0,0,0,0,0,0,0),
),
),
'X' => array(
array(

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),

Line 589Line 1522
				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
),

			'Y' => array(





































						array(
array(0,0,0,0,0,0,0,0,0),
array(1,1,1,0,0,0,1,1,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,1,0,0,0,0,1,0,0),
array(0,1,0,0,0,0,0,1,0),
array(1,1,1,0,0,0,1,1,1),
array(0,0,0,0,0,0,0,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,1,0),
array(0,1,1,0,0,0,1,1,0),
array(0,0,1,1,0,1,1,0,0),
array(0,0,0,1,1,1,0,0,0),
array(0,0,0,1,1,1,0,0,0),
array(0,0,1,1,0,1,1,0,0),
array(0,1,1,0,0,0,1,1,0),
array(0,0,0,0,0,0,0,0,0),
),
),
'Y' => array(
array(

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),

				array(1,0,0,0,0,0,0,0,1),
array(1,0,0,0,0,0,0,0,1),
array(0,1,0,0,0,0,0,1,0),

Line 606Line 1575
				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),

				array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
),

			'Z' => array(    // New 'Z' supplied by Anon





































						array(
array(0,0,0,0,0,0,0,0,0),
array(1,1,1,0,0,0,1,1,1),
array(0,1,0,0,0,0,0,1,0),
array(0,1,0,0,0,0,0,1,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,1,0,0,0,1,0,0),
array(0,0,0,1,0,1,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,0,1,0,0,0,0),
array(0,0,0,1,1,1,0,0,0),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,1,0,0,0,0,1),
array(0,0,0,1,1,0,0,0,1),
array(0,0,0,0,1,0,0,1,1),
array(0,0,0,0,1,1,0,1,0),
array(0,0,0,0,0,1,1,1,0),
array(0,0,0,0,0,0,1,0,0),
array(0,0,0,0,0,1,1,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,1,1,0,0,0),
array(0,0,1,1,1,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
),
),
'Z' => array(
array(

				array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),

				array(1,1,1,1,1,1,1,1,1),
array(1,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),

Line 623Line 1628
				array(1,0,0,0,0,0,0,0,1),
array(1,1,1,1,1,1,1,1,1),
),

				array(1,0,0,0,0,0,0,0,1),
array(1,1,1,1,1,1,1,1,1),
),

 
						array(
array(1,1,1,1,1,1,1,1,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,0,1),
array(0,0,0,0,0,0,0,1,0),
array(0,0,0,0,0,0,1,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,0,0,0,1,0,0,0),
array(0,0,1,1,1,1,1,0,0),
array(0,0,0,1,0,0,0,0,0),
array(0,0,0,1,0,0,0,0,0),
array(0,0,1,0,0,0,0,0,0),
array(0,1,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,0,0,0,0,0,0,0,0),
array(1,1,1,1,1,1,1,1,1),
),
array(
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,0,0,0,0,0,0,0,0),
array(0,1,1,1,1,1,1,1,0),
array(0,0,0,0,0,1,1,0,0),
array(0,0,0,0,1,1,0,0,0),
array(0,0,0,1,1,0,0,0,0),
array(0,0,1,1,0,0,0,0,0),
array(0,0,1,0,0,0,0,0,0),
array(0,1,1,1,1,1,1,1,0),
),
),
);
return array(
'width' => 9,
'height' => 15,
'data' => array(

'A' => $chars['A'][mt_rand(0, min(sizeof($chars['A']), $config['captcha_gd_fonts']) -1)],
'B' => $chars['B'][mt_rand(0, min(sizeof($chars['B']), $config['captcha_gd_fonts']) -1)],
'C' => $chars['C'][mt_rand(0, min(sizeof($chars['C']), $config['captcha_gd_fonts']) -1)],
'D' => $chars['D'][mt_rand(0, min(sizeof($chars['D']), $config['captcha_gd_fonts']) -1)],
'E' => $chars['E'][mt_rand(0, min(sizeof($chars['E']), $config['captcha_gd_fonts']) -1)],
'F' => $chars['F'][mt_rand(0, min(sizeof($chars['F']), $config['captcha_gd_fonts']) -1)],
'G' => $chars['G'][mt_rand(0, min(sizeof($chars['G']), $config['captcha_gd_fonts']) -1)],
'H' => $chars['H'][mt_rand(0, min(sizeof($chars['H']), $config['captcha_gd_fonts']) -1)],
'I' => $chars['I'][mt_rand(0, min(sizeof($chars['I']), $config['captcha_gd_fonts']) -1)],
'J' => $chars['J'][mt_rand(0, min(sizeof($chars['J']), $config['captcha_gd_fonts']) -1)],
'K' => $chars['K'][mt_rand(0, min(sizeof($chars['K']), $config['captcha_gd_fonts']) -1)],
'L' => $chars['L'][mt_rand(0, min(sizeof($chars['L']), $config['captcha_gd_fonts']) -1)],
'M' => $chars['M'][mt_rand(0, min(sizeof($chars['M']), $config['captcha_gd_fonts']) -1)],
'N' => $chars['N'][mt_rand(0, min(sizeof($chars['N']), $config['captcha_gd_fonts']) -1)],
'O' => $chars['O'][mt_rand(0, min(sizeof($chars['O']), $config['captcha_gd_fonts']) -1)],
'P' => $chars['P'][mt_rand(0, min(sizeof($chars['P']), $config['captcha_gd_fonts']) -1)],
'Q' => $chars['Q'][mt_rand(0, min(sizeof($chars['Q']), $config['captcha_gd_fonts']) -1)],
'R' => $chars['R'][mt_rand(0, min(sizeof($chars['R']), $config['captcha_gd_fonts']) -1)],
'S' => $chars['S'][mt_rand(0, min(sizeof($chars['S']), $config['captcha_gd_fonts']) -1)],
'T' => $chars['T'][mt_rand(0, min(sizeof($chars['T']), $config['captcha_gd_fonts']) -1)],
'U' => $chars['U'][mt_rand(0, min(sizeof($chars['U']), $config['captcha_gd_fonts']) -1)],
'V' => $chars['V'][mt_rand(0, min(sizeof($chars['V']), $config['captcha_gd_fonts']) -1)],
'W' => $chars['W'][mt_rand(0, min(sizeof($chars['W']), $config['captcha_gd_fonts']) -1)],
'X' => $chars['X'][mt_rand(0, min(sizeof($chars['X']), $config['captcha_gd_fonts']) -1)],
'Y' => $chars['Y'][mt_rand(0, min(sizeof($chars['Y']), $config['captcha_gd_fonts']) -1)],
'Z' => $chars['Z'][mt_rand(0, min(sizeof($chars['Z']), $config['captcha_gd_fonts']) -1)],


			'1' => array(
array(0,0,0,1,1,0,0,0,0),
array(0,0,1,0,1,0,0,0,0),

			'1' => array(
array(0,0,0,1,1,0,0,0,0),
array(0,0,1,0,1,0,0,0,0),