Changing over to finishing the search engine

For now, I thank those helping me with the
strange absence of some UV photos when others
were showing. The problem still exists, so I will
get back to it again on another day when some
matters of greater priority are taken care of.

The highest priority of unfinished programming
tasks for my TAXA site is finishing the search
engine. There are 4 organizational levels for the
wood data but probably 95% of any queries
or interest in the site will be at the species
level, the level that defines all woods and at which
the public can relate. It is only those
academically minded who would show interest in the
higher botanical levels. Therefore the search
engine I have been working on is being designed
to work only on different columns of one table,
the 'species' table. All relevant pages and
query reports are dynamically formed.

Once completed, it will totally make access to
the huge amount of data far more user friendly
and versatile and become a key cornerstone for the operation of the website.

I am no ace at PHP, more like slow but
determined. This has been the most challenging code
I, personally, have had to work on. I started via
a simple, one column, one table search
template from www.designplace.org. Mid stream in
my efforts, I designed a way to let users
choose what type of search (what column,
actually) they wish to use. Recently I was able to
combine that function into the search form successfully.

All search categories work successfully ---- but
at present, only the first page of a query.
Page control is accomplished through two PHP_SELF
statements, one to advance to the next
page (until the end of the report is finished)
and the other to go back a page. At one point,
I had the forward action working right to the
last page of a query. Now neither the page
advancement nor the page reversing now works past
the first page being reported ---- and I am not
sure what I messed up ;-( :-[ . After getting the
first page showing, pressing either the previous
or next button brings out the following preprogrammed statements of:

Sorry, your search: "Pterocarpus"
returned zero results (from a genus search)
Couldn't execute query

However, it does not put out a standard PHP error.

If I can get these forward and reverse page
actions to work, I expect that the job will be
complete! In case this helps, the two PHP_SELF
statements are on lines 478 and 529.
I will list the code for the whole page. There is
copious internal documentation and many
"debug" statements to help follow parameter values.

Because of the uncommented debug statements, you
can use the actual search page to
follow values .... at:
http://www.prowebcanada.com/taxa/commonname_search.php

Much thanks for any help you can give,

Bill Mudry
Mississauga, Ontario Canada

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

[CODE]
<?php
//session_start(); // start up your PHP session!


//$record_counter=3D [at] $_GET[$record_counter];
//$record_counter =3D $_SESSION['$record_counter']; // Not used=
now.
ECHO "\$record_counter on line 7 is $record_counter
";
$count =3D $record_counter+1;

//$count =3D $_SESSION['$count'];

ECHO "\$count at the top, line 12 is - $count
";

//$_SESSION['$count'] =3D $count;
?>


<HTML>
<HEAD>
<!---
############################################################ ################=
################
This page contains the major search functions for The TAXA Wood Knowledge=
Base.
The file is commonname_search.php.
It is called from the main menu.
Important parameters include:
$searchtype - is the method users choose
to do a search as the English words
$searchfield - Each method translates into
the actual field in the 'species' table
used to complete the query
$querystring - is the actual query string submitted by the user.
$record_counter is the record counter for
the last record of the present page. First appears in line 146
$newquerystring - The new query string
value fom the form by using $_GET[]
$limit - The allowed number of records
reported before starting a new page
connecttotaxa.php - holds the values needed
to connect to the taxa database
$searchfield - The variable to indicate
what field to search on. Right now there is only one,
but coding has already
been worked out for letting users choose from a list of
columns. To be added in the next version
$$numrows - The total number of rows in the present query result
$count - is the lower record number in the
next upcoming page (if one is needed)
It will always be one more than
$record_counter which holds the highest record number for the
cuurent page.
$currPage - Calculates the current page number.
$Page - Like $currPage. I am not sure
yet what the relationship between them is.
$remainder - The query shows in blocks
of $limit records. If the total number of records
to report is divided by the
block size ($limit) and there is a remainder, then
a new page needs to be started to
finish off the last records in the report.
$news - Is the highest record number to use for the next page.
(..... or this is what I interpreted so far).

This search engine was adapted from the template search engine at
http://www.designplace.org/scripts.php?page=3D1&c_id=3D25
############################################################ ################=
################
--->



<TITLE>TAXA: Multicolumn Search</TITLE>
<META name=3D"Template author" content=3D"Steve R,=
http://www.designplace.org/">
<META name=3D"Bill Mudry" Content=3D"TAXA Wood
Knowledge Base web designer and author">
<STYLE type=3D"text/css">
body {
background-color:'ivory'; color:
'navy'; font-family: verdana, arial, sans-serif; font-size: 12px;
}
.smalltext {font-size: 10px;}
.mediumtext {font-size: 13px;}
.largertext {font-size: 1.5em};
.reportheader {font-size: 20px; font-weight:700;}

td {font-size:0.8em; background-color: '#EFDFCF'}

H1 {font-size:2em}; /* displayed at 24px */
H2 {font-size:1.5em}; /* displayed at 18px */
H3 {font-size:1.25em}; /* displayed at 15px */
H4 {font-size:1em}; /* displayed at 12px */

#formbox {float: left; border:3px dotted
red;background-color:"skyblue";}

</STYLE>

</HEAD>
<!-- =C2=A9 http://www.designplace.org/ (For the
template used to start this design) -->

<!--
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX END OF
HEADER XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX START OF
BODY XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
-->

<BODY>

<?php

//parse_str($_SERVER['QUERY_STRING'], $qs);
//$record_counter =3D$qs['record_counter'];

//$record_counter =3D 14; hard coded as a debug statement

//ECHO "\$count on line 99 is - $count<BR />"; //debug statement

ECHO "\$record_counter on line 95 is -
$record_counter<BR />"; //debug statement
?>

<H2 align=3D"center">Multi Column Search</H2>

<DIV id=3D"formbox">

<?php
//querystring =3D"";
//$querystring =3D"";

$newsearch =3D 0 ; //Equals 1 only on a new search request
//ECHO "<p align=3Dleft>\$newsearch on line 111 is $newsearch</p>";
$submit=3D"";
//ECHO "\Ssubmit, before the form, on line 113 is - $submit
";
If ($submit) {$record_counter =3D 0;}
?>

<!--
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX MAIN FORM STARTS
HERE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
-->

<FORM name=3D"form" action=3D"commonname_search.php" method=3D"get">

<!-- ADD A TRANPARENT INSIDE TABLE TO ORGANIZE
PLACEMENT OF ALL THE FORM ELEMENTS -->
<TABLE align=3D'center' border=3D'0' bgcolor=3D'ivory'=
cellpadding=3D'6'>
<TR>
<TD align=3D"center" colspan=3D"5">
<SPAN class=3D"reportheader">Choose
which search type you want first</SPAN>
</TD>
</TR>
<TR>
<TD class=3D"mediumtext">
<B>Common names</B>
<Input type=3D'radio' value=3D'common names'=
name=3D"searchtype" />
</TD>
<TD class=3D"mediumtext">
<B>Botanical names</B>
<Input type=3D'radio'
value=3D'botanical names' name=3D"searchtype" />
</TD>
<TD class=3D"mediumtext">
<B>Genus</B>
<Input type=3D'radio' value=3D'genus' name=3D"searchtype"=
/>
</TD>
<TD class=3D"mediumtext">
<B>Location</B>
<Input type=3D'radio' value=3D'location' name=3D"searchtype=
" />
</TD>
<TD class=3D"mediumtext">
<B>Description</B>
<Input type=3D'radio' value=3D'description'=
name=3D"searchtype" />
</TD>
</TR>
<TR>
<TD align=3D"center" colspan=3D"5" class=3D"mediumtext">
<B>Enter a Search String:</B> 

<INPUT type=3D"text" size=3D"40"
name=3D"querystring" />   
<INPUT type=3D"hidden" name=3D"newsearch"=
value=3D"1">
<INPUT type=3D"submit"
name=3D"submit" value=3D"Start Search" />
</TD>
</TR>
</TABLE>

</FORM>
</DIV>

<!--
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX MAIN FORM STOPS
HERE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
-->

<?php

$submit =3D $_GET["submit"];
ECHO "\$submit on line 179 is - $submit
";

$newsearch =3D $_GET["newsearch"];
//ECHO "\$newsearch just past the form on line 180 is - $newsearch
";

IF ($newsearch=3D1) {$record_counter=3D0;};
ECHO "\$record_counter on line 185 is - $record_counter
";
/*
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D
XXXXXXXXXXX GET THE SEARCH TYPE AND SEARCH STRING FROM THE FORM XXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D
*/
$searchtype =3D $_GET['searchtype'] ;
$searchtype =3D trim($searchtype); //trim
whitespace from the stored variable

//ECHO "On line 192, \$searchtype is -
$searchtype
"; // Debug statement

$querystring =3D [at] $_GET['querystring'] ;
$querystring =3D trim($querystring);
//trim whitespace from the stored variable

//
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
// REASSURE USER OF THEIR CHOICES. (ALSO GOOD FOR DEBUGGING).
If (!empty($searchtype))
{
ECHO "<h3
align=3D'center'>searching under $searchtype for:
"" . $querystring . ""</h3>";
}

//ECHO "Line 204 - \$searchtype
is - $searchtype
"; //debug statement
/*
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D
XXXXXXXXXXXXXXXXX TRANSLATION OF SEARCH TYPE TO
COLUMN NAME XXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D
*/

$searchfield =3D "";
//ECHO "Line 196 - \$searchtype is -
$searchtype
"; // Debug statement

switch ($searchtype) {
case "common names":
$searchfield =3D trim("species_commonname");
//ECHO "<br>common names - $searchfield<br>\n";
break;
case "botanical names":
$searchfield =3D trim("species_name");
//ECHO "<br>botanical
names - $searchfield <br>\n";
break;
case "genus":
$searchfield =3D trim("genus_name");
//ECHO "<br>genus -
$searchfield <br>\n";
break;
case "location":
$searchfield =3D trim("location");
//ECHO "<br>location -
$searchfield <br>\n";
break;
case "description":
$searchfield =3D trim("species_description");
//ECHO "<br>description
- $searchfield <br>\n";
break;
default: If (!isset($searchfield)) {
ECHO "Please choose a search type first";
}
}
/*
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D
XXXXXXXXXXXXX END OF TRANSLATION OF SEARCH TYPE TO COLUMN NAME =
XXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D
*/


// Get the search variable from URL. Old
designations were $var =3D [at] $_GET['q'] ;

$newquerystring =3D [at] $_GET['querystring'] ;
$querystring =3D trim($newquerystring); //trim
whitespace from the stored variable

$count =3D $record_counter +1;
$newsearch =3D [at] $_GET['newsearch'] ;
ECHO "\$newsearch on line 255 is $newsearch";

if ($newsearch > 0) {$record_counter=3D0;};

=
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXX SET THE NUMBER OF RECORDS PER PAGE HERE =
XXXXXXXXXXXXXX
=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
$limit=3D'30';

// check for an empty string and display a message.
if ($querystring =3D=3D "")
{
ECHO "<p align=3D'center'>Please enter a search string...</p>";
exit;
}

// check for a search parameter
if (!isset($newquerystring))
{
ECHO "<p align=3D'center'>We dont seem to have a search parameter!</p>";
exit;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXXXXXXXXXXXXXXXX Connect to the
TAXA Database XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/

include ("connecttotaxa.php");
$connection =3D mysql_connect($hostname, $username, $password)
or die("Unable to connect to database server");


//specify database ** EDIT REQUIRED HERE **
mysql_select_db("taxa") or die("Unable to select
the TAXA database"); //select which database we're using


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXXXX BUILD THE SQL QUERY XXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D*/

// Build SQL Query
$searchquery =3D "SELECT *
FROM species
WHERE $searchfield like \"%$querystring%\"
order by '$searchfield'";

$numresults=3Dmysql_query($searchquery);


[at] $numrows=3Dmysql_num_rows($numresults);

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D
XXXXXXXXXXXXXXX TEST FOR ZERO RESULTS AND
PRINT A MESSAGE OF THAT IF TRUE XXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D*/
if ($numrows =3D=3D 0)
{
ECHO "<h3 align=3D'center'>Search Results</h3>";
ECHO "<p align=3D'center'>Sorry, your search:
"" . $querystring. "" returned zero results</p>";
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D
// $record_counter is the record counter for the present record
// next determine if s has been passed to script, if not use 0
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D*/

if (empty($s)) {
$record_counter=3D0;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D
XXXXXXXXXXXXXXX QUERY THE DATABASE TO GET THE RESULTS =
XXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D*=
/

// get results
$searchquery .=3D " limit $record_counter,$limit";
$result =3D mysql_query($searchquery) or die("Couldn't execute query");

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXXXX ECHO BACK TO THE USER WHAT
THEY ASKED TO SEARCH FOR XXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
ECHO "<p align=3D'center'>You searched for: ""
.. $querystring . ""</p>";

//////////////////////////////////////////////////////////// /////
// ********** REPORTING STARTS HERE ********** //
//////////////////////////////////////////////////////////// /////

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXXXXXXXX SET A TITLE FOR THE REPORT XXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
ECHO "<H3 align=3D'center'>Search Results -
$numrows references found.

</H3>";

// now you can display the results returned

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D
XXXXXXXXXXXXXXX SET UP COLUMN HEADERS FOR THE REPORT =
XXXXXXXXXXXXXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D*/

ECHO "<table align=3D'center' border=3D0
cellpadding=3D3 Cellspacing=3D0 bgcolor=3D'white'>";
ECHO "<tr colspan=3D3>";
ECHO "<td bgcolor=3D'#EFDFCF' class=3D\"reportheader\">";
//ECHO "<span>Common Name</span>";
ECHO "Common Name";
ECHO "</td>";

ECHO "<td bgcolor=3D'#EFDFCF' class=3D\"reportheader\">";
ECHO "Botanical Name";
ECHO "</td>";

ECHO "<td bgcolor=3D'#EFDFCF' class=3D\"reportheader\">";
ECHO "Authorities";
ECHO "</td>";

ECHO "<td bgcolor=3D'#EFDFCF' class=3D\"reportheader\">";
ECHO "Genus Name";
ECHO "</td>";

ECHO "<td bgcolor=3D'#EFDFCF' class=3D\"reportheader\">";
ECHO "Location";ECHO "</td>";

ECHO "<td bgcolor=3D'#EFDFCF' class=3D\"reportheader\">";
ECHO "Comments";
ECHO "</td>";

if (!isset($count)){$count=3D1;};

ECHO "</tr>";
ECHO "<tr>";





/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXX PRINT OUT RECORDS TILL END OF QUERY XXXXXXXXX

************** WHILE LOOP STARTS HERE ******************
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D*/
while ($row=3D mysql_fetch_array($result)) {
$commonname =3D $row["species_commonname"];
$botname =3D $row["species_name"];
$authorities =3D $row["authorities_species"];

$genusname =3D $row["genus_name"];
$location =3D $row["location"];
$comments =3D $row["comments"];

ECHO "<td valign=3D'top' class=3Dsmalltext;>";
//ECHO "\$count is $count
";

ECHO "$count   $commonname
" ;
ECHO "</td>";

ECHO "<td valign=3D'top' class=3Dsmalltext;>";
ECHO "<a href=3D\"displayspecies.php?&species_name=3D$botname \">";
ECHO "$botname
";
ECHO "</a><br>\n";

ECHO "</td>";
ECHO "<td valign=3D'top' class=3Dsmalltext;>";
ECHO "$authorities
";
ECHO "</td>";

ECHO "<td valign=3D'top' class=3Dsmalltext;>";
ECHO "$genusname
";
ECHO "</td>";

ECHO "<td valign=3D'top' class=3Dsmalltext;>";
ECHO "$location
";
ECHO "</td>";

ECHO "<td class=3Dsmalltext;>";
ECHO "$comments
";
ECHO "</td>";

ECHO "</tr>";
ECHO "<tr>";

$count++ ;
$record_counter++ ; // DOESN'T $record_counter
HAVE TO BE INCREMEENTED FOR EACH ROW PRINTED ALSO??
// ANOTHER COPY WORKED A FEW MONTHS AGO
WITHOUT IT. iT IS NOT IN THE TEMPLATE.
//ECHO "\$record_counter on line 412 is -
$record_counter<BR />"; //debug statement
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= 3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
XXXXXXXXX END OF WHILE LOOP. XXXXXXXXX
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D*/

////////////////////////////////////////////////////////////
// CLOSE THE REPORT TABLE
////////////////////////////////////////////////////////////
ECHO "</tr>";
ECHO "</table>";
ECHO "<BR />";
ECHO "\$record_counter on line 436 at the end of
the report loop is - $record_counter
";



// Calculate the current page
$currPage =3D (($record_counter/$limit) + 1);
$pages =3D $currPage; //
ECHO "\$currPage on line 451 is - $currPage
"; //debug statement
ECHO "\$record_counter on line 452 is -
$record_counter<BR />"; //debug statement

//break before paging
ECHO "
";

// next we need to do the links to other results

//////////////////////////////////////////////////////////// //////////
// If $record_counter is less than 1, there are
no more records to view backwards.
//////////////////////////////////////////////////////////// //////////

// bypass PREV link if s is 0 since there must be
at least one more record to display to use a new page.
if ($record_counter>=3D1) {
ECHO "\$record_counter at line 453 is -
$record_counter
"; //debug statement
$prevs=3D($record_counter-$limit);
ECHO "\$prevs at line 455 is - $prevs
"; //debug statement

//////////////////////////////////////////////////////////// ////////////////=
//////////////////
// ****** This statement will run the prior
page of the report. It is user chosen******
//
//////////////////////////////////////////////////////////// ////////////////=
//////////////////
print " <a
href=3D\"$PHP_SELF?record_counter=3D$prevs&querystring=3D$qu erystring&search=
field=3D$searchfield\">
<p align=3D'left' class=3D'largertext'><b><<
Previous $limit records</b></p></a>  "; // Page 357

} //END OF PRESENT IF STATEMENT

// calculate number of pages needing links
$pages=3Dintval($numrows/$limit);

//ECHO "\$pages on line 469 is - $pages
"; //debug statement
//ECHO "\$numrows on line 470 is - $numrows
"; //debug statement
//ECHO "\$limit on line 471 is - $limit
"; //debug statement

// $pages now contains int of pages needed unless
there is a remainder from division

if ($numrows%$limit) {
// has remainder so add one page
$pages++;
}
//ECHO "\$pages on line 479 is - $pages
"; //debug statement

$remainder =3D ($numrows%$limit);
//ECHO "\$remainder on line 353 is - $remainder
"; //debug statement

ECHO "
";

//$x =3D ($record_counter+$limit)/$limit
//ECHO "\$x on line 478 is - $x
"; //debug statement
ECHO "\$record_counter on line 479 is -
$record_counter
"; //debug statement

//ECHO "\$limit on line 490 is - $limit
"; //debug statement
//ECHO "\$pages on line 491 is - $pages
"; //debug statement

// check to see if last page
if (!((($record_counter+$limit)/$limit)=3D=3D$pages) && $pages!=3D1) {

ECHO "
";

// not last page so give NEXT link
$news=3D$record_counter+$limit;
ECHO "\$record_counter on line 517 is -
$record_counter
"; //debug statement
//ECHO "\$limit on line 492 is - $limit
"; //debug statement
//ECHO "\$news on line 493 is - $news
"; //debug statement
//ECHO "<div align=3D'right' style=3D'color:'#FF0000'>";

////////////////////////////////////////////////////////////
// This statement will run the next page of the report.
// It is user chosen
////////////////////////////////////////////////////////////

//echo " <a href=3D\"$PHP_SELF?s=3D$news&q=3D$var\">Next 10=
>></a>";

ECHO " <a
href=3D\"$PHP_SELF?record_counter=3D$news&querystring=3D$new querystring&sear=
chfield=3D$searchfield\">
<p class=3D'largertext' aligm=3D'right'><B>Next
$limit records >></b></p></a>";

ECHO "</div>";
}
ECHO "\$record_counter on line 534 is -
$record_counter<BR />"; //debug statement

$record_counter =3D $news;

ECHO "\$record_counter on line 538 is -
$record_counter<BR />"; //debug statement

//$_SESSION['$record_counter'] =3D $record_counter;
//$_SESSION['$count'] =3D $count;

?>

<!-- =C3=82=C2=A9 http://www.designplace.org/ -->

</BODY>
</HTML>


[/CODE]


--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Bill Mudry [ Sa, 12 März 2011 23:07 ] [ ID #2056465 ]

Re: Changing over to finishing the search engine

T24gU2F0LCBNYXIgMTIsIDIwMTEgYXQgMjowNyBQTSwgQmlsbCBNdWRyeSA8 YmlsbG11ZHJ5QHJv
Z2Vycy5jb20+IHdyb3RlOgo+IEZvciBub3csIEkgdGhhbmsgdGhvc2UgaGVs cGluZyBtZSB3aXRo
IHRoZSBzdHJhbmdlIGFic2VuY2Ugb2Ygc29tZSBVViBwaG90b3MKPiB3aGVu IG90aGVycwo+IHdl
cmUgc2hvd2luZy4gVGhlIHByb2JsZW0gc3RpbGwgZXhpc3RzLCBzbyBJIHdp bGwgZ2V0IGJhY2sg
dG8gaXQgYWdhaW4gb24KPiBhbm90aGVyIGRheSB3aGVuIHNvbWUKPiBtYXR0 ZXJzIG9mIGdyZWF0
ZXIgcHJpb3JpdHkgYXJlIHRha2VuIGNhcmUgb2YuCj4KPiBUaGUgaGlnaGVz dCBwcmlvcml0eSBv
ZiB1bmZpbmlzaGVkIHByb2dyYW1taW5nIHRhc2tzIGZvciBteSBUQVhBIHNp dGUgaXMKPiBmaW5p
c2hpbmcgdGhlIHNlYXJjaAo+IGVuZ2luZS4gVGhlcmUgYXJlIDQgb3JnYW5p emF0aW9uYWwgbGV2
ZWxzIGZvciB0aGUgd29vZCBkYXRhIGJ1dCBwcm9iYWJseSA5NSUKPiBvZiBh bnkgcXVlcmllcwo+
IG9yIGludGVyZXN0IGluIHRoZSBzaXRlIHdpbGwgYmUgYXQgdGhlIHNwZWNp ZXMgbGV2ZWwsIHRo
ZSBsZXZlbCB0aGF0IGRlZmluZXMKPiBhbGwgd29vZHMgYW5kIGF0IHdoaWNo Cj4gdGhlIHB1Ymxp
YyBjYW4gcmVsYXRlLiBJdCBpcyBvbmx5IHRob3NlIGFjYWRlbWljYWxseSBt aW5kZWQgd2hvIHdv
dWxkIHNob3cKPiBpbnRlcmVzdCBpbiB0aGUKPiBoaWdoZXIgYm90YW5pY2Fs IGxldmVscy4gVGhl
cmVmb3JlIHRoZSBzZWFyY2ggZW5naW5lIEkgaGF2ZSBiZWVuIHdvcmtpbmcg b24KPiBpcyBiZWlu
ZyBkZXNpZ25lZAo+IHRvIHdvcmsgb25seSBvbiBkaWZmZXJlbnQgY29sdW1u cyBvZiBvbmUgdGFi
bGUsIHRoZSAnc3BlY2llcycgdGFibGUuIEFsbAo+IHJlbGV2YW50IHBhZ2Vz IGFuZAo+IHF1ZXJ5
IHJlcG9ydHMgYXJlIGR5bmFtaWNhbGx5IGZvcm1lZC4KPgo+IE9uY2UgY29t cGxldGVkLCBpdCB3
aWxsIHRvdGFsbHkgbWFrZSBhY2Nlc3MgdG8gdGhlIGh1Z2UgYW1vdW50IG9m IGRhdGEgZmFyCj4g
bW9yZSB1c2VyIGZyaWVuZGx5Cj4gYW5kIHZlcnNhdGlsZSBhbmQgYmVjb21l IGEga2V5IGNvcm5l
cnN0b25lIGZvciB0aGUgb3BlcmF0aW9uIG9mIHRoZSB3ZWJzaXRlLgo+Cj4g SSBhbSBubyBhY2Ug
YXQgUEhQLCBtb3JlIGxpa2Ugc2xvdyBidXQgZGV0ZXJtaW5lZC4gVGhpcyBo YXMgYmVlbiB0aGUg
bW9zdAo+IGNoYWxsZW5naW5nIGNvZGUKPiBJLCBwZXJzb25hbGx5LCBoYXZl IGhhZCB0byB3b3Jr
IG9uLiBJIHN0YXJ0ZWQgdmlhIGEgc2ltcGxlLCBvbmUgY29sdW1uLCBvbmUK PiB0YWJsZSBzZWFy
Y2gKPiB0ZW1wbGF0ZSBmcm9tIHd3dy5kZXNpZ25wbGFjZS5vcmcuIE1pZCBz dHJlYW0gaW4gbXkg
ZWZmb3J0cywgSSBkZXNpZ25lZCBhCj4gd2F5IHRvIGxldCB1c2Vycwo+IGNo b29zZSB3aGF0IHR5
cGUgb2Ygc2VhcmNoICh3aGF0IGNvbHVtbiwgYWN0dWFsbHkpIHRoZXkgd2lz aCB0byB1c2UuCj4g
UmVjZW50bHkgSSB3YXMgYWJsZSB0bwo+IGNvbWJpbmUgdGhhdCBmdW5jdGlv biBpbnRvIHRoZSBz
ZWFyY2ggZm9ybSBzdWNjZXNzZnVsbHkuCj4KPiBBbGwgc2VhcmNoIGNhdGVn b3JpZXMgd29yayBz
dWNjZXNzZnVsbHkgLS0tLSBidXQgYXQgcHJlc2VudCwgb25seSB0aGUgZmly c3QKPiBwYWdlIG9m
IGEgcXVlcnkuCj4gUGFnZSBjb250cm9sIGlzIGFjY29tcGxpc2hlZCB0aHJv dWdoIHR3byBQSFBf
U0VMRiBzdGF0ZW1lbnRzLCBvbmUgdG8gYWR2YW5jZQo+IHRvIHRoZSBuZXh0 Cj4gcGFnZSAodW50
aWwgdGhlIGVuZCBvZiB0aGUgcmVwb3J0IGlzIGZpbmlzaGVkKSBhbmQgdGhl IG90aGVyIHRvIGdv
IGJhY2sgYQo+IHBhZ2UuIEF0IG9uZSBwb2ludCwKPiBJIGhhZCB0aGUgZm9y d2FyZCBhY3Rpb24g
d29ya2luZyByaWdodCB0byB0aGUgbGFzdCBwYWdlIG9mIGEgcXVlcnkuIE5v dwo+IG5laXRoZXIg
dGhlIHBhZ2UgYWR2YW5jZW1lbnQgbm9yIHRoZSBwYWdlIHJldmVyc2luZyBu b3cgd29ya3MgcGFz
dCB0aGUgZmlyc3QKPiBwYWdlIGJlaW5nIHJlcG9ydGVkIC0tLS0gYW5kIEkg YW0gbm90IHN1cmUg
d2hhdCBJIG1lc3NlZCB1cCA7LSggOi1bIC4gQWZ0ZXIKPiBnZXR0aW5nIHRo ZSBmaXJzdCBwYWdl
IHNob3dpbmcsIHByZXNzaW5nIGVpdGhlciB0aGUgcHJldmlvdXMgb3IgbmV4 dCBidXR0b24KPiBi
cmluZ3Mgb3V0IHRoZSBmb2xsb3dpbmcgcHJlcHJvZ3JhbW1lZCBzdGF0ZW1l bnRzIG9mOgo+Cj4g
wqAgwqAgwqAgwqBTb3JyeSwgeW91ciBzZWFyY2g6ICJQdGVyb2NhcnB1cyIg cmV0dXJuZWQgemVy
byByZXN1bHRzIMKgKGZyb20gYQo+IGdlbnVzIHNlYXJjaCkKPiDCoCDCoCDC oCDCoENvdWxkbid0
IGV4ZWN1dGUgcXVlcnkKPgo+IEhvd2V2ZXIsIGl0IGRvZXMgbm90IHB1dCBv dXQgYSBzdGFuZGFy
ZCBQSFAgZXJyb3IuCj4KPiBJZiBJIGNhbiBnZXQgdGhlc2UgZm9yd2FyZCBh bmQgcmV2ZXJzZSBw
YWdlIGFjdGlvbnMgdG8gd29yaywgSSBleHBlY3QgdGhhdAo+IHRoZSBqb2Ig d2lsbCBiZQo+IGNv
bXBsZXRlISBJbiBjYXNlIHRoaXMgaGVscHMsIHRoZSB0d28gUEhQX1NFTEYg c3RhdGVtZW50cyBh
cmUgb24gbGluZXMgNDc4Cj4gYW5kIDUyOS4KPiBJIHdpbGwgbGlzdCB0aGUg Y29kZSBmb3IgdGhl
IHdob2xlIHBhZ2UuIFRoZXJlIGlzIGNvcGlvdXMgaW50ZXJuYWwKPiBkb2N1 bWVudGF0aW9uIGFu
ZCBtYW55Cj4gImRlYnVnIiBzdGF0ZW1lbnRzIHRvIGhlbHAgZm9sbG93IHBh cmFtZXRlciB2YWx1
ZXMuCj4KPiBCZWNhdXNlIG9mIHRoZSB1bmNvbW1lbnRlZCBkZWJ1ZyBzdGF0 ZW1lbnRzLCB5b3Ug
Y2FuIHVzZSB0aGUgYWN0dWFsIHNlYXJjaAo+IHBhZ2UgdG8KPiBmb2xsb3cg dmFsdWVzIC4uLi4g
YXQ6Cj4gwqAgwqAgwqAgwqBodHRwOi8vd3d3LnByb3dlYmNhbmFkYS5jb20v dGF4YS9jb21tb25u
YW1lX3NlYXJjaC5waHAKPgo+IE11Y2ggdGhhbmtzIGZvciBhbnkgaGVscCB5 b3UgY2FuIGdpdmUs
Cj4KPiBCaWxsIE11ZHJ5Cj4gTWlzc2lzc2F1Z2EsIE9udGFyaW8gQ2FuYWRh Cj4KPgoKQmlsbCwK
CkJlZm9yZSBJIGRpc3NlY3QgeW91ciBjb2RlLCB5b3Ugc2hvdWxkIGZvbGxv dyB0aGUgc3VnZ2Vz
dGlvbnMgaW4gdGhlCnBocC5pbmkgZmlsZSBhcyBwZXIgZW52aXJvbm1lbnQu ICBJZiB5b3UncmUg
Y29kaW5nIG9uIGEgZGV2ZWxvcG1lbnQKYm94IHdoaWNoIHlvdSBzaG91bGQg YmUgZG9pbmcgYW55
IHdheSwgdGhlbiBzZXQgdGhlIGJlbG93IHNldHRpbmdzCmFjY29yZGluZ2x5 IHRvIGluY3JlYXNl
IHlvdXIgY29kaW5nIHNwZWVkIGFuZCByZWR1Y2UgZGVidWdnaW5nIHRpbWUu CgoxKSBXaGF0J3Mg
dGhlIGVycm9yX3JlcG9ydGluZyBzZXQgdG8/CjIpIFdoYXQncyB0aGUgdmFs dWUgb2YgZGlzcGxh
eV9lcnJvcnM/Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KPgo+IFtDT0RFXQo+IDw/cGhwCj4g Ly9zZXNzaW9uX3N0
YXJ0KCk7IC8vIHN0YXJ0IHVwIHlvdXIgUEhQIHNlc3Npb24hCj4KPgo+IMKg IMKgIMKgIMKgLy8k
cmVjb3JkX2NvdW50ZXI9IEAkX0dFVFskcmVjb3JkX2NvdW50ZXJdOwo+IMKg IMKgIMKgIMKgLy8k
cmVjb3JkX2NvdW50ZXIgPSAkX1NFU1NJT05bJyRyZWNvcmRfY291bnRlcidd OyDCoC8vIE5vdCB1
c2VkIG5vdy4KPiDCoCDCoCDCoCDCoEVDSE8gIlwkcmVjb3JkX2NvdW50ZXIg b24gbGluZSA3IGlz
ICRyZWNvcmRfY291bnRlcjxiciAvPiI7Cj4gwqAgwqAgwqAgwqAkY291bnQg PSAkcmVjb3JkX2Nv
dW50ZXIrMTsKPgo+IMKgIMKgIMKgIMKgLy8kY291bnQgPSAkX1NFU1NJT05b JyRjb3VudCddOwo+
Cj4gwqAgwqAgwqAgwqBFQ0hPICJcJGNvdW50IGF0IHRoZSB0b3AsIGxpbmUg MTIgaXMgLSAkY291
bnQ8YnIgLz4iOwo+Cj4gLy8kX1NFU1NJT05bJyRjb3VudCddID0gJGNvdW50 Owo+ID8+Cj4KPgo+
IDxIVE1MPgo+IDxIRUFEPgo+IDwhLS0tCj4gIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
IyMjIyMKPiBUaGlzIHBhZ2UgY29udGFpbnMgdGhlIG1ham9yIHNlYXJjaCBm dW5jdGlvbnMgZm9y
IFRoZSBUQVhBIFdvb2QgS25vd2xlZGdlCj4gQmFzZS4KPiBUaGUgZmlsZSBp cyBjb21tb25uYW1l
X3NlYXJjaC5waHAuCj4gSXQgaXMgY2FsbGVkIGZyb20gdGhlIG1haW4gbWVu dS4KPiBJbXBvcnRh
bnQgcGFyYW1ldGVycyBpbmNsdWRlOgo+IMKgIMKgIMKgIMKgJHNlYXJjaHR5 cGUgLSBpcyB0aGUg
bWV0aG9kIHVzZXJzIGNob29zZSB0byBkbyBhIHNlYXJjaCBhcyB0aGUKPiBF bmdsaXNoIHdvcmRz
Cj4gwqAgwqAkc2VhcmNoZmllbGQgLSBFYWNoIG1ldGhvZCB0cmFuc2xhdGVz IGludG8gdGhlIGFj
dHVhbCBmaWVsZCBpbiB0aGUKPiAnc3BlY2llcycgdGFibGUKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCB1c2VkIHRvIGNvbXBsZXRlIHRoZSBxdWVy eQo+IMKgIMKgIMKg
IMKgJHF1ZXJ5c3RyaW5nIC0gaXMgdGhlIGFjdHVhbCBxdWVyeSBzdHJpbmcg c3VibWl0dGVkIGJ5
IHRoZSB1c2VyLgo+IMKgIMKgJHJlY29yZF9jb3VudGVyIGlzIHRoZSByZWNv cmQgY291bnRlciBm
b3IgdGhlIGxhc3QgcmVjb3JkIG9mIHRoZSBwcmVzZW50Cj4gcGFnZS4gRmly c3QgYXBwZWFycyBp
biBsaW5lIDE0Ngo+IMKgIMKgIMKgIMKgJG5ld3F1ZXJ5c3RyaW5nIC0gVGhl IG5ldyBxdWVyeSBz
dHJpbmcgdmFsdWUgZm9tIHRoZSBmb3JtIGJ5IHVzaW5nCj4gJF9HRVRbXQo+ IMKgIMKgIMKgIMKg
JGxpbWl0IC0gVGhlIGFsbG93ZWQgbnVtYmVyIG9mIHJlY29yZHMgcmVwb3J0 ZWQgYmVmb3JlIHN0
YXJ0aW5nIGEgbmV3Cj4gcGFnZQo+IMKgIMKgY29ubmVjdHRvdGF4YS5waHAg LSBob2xkcyB0aGUg
dmFsdWVzIG5lZWRlZCB0byBjb25uZWN0IHRvIHRoZSB0YXhhCj4gZGF0YWJh c2UKPiDCoCDCoCDC
oCDCoCRzZWFyY2hmaWVsZCAtIFRoZSB2YXJpYWJsZSB0byBpbmRpY2F0ZSB3 aGF0IGZpZWxkIHRv
IHNlYXJjaCBvbi4KPiBSaWdodCBub3cgdGhlcmUgaXMgb25seSBvbmUsCj4g wqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBidXQgY29kaW5nIGhhcyBhbHJlYWR5 IGJlZW4gd29ya2Vk
IG91dCBmb3IgbGV0dGluZwo+IHVzZXJzIGNob29zZSBmcm9tIGEgbGlzdCBv Zgo+IMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgY29sdW1ucy4gVG8gYmUgYWRkZWQgaW4gdGhlIG5l eHQgdmVyc2lvbgo+
IMKgIMKgIMKgIMKgJCRudW1yb3dzIC0gVGhlIHRvdGFsIG51bWJlciBvZiBy b3dzIGluIHRoZSBw
cmVzZW50IHF1ZXJ5IHJlc3VsdAo+IMKgIMKgJGNvdW50IC0gaXMgdGhlIGxv d2VyIHJlY29yZCBu
dW1iZXIgaW4gdGhlIG5leHQgdXBjb21pbmcgcGFnZSAoaWYgb25lIGlzCj4g bmVlZGVkKQo+IMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgSXQgd2lsbCBhbHdheXMgYmUgb25lIG1v cmUgdGhhbiAkcmVj
b3JkX2NvdW50ZXIgd2hpY2ggaG9sZHMKPiB0aGUgaGlnaGVzdCByZWNvcmQg bnVtYmVyIGZvciB0
aGUKPiDCoCDCoCDCoCDCoCDCoCDCoGN1dXJlbnQgcGFnZS4KPiDCoCDCoCDC oCDCoCRjdXJyUGFn
ZSAtIENhbGN1bGF0ZXMgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIuCj4gwqAg wqAgwqAgwqAkUGFn
ZSAtIExpa2UgJGN1cnJQYWdlLiBJIGFtIG5vdCBzdXJlIHlldCB3aGF0IHRo ZSByZWxhdGlvbnNo
aXAKPiBiZXR3ZWVuIHRoZW0gaXMuCj4gwqAgwqAgwqAgwqAkcmVtYWluZGVy IC0gVGhlIHF1ZXJ5
IHNob3dzIGluIGJsb2NrcyBvZiAkbGltaXQgcmVjb3Jkcy4gSWYgdGhlCj4g dG90YWwgbnVtYmVy
IG9mIHJlY29yZHMKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRvIHJlcG9y dCBpcyBkaXZpZGVk
IGJ5IHRoZSBibG9jayBzaXplICgkbGltaXQpIGFuZCB0aGVyZSBpcwo+IGEg cmVtYWluZGVyLCB0
aGVuCj4gwqAgwqAgwqAgwqAgwqAgwqBhIG5ldyBwYWdlIG5lZWRzIHRvIGJl IHN0YXJ0ZWQgdG8g
ZmluaXNoIG9mZiB0aGUgbGFzdCByZWNvcmRzIGluCj4gdGhlIHJlcG9ydC4K PiDCoCDCoCDCoCDC
oCRuZXdzIC0gSXMgdGhlIGhpZ2hlc3QgcmVjb3JkIG51bWJlciB0byB1c2Ug Zm9yIHRoZSBuZXh0
IHBhZ2UuCj4gKC4uLi4uIG9yIHRoaXMgaXMgd2hhdCBJIGludGVycHJldGVk IHNvIGZhcikuCj4K
PiBUaGlzIHNlYXJjaCBlbmdpbmUgd2FzIGFkYXB0ZWQgZnJvbSB0aGUgdGVt cGxhdGUgc2VhcmNo
IGVuZ2luZSBhdAo+IMKgIMKgIMKgIMKgaHR0cDovL3d3dy5kZXNpZ25wbGFj ZS5vcmcvc2NyaXB0
cy5waHA/cGFnZT0xJmNfaWQ9MjUKPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMj
Iwo+IC0tLT4KPgo+Cj4KPiA8VElUTEU+VEFYQTogTXVsdGljb2x1bW4gU2Vh cmNoPC9USVRMRT4K
PiA8TUVUQSBuYW1lPSJUZW1wbGF0ZSBhdXRob3IiIGNvbnRlbnQ9IlN0ZXZl IFIsIGh0dHA6Ly93
d3cuZGVzaWducGxhY2Uub3JnLyI+Cj4gPE1FVEEgbmFtZT0iQmlsbCBNdWRy eSIgQ29udGVudD0i
VEFYQSBXb29kIEtub3dsZWRnZSBCYXNlIHdlYiBkZXNpZ25lciBhbmQKPiBh dXRob3IiPgo+IDxT
VFlMRSB0eXBlPSJ0ZXh0L2NzcyI+Cj4gwqAgwqAgwqAgwqBib2R5IHsKPiDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoGJhY2tncm91bmQtY29sb3I6J2l2b3J5JzsgY29sb3I6ICdu YXZ5JzsgZm9udC1m
YW1pbHk6Cj4gdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZTogMTJweDsKPiDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPiDCoCDCoCDCoCDCoC5zbWFsbHRl eHQge2ZvbnQtc2l6
ZTogMTBweDt9Cj4gwqAgwqAgwqAgwqAubWVkaXVtdGV4dCB7Zm9udC1zaXpl OiAxM3B4O30KPiDC
oCDCoCDCoCDCoC5sYXJnZXJ0ZXh0IHtmb250LXNpemU6IDEuNWVtfTsKPiDC oCDCoCDCoCDCoC5y
ZXBvcnRoZWFkZXIge2ZvbnQtc2l6ZTogMjBweDsgZm9udC13ZWlnaHQ6NzAw O30KPgo+IMKgIMKg
IMKgIMKgdGQge2ZvbnQtc2l6ZTowLjhlbTsgYmFja2dyb3VuZC1jb2xvcjog JyNFRkRGQ0YnfQo+
Cj4gwqAgwqAgwqAgwqBIMSB7Zm9udC1zaXplOjJlbX07IMKgLyogZGlzcGxh eWVkIGF0IDI0cHgg
Ki8KPiDCoCDCoCDCoCDCoEgyIHtmb250LXNpemU6MS41ZW19OyDCoC8qIGRp c3BsYXllZCBhdCAx
OHB4ICovCj4gwqAgwqAgwqAgwqBIMyB7Zm9udC1zaXplOjEuMjVlbX07IMKg LyogZGlzcGxheWVk
IGF0IDE1cHggKi8KPiDCoCDCoCDCoCDCoEg0IHtmb250LXNpemU6MWVtfTsg wqAvKiBkaXNwbGF5
ZWQgYXQgMTJweCAqLwo+Cj4gwqAgwqAgwqAgwqAjZm9ybWJveCB7ZmxvYXQ6 IGxlZnQ7IGJvcmRl
cjozcHggZG90dGVkCj4gcmVkO2JhY2tncm91bmQtY29sb3I6InNreWJsdWUi O30KPgo+IDwvU1RZ
TEU+Cj4KPiA8L0hFQUQ+Cj4gPCEtLSDDgsKpIGh0dHA6Ly93d3cuZGVzaWdu cGxhY2Uub3JnLyAo
Rm9yIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHN0YXJ0IHRoaXMKPiBkZXNpZ24p IC0tPgo+Cj4gPCEt
LQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gWFhYWFhY WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWCBFTkQgT0YgSEVBREVSCj4gwqBYWFhYWFhYWFhY WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYCj4KPiBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY WFhYWFhYWFhYIFNU
QVJUIE9GIEJPRFkKPiDCoFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY WFhYWFhYWFgKPiA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IC0tPgo+Cj4gPEJP RFk+Cj4KPiDCoDw/
cGhwCj4KPiDCoCDCoCDCoCDCoC8vcGFyc2Vfc3RyKCRfU0VSVkVSWydRVUVS WV9TVFJJTkcnXSwg
JHFzKTsKPiDCoCDCoCDCoCDCoC8vJHJlY29yZF9jb3VudGVyID0kcXNbJ3Jl Y29yZF9jb3VudGVy
J107Cj4KPiDCoCDCoCDCoCDCoC8vJHJlY29yZF9jb3VudGVyID0gMTQ7IGhh cmQgY29kZWQgYXMg
YSBkZWJ1ZyBzdGF0ZW1lbnQKPgo+IMKgLy9FQ0hPICJcJGNvdW50IG9uIGxp bmUgOTkgaXMgLSAk
Y291bnQ8QlIgLz4iOyAvL2RlYnVnIHN0YXRlbWVudAo+Cj4gwqBFQ0hPICJc JHJlY29yZF9jb3Vu
dGVyIG9uIGxpbmUgOTUgaXMgLSAkcmVjb3JkX2NvdW50ZXI8QlIgLz4iOyAv L2RlYnVnCj4gc3Rh
dGVtZW50Cj4gwqA/Pgo+Cj4gPEgyIGFsaWduPSJjZW50ZXIiPk11bHRpIENv bHVtbiBTZWFyY2g8
L0gyPgo+Cj4gPERJViBpZD0iZm9ybWJveCI+Cj4KPiA8P3BocAo+IC8vcXVl cnlzdHJpbmcgPSIi
Owo+IC8vJHF1ZXJ5c3RyaW5nID0iIjsKPgo+IMKgJG5ld3NlYXJjaCA9IDAg OyAvL0VxdWFscyAx
IG9ubHkgb24gYSBuZXcgc2VhcmNoIHJlcXVlc3QKPiDCoC8vRUNITyAiPHAg YWxpZ249bGVmdD5c
JG5ld3NlYXJjaCBvbiBsaW5lIDExMSBpcyAkbmV3c2VhcmNoPC9wPiI7Cj4g wqAkc3VibWl0PSIi
Owo+IMKgLy9FQ0hPICJcU3N1Ym1pdCwgYmVmb3JlIHRoZSBmb3JtLCBvbiBs aW5lIDExMyBpcyAt
ICRzdWJtaXQ8YnIgLz4iOwo+IMKgSWYgKCRzdWJtaXQpIHskcmVjb3JkX2Nv dW50ZXIgPSAwO30K
PiA/Pgo+Cj4gPCEtLQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Cj4gWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYIE1BSU4gRk9STSBTVEFSVFMgSEVS RQo+IMKgWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKPiA9PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PQo+IC0tPgo+Cj4gPEZPUk0gbmFtZT0iZm9ybSIgYWN0aW9uPSJj b21tb25uYW1lX3Nl
YXJjaC5waHAiIG1ldGhvZD0iZ2V0Ij4KPgo+IDwhLS0gQUREIEEgVFJBTlBB UkVOVCBJTlNJREUg
VEFCTEUgVE8gT1JHQU5JWkUgUExBQ0VNRU5UIE9GIEFMTCBUSEUgRk9STQo+ IEVMRU1FTlRTIC0t
Pgo+IMKgIMKgIMKgIMKgPFRBQkxFIGFsaWduPSdjZW50ZXInIGJvcmRlcj0n MCcgYmdjb2xvcj0n
aXZvcnknIGNlbGxwYWRkaW5nPSc2Jz4KPiDCoCDCoCDCoCDCoCDCoCDCoDxU Uj4KPiDCoCDCoCDC
oCDCoCDCoCDCoDxURCBhbGlnbj0iY2VudGVyIiBjb2xzcGFuPSI1Ij4KPiDC oCDCoCDCoCDCoCDC
oCDCoDxTUEFOIGNsYXNzPSJyZXBvcnRoZWFkZXIiPkNob29zZSB3aGljaCBz ZWFyY2ggdHlwZSB5
b3Ugd2FudAo+IGZpcnN0PC9TUEFOPgo+IMKgIMKgIMKgIMKgIMKgIMKgPC9U RD4KPiDCoCDCoCDC
oCDCoDwvVFI+Cj4gwqAgwqAgwqAgwqA8VFI+Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqA8VEQg
Y2xhc3M9Im1lZGl1bXRleHQiPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg PEI+Q29tbW9uIG5h
bWVzPC9CPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgPElucHV0IHR5cGU9 J3JhZGlvJyB2YWx1
ZT0nY29tbW9uIG5hbWVzJyBuYW1lPSJzZWFyY2h0eXBlIiAvPgo+IMKgIMKg IMKgIMKgIMKgIMKg
IMKgIMKgPC9URD4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxURCBjbGFz cz0ibWVkaXVtdGV4
dCI+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8Qj5Cb3RhbmljYWwgbmFt ZXM8L0I+Cj4gwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqA8SW5wdXQgdHlwZT0ncmFkaW8nIHZhbHVl PSdib3RhbmljYWwg
bmFtZXMnIG5hbWU9InNlYXJjaHR5cGUiCj4gLz4KPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoDwv
VEQ+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8VEQgY2xhc3M9Im1lZGl1 bXRleHQiPgo+IMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgPEI+R2VudXM8L0I+Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAg
wqA8SW5wdXQgdHlwZT0ncmFkaW8nIHZhbHVlPSdnZW51cycgbmFtZT0ic2Vh cmNodHlwZSIgLz4K
PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDwvVEQ+Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqA8
VEQgY2xhc3M9Im1lZGl1bXRleHQiPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgPEI+TG9jYXRp
b248L0I+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8SW5wdXQgdHlwZT0n cmFkaW8nIHZhbHVl
PSdsb2NhdGlvbicgbmFtZT0ic2VhcmNodHlwZSIgLz4KPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDC
oDwvVEQ+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8VEQgY2xhc3M9Im1l ZGl1bXRleHQiPgo+
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgPEI+RGVzY3JpcHRpb248L0I+Cj4g wqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqA8SW5wdXQgdHlwZT0ncmFkaW8nIHZhbHVlPSdkZXNjcmlw dGlvbicgbmFtZT0i
c2VhcmNodHlwZSIgLz4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDwvVEQ+ Cj4gwqAgwqAgwqAg
wqA8L1RSPgo+IMKgIMKgIMKgIMKgPFRSPgo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgPFREIGFs
aWduPSJjZW50ZXIiIGNvbHNwYW49IjUiIGNsYXNzPSJtZWRpdW10ZXh0Ij4K PiDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxCPkVudGVyIGEgU2VhcmNoIFN0 cmluZzo8L0I+Jm5i
c3A7Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxJTlBVVCB0eXBlPSJ0 ZXh0IiBzaXplPSI0
MCIgbmFtZT0icXVlcnlzdHJpbmciCj4gLz4mbmJzcDsmbmJzcDsmbmJzcDsK PiDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDxJTlBVVCB0eXBlPSJoaWRkZW4i IG5hbWU9Im5ld3Nl
YXJjaCIgdmFsdWU9IjEiPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgPElO
UFVUIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3RhcnQK PiBTZWFyY2giIC8+
Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA8L1REPgo+ IMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgPC9UUj4KPiDCoCDCoCDCoCDCoDwvVEFCTEU+Cj4KPiA8 L0ZPUk0+Cj4gPC9E
SVY+Cj4KPiA8IS0tCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPiBYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFggTUFJTiBGT1JNIFNUT1BTIEhF UkUKPiDCoFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAo+ID09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09Cj4gLS0+Cj4KPiA8P3BocAo+Cj4gJHN1Ym1pdCA9ICRfR0VUWyJz dWJtaXQiXTsKPiBF
Q0hPICJcJHN1Ym1pdCBvbiBsaW5lIDE3OSBpcyAtICRzdWJtaXQ8YnIgLz4i Owo+Cj4gJG5ld3Nl
YXJjaCA9ICRfR0VUWyJuZXdzZWFyY2giXTsKPiAvL0VDSE8gIlwkbmV3c2Vh cmNoIGp1c3QgcGFz
dCB0aGUgZm9ybSBvbiBsaW5lIDE4MCBpcyAtICRuZXdzZWFyY2g8YnIgLz4i Owo+Cj4gSUYgKCRu
ZXdzZWFyY2g9MSkgeyRyZWNvcmRfY291bnRlcj0wO307Cj4gRUNITyAiXCRy ZWNvcmRfY291bnRl
ciBvbiBsaW5lIDE4NSBpcyAtICRyZWNvcmRfY291bnRlcjxiciAvPiI7Cj4g LyoKPiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT0KPiBYWFhYWFhYWFhYWCBHRVQgVEhFIFNFQVJDSCBUWVBF IEFORCBTRUFSQ0gg
U1RSSU5HIEZST00gVEhFIEZPUk0gWFhYWFhYWFhYWFgKPiA9PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KPiAq
Lwo+IMKgIMKgIMKgIMKgJHNlYXJjaHR5cGUgPSAkX0dFVFsnc2VhcmNodHlw ZSddIDsKPiDCoCDC
oCDCoCDCoCRzZWFyY2h0eXBlID0gdHJpbSgkc2VhcmNodHlwZSk7IC8vdHJp bSB3aGl0ZXNwYWNl
IGZyb20gdGhlIHN0b3JlZAo+IHZhcmlhYmxlCj4KPiDCoCDCoCDCoCDCoC8v RUNITyAiT24gbGlu
ZSAxOTIsIFwkc2VhcmNodHlwZSBpcyAtICRzZWFyY2h0eXBlPGJyIC8+Ijsg Ly8gRGVidWcKPiBz
dGF0ZW1lbnQKPgo+IMKgIMKgIMKgIMKgJHF1ZXJ5c3RyaW5nID0gQCRfR0VU WydxdWVyeXN0cmlu
ZyddIDsKPiDCoCDCoCDCoCDCoCRxdWVyeXN0cmluZyA9IHRyaW0oJHF1ZXJ5 c3RyaW5nKTsgLy90
cmltIHdoaXRlc3BhY2UgZnJvbSB0aGUgc3RvcmVkCj4gdmFyaWFibGUKPgo+ IMKgLy8KPiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Cj4gwqAgwqAgwqAgwqAvLyBSRUFT U1VSRSBVU0VSIE9G
IFRIRUlSIENIT0lDRVMuIChBTFNPIEdPT0QgRk9SIERFQlVHR0lORykuCj4g wqAgwqAgwqAgwqBJ
ZiAoIWVtcHR5KCRzZWFyY2h0eXBlKSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoHsKPiDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEVDSE8gIjxoMyBhbGln bj0nY2VudGVyJz5z
ZWFyY2hpbmcgdW5kZXIgJHNlYXJjaHR5cGUKPiBmb3I6ICZxdW90OyIgLiAk cXVlcnlzdHJpbmcg
LiAiJnF1b3Q7PC9oMz4iOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ Cj4gwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAvL0VDSE8gIkxpbmUgMjA0IC0gXCRzZWFyY2h0eXBl IGlzIC0gJHNlYXJj
aHR5cGU8YnIgLz4iOwo+IC8vZGVidWcgc3RhdGVtZW50Cj4gLyoKPiA9PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09Cj4gWFhYWFhYWFhYWFhYWFhYWFggwqBUUkFOU0xBVElPTiBPRiBT RUFSQ0ggVFlQRSBU
TyBDT0xVTU4gTkFNRQo+IMKgWFhYWFhYWFhYWFhYWFhYWFgKPiA9PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09Cj4gKi8KPgo+ICRzZWFyY2hmaWVsZCA9ICIiOwo+IMKgIMKgIMKgIMKg Ly9FQ0hPICJMaW5l
IDE5NiAtIFwkc2VhcmNodHlwZSBpcyAtICRzZWFyY2h0eXBlPGJyIC8+Ijsg Ly8gRGVidWcKPiBz
dGF0ZW1lbnQKPgo+IMKgIMKgIMKgIMKgc3dpdGNoICgkc2VhcmNodHlwZSkg ewo+IMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgY2FzZSAiY29tbW9uIG5hbWVzIjoKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCRzZWFyY2hmaWVsZCA9IHRyaW0oInNwZWNpZXNf Y29tbW9ubmFtZSIp
Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLy9FQ0hP ICI8YnI+Y29tbW9u
IG5hbWVzIC0gJHNlYXJjaGZpZWxkPGJyPlxuIjsKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoGJyZWFrOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2Fz ZSAiYm90YW5pY2Fs
IG5hbWVzIjoKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCRzZWFyY2hmaWVs
ZCA9IHRyaW0oInNwZWNpZXNfbmFtZSIpOwo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKg
IMKgIMKgLy9FQ0hPICI8YnI+Ym90YW5pY2FsIG5hbWVzIC0gJHNlYXJjaGZp ZWxkIDxicj5cbiI7
Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsK PiDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoGNhc2UgImdlbnVzIjoKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCRzZWFyY2hmaWVsZCA9IHRyaW0oImdlbnVzX25hbWUiKTsKPiDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8vRUNITyAiPGJyPmdlbnVzIC0gJHNl YXJjaGZpZWxkIDxi
cj5cbiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBi cmVhazsKPiDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoGNhc2UgImxvY2F0aW9uIjoKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCRzZWFyY2hmaWVsZCA9IHRyaW0oImxvY2F0aW9u Iik7Cj4gwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvL0VDSE8gIjxicj5sb2Nh dGlvbiAtICRzZWFy
Y2hmaWVsZCA8YnI+XG4iOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgYnJl
YWs7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjYXNlICJkZXNjcmlwdGlv biI6Cj4gwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAkc2VhcmNoZmllbGQgPSB0 cmltKCJzcGVjaWVz
X2Rlc2NyaXB0aW9uIik7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAvL0VD
SE8gIjxicj5kZXNjcmlwdGlvbiAtICRzZWFyY2hmaWVsZCA8YnI+XG4iOwo+ IMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYnJlYWs7Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBk
ZWZhdWx0OiBJZiAoIWlzc2V0KCRzZWFyY2hmaWVsZCkpIHsKPiDCoCDCoCDC oCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoEVDSE8gIlBsZWFzZSBjaG9vc2UgYSBzZWFyY2gg dHlwZSBmaXJzdCI7
Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqB9Cj4g LyoKPiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09Cj4gWFhYWFhYWFhYWFhYWCBFTkQgT0YgVFJBTlNM QVRJT04gT0YgU0VB
UkNIIFRZUEUgVE8gQ09MVU1OIE5BTUUKPiDCoFhYWFhYWFhYWFhYWFhYCj4g PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PQo+ICovCj4KPgo+IMKgLy8gR2V0IHRoZSBzZWFyY2ggdmFy aWFibGUgZnJvbSBV
UkwuIE9sZCBkZXNpZ25hdGlvbnMgd2VyZSAkdmFyID0KPiBAJF9HRVRbJ3En XSA7Cj4KPiDCoCRu
ZXdxdWVyeXN0cmluZyA9IEAkX0dFVFsncXVlcnlzdHJpbmcnXSA7Cj4gwqAk cXVlcnlzdHJpbmcg
PSB0cmltKCRuZXdxdWVyeXN0cmluZyk7IC8vdHJpbSB3aGl0ZXNwYWNlIGZy b20gdGhlIHN0b3Jl
ZAo+IHZhcmlhYmxlCj4KPiDCoCDCoCDCoCDCoCRjb3VudCA9ICRyZWNvcmRf Y291bnRlciArMTsK
PiDCoCRuZXdzZWFyY2ggPSBAJF9HRVRbJ25ld3NlYXJjaCddIDsKPiDCoEVD SE8gIlwkbmV3c2Vh
cmNoIG9uIGxpbmUgMjU1IGlzICRuZXdzZWFyY2giOwo+Cj4gwqBpZiAoJG5l d3NlYXJjaCA+IDAp
IHskcmVjb3JkX2NvdW50ZXI9MDt9Owo+Cj4KPiDCoC8qPT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cj4gwqAgwqAgwqAg
wqBYWFhYWFhYWFhYWFhYIFNFVCBUSEUgTlVNQkVSIE9GIFJFQ09SRFMgUEVS IFBBR0UgSEVSRSDC
oFhYWFhYWFhYWFhYWFhYCj4KPiDCoD09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCj4gwqAgwqAg wqAgwqAkbGltaXQ9
JzMwJzsKPgo+IC8vIGNoZWNrIGZvciBhbiBlbXB0eSBzdHJpbmcgYW5kIGRp c3BsYXkgYSBtZXNz
YWdlLgo+IGlmICgkcXVlcnlzdHJpbmcgPT0gIiIpCj4gwqB7Cj4gwqBFQ0hP ICI8cCBhbGlnbj0n
Y2VudGVyJz5QbGVhc2UgZW50ZXIgYSBzZWFyY2ggc3RyaW5nLi4uPC9wPiI7 Cj4gwqBleGl0Owo+
IMKgfQo+Cj4gLy8gY2hlY2sgZm9yIGEgc2VhcmNoIHBhcmFtZXRlcgo+IGlm ICghaXNzZXQoJG5l
d3F1ZXJ5c3RyaW5nKSkKPiDCoHsKPiDCoEVDSE8gIjxwIGFsaWduPSdjZW50 ZXInPldlIGRvbnQg
c2VlbSB0byBoYXZlIGEgc2VhcmNoIHBhcmFtZXRlciE8L3A+IjsKPiDCoGV4 aXQ7Cj4gwqB9Cj4K
PiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gwqBYWFhY WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFggQ29ubmVjdCB0byB0aGUgVEFYQSBEYXRhYmFzZQo+IMKg WFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFhYWFhYWFhYWAo+IMKgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0q
Lwo+Cj4gaW5jbHVkZSAoImNvbm5lY3R0b3RheGEucGhwIik7Cj4gJGNvbm5l Y3Rpb24gPSBteXNx
bF9jb25uZWN0KCRob3N0bmFtZSwgJHVzZXJuYW1lLCAkcGFzc3dvcmQpCj4g wqAgwqAgwqAgwqBv
ciBkaWUoIlVuYWJsZSB0byBjb25uZWN0IHRvIGRhdGFiYXNlIHNlcnZlciIp Owo+Cj4KPiAvL3Nw
ZWNpZnkgZGF0YWJhc2UgKiogRURJVCBSRVFVSVJFRCBIRVJFICoqCj4gbXlz cWxfc2VsZWN0X2Ri
KCJ0YXhhIikgb3IgZGllKCJVbmFibGUgdG8gc2VsZWN0IHRoZSBUQVhBIGRh dGFiYXNlIik7Cj4g
Ly9zZWxlY3Qgd2hpY2ggZGF0YWJhc2Ugd2UncmUgdXNpbmcKPgo+Cj4gLyo9 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K PiDCoFhYWFhYWFhY
WFhYWFhYWCBCVUlMRCBUSEUgU1FMIFFVRVJZIMKgWFhYWFhYWFhYWFhYWFhY WFhYWFgKPiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLwo+
Cj4gLy8gQnVpbGQgU1FMIFF1ZXJ5Cj4gJHNlYXJjaHF1ZXJ5ID0gIlNFTEVD VCAqCj4gRlJPTSBz
cGVjaWVzCj4gV0hFUkUgJHNlYXJjaGZpZWxkIGxpa2UgXCIlJHF1ZXJ5c3Ry aW5nJVwiCj4gwqBv
cmRlciBieSAnJHNlYXJjaGZpZWxkJyI7Cj4KPiDCoCRudW1yZXN1bHRzPW15 c3FsX3F1ZXJ5KCRz
ZWFyY2hxdWVyeSk7Cj4KPgo+IMKgQCRudW1yb3dzPW15c3FsX251bV9yb3dz KCRudW1yZXN1bHRz
KTsKPgo+IC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPiDCoFhYWFhY
WFhYWFhYWFhYWCBURVNUIEZPUiBaRVJPIFJFU1VMVFMgQU5EIFBSSU5UIEEg TUVTU0FHRSBPRiBU
SEFUIElGIFRSVUUKPiDCoFhYWFhYWFhYWFhYWFhYWFhYWFhYCj4gPT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ki8KPiBpZiAoJG51bXJvd3MgPT0gMCkK PiDCoHsKPiDCoEVD
SE8gIjxoMyBhbGlnbj0nY2VudGVyJz5TZWFyY2ggUmVzdWx0czwvaDM+IjsK PiDCoEVDSE8gIjxw
IGFsaWduPSdjZW50ZXInPlNvcnJ5LCB5b3VyIHNlYXJjaDogJnF1b3Q7IiAu ICRxdWVyeXN0cmlu
Zy4gIiZxdW90Owo+IHJldHVybmVkIHplcm8gcmVzdWx0czwvcD4iOwo+IMKg fQo+Cj4gLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KPiAv
LyAkcmVjb3JkX2NvdW50ZXIgaXMgdGhlIHJlY29yZCBjb3VudGVyIGZvciB0 aGUgcHJlc2VudCBy
ZWNvcmQKPiAvLyBuZXh0IGRldGVybWluZSBpZiBzIGhhcyBiZWVuIHBhc3Nl ZCB0byBzY3JpcHQs
IGlmIG5vdCB1c2UgMAo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSovCj4KPiDCoGlmIChlbXB0eSgkcykpIHsKPiDC oCRyZWNvcmRfY291
bnRlcj0wOwo+IMKgfQo+Cj4gLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiDCoFhY WFhYWFhYWFhYWFhY
WCBRVUVSWSBUSEUgREFUQUJBU0UgVE8gR0VUIFRIRSBSRVNVTFRTIMKgWFhY WFhYWFhYWFhYWFhY
WFhYWFgKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwo+Cj4gLy8gZ2V0IHJlc3Vs dHMKPiDCoCRzZWFy
Y2hxdWVyeSAuPSAiIGxpbWl0ICRyZWNvcmRfY291bnRlciwkbGltaXQiOwo+ IMKgJHJlc3VsdCA9
IG15c3FsX3F1ZXJ5KCRzZWFyY2hxdWVyeSkgb3IgZGllKCJDb3VsZG4ndCBl eGVjdXRlIHF1ZXJ5
Iik7Cj4KPiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4g wqBYWFhYWFhYWFhY
WFhYWFggRUNITyBCQUNLIFRPIFRIRSBVU0VSIFdIQVQgVEhFWSBBU0tFRCBU TyBTRUFSQ0ggRk9S
Cj4gwqBYWFhYWFhYWFhYWFhYWFhYWFhYWAo+ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09Ki8KPiBFQ0hPICI8cCBhbGlnbj0nY2VudGVyJz5Zb3Ugc2VhcmNoZWQg Zm9yOiAmcXVvdDsi
IC4gJHF1ZXJ5c3RyaW5nIC4KPiAiJnF1b3Q7PC9wPiI7Cj4KPiAvLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Lwo+IC8vIMKgIMKg
IMKgIMKgIMKgKioqKioqKioqKiBSRVBPUlRJTkcgU1RBUlRTIEhFUkUgwqAq KioqKioqKioqIMKg
IMKgIMKgIC8vCj4gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KPgo+IC8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IMKgWFhYWFhY WFhYWFhYWFhYIFNF
VCBBIFRJVExFIEZPUiBUSEUgUkVQT1JUIMKgWFhYWFhYWFhYWFhYWFhYWFhY WFgKPiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
Ki8KPiBFQ0hPICI8SDMgYWxpZ249J2NlbnRlcic+U2VhcmNoIFJlc3VsdHMg LSAkbnVtcm93cyBy
ZWZlcmVuY2VzIGZvdW5kLjxicgo+IC8+PGJyIC8+PC9IMz4iOwo+Cj4gLy8g bm93IHlvdSBjYW4g
ZGlzcGxheSB0aGUgcmVzdWx0cyByZXR1cm5lZAo+Cj4gLyo9PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQo+IMKg
WFhYWFhYWFhYWFhYWFhYIFNFVCBVUCBDT0xVTU4gSEVBREVSUyBGT1IgVEhF IFJFUE9SVCDCoFhY
WFhYWFhYWFhYWFhYWFhYWFhYCj4gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwo+Cj4g RUNITyAiPHRhYmxl
IGFsaWduPSdjZW50ZXInIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTMgQ2VsbHNw YWNpbmc9MAo+IGJn
Y29sb3I9J3doaXRlJz4iOwo+IEVDSE8gIjx0ciBjb2xzcGFuPTM+IjsKPiDC oCDCoCDCoCDCoEVD
SE8gIjx0ZCBiZ2NvbG9yPScjRUZERkNGJyBjbGFzcz1cInJlcG9ydGhlYWRl clwiPiI7Cj4gwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAvL0VDSE8gIjxzcGFuPkNvbW1vbiBOYW1l PC9zcGFuPiI7Cj4g
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBFQ0hPICJDb21tb24gTmFtZSI7Cj4g wqAgwqAgwqAgwqBF
Q0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoEVDSE8gIjx0ZCBiZ2NvbG9y PScjRUZERkNGJyBj
bGFzcz1cInJlcG9ydGhlYWRlclwiPiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBFQ0hPICJC
b3RhbmljYWwgTmFtZSI7Cj4gwqAgwqAgwqAgwqBFQ0hPICI8L3RkPiI7Cj4K PiDCoCDCoCDCoCDC
oEVDSE8gIjx0ZCBiZ2NvbG9yPScjRUZERkNGJyBjbGFzcz1cInJlcG9ydGhl YWRlclwiPiI7Cj4g
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBFQ0hPICJBdXRob3JpdGllcyI7Cj4g wqAgwqAgwqAgwqBF
Q0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoEVDSE8gIjx0ZCBiZ2NvbG9y PScjRUZERkNGJyBj
bGFzcz1cInJlcG9ydGhlYWRlclwiPiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBFQ0hPICJH
ZW51cyBOYW1lIjsKPiDCoCDCoCDCoCDCoEVDSE8gIjwvdGQ+IjsKPgo+IMKg IMKgIMKgIMKgRUNI
TyAiPHRkIGJnY29sb3I9JyNFRkRGQ0YnIGNsYXNzPVwicmVwb3J0aGVhZGVy XCI+IjsKPiDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoEVDSE8gIkxvY2F0aW9uIjtFQ0hPICI8L3Rk PiI7Cj4KPiDCoCDC
oCDCoCDCoEVDSE8gIjx0ZCBiZ2NvbG9yPScjRUZERkNGJyBjbGFzcz1cInJl cG9ydGhlYWRlclwi
PiI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBFQ0hPICJDb21tZW50cyI7 Cj4gwqAgwqAgwqAg
wqBFQ0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoGlmICghaXNzZXQoJGNv dW50KSl7JGNvdW50
PTE7fTsKPgo+IEVDSE8gIjwvdHI+IjsKPiBFQ0hPICI8dHI+IjsKPgo+Cj4K Pgo+Cj4gLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQo+IMKg
WFhYWFhYWFhYIMKgUFJJTlQgT1VUIFJFQ09SRFMgVElMTCBFTkQgT0YgUVVF UlkgWFhYWFhYWFhY
Cj4KPiDCoCoqKioqKioqKioqKioqIFdISUxFIExPT1AgU1RBUlRTIEhFUkUg KioqKioqKioqKioq
KioqKioqCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT0qLwo+IMKgd2hpbGUgKCRyb3c9IG15c3FsX2ZldGNoX2FycmF5 KCRyZXN1bHQpKSB7
Cj4gwqAkY29tbW9ubmFtZSA9ICRyb3dbInNwZWNpZXNfY29tbW9ubmFtZSJd Owo+IMKgJGJvdG5h
bWUgPSAkcm93WyJzcGVjaWVzX25hbWUiXTsKPiDCoCRhdXRob3JpdGllcyA9 ICRyb3dbImF1dGhv
cml0aWVzX3NwZWNpZXMiXTsKPgo+IMKgJGdlbnVzbmFtZSA9ICRyb3dbImdl bnVzX25hbWUiXTsK
PiDCoCRsb2NhdGlvbiA9ICRyb3dbImxvY2F0aW9uIl07Cj4gwqAkY29tbWVu dHMgPSAkcm93WyJj
b21tZW50cyJdOwo+Cj4gwqAgwqAgwqAgwqBFQ0hPICI8dGQgdmFsaWduPSd0 b3AnIGNsYXNzPXNt
YWxsdGV4dDs+IjsKPiDCoCDCoCDCoCDCoC8vRUNITyAiXCRjb3VudCBpcyAk Y291bnQ8YnIgLz4i
Owo+Cj4gwqAgwqAgwqAgwqBFQ0hPICIkY291bnQgJm5ic3A7ICRjb21tb25u YW1lPGJyIC8+IiA7
Cj4gwqAgwqAgwqAgwqBFQ0hPICI8L3RkPiI7Cj4KPiDCoCDCoCDCoCDCoEVD SE8gIjx0ZCB2YWxp
Z249J3RvcCcgY2xhc3M9c21hbGx0ZXh0Oz4iOwo+IMKgIMKgIMKgIMKgRUNI TyAiPGEgaHJlZj1c
ImRpc3BsYXlzcGVjaWVzLnBocD8mc3BlY2llc19uYW1lPSRib3RuYW1lIFwi PiI7Cj4gwqAgwqAg
wqAgwqBFQ0hPICIkYm90bmFtZTxiciAvPiI7Cj4gwqAgwqAgwqAgwqBFQ0hP ICI8L2E+PGJyPlxu
IjsKPgo+IMKgIMKgIMKgIMKgRUNITyAiPC90ZD4iOwo+IMKgIMKgIMKgIMKg RUNITyAiPHRkIHZh
bGlnbj0ndG9wJyBjbGFzcz1zbWFsbHRleHQ7PiI7Cj4gwqAgwqAgwqAgwqBF Q0hPICIkYXV0aG9y
aXRpZXM8YnIgLz4iOwo+IMKgIMKgIMKgIMKgRUNITyAiPC90ZD4iOwo+Cj4g wqAgwqAgwqAgwqBF
Q0hPICI8dGQgdmFsaWduPSd0b3AnIGNsYXNzPXNtYWxsdGV4dDs+IjsKPiDC oCDCoCDCoCDCoEVD
SE8gIiRnZW51c25hbWU8YnIgLz4iOwo+IMKgIMKgIMKgIMKgRUNITyAiPC90 ZD4iOwo+Cj4gwqAg
wqAgwqAgwqBFQ0hPICI8dGQgdmFsaWduPSd0b3AnIGNsYXNzPXNtYWxsdGV4 dDs+IjsKPiDCoCDC
oCDCoCDCoEVDSE8gIiRsb2NhdGlvbjxiciAvPiI7Cj4gwqAgwqAgwqAgwqBF Q0hPICI8L3RkPiI7
Cj4KPiDCoCDCoCDCoCDCoEVDSE8gIjx0ZCBjbGFzcz1zbWFsbHRleHQ7PiI7 Cj4gwqAgwqAgwqAg
wqBFQ0hPICIkY29tbWVudHM8YnIgLz4iOwo+IMKgIMKgIMKgIMKgRUNITyAi PC90ZD4iOwo+Cj4g
wqAgwqAgwqAgwqBFQ0hPICI8L3RyPiI7Cj4gwqAgwqAgwqAgwqBFQ0hPICI8 dHI+IjsKPgo+IMKg
JGNvdW50KysgOwo+IMKgJHJlY29yZF9jb3VudGVyKysgOyAvLyBET0VTTidU ICRyZWNvcmRfY291
bnRlciBIQVZFIFRPIEJFIElOQ1JFTUVFTlRFRCBGT1IKPiBFQUNIIFJPVyBQ UklOVEVEIEFMU08/
Pwo+IMKgLy8gQU5PVEhFUiBDT1BZIFdPUktFRCBBIEZFVyBNT05USFMgQUdP IFdJVEhPVVQgSVQu
IGlUIElTIE5PVCBJTiBUSEUKPiBURU1QTEFURS4KPiDCoC8vRUNITyAiXCRy ZWNvcmRfY291bnRl
ciBvbiBsaW5lIDQxMiBpcyAtICRyZWNvcmRfY291bnRlcjxCUiAvPiI7IC8v ZGVidWcKPiBzdGF0
ZW1lbnQKPiDCoH0KPgo+Cj4gLyo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQo+IMKgWFhYWFhYWFhYIMKgRU5EIE9GIFdI SUxFIExPT1AuIFhY
WFhYWFhYWAo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT09PT09PT09Ki8KPgo+IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwo+IC8vIMKgIMKgIENMT1NFIFRIRSBSRVBP UlQgVEFCTEUKPiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8KPiBFQ0hPICI8L3RyPiI7Cj4gRUNITyAiPC90YWJsZT4iOwo+IEVDSE8g IjxCUiAvPiI7Cj4g
RUNITyAiXCRyZWNvcmRfY291bnRlciBvbiBsaW5lIDQzNiBhdCB0aGUgZW5k IG9mIHRoZSByZXBv
cnQgbG9vcCBpcyAtCj4gJHJlY29yZF9jb3VudGVyPGJyIC8+IjsKPgo+Cj4K PiAvLyBDYWxjdWxh
dGUgdGhlIGN1cnJlbnQgcGFnZQo+ICRjdXJyUGFnZSA9ICgoJHJlY29yZF9j b3VudGVyLyRsaW1p
dCkgKyAxKTsKPiAkcGFnZXMgPSAkY3VyclBhZ2U7IC8vCj4gRUNITyAiXCRj dXJyUGFnZSBvbiBs
aW5lIDQ1MSBpcyAtICRjdXJyUGFnZTxiciAvPiI7IC8vZGVidWcgc3RhdGVt ZW50Cj4gRUNITyAi
XCRyZWNvcmRfY291bnRlciBvbiBsaW5lIDQ1MiBpcyAtICRyZWNvcmRfY291 bnRlcjxCUiAvPiI7
IC8vZGVidWcKPiBzdGF0ZW1lbnQKPgo+IC8vYnJlYWsgYmVmb3JlIHBhZ2lu Zwo+IMKgRUNITyAi
PGJyIC8+IjsKPgo+IMKgLy8gbmV4dCB3ZSBuZWVkIHRvIGRvIHRoZSBsaW5r cyB0byBvdGhlciBy
ZXN1bHRzCj4KPiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCj4gLy8gSWYgJHJlY29yZF9jb3Vu dGVyIGlzIGxlc3Mg
dGhhbiAxLCB0aGVyZSBhcmUgbm8gbW9yZSByZWNvcmRzIHRvIHZpZXcKPiBi YWNrd2FyZHMuCj4g
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwo+Cj4gLy8gYnlwYXNzIFBSRVYgbGluayBpZiBzIGlz IDAgc2luY2UgdGhl
cmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgbW9yZSByZWNvcmQKPiB0byBkaXNw bGF5IHRvIHVzZSBh
IG5ldyBwYWdlLgo+IGlmICgkcmVjb3JkX2NvdW50ZXI+PTEpIHsKPiDCoEVD SE8gIlwkcmVjb3Jk
X2NvdW50ZXIgYXQgbGluZSA0NTMgaXMgLSAkcmVjb3JkX2NvdW50ZXI8YnIg Lz4gIjsgLy9kZWJ1
Zwo+IHN0YXRlbWVudAo+IMKgJHByZXZzPSgkcmVjb3JkX2NvdW50ZXItJGxp bWl0KTsKPiDCoCDC
oCDCoCDCoCDCoEVDSE8gIlwkcHJldnMgYXQgbGluZSA0NTUgaXMgLSAkcHJl dnM8YnIgLz4gIjsg
Ly9kZWJ1ZyBzdGF0ZW1lbnQKPgo+IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8KPiAvLyDCoCDCoCoqKioqKiBUaGlzIHN0YXRlbWVudCB3aWxsIHJ1biB0 aGUgcHJpb3IgcGFn
ZSBvZiB0aGUgcmVwb3J0LiBJdCBpcwo+IHVzZXIgY2hvc2VuKioqKioqCj4g Ly8KPiAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCj4gwqBwcmludCAiJm5i c3A7PGEKPiBocmVm
PVwiJFBIUF9TRUxGP3JlY29yZF9jb3VudGVyPSRwcmV2cyZxdWVyeXN0cmlu Zz0kcXVlcnlzdHJp
bmcmc2VhcmNoZmllbGQ9JHNlYXJjaGZpZWxkXCI+CgpJIGRvbid0IHNlZSAk UEhQX1NFTEYgZGVj
bGFyZWQgcHJpb3IgdG8gdXNhZ2UuICBIYXZpbmcgdGhlIHByb3BlcgpkZXZl bG9wbWVudCBzZXR0
aW5ncyBpbiBwaHAuaW5pIHdpbGwgc2hvdyB5b3UgdGhpcyBlcnJvci4gIEhl cmUgSQp0aGluayB5
b3UgbWVhbnQgJF9TRVJWRVJbJ1BIUF9TRUxGJ10uICBTZWUKaHR0cDovL3Bo cC5uZXQvcmVzZXJ2
ZWQudmFyaWFibGVzLgoKSXQncyByZWNvbW1lbmRlZCB0byB1c2UgJF9TRVJW RVJbJ1NDUklQVF9O
QU1FJ10gb3ZlciAkX1NFUlZFUlsnUEhQX1NFTEYnXS4KCj4gwqA8cCBhbGln bj0nbGVmdCcgY2xh
c3M9J2xhcmdlcnRleHQnPjxiPiZsdDsmbHQ7IFByZXZpb3VzICRsaW1pdAo+ IHJlY29yZHM8L2I+
PC9wPjwvYT4mbmJzcCZuYnNwOyI7IC8vIFBhZ2UgMzU3Cj4KPiB9IMKgIC8v RU5EIE9GIFBSRVNF
TlQgSUYgU1RBVEVNRU5UCj4KPiAvLyBjYWxjdWxhdGUgbnVtYmVyIG9mIHBh Z2VzIG5lZWRpbmcg
bGlua3MKPiDCoCRwYWdlcz1pbnR2YWwoJG51bXJvd3MvJGxpbWl0KTsKPgo+ IC8vRUNITyAiXCRw
YWdlcyBvbiBsaW5lIDQ2OSBpcyAtICRwYWdlczxiciAvPiI7IC8vZGVidWcg c3RhdGVtZW50Cj4g
Ly9FQ0hPICJcJG51bXJvd3Mgb24gbGluZSA0NzAgaXMgLSAkbnVtcm93czxi ciAvPiI7IC8vZGVi
dWcgc3RhdGVtZW50Cj4gLy9FQ0hPICJcJGxpbWl0IG9uIGxpbmUgNDcxIGlz IC0gJGxpbWl0PGJy
IC8+IjsgLy9kZWJ1ZyBzdGF0ZW1lbnQKPgo+IC8vICRwYWdlcyBub3cgY29u dGFpbnMgaW50IG9m
IHBhZ2VzIG5lZWRlZCB1bmxlc3MgdGhlcmUgaXMgYSByZW1haW5kZXIgZnJv bQo+IGRpdmlzaW9u
Cj4KPiDCoGlmICgkbnVtcm93cyUkbGltaXQpIHsKPiDCoC8vIGhhcyByZW1h aW5kZXIgc28gYWRk
IG9uZSBwYWdlCj4gwqAkcGFnZXMrKzsKPiDCoH0KPiAvL0VDSE8gIlwkcGFn ZXMgb24gbGluZSA0
NzkgaXMgLSAkcGFnZXM8YnIgLz4iOyAvL2RlYnVnIHN0YXRlbWVudAo+Cj4g JHJlbWFpbmRlciA9
ICgkbnVtcm93cyUkbGltaXQpOwo+IC8vRUNITyAiXCRyZW1haW5kZXIgb24g bGluZSAzNTMgaXMg
LSAkcmVtYWluZGVyPGJyIC8+IjsgLy9kZWJ1ZyBzdGF0ZW1lbnQKPgo+IMKg RUNITyAiPGJyIC8+
IjsKPgo+IMKgIMKgIMKgIMKgLy8keCA9ICgkcmVjb3JkX2NvdW50ZXIrJGxp bWl0KS8kbGltaXQK
PiDCoCDCoCDCoCDCoC8vRUNITyAiXCR4IG9uIGxpbmUgNDc4IGlzIC0gJHg8 YnIgLz4iOyAvL2Rl
YnVnIHN0YXRlbWVudAo+IMKgIMKgIMKgIMKgRUNITyAiXCRyZWNvcmRfY291 bnRlciBvbiBsaW5l
IDQ3OSBpcyAtICRyZWNvcmRfY291bnRlcjxiciAvPiI7Cj4gLy9kZWJ1ZyBz dGF0ZW1lbnQKPgo+
IMKgIMKgIMKgIMKgLy9FQ0hPICJcJGxpbWl0IG9uIGxpbmUgNDkwIGlzIC0g JGxpbWl0PGJyIC8+
IjsgLy9kZWJ1ZyBzdGF0ZW1lbnQKPiDCoCDCoCDCoCDCoC8vRUNITyAiXCRw YWdlcyBvbiBsaW5l
IDQ5MSBpcyAtICRwYWdlczxiciAvPiI7IC8vZGVidWcgc3RhdGVtZW50Cj4K PiAvLyBjaGVjayB0
byBzZWUgaWYgbGFzdCBwYWdlCj4gwqBpZiAoISgoKCRyZWNvcmRfY291bnRl ciskbGltaXQpLyRs
aW1pdCk9PSRwYWdlcykgJiYgJHBhZ2VzIT0xKSB7Cj4KPiDCoEVDSE8gIjxi ciAvPiI7Cj4KPiDC
oC8vIG5vdCBsYXN0IHBhZ2Ugc28gZ2l2ZSBORVhUIGxpbmsKPiDCoCRuZXdz PSRyZWNvcmRfY291
bnRlciskbGltaXQ7Cj4gwqAgwqAgwqAgwqBFQ0hPICJcJHJlY29yZF9jb3Vu dGVyIG9uIGxpbmUg
NTE3IGlzIC0gJHJlY29yZF9jb3VudGVyPGJyIC8+IjsKPiAvL2RlYnVnIHN0 YXRlbWVudAo+IMKg
IMKgIMKgIMKgLy9FQ0hPICJcJGxpbWl0IG9uIGxpbmUgNDkyIGlzIC0gJGxp bWl0PGJyIC8+Ijsg
Ly9kZWJ1ZyBzdGF0ZW1lbnQKPiDCoCDCoCDCoCDCoC8vRUNITyAiXCRuZXdz IG9uIGxpbmUgNDkz
IGlzIC0gJG5ld3M8YnIgLz4iOyAvL2RlYnVnIHN0YXRlbWVudAo+IMKgIMKg IMKgIMKgLy9FQ0hP
ICI8ZGl2IGFsaWduPSdyaWdodCcgc3R5bGU9J2NvbG9yOicjRkYwMDAwJz4i Owo+Cj4gLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCj4g
Ly8gwqBUaGlzIHN0YXRlbWVudCB3aWxsIHJ1biB0aGUgbmV4dCBwYWdlIG9m IHRoZSByZXBvcnQu
Cj4gLy8gwqBJdCBpcyB1c2VyIGNob3Nlbgo+IC8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo+Cj4gLy9lY2hvICIm bmJzcDs8YSBocmVm
PVwiJFBIUF9TRUxGP3M9JG5ld3MmcT0kdmFyXCI+TmV4dCAxMCAmZ3Q7Jmd0 OzwvYT4iOwo+CgpB
Z2Fpbiwgc2VlIHRoZSBhYm92ZS4KCj4gRUNITyAiJm5ic3A7PGEKPiBocmVm PVwiJFBIUF9TRUxG
P3JlY29yZF9jb3VudGVyPSRuZXdzJnF1ZXJ5c3RyaW5nPSRuZXdxdWVyeXN0 cmluZyZzZWFyY2hm
aWVsZD0kc2VhcmNoZmllbGRcIj4KPiA8cCBjbGFzcz0nbGFyZ2VydGV4dCcg YWxpZ209J3JpZ2h0
Jz48Qj5OZXh0ICRsaW1pdCByZWNvcmRzCj4gJmd0OyZndDs8L2I+PC9wPjwv YT4iOwo+Cj4gwqAg
wqAgwqAgwqBFQ0hPICI8L2Rpdj4iOwo+IMKgfQo+IMKgIMKgIMKgIMKgRUNI TyAiXCRyZWNvcmRf
Y291bnRlciBvbiBsaW5lIDUzNCBpcyAtICRyZWNvcmRfY291bnRlcjxCUiAv PiI7Cj4gLy9kZWJ1
ZyBzdGF0ZW1lbnQKPgo+IMKgIMKgIMKgIMKgJHJlY29yZF9jb3VudGVyID0g JG5ld3M7Cj4KPiDC
oCDCoCDCoCDCoEVDSE8gIlwkcmVjb3JkX2NvdW50ZXIgb24gbGluZSA1Mzgg aXMgLSAkcmVjb3Jk
X2NvdW50ZXI8QlIgLz4iOwo+IC8vZGVidWcgc3RhdGVtZW50Cj4KPiAvLyRf U0VTU0lPTlsnJHJl
Y29yZF9jb3VudGVyJ10gPSAkcmVjb3JkX2NvdW50ZXI7Cj4gLy8kX1NFU1NJ T05bJyRjb3VudCdd
ID0gJGNvdW50Owo+Cj4gPz4KPgo+IDwhLS0gw4PigJrDgsKpIGh0dHA6Ly93 d3cuZGVzaWducGxh
Y2Uub3JnLyAtLT4KPgo+IDwvQk9EWT4KPiA8L0hUTUw+Cj4KPgo+IFsvQ09E RV0KPgo+CgpPbmUg
bW9yZSB0aGluZywgY29uc2lkZXIgdXNpbmcgcGFzdGViaW4uY29tIGZvciBj b2RlIHBvc3Rpbmcu
ICBEb2luZwppbiB0aGUgZW1haWxzIGlzIHZlcnkgYmFkIGZvciBsZWdpYmls aXR5IChkdWUgdG8g
bGluZSB3cmFwcGluZykgYW5kIG5vCmxpbmUgbnVtYmVycyB3aGVuIHlvdSBy ZWZlcmVuY2UgbGlu
ZSBudW1iZXIgaW4gZGVzY3JpYmluZyB5b3VyCnByb2JsZW0sICBlc3BlY2lh bGx5IG9uIGEgbG9u
ZyBwb3N0IGxpa2UgeW91cnMuCgpSZWdhcmRzLApUb21teQo=
Tommy Pham [ So, 13 März 2011 04:22 ] [ ID #2056492 ]
PHP » gmane.comp.php.windows » Changing over to finishing the search engine

Vorheriges Thema: PHP Help needed
Nächstes Thema: What does array_search actually return if a value is not found?