[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 20050520: Unidata decoders - syn2nc bug re Unicode (cont.)



On Fri, 20 May 2005, Unidata Support wrote:

>
> ------- Forwarded Message
>
> >To: <address@hidden>
> >From: "Hanson, Kurt" <address@hidden>
> >Subject: FW: Unidata decoders - syn2nc bug re Unicode
> >Organization: WSI
> >Keywords: 200505201415.j4KEFOP3013416 netCDF decoders syn2nc
>
> This is a multi-part message in MIME format.
>
> ------_=_NextPart_001_01C55D46.5A42735C
> Content-Type: multipart/alternative;
>       boundary="----_=_NextPart_002_01C55D46.5A42735C"
>
>
> ------_=_NextPart_002_01C55D46.5A42735C
> Content-Type: text/plain;
>       charset="Windows-1252"
> Content-Transfer-Encoding: quoted-printable
>
> I haven't received a response to this. Does that mean its still in a =

i consider this very important, been working on a new release but other
projects have deverted time.

thanks.
robb...

> queue or that the issue is not considered important?
>
> Just curious  --
>
> Kurt Hanson
> WSI Corporation
> 400 Minuteman Rd.
> Andover, MA 01810
> (978).983.6549
> www.wsi.com
>
>
> >  -----Original Message-----
> > From:       Hanson, Kurt =20
> > Sent:       Wednesday, April 20, 2005 1:20 PM
> > To: 'address@hidden'
> > Subject:    Unidata decoders - syn2nc bug re Unicode
> >=20
> > I imagine this will end up in Rob Kambic's inbox... if so, hello again =
> Rob.
> >=20
> > We've been occasionally experiencing issues with syn2nc. The problem =
> is that once every week or two, the syn2nc log will suddenly begin =
> filling with messages about Unicode:
> >=20
> > Malformed UTF-8 character (unexpected continuation byte 0x8e, with no =
> preceding start byte) in index at /dicast2-papp/DICAST/tmp/syn2nc_308 =
> line 618, <STDIN> chunk 1.
> > Malformed UTF-8 character (unexpected non-continuation byte 0x2a, =
> immediately after start byte 0xf6) in index at =
> /dicast2-papp/DICAST/tmp/syn2nc_308 line 618, <STDIN> chunk 1.
> >=20
> > The log file grows without bound until finally the disk partition =
> fills, hobbling the entire system.
> >=20
> > I think I understand the problem and have a fix. The problem appears =
> to be due to some garbage characters in several of the synoptic messages =
> from today for a single site -- FBSK in Botswana. (I imagine that all of =
> the problems we've ever seen are from this site.)
> >=20
> > The issue is that since 5.8.0, Perl has some automatic support for =
> handling Unicode characters. Once Perl sees a character outside of the =
> range [0,127], it assumes that the text data is Unicode rather than =
> ASCII. Since the garbage characters from today's FBSK data did not =
> conform to Unicode rules, Perl itself (rather than syn2nc) generated the =
> messages.
> >=20
> > So the magic fix I installed is to put a "no encoding;" line (pragma) =
> into the syn2nc script. This ensures that Perl doesn't try to guess what =
> sort of character set the text is in -- it just passes the data up to =
> the application level in raw form. That's what we need with syn2nc.
> >=20
> > Scope:
> > * We experience this problem on a Linux RedHat Enterprise 3.0 Athlon =
> system running Perl 5.8.0.
> > * We do not experience it on a Solaris 8 system running Perl 5.8.0.
> >=20
> > Testing:
> > When I pipe the attached synoptic file =
> synoptic.20050420.1200.asc.FBSK_210 into the pristine syn2nc on the =
> Linux system, the log file grows without bound. When I pipe it into my =
> patched version, the log file size remains stable, and the file never =
> gets any Unicode error messages.
> >=20
> > Discussion:
> > Thinking beyond the low-level Perl issue, I'm not sure what syn2nc =
> should do when it encounters the garbage characters... Nor am I sure =
> what it actually does -- I'd dig into the script itself to find that out =
> but I'm running short on time. What do you think?
> >=20
> > Also, I'd be curious to hear whether you see the garbage characters in =
> your FBSK synoptics for today. Its possible but unlikely that the =
> garbage is not due to the FBSK sensor itself but due to some =
> communications issue that is WSI-specific.
> >=20
> > I'm attaching a few things:
> > * syn2nc.new -- an updated version of syn2nc from the 3.0.9 version of =
> the decoders package.
> > * syn2nc.patch -- a diff of my version vs the pristine 3.0.9
> > * synoptic.20050420.1200.asc.FBSK_210 -- message #210 from today's =
> synoptic feed, containing garbage characters 0x8e and others in line 6 =
> of the file.
> >=20
> > Relevant Perl references:
> > * Unicode intro: http://perldoc.perl.org/perluniintro.html
> > * encoding pragma: http://perldoc.perl.org/encoding.html
> >=20
> > Whew. I think that's about everything! Feel free to contact me.
> >=20
> > Kurt Hanson
> > Senior Software Engineer & Scientific Analyst
> > WSI Corporation
> > 400 Minuteman Rd.
> > Andover, MA 01810
> > my phone: 978.983.6549
> > www.wsi.com
> >=20
> > >  <<syn2nc.new>> > >  <<syn2nc.patch>> > >  =
> <<synoptic.20050420.1200.asc.FBSK_210>>=20
> >=20
> >=20
> >=20
>
> ------_=_NextPart_002_01C55D46.5A42735C
> Content-Type: text/html;
>       charset="Windows-1252"
> Content-Transfer-Encoding: quoted-printable
>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
> <HTML>
> <HEAD>
> <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
> charset=3DWindows-1252">
> <META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
> 6.5.7226.0">
> <TITLE>FW: Unidata decoders - syn2nc bug re Unicode</TITLE>
> </HEAD>
> <BODY>
> <!-- Converted from text/rtf format -->
>
> <P><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">I haven't received a =
> response to this. Does that mean its still in a queue or that the issue =
> is not considered important?</FONT></P>
>
> <P><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">Just curious&nbsp; =
> --</FONT>
> </P>
>
> <P><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Arial">Kurt Hanson</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">WSI Corporation</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">400 Minuteman Rd.</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">Andover, MA 01810</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">(978).983.6549</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">www.wsi.com</FONT>
> </P>
> <BR>
>
> <P><FONT FACE=3D"Arial"><SPAN LANG=3D"en-us"></SPAN></FONT><SPAN =
> LANG=3D"en-us">&nbsp;<FONT SIZE=3D1 FACE=3D"Tahoma">-----Original =
> Message-----</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><B><FONT SIZE=3D1 FACE=3D"Tahoma">From: =
> &nbsp;</FONT></B> <FONT SIZE=3D1 FACE=3D"Tahoma">Hanson, Kurt&nbsp; =
> </FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><B><FONT SIZE=3D1 =
> FACE=3D"Tahoma">Sent:&nbsp;&nbsp;</FONT></B> <FONT SIZE=3D1 =
> FACE=3D"Tahoma">Wednesday, April 20, 2005 1:20 PM</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><B><FONT SIZE=3D1 =
> FACE=3D"Tahoma">To:&nbsp;&nbsp;&nbsp;&nbsp;</FONT></B> <FONT SIZE=3D1 =
> FACE=3D"Tahoma">'address@hidden'</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><B><FONT SIZE=3D1 =
> FACE=3D"Tahoma">Subject:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT>=
> </B> <FONT SIZE=3D1 FACE=3D"Tahoma">Unidata decoders - syn2nc bug re =
> Unicode</FONT></SPAN>
> </P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">I imagine this =
> will end up in Rob Kambic's inbox... if so, hello again =
> Rob.</FONT></SPAN>
> </P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">We've been =
> occasionally experiencing issues with syn2nc. The problem is that once =
> every week or two, the syn2nc log will suddenly begin filling with =
> messages about Unicode:</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier New">Malformed =
> UTF-8 character (unexpected continuation byte 0x8e, with no preceding =
> start byte) in index at /dicast2-papp/DICAST/tmp/syn2nc_308 line 618, =
> &lt;STDIN&gt; chunk 1.</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier New">Malformed =
> UTF-8 character (unexpected non-continuation byte 0x2a, immediately =
> after start byte 0xf6) in index at /dicast2-papp/DICAST/tmp/syn2nc_308 =
> line 618, &lt;STDIN&gt; chunk 1.</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">The log file grows =
> without bound until finally the disk partition fills, hobbling the =
> entire system.</FONT></SPAN>
> </P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">I think I =
> understand the problem and have a fix. The problem appears to be due to =
> some garbage characters in several of the synoptic messages from today =
> for a single site -- FBSK in Botswana. (I imagine that all of the =
> problems we've ever seen are from this site.)</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">The issue is that =
> since 5.8.0, Perl has some automatic support for handling Unicode =
> characters. Once Perl sees a character outside of the range [0,127], it =
> assumes that the text data is Unicode rather than ASCII. Since the =
> garbage characters from today's FBSK data did not conform to Unicode =
> rules, Perl itself (rather than syn2nc) generated the =
> messages.</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">So the magic fix I =
> installed is to put a &quot;no encoding;&quot; line (pragma) into the =
> syn2nc script. This ensures that Perl doesn't try to guess what sort of =
> character set the text is in -- it just passes the data up to the =
> application level in raw form. That's what we need with =
> syn2nc.</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
> FACE=3D"Arial">Scope:</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* We experience =
> this problem on a Linux RedHat Enterprise 3.0 Athlon system running Perl =
> 5.8.0.</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* We do not =
> experience it on a Solaris 8 system running Perl 5.8.0.</FONT></SPAN>
> </P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
> FACE=3D"Arial">Testing:</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">When I pipe the =
> attached synoptic file synoptic.20050420.1200.asc.FBSK_210 into the =
> pristine syn2nc on the Linux system, the log file grows without bound. =
> When I pipe it into my patched version, the log file size remains =
> stable, and the file never gets any Unicode error =
> messages.</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
> FACE=3D"Arial">Discussion:</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Thinking beyond =
> the low-level Perl issue, I'm not sure what syn2nc should do when it =
> encounters the garbage characters... Nor am I sure what it actually does =
> -- I'd dig into the script itself to find that out but I'm running short =
> on time. What do you think?</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Also, I'd be =
> curious to hear whether you see the garbage characters in your FBSK =
> synoptics for today. Its possible but unlikely that the garbage is not =
> due to the FBSK sensor itself but due to some communications issue that =
> is WSI-specific.</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">I'm attaching a =
> few things:</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* syn2nc.new -- =
> an updated version of syn2nc from the 3.0.9 version of the decoders =
> package.</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* syn2nc.patch -- =
> a diff of my version vs the pristine 3.0.9</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* =
> synoptic.20050420.1200.asc.FBSK_210 -- message #210 from today's =
> synoptic feed, containing garbage characters 0x8e and others in line 6 =
> of the file.</FONT></SPAN></P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Relevant Perl =
> references:</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* Unicode intro: =
> <A =
> HREF=3D"http://perldoc.perl.org/perluniintro.html";>http://perldoc.perl.or=
> g/perluniintro.html</A></FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">* encoding =
> pragma: <A =
> HREF=3D"http://perldoc.perl.org/encoding.html";>http://perldoc.perl.org/en=
> coding.html</A></FONT></SPAN>
> </P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Whew. I think =
> that's about everything! Feel free to contact me.</FONT></SPAN>
> </P>
>
> <P><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Kurt =
> Hanson</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Senior Software =
> Engineer &amp; Scientific Analyst</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">WSI =
> Corporation</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">400 Minuteman =
> Rd.</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">Andover, MA =
> 01810</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Arial">my phone: =
> 978.983.6549</FONT></SPAN>
>
> <BR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 =
> FACE=3D"Arial">www.wsi.com</FONT></SPAN>
> </P>
>
> <P><SPAN LANG=3D"en-us"><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
> &lt;&lt;syn2nc.new&gt;&gt; </FONT><FONT FACE=3D"Arial" SIZE=3D2 =
> COLOR=3D"#000000"> &lt;&lt;syn2nc.patch&gt;&gt; </FONT><FONT =
> FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
> &lt;&lt;synoptic.20050420.1200.asc.FBSK_210&gt;&gt; </FONT></SPAN>
> </P>
> <BR>
> <BR>
>
> </BODY>
> </HTML>
> ------_=_NextPart_002_01C55D46.5A42735C--
>
> ------_=_NextPart_001_01C55D46.5A42735C
> Content-Type: application/octet-stream;
>       name="syn2nc.new"
> Content-Transfer-Encoding: base64
> Content-Description: syn2nc.new
> Content-Disposition: attachment;
>       filename="syn2nc.new"
>
> IyEvdXNyL2xvY2FsL2Jpbi9wZXJsCiMKIyAgdXNhZ2U6IHN5bjJuYyBjZGxmaWxlIFtkYXRhZGly
> XSBbeXl5eW1tXSA8IG5jZmlsZQojCiMKdXNlIE5ldENERiA7CnVzZSBUaW1lOjpMb2NhbCA7Cgoj
> IEVuc3VyZSB0aGF0IGNoYXJhY3RlcnMgb24gU1RESU4gYXJlIE5PVCBpbnRlcnByZXRlZCBhcyBV
> bmljb2RlLgojIFRoZW9yZXRpY2FsbHksIHRoaXMgaXMgdW5uZWNlc3NhcnksIHNpbmNlIHN5bm9w
> dGljIG1lc3NhZ2VzIHNob3VsZCBjb250YWluCiMgbm8gY2hhcmF0ZXJzIG91dHNpZGUgb2YgQVND
> SUkgKGFrYSBJU08gODg1OS0xIGFrYSBMYXRpbi0xKSByYW5nZSAwLTEyNy4KIyBIb3dldmVyLCBp
> dCBpcyBwb3NzaWJsZSBmb3Igc2l0ZXMgZXhwZXJpZW5jaW5nIHRlY2huaWNhbCBwcm9ibGVtcyB0
> byB0cmFuc21pdAojIGdhcmJhZ2UgY2hhcmFjdGVycyBvdXRzaWRlIHRoaXMgcmFuZ2UuCm5vIGVu
> Y29kaW5nOwoKIyBwcm9jZXNzIGNvbW1hbmQgbGluZSBzd2l0Y2hlcwp3aGlsZSAoJF8gPSAkQVJH
> VlswXSwgL14tLykgewoJIHNoaWZ0OwogICAgICAgbGFzdCBpZiAvXi0tJC87CgkgICAgIC9eKC12
> KS8gJiYgJHZlcmJvc2UrKzsKfQojIHByb2Nlc3MgaW5wdXQgcGFyYW1ldGVycwppZiggJCNBUkdW
> ID09IDAgKSB7CgkkY2RsZmlsZSA9ICRBUkdWWyAwIF0gOwp9IGVsc2lmKCAkI0FSR1YgPT0gMSAp
> IHsKCSRjZGxmaWxlID0gJEFSR1ZbIDAgXSA7CglpZiggJEFSR1ZbIDEgXSA9fiAvXlxkLyApIHsK
> CQkkeXl5eW1tID0gJEFSR1ZbIDEgXSA7Cgl9IGVsc2UgewoJCSRkYXRhZGlyID0gJEFSR1ZbIDEg
> XSA7Cgl9Cn0gZWxzaWYoICQjQVJHViA9PSAyICkgewoJJGNkbGZpbGUgPSAkQVJHVlsgMCBdIDsK
> CSRkYXRhZGlyID0gJEFSR1ZbIDEgXSA7CgkkeXl5eW1tID0gJEFSR1ZbIDIgXSA7Cn0gZWxzZSB7
> CglkaWUgIlVzYWdlIHdpdGggaW5wdXQgb24gU1RESU46IHN5bjJuYyBbLXZdIGNkbGZpbGUgW2Rh
> dGFkaXJdIFt5eXl5bW1dXG4iOwp9CgojIGNoZWNrIGZvciBjZGwgYW5kIG5ldENERiBuY2dlbgpk
> aWUgIk1pc3NpbmcgY2RsZmlsZSBwYXJhbWV0ZXI6ICQhXG4iIHVubGVzcyAgLWUgJGNkbGZpbGUg
> OwppZiggLWUgInV0aWwvbmNnZW4iICkgewoJJG5jZ2VuID0gInV0aWwvbmNnZW4iIDsKfSBlbHNp
> ZiggLWUgIi91c3IvbG9jYWwvbGRtL3V0aWwvbmNnZW4iICkgewoJJG5jZ2VuID0gIi91c3IvbG9j
> YWwvbGRtL3V0aWwvbmNnZW4iIDsKfSBlbHNpZiggLWUgIi91cGMvbmV0Y2RmL2Jpbi9uY2dlbiIg
> KSB7CgkkbmNnZW4gPSAiL3VwYy9uZXRjZGYvYmluL25jZ2VuIiA7Cn0gZWxzaWYoIC1lICIuL25j
> Z2VuIiApIHsKCSRuY2dlbiA9ICIuL25jZ2VuIiA7Cn0gZWxzZSB7CglvcGVuKCBOQ0dFTiwgIndo
> aWNoIG5jZ2VuIHwiICkgOwoJJG5jZ2VuID0gPE5DR0VOPiA7CgljbG9zZSggTkNHRU4gKSA7CgoJ
> aWYoICRuY2dlbiA9fiAvbm8gbmNnZW4vICkgewoJCWRpZSAiQ2FuJ3QgZmluZCBOZXRDREYgdXRp
> bGl0eSAnbmNnZW4nIGluIFBBVEgsIHV0aWwvbmNnZW4KL3Vzci9sb2NhbC9sZG0vdXRpbC9uY2dl
> biwgL3VwYy9uZXRjZGYvYmluL25jZ2VuLCBvciAuL25jZ2VuIDogJCFcbiIgOwoJfSBlbHNlIHsK
> CQkkbmNnZW4gPSAibmNnZW4iIDsKCX0KfQojIHRoZSBkYXRhIGRpcmVjdG9yeSAKJGRhdGFkaXIg
> PSAiLiIgaWYoICEgJGRhdGFkaXIgKSA7CnN5c3RlbSggIm1rZGlyIC1wICRkYXRhZGlyIiApIGlm
> KCAhIC1lICRkYXRhZGlyICkgOwojIHJlZGlyZWN0IFNURE9VVCBhbmQgU1RERVJSCm9wZW4oIFNU
> RE9VVCwgIj4kZGF0YWRpci9zeW5Mb2cuJCQubG9nIiApIHx8CgkJZGllICJjb3VsZCBub3Qgb3Bl
> biAkZGF0YWRpci9zeW5Mb2cuJCQubG9nOiAkIVxuIiA7Cm9wZW4oIFNUREVSUiwgIj4mU1RET1VU
> IiApIHx8CgkJZGllICJjb3VsZCBub3QgZHVwIHN0ZG91dDogJCFcbiIgOwpzZWxlY3QoIFNUREVS
> UiApIDsgJHwgPSAxIDsKc2VsZWN0KCBTVERPVVQgKSA7ICR8ID0gMSA7CgojIHllYXIgYW5kIG1v
> bnRoCmlmKCAhICR5eXl5bW0gKSB7CgkkdGhleWVhciA9IChnbXRpbWUoKSlbIDUgXSA7CgkkdGhl
> eWVhciA9ICggJHRoZXllYXIgPCAxMDAgPyAkdGhleWVhciA6ICR0aGV5ZWFyIC0gMTAwICkgOwoJ
> JHRoZWRlY2FkZSA9IHNwcmludGYoICIlMDJkIiwgJHRoZXllYXIgKSA7CgkkdGhleWVhciA9ICIy
> MCIgLiBzcHJpbnRmKCAiJTAyZCIsICR0aGV5ZWFyICkgOwoJJHRoZW1vbnRoID0gKGdtdGltZSgp
> KVsgNCBdIDsKCSR0aGVtb250aCsrIDsKCSR0aGVtb250aCA9IHNwcmludGYoICIlMDJkIiwgJHRo
> ZW1vbnRoICkgOwoJJHl5eXltbSA9ICIkdGhleWVhciR0aGVtb250aCIgOwp9IGVsc2UgewoJZGll
> ICJ5eXl5bW0gbXVzdCBiZSA2IGluIGxlbmd0aDogJCFcbiIgaWYoIGxlbmd0aCggJHl5eXltbSAp
> ICE9IDYgKSA7CgkkdGhleWVhciA9IHN1YnN0ciggJHl5eXltbSwgMCwgNCApIDsKCSR0aGVtb250
> aCA9IHN1YnN0ciggJHl5eXltbSwgNCApIDsKCSR0aGVkZWNhZGUgPSBzdWJzdHIoICR5eXl5bW0s
> IDIsIDIgKSA7Cn0KIyBzZXQgZXJyb3IgaGFuZGxpbmcgdG8gdmVyYm9zZSBvbmx5CiRzdGF0dXMg
> PSBOZXRDREY6Om9wdHMoIFZFUkJPU0UgKSA7CgojIHNldCBpbnRlcnJ1cHQgaGFuZGxlcgokU0lH
> eyAnSU5UJyB9ICA9ICdhdGV4aXQnIDsKJFNJR3sgJ0tJTEwnIH0gID0gJ2F0ZXhpdCcgOwokU0lH
> eyAnVEVSTScgfSAgPSAnYXRleGl0JyA7CiRTSUd7ICdRVUlUJyB9ICA9ICdhdGV4aXQnIDsKCiVD
> REwgPSAoCiJyZXBfdHlwZSIsIDAsICJ3bW9JZCIsIDEsICJzdG5OYW1lIiwgMiwgInRpbWVfb2Jz
> IiwgMywgInRpbWVfbm9taW5hbCIsIDQsIAoiTGF0IiwgNSwgIkxvbiIsIDYsICJlbGV2IiwgNywg
> InN0blR5cGUiLCA4LCAibWVhbldpbmQiLCA5LCAiVklTIiwgMTAsIAoiRElSIiwgMTEsICJTUEQi
> LCAxMiwgIlQiLCAxMywgImh1bWlkaXR5IiwgMTQsICJURCIsIDE1LCAiUFJFUyIsIDE2LCAKIlNM
> UCIsIDE3LCAiY2hhcl9QdGVuZCIsIDE4LCAiUHRlbmQiLCAxOSwgIlBSRUNJUF9hbXQiLCAyMCwg
> IlBSRUNJUF9wZXJpb2QiLCAyMSwgIldYcHJlc2VudCIsIDIyLCAiV1hwYXN0IiwgMjMsICJjbG91
> ZENvdmVyIiwgMjQsICJjbG91ZExvdyIsIDI1LCAKImNsb3VkTWlkZGxlIiwgMjYsICJjbG91ZEhp
> Z2giLCAyNywgInNoaXBUcnVlRElSIiwgMjgsICJzaGlwQXZnU1BEIiwgMjksIAoiVHciLCAzMCwg
> IlB3YSIsIDMxLCAiSHdhIiwgMzIsICJId2FfdGVudGhzIiwgMzMsICJzd2VsbERJUjEiLCAzNCwg
> IlBzMSIsIDM1LCAKIkhzMSIsIDM2LCAic3dlbGxESVIyIiwgMzcsICJQczIiLCAzOCwgIkhzMiIs
> IDM5LCAiaWNlVHlwZSIsIDQwLCAiaWNlVGhpY2siLCA0MSwgImljZVJhdGUiLCA0MiwgIlRiIiwg
> NDMsICJJQ0UiLCA0NCwgImljZUNvbmNlbiIsIDQ1LCAiaWNlU3RhZ2UiLCA0NiwgCiJpY2VMYW5k
> IiwgNDcsICJpY2VFZGdlIiwgNDgsICJpY2VTaXR1YXRpb24iLCA0OSwgIlRtYXgiLCA1MCwgIlRt
> aW4iLCA1MSwgCiJncm91bmRTdGF0ZSIsIDUyLCAic25vd0RlcHRoIiwgNTMsICJQUkVDSVBfYW10
> MjQiLCA1NCwgImNsb3VkT2JzdXJlZCIsIDU1LCAKImNsb3VkR2VudXMiLCA1NiwgImNsb3VkSGVp
> Z2h0IiwgNTcsICJyZXBvcnQiLCA1OCApIDsgCgojIHNldCBkZWZhdWx0cwokcmVwX3R5cGVfbGVu
> ID0gNCA7CiRzdG5OYW1lX2xlbiA9IDYgOwokY2xvdWRfbGV2ZWxzID0gMyA7CiRyX2xlbiA9IDI1
> NiA7CgojIG9wZW4gY2RsIGFuZCBnZXQgZGltZW5zaW9ucyBmb3IgdmFyaWFibGVzCm9wZW4oIENE
> TCwgIiRjZGxmaWxlIiApIHx8IGRpZSAiY291bGQgbm90IG9wZW4gJGNkbGZpbGU6ICQhXG4iIDsK
> d2hpbGUoIDxDREw+ICkgewoJaWYoIHMjXlxzKnJlcF90eXBlX2xlblxzKj1ccyooXGR7MSw1fSkj
> IyApIHsKCQkkcmVwX3R5cGVfbGVuID0gJDEgOwoJfSBlbHNpZiggcyNeXHMqc3RuTmFtZV9sZW5c
> cyo9XHMqKFxkezEsNX0pIyMgKSB7CgkJJHN0bk5hbWVfbGVuID0gJDEgOwoJfSBlbHNpZiggcyNe
> XHMqY2xvdWRfbGV2ZWxzXHMqPVxzKihcZHsxLDV9KSMjICkgewoJCSRjbG91ZF9sZXZlbHMgPSAk
> MSA7Cgl9IGVsc2lmKCBzI15ccypyX2xlblxzKj1ccyooXGR7MSw1fSkjIyApIHsKCQkkcl9sZW4g
> PSAkMSA7Cgl9IGVsc2lmKCBzI15ccyp2YXJpYWJsZXMjIyApIHsKCQlsYXN0IDsKCX0KfQokRiA9
> IC05OTk5OSA7CiRBID0gXCRGIDsKJFNSID0gIlwwIiB4ICRyZXBfdHlwZV9sZW4gOwokQVNSID0g
> XCRTUiA7CiRTTiA9ICJcMCIgeCAkc3RuTmFtZV9sZW4gOwokQVNOID0gXCRTTiA7CkBDTCA9ICgg
> JEYsICRGLCAkRiApIDsKQENMID0gKCAtOTk5OTkgKSB4ICggJGNsb3VkX2xldmVscyApIDsKJEFD
> TCA9IFxAQ0wgOwokU1JwdCA9ICJcMCIgeCAkcl9sZW4gOwokQVNScHQgPSBcJFNScHQgOwoKIyBk
> ZWZhdWx0IG5ldENERiByZWNvcmQgc3RydWN0dXJlLCBjb250YWlucyBhbGwgdmFycyBmb3IgdGhl
> IEJVT1kgcmVwb3J0cwpAZGVmYXVsdHJlYyA9ICggJEFTUiwgJEEsICRBU04sICRBLCAkQSwgJEEs
> ICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAKICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRB
> LCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsIAogJEEsICRBLCAk
> QSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRB
> LCAkQSwgJEEsCiAkQSwgJEEsICRBLCAkQSwgJEEsICRBQ0wsICRBQ0wsICRBQ0wsICRBU1JwdCAp
> IDsKCiMgdHdvIGZvbGQgcHVycG9zZSBhcnJheSwgaWYgZW50cnkgPiAwLCB0aGVuIHZhciBpcyBy
> ZXF1ZXN0ZWQgYW5kIGl0J3MgdmFsdWUKIyBpcyB0aGUgcG9zaXRpb24gaW4gdGhlIHJlY29yZCwg
> ZXhjZXB0IGZpcnN0IGVudHJ5CkBXID0gKCAwICkgeCAoICQjZGVmYXVsdHJlYyArMSApIDsKJFdb
> IDAgXSA9IC0xIDsKCiMgY3JlYXRlIHJlY29yZCBzdHJ1Y3R1cmUgYWNjb3JkaW5nIHRvIHZhcmlh
> YmxlcwokaSA9IDAgOwp3aGlsZSggPENETD4gKSB7CglpZiggcyNeXHMqKGNoYXJ8aW50fGxvbmd8
> ZG91YmxlfGZsb2F0KSAoXHd7MSwyNX0pIyMgKSB7CgkJKCAkbnVtYmVyICkgPSAkQ0RMeyAkMiB9
> IDsKCQlwdXNoKCBAcmVjLCAkZGVmYXVsdHJlY1sgJG51bWJlciBdICkgOwoJCSRXWyAkbnVtYmVy
> IF0gPSAkaSsrIDsKCX0KfQpjbG9zZSBDREwgOwp1bmRlZiggQGRlZmF1bHRyZWMgKSA7CnVuZGVm
> KCAlQ0RMICkgOwoKIyBjbG91ZCBiYXNlIGhlaWdodApASEdIVCA9ICggMjUsIDc1LCAxNTAsIDI1
> MCwgNDUwLCA4MDAsIDEyNTAsIDE3NTAsIDIyNTAsIDI1MDAgKSA7CiMgUFJFQ0lQIHBlcmlvZApA
> dFIgPSAoIDAsIDYsIDEyICwxOCwgMjQsIDEsIDIsIDMsIDksIDE1ICkgOwojIHdhdmUgaGVpZ2h0
> CkBXSEdIVCA9ICggMCwgMC4wNSwgMC4zLCAwLjg3NSwgMS44NzUsIDMuMjUsIDUsIDcuNSwgMTEu
> NSwgMTQgKSA7CgojIHJlYWQgaW4gc3RhdGlvbiBkYXRhCmlmKCAtZSAiZXRjL3N5c3Ruc191cGMu
> dGJsIiApIHsKCSRzZmlsZSA9ICJldGMvc3lzdG5zX3VwYy50YmwiIDsKfSBlbHNpZiggLWUgIi4v
> c3lzdG5zX3VwYy50YmwiICkgewoJJHNmaWxlID0gIi4vc3lzdG5zX3VwYy50YmwiIDsKfSBlbHNl
> IHsKCWRpZSAiQ2FuJ3QgZmluZCBzeXN0bnNfdXBjLnRibCBzdGF0aW9uIGZpbGUuOiAkIVxuIiA7
> Cn0Kb3BlbiggU1RBVElPTiwgIiRzZmlsZSIgKSB8fCBkaWUgImNvdWxkIG5vdCBvcGVuICRzZmls
> ZTogJCFcbiIgOwoKd2hpbGUoIDxTVEFUSU9OPiApIHsKCXMjXihcd3szLDZ9KT9ccysoXGR7NCw1
> fSkuezQwfSMjIDsKCSRpZCA9ICQxIDsKCSR3bW9JZCA9ICQyIDsKCSR3bW9JZCA9ICIwIiAuICR3
> bW9JZCBpZiggbGVuZ3RoKCAkd21vSWQgKSA9PSA0ICkgOwoJKCAkTGF0LCAkTG9uLCAkZWxldiAp
> ID0gc3BsaXQgOwoJJExhdCA9IHNwcmludGYoICIlNy4yZiIsICRMYXQgLyAxMDAgKSA7CgkkTG9u
> ID0gc3ByaW50ZiggIiU3LjJmIiwgJExvbiAvIDEwMCkgOwoKCSMgc2V0IHRoZXNlIHZhcnMgKCAk
> d21vSWQsICRMYXQsICRMb24sICRlbGV2ICkgCgkkU1RBVElPTlN7ICIkd21vSWQiIH0gPSAiJExh
> dCAkTG9uICRlbGV2ICRpZCIgOwp9CmNsb3NlIFNUQVRJT04gOwoKIyByZWFkIGluIGxpc3Qgb2Yg
> YWxyZWFkeSBwcm9jZXNzZWQgcmVwb3J0cyBpZiBpdCBleGlzdHMKIyBvcGVuIHN5bi5sc3QsIGxp
> c3Qgb2YgcmVwb3J0cyBwcm9jZXNzZWQgaW4gdGhlIGxhc3QgPyBob3Vycy4KaWYoIC1lICIkZGF0
> YWRpci9zeW4ubHN0IiApIHsKCW9wZW4oIExTVCwgIiRkYXRhZGlyL3N5bi5sc3QiICkgfHwgCgkJ
> ZGllICJjb3VsZCBub3Qgb3BlbiAkZGF0YWRpci9zeW4ubHN0OiAkIVxuIiA7Cgl3aGlsZSggPExT
> VD4gKSB7CgkJKCAkd21vSWQsICR5eXl5bW1kZGhoLCAkcmVjb3JkICkgPSBzcGxpdCA7CgkJJHJw
> dF9oYXNoeyAiJHdtb0lkICR5eXl5bW1kZGhoIiB9ICA9ICRyZWNvcmQgOwoJfQoJY2xvc2UgTFNU
> IDsKfQojIE5vdyBiZWdpbiBwYXJzaW5nIGZpbGUgYW5kIGRlY29kaW5nIG9ic2VydmF0aW9ucyBi
> cmVha2luZyBvbiBjbnRybCBDCiQvID0gIlxjQyIgOwoKIyBtYWluIGxvb3AgICBzZXQgc2VsZWN0
> IHByb2Nlc3NpbmcgaGVyZSBmcm9tIFNURElOClNUQVJUOgp3aGlsZSggMSApIHsKCW9wZW4oIFNU
> RElOLCAnLScgKSA7Cgl2ZWMoJHJpbixmaWxlbm8oU1RESU4pLDEpID0gMTsKCSR0aW1lb3V0ID0g
> MTIwMCA7ICMgMjAgbWludXRlcwoJJG5mb3VuZCA9IHNlbGVjdCggJHJvdXQgPSAkcmluLCB1bmRl
> ZiwgdW5kZWYsICR0aW1lb3V0ICk7CgkjIHRpbWVkIG91dAoJaWYoICEgJG5mb3VuZCApIHsKCQlw
> cmludCAiU2h1dCBkb3duLCB0aW1lIG91dCAyMCBtaW51dGVzXG4iIDsKCQlhdGV4aXQoKSA7Cgl9
> CglhdGV4aXQoICJlb2YiICkgaWYoIGVvZiggU1RESU4gKSApIDsKCgkjIFByb2Nlc3MgZWFjaCBs
> aW5lIG9mIHN5biBidWxsZXRpbnMsIGhlYWRlciBmaXJzdAoJJF8gPSA8U1RESU4+IDsKCWFheHgo
> ICRfICkgaWYoIC9BQVhYLyApIDsKCWF0ZXhpdCggImVvZiIgKSBpZiggZW9mKCBTVERJTiApICkg
> Owp9ICMgZW5kIHdoaWxlKCAxICkKYXRleGl0KCAiZW9mIiApOwpleGl0KCAwICkgOyAjc2hvdWxk
> IG5ldmVyIGdldCBoZXJlCgojIEFBWFggcmVwb3J0cwpzdWIgYWF4eCB7CgooICRfICkgPSBAXyA7
> CgpzI1xjQyMjIDsKcyNcY00jI2cgOwpzI1xjQVxuIyMgOwpzI1xjXiMjZyA7CiMgRWF0IGhlYWRl
> ciBhbmQgZ2V0IGJ1bGxldGluIHRpbWUKcyNcZFxkXGQgXG4jIyA7CnMjXHd7NH1cZHsxLDJ9IFx3
> ezR9IChcZHsyfSkoXGR7Mn0pKFxkezJ9KS4qXG4jIyA7CiRiZGF5ID0gJDEgOwokYmhvdXIgPSAk
> MiA7CiRiaG91ciA9ICIyMyIgaWYoICRiaG91ciBlcSAiMjQiICkgOwokYm1pbiA9ICQzIDsKbmV4
> dCB1bmxlc3MgKCAkYmRheSAmJiBkZWZpbmVkKCAkYmhvdXIgKSAmJiBkZWZpbmVkKCAkYm1pbiAp
> ICkgOwpuZXh0IGlmKCAkYm1pbiA+IDU5IHx8ICRiaG91ciA+IDIzIHx8ICRiZGF5ID4gMzEgKSA7
> CiMgY2hlY2sgZm9yIHZhbGlkIGJ1bGxldGluIHRpbWVzIGFnYWluc3QgY3VycmVudCB0aW1lCiRj
> ZGF5ID0gKGdtdGltZSgpKVsgMyBdIDsKJGNob3VyID0gKGdtdGltZSgpKVsgMiBdIDsKIyBza2lw
> IGJ1bGxldGlucyBvdmVyIDI0IGhvdXJzIG9sZCBvciBpbiB0aGUgZnV0dXJlCmlmKCAkYmRheSA9
> PSAkY2RheSApIHsKCW5leHQgaWYoICRiaG91ciA+ICRjaG91ciApIDsKfSBlbHNlIHsgIyAgJGJk
> YXkgIT0gJGNkYXksIHNraXAgb3ZlciBkYXkgb2xkIHJlcG9ydHMKCW5leHQgaWYoICRiZGF5IDwg
> JGNkYXkgLTEgKSA7CiAJaWYoICRiZGF5ID4gJGNkYXkgKSB7CgkJbmV4dCBpZiggJGNkYXkgIT0g
> MSB8fCAkYmRheSA8IDI4KSA7Cgl9CiAJbmV4dCBpZiggJGJob3VyIDwgJGNob3VyICkgOwp9Cmlm
> KCBzIyhBQVhYKVxzKyhcZFxkKShcZFxkKShcZCk/XHMqXG4jIyApIHsKCSRyZXBfdHlwZSA9ICQx
> IDsKCSRyZGF5ID0gJDIgOwoJJHJob3VyID0gJDMgOwoJaWYoICQ0ICkgewoJCSRXaW5kaWNhdG9y
> ID0gJDQgOwoJfSBlbHNlIHsKCQkkV2luZGljYXRvciA9IDQgOwoJfQp9IGVsc2lmKCBzIyhBQVhY
> KVxzKlxuIyMgKSB7CgkkcmVwX3R5cGUgPSAkMSA7CgkkcmRheSA9ICRiZGF5IDsKCSRyaG91ciA9
> ICRiaG91ciA7CgkkV2luZGljYXRvciA9IDQgOyAjIGRlZmF1bHQgaXMga25vdHMKfSBlbHNlIHsK
> CW5leHQgOwp9CiMgY2hlY2sgZm9yIHZhbGlkIHRpbWVzCm5leHQgdW5sZXNzICgkcmRheSAmJiBk
> ZWZpbmVkKCAkcmhvdXIgKSkgOwpuZXh0IGlmKCAkcmhvdXIgPiAyMyB8fCAkcmRheSA+IDMxICkg
> OwojIHNraXAgcmVwb3J0cyBvdmVyIDI0IGhvdXJzIG9sZAokdG1weXl5eW1tID0gJHl5eXltbSA7
> CmlmKCAkcmRheSA9PSAkY2RheSApIHsKCW5leHQgaWYoICRyaG91ciA+ICRjaG91ciApIDsKfSBl
> bHNlIHsgIyAgJHJkYXkgIT0gJGNkYXksIHNraXAgb3ZlciBkYXkgb2xkIHJlcG9ydHMKCW5leHQg
> aWYoICRyZGF5IDwgKCAkY2RheSAtMSApICkgOwogCWlmKCAkcmRheSA+ICRjZGF5ICkgewoJCW5l
> eHQgaWYoICRjZGF5ICE9IDEgfHwgJHJkYXkgPCAyOCkgOwoJCSMgY2RheSA9IDEsIHJlc2V0IG1v
> bnRoIGFuZCB5ZWFyCgkJJHRtcG1vbnRoID0gc3ByaW50ZiggIiUwMmQiLCAkdGhlbW9udGggLTEg
> KSA7CgkJaWYoICR0bXBtb250aCA9PSAwICkgewoJCQkkdG1wbW9udGggPSAiMTIiIDsKCQkJJHRt
> cHllYXIgPSBzcHJpbnRmKCAiJTA0ZCIsICR0aGV5ZWFyIC0xICk7CgkJfSBlbHNlIHsKCQkJJHRt
> cHllYXIgPSAkdGhleWVhciA7CgkJfQoJCSR0bXB5eXl5bW0gPSAkdG1weWVhciAuICAkdG1wbW9u
> dGggOwoJfQoJbmV4dCBpZiggJHJob3VyIDwgJGNob3VyICkgOwp9CiR5eXl5bW1kZGhoID0gJHRt
> cHl5eXltbSAuIHNwcmludGYoICIlMDJkIiwgJHJkYXkgKSAuIHNwcmludGYoICIlMDJkIiwgJHJo
> b3VyICk7CiMgU2VwZXJhdGUgYnVsbGV0aW5zIGludG8gcmVwb3J0cyAKaWYoIC89XG4vICkgewoJ
> cyM9XHMrXG4jPVxuI2cgOwp9IGVsc2UgewoJcyNcbiMgI2cgOwp9CkByZXBvcnRzID0gc3BsaXQo
> IC89XG4vICkgOwoKZm9yICggQHJlcG9ydHMgKSB7ICMgUHJvY2VzcyBlYWNoIHJlcG9ydCBpbiB0
> aGUgYnVsbGV0aW4KCW5leHQgaWYoIC9eXG58TklMfE1JUy8gKSA7CglzI1xuIyAjZyA7CglzI1xz
> KyMgI2cgOwoJcyMtXHMqIyNnIDsKCSMgc2F2ZSBvcmlnaW5hbCByZXBvcnQgCgkkcmVwb3J0ID0g
> IkFBWFggIiAuICRfIDsKCSRfIC49ICAiICIgOwoKCSMgZGVjb2RlIFNlY3Rpb24gMCAKCXMjXihc
> ZHs1fSkgIyMgOwoJJHdtb0lkID0gJDEgOwoJbmV4dCB1bmxlc3MoIGRlZmluZWQoICR3bW9JZCAp
> ICkgOwoJIyBleHRyYWN0IExhdCwgTG9uLCBlbGV2LCBzdG5OYW1lCglpZiggZGVmaW5lZCggJFNU
> QVRJT05TeyAiJHdtb0lkIiB9ICkgKSB7CgkJKCAkTGF0LCAkTG9uLCAkZWxldiwgJHN0bk5hbWUg
> KSA9CgkJCXNwbGl0KCAiICIsICRTVEFUSU9OU3sgIiR3bW9JZCIgfSApIDsKCQlpZiggZGVmaW5l
> ZCggJHN0bk5hbWUgKSApIHsKCQkJJHN0bk5hbWUgPSBwYWRzdHIoICRzdG5OYW1lLCAkc3RuTmFt
> ZV9sZW4gKSA7IAoJCX0gZWxzZSB7CgkJCXVuZGVmKCAkc3RuTmFtZSApIDsKCQl9Cgl9CgkjIGRl
> Y29kZSBTZWN0aW9uIDEgCgluZXh0IHVubGVzcyggcyNeKFxkKShcZCkoXGR8LykoXGRcZHwuLikg
> IyMgKSA7CgkkUFJFQ0lQX2FtdCA9IDAgaWYoICQxID09IDMgKSA7ICMgcHJlY2lwaXRhdGlvbiBp
> bmRpY2F0b3IKCSRzdG5UeXBlID0gJDIgOwoJJGNsb3VkSGVpZ2h0ID0gJEhHSFRbICQzIF0gaWYo
> ICQzIG5lICIvIiApIDsKCSR0bXAgPSAkNCA7CglpZiggJHRtcCA9fiBtI1xkXGQjICkgewoJCWlm
> KCAkdG1wIDwgNTEgKSB7CgkJCSRWSVMgPSAkdG1wICogMC4xIDsKCQl9IGVsc2lmKCAkdG1wIDwg
> ODEgKSB7CgkJCSRWSVMgPSAkdG1wIC01MCA7CgkJfSBlbHNpZiggJHRtcCA8IDkwICkgewoJCQkk
> VklTID0gKCggJHRtcCAtODAgKSAqIDUgKSArIDMwIDsKCQl9IGVsc2lmKCAkdG1wID09IDkwICkg
> ewoJCQkkVklTID0gMC4wMjUgOwoJCX0gZWxzaWYoICR0bXAgPT0gOTEgKSB7CgkJCSRWSVMgPSAw
> LjA1IDsKCQl9IGVsc2lmKCAkdG1wID09IDkyICkgewoJCQkkVklTID0gMC4zIDsKCQl9IGVsc2lm
> KCAkdG1wID09IDkzICkgewoJCQkkVklTID0gMC41IDsKCQl9IGVsc2lmKCAkdG1wID09IDk0ICkg
> ewoJCQkkVklTID0gMSA7CgkJfSBlbHNpZiggJHRtcCA9PSA5NSApIHsKCQkJJFZJUyA9IDIgOwoJ
> CX0gZWxzaWYoICR0bXAgPT0gOTYgKSB7CgkJCSRWSVMgPSA0IDsKCQl9IGVsc2lmKCAkdG1wID09
> IDk3ICkgewoJCQkkVklTID0gMTAgOwoJCX0gZWxzaWYoICR0bXAgPT0gOTggKSB7CgkJCSRWSVMg
> PSAyMCA7CgkJfSBlbHNpZiggJHRtcCA9PSA5OSApIHsKCQkJJFZJUyA9IDUwIDsKCQl9Cgl9Cglu
> ZXh0IHVubGVzcyggcyNeKFxkfC8pKFxkXGR8Ly8pKFxkXGR8Ly8pICMjICkgOwoJJGNsb3VkQ292
> ZXIgPSAkMSBpZiggJDEgIG5lICIvIiApIDsKCWlmKCAkMiBuZSAiLy8iICkgewoJCSRESVIgPSAk
> MiAqIDEwIDsKCQkkU1BEID0gJDMgOwoJCWlmKCAkU1BEID09IDk5ICkgewoJCQlzIzAwKFxkezN9
> KSAjIyA7CgkJCSRTUEQgPSAkMSA7CgkJfQoJCSRTUEQgKj0gMC41MTQ0IGlmKCAkV2luZGljYXRv
> ciA+IDIgKSA7Cgl9IAoJcyMwMC8vLyAjIyA7ICMgZWF0IFNQRCBwbGFjZSBob2xkZXIgaWYgbmVj
> ZXNzYXJ5Cgl3aGlsZSggMSApIHsKCQlpZiggcyNeMSgoXGQpKFxkezN9KXwvLy8vKSAjIyApIHsK
> CQkJaWYoICQxIG5lICIvLy8vIiApIHsKCQkJCSRUID0gJDMgKiAwLjEwIDsKCQkJCSRUICo9IC0x
> LjAgaWYoICQyID09IDEgKSA7CgkJCX0KCQl9IAoJCWlmKCBzI14yOShcZHszfXwvLy8pICMjICkg
> ewoJCQkkaHVtaWRpdHkgPSAkMSBpZiggJDEgbmUgIi8vLyIgKSA7CgkJfSAKCQlpZiggcyNeMigo
> MHwxfDkpKFxkezIsM30pKC8pP3wvLy8vKSAjIyApIHsKCQkJaWYoICQxIG5lICIvLy8vIiApIHsK
> CQkJCWlmKCAkNCBuZSAiLyIgKSB7CgkJCQkJJFREID0gJDMgKiAwLjEwIDsKCQkJCX0gZWxzZSB7
> CgkJCQkJJFREID0gJDMgOwoJCQkJfQoJCQkJJFREICo9IC0xLjAgaWYoICQyID09IDEgKSA7CgkJ
> CX0KCQl9CgkJbGFzdCBpZiggbSNeMzMzfF40NDR8XjU1NSMgKSA7IAoJCWlmKCBzI14zKFxkezR9
> fC8vLy8pICMjICkgewoJCQlpZiggJDEgbmUgIi8vLy8iICkgewoJCQkJJFBSRVMgPSAkMSAqIDAu
> MTAgOwoJCQkJJFBSRVMgKz0gMTAwMCBpZiggJFBSRVMgPCAxMDAgKSA7CgkJCX0KCQl9CgkJbGFz
> dCBpZiggbSNeNDQ0fF41NTUjICkgOyAKCQlpZiggcyNeNChcZHs0fXwvLy8vKSAjIyApIHsKCQkJ
> aWYoICQxIG5lICIvLy8vIiApIHsKCQkJCSRTTFAgPSAkMSAqIDAuMTAgOwoJCQkJJFNMUCArPSAx
> MDAwIGlmKCAkU0xQIDwgMTAwICkgOwoJCQl9CgkJfQoJCWxhc3QgaWYoIG0jXjU1NSMgKSA7IAoJ
> CWlmKCBzI141KFxkfC8pKFxkezN9fC8vLykgIyMgKSB7CgkJCSRjaGFyX1B0ZW5kID0gJDEgaWYo
> ICQxIG5lICIvIiApIDsKCQkJJFB0ZW5kID0gJDIgKiAwLjEwIGlmKCAkMiBuZSAiLy8vIiApIDsK
> CQl9CgkJaWYoIHMjXjYoKFxkezN9KShcZCl8Ly8vLykgIyMgKSB7CgkJCWlmKCAkMSBuZSAiLy8v
> LyIgKSB7CgkJCQlpZiggJDIgPCA5OTAgKSB7CgkJCQkJJFBSRUNJUF9hbXQgPSAkMiA7CgkJCQl9
> IGVsc2UgewoJCQkJCSRQUkVDSVBfYW10ID0gKCAkMiAtOTkwICkgKiAwLjEgOwoJCQkJfQoJCQkJ
> JFBSRUNJUF9wZXJpb2QgPSAkdFJbICQzIF0gOwoJCQl9CgkJfQoJCWlmKCBzI143KFxkXGR8Ly8p
> KFxkXGR8Ly8pICMjICkgewoJCQkkV1hwcmVzZW50ID0gJDEgaWYoICQxIG5lICIvLyIgKSA7CgkJ
> CSRXWHBhc3QgPSAkMiBpZiggJDIgbmUgIi8vIiApIDsKCQl9CgkJaWYoIHMjXjgoXGR8LykoXGR8
> LykoXGR8LykoXGR8LykgIyMgKSB7CgkJCSRjbG91ZENvdmVyID0gJDEgaWYoICQxIG5lICIvIiAp
> IDsKCQkJJGNsb3VkTG93ID0gJDIgaWYoICQyIG5lICIvIiApIDsKCQkJJGNsb3VkTWlkZGxlID0g
> JDMgaWYoICQzIG5lICIvIiApIDsKCQkJJGNsb3VkSGlnaCA9ICQ0IGlmKCAkNCBuZSAiLyIgKSA7
> CgkJfQoJCWlmKCBzI145KChcZFxkKShcZFxkKXwvLy8vKSAjIyApIHsKCQkJaWYoICQxIG5lICIv
> Ly8vIiApIHsKCQkJCSRyaG91ciA9ICQyIDsKCQkJCSRybWluID0gJDMgOwoJCQkJJHRpbWVfb2Jz
> ID0gdGhlVGltZSggIm9icyIgKSA7CgkJCQkkdGltZV9ub21pbmFsID0gdGhlVGltZSggIm5vbWlu
> YWwiICkgOwoJCQl9CgkJfQoJCWxhc3QgOwoJfSAjIGVuZCBTZWN0aW9uIDEKCgkjIGRlY29kZSBT
> ZWN0aW9uIDIgCgl3aGlsZSggISBtI14zMzN8XjQ0NHxeNTU1IyApIHsKCQlpZiggcyNeMjIyKC4p
> KC4pICMjICkgewoJCQlpZiggJDEgbmUgIi8iICYmICQxICE9IDkgKSB7CgkJCQkkc2hpcFRydWVE
> SVIgPSAkMSAqIDQ1IDsKCQkJCWlmKCAkMiAhPSAwICkgewoJCQkJCSRzaGlwQXZnU1BEID0gKCgg
> JDIgLTEgKSAqIDUgKSArMyA7CgkJCQl9IGVsc2UgewoJCQkJCSRzaGlwQXZnU1BEID0gMCA7CgkJ
> CQl9CgkJCX0KCQl9IGVsc2UgeyAjIHNlY3Rpb24gMiBoZWFkZXIgbWlzc2luZwoJCQlsYXN0IDsK
> CQl9CgkJaWYoIHMjXjAoXGR8LykoXGR7M318Ly8vKSAjIyApIHsKCQkJJFR3ID0gJDIgKiAwLjEw
> IGlmKCAkMiBuZSAiLy8vIiApIDsgIyBXYXRlciB0ZW1wCgkJCSRUdyAqPSAtMS4wIGlmKCAkMSBu
> ZSAiLyIgJiYgKCAkMSAlIDIgKSA9PSAxICkgOwoJCX0KCQlpZiggcyNeMShcZFxkfC8vKShcZFxk
> fC8vKSAjIyApIHsKCQkJIyBQZXJpb2Qgb2Ygd2F2ZXMgaW4gc2VjcyBieSBpbnN0cnVtZW50CgkJ
> CSRQd2EgPSAkMSBpZiggJDEgbmUgIi8vIiApIDsgCgkJCSMgSGVpZ2h0IG9mIHdhdmVzIGluIC41
> IG1ldGVycyB1bml0cyBieSBpbnN0cnVtZW50CgkJCSRId2EgPSAkMiAvIDIuMCBpZiggJDIgbmUg
> Ii8vIiApIDsgCgkJfQoJCWlmKCBzI14yKFxkXGR8Ly8pKFxkXGR8Ly8pICMjICkgewoJCQkjIFBl
> cmlvZCBvZiB3YXZlcyBpbiBzZWNzCgkJCSRQd2EgPSAkMSBpZiggJDIgbmUgIi8vIiApIDsgCgkJ
> CSMgSGVpZ2h0IG9mIHdhdmVzIGluIC41IG1ldGVycyB1bml0cwoJCQkkSHdhID0gJDIgLyAyLjAg
> aWYoICQyIG5lICIvLyIgKSA7IAoJCX0KCQlsYXN0IGlmKCBtI14zMzN8XjQ0NHxeNTU1IyApIDsK
> CQlpZiggcyNeMyhcZFxkKShcZFxkfC8vKSAjIyApIHsKCQkJJHN3ZWxsRElSMSA9ICQxICogMTAg
> aWYoICQxICE9IDk5ICkgOwoJCQkkc3dlbGxESVIyID0gJDIgKiAxMCBpZiggJDIgbmUgIi8vIiAm
> JiAkMiAhPSA5OSApIDsKCQkJaWYoIHMjXjQoXGRcZHwvLykoXGRcZHwvLykgIyMgKSB7CgkJCQkj
> IFBlcmlvZCBvZiBzd2VsbCBpbiBzZWNzCgkJCQkkUHMxID0gJDEgaWYoICQxICBuZSAiLy8iICkg
> OyAKCQkJCSMgSGVpZ2h0IG9mIHN3ZWxsIGluIC41IG1ldGVycyB1bml0cwoJCQkJJEhzMSA9ICQy
> IC8gMi4wIGlmKCAkMiAgbmUgIi8vIiApIDsgCgkJCX0KCQkJaWYoIGRlZmluZWQoICRzd2VsbERJ
> UjIgKSAmJiBzI141KFxkXGQpKFxkXGQpICMjICkgewoJCQkJIyBQZXJpb2Qgb2Ygc3dlbGwgaW4g
> c2VjcwoJCQkJJFBzMiA9ICQxIDsgCgkJCQkjIEhlaWdodCBvZiBzd2VsbCBpbiAuNSBtZXRlcnMg
> dW5pdHMKCQkJCSRIczIgPSAkMiAvIDIuMCA7IAoJCQl9CgkJfQoJCXMjXjUvLy8vICMjIDsKCQlp
> ZiggcyNeNihcZHwvKShcZFxkfC8vKShcZHwvKSAjIyApIHsKCQkJIyBUeXBlLCBUaGlja25lc3Ms
> IGFuZCBSYXRlIG9mIElDRQoJCQkkaWNlVHlwZSA9ICQxIGlmKCAkMSBuZSAiLyIgKSA7IAoJCQkk
> aWNlVGhpY2sgPSAkMiBpZiggJDIgbmUgIi8vIiApIDsgCgkJCSRpY2VSYXRlID0gJDMgaWYoICQz
> IG5lICIvIiApIDsgCgkJfQoJCWlmKCBzI143MChcZHszfXwvLy8pICMjICkgewoJCQkkSHdhX3Rl
> bnRocyA9ICQxICogMC4xMCBpZiggJDEgbmUgIi8vLyIgKSA7CgkJfQoJCWlmKCBzI144KFxkfC8p
> KFxkezN9fC8vLykgIyMgKSB7CgkJCSRUYiA9ICQyICogMC4xMCBpZiggJDIgbmUgIi8vLyIgKSA7
> CgkJCSRUYiAqPSAtMSBpZiggJDEgbmUgIi8iICYmICQxICE9IDAgJiYgJDEgIT0gNSApIDsKCQl9
> CgkJJElDRSA9IDEgaWYoIHMjSUNFICMjICkgOwoJCWxhc3QgaWYoIG0jXjMzM3xeNDQ0fF41NTUj
> ICkgOwoJCWlmKCBzI14oXGR8LykoXGR8LykoXGR8LykoXGR8LykoXGR8LykgIyMgKSB7CgkJCSRp
> Y2VDb25jZW4gPSAkMSBpZiggJDEgbmUgIi8iICkgOwoJCQkkaWNlU3RhZ2UgPSAkMiBpZiggJDIg
> bmUgIi8iICkgOwoJCQkkaWNlTGFuZCA9ICQzIGlmKCAkMyBuZSAiLyIgKSA7CgkJCSRpY2VFZGdl
> ID0gJDQgaWYoICQ0IG5lICIvIiApIDsKCQkJJGljZVNpdHVhdGlvbiA9ICQ1IGlmKCAkNSBuZSAi
> LyIgKSA7CgkJfQoJCWxhc3Q7Cgl9ICMgZW5kIFNlY3Rpb24gMgoKCSMgZGVjb2RlIFNlY3Rpb24g
> MyAKCXdoaWxlKCAhIG0jXjQ0NHxeNTU1IyApIHsKCQlsYXN0IHVubGVzcyggcyNeMzMzICMjICkg
> OwoJCXMjXjAuLi4uICMjIDsKCQlpZiggcyNeMSgoMHwxfDkpKFxkezN9KXwvLy8vKSAjIyApIHsK
> CQkJaWYoICQxIG5lICIvLy8vIiApIHsKCQkJCSRUbWF4ID0gJDMgKiAwLjEwIDsKCQkJCSRUbWF4
> ICo9IC0xLjAgaWYoICQyID09IDEgKSA7CgkJCX0KCQl9CgkJaWYoIHMjXjIoKDB8MXw5KShcZHsz
> fSl8Ly8vLykgIyMgKSB7CgkJCWlmKCAkMSBuZSAiLy8vLyIgKSB7CgkJCQkkVG1pbiA9ICQzICog
> MC4xMCA7CgkJCQkkVG1pbiAqPSAtMS4wIGlmKCAkMiA9PSAxICkgOwoJCQl9CgkJfQoJCXMjXjMo
> XGQpKFxkezN9fC8vLykgIyMgOwoJCWxhc3QgaWYoIG0jXjQ0NHxeNTU1IyApIDsKCQlpZiggcyNe
> NChcZCkoXGR7M318Ly8vKSAjIyApIHsKCQkJJGdyb3VuZFN0YXRlID0gJDEgOwoJCQkkc25vd0Rl
> cHRoID0gJDIgOwoJCX0KCQlsYXN0IGlmKCBtI141NTUjICkgOwoJCSRjb3VudCA9IDAgOwoJCXdo
> aWxlKCAhIG0jXjZ8Xjd8Xjh8XjkjICkgewoJCQlzI14uezV9ICMjIDsKCQkJbGFzdCBpZiggJGNv
> dW50KysgPiAxMCB8fCAhICRfICkgOwoJCX0KCQlpZiggcyNeNigoXGR7M30pKFxkKXwvLy8vKSAj
> IyApIHsKCQkJaWYoICQxIG5lICIvLy8vIiApIHsKCQkJCWlmKCAkMiA8IDk5MCApIHsKCQkJCQkk
> UFJFQ0lQX2FtdCA9ICQyIDsKCQkJCX0gZWxzZSB7CgkJCQkJJFBSRUNJUF9hbXQgPSAoICQyIC05
> OTAgKSAqIDAuMSA7CgkJCQl9CgkJCQkkUFJFQ0lQX3BlcmlvZCA9ICR0UlsgJDMgXSA7CgkJCX0K
> CQl9CgkJaWYoIHMjXjcoXGR7NH18Ly8vLykgIyMgKSB7CgkJCSRQUkVDSVBfYW10MjQgPSAkMSAq
> IDAuMSAgaWYoICQxIG5lICIvLy8vIiAmJgoJCQkJJDEgIT0gOTk5OSApIDsKCQl9CgkJJGNvdW50
> ID0gMCA7CgkJd2hpbGUoICEgbSM4MDAwMCMgJiYgcyNeOChcZCkoXGQpKFxkXGQpICMjICkgewoJ
> CQlpZiggJGNvdW50ID09IDAgKSB7CgkJCQlAY2xvdWRPYnN1cmVkID0gKCAkRiApIHggKCAkY2xv
> dWRfbGV2ZWxzICkgOwoJCQkJQGNsb3VkR2VudXMgPSAoICRGICkgeCAoICRjbG91ZF9sZXZlbHMg
> KSA7CgkJCQlAY2xvdWRIZWlnaHQgPSAoICRGICkgeCAoICRjbG91ZF9sZXZlbHMgKSA7CgkJCX0K
> CQkJJGNsb3VkT2JzdXJlZFsgJGNvdW50IF0gPSAkMSA7IAoJCQkkY2xvdWRHZW51c1sgJGNvdW50
> IF0gPSAkMiA7IAoJCQkkY2xvdWRIZWlnaHRbICRjb3VudCBdID0gZ2V0SGVpZ2h0KCAkMyApIDsK
> CQkJbGFzdCBpZiggJGNvdW50KysgPT0gMiB8fCAhICRfICkgOwoJCX0KCQkkbWVhbldpbmQgPSAk
> MSAgaWYoIHMjXjkxMihcZFxkKSAjIyApIDsKCQkkSHdhX3RlbnRocyA9ICRXSEdIVFsgJDEgXSAg
> aWYoIHMjXjkyNChcZCkoXGQpICMjICkgOwoJCWxhc3QgOwoJfSAjIGVuZCBTZWN0aW9uIDMKCgkj
> IFNlY3Rpb24gNCBub3QgZGVjb2RlZAoJI3doaWxlKCAhIG0jXjU1NSMgKSB7CgkjCXMjXjQ0NCAj
> IyA7CgkjCXMjKC4uLi4uKSAjIyA7CgkjCXByaW50ICJHcm91cCA0NDQgJDEgbm90IGRlY29kZWRc
> biIgOwoJIwlsYXN0IDsKCSN9ICMgZW5kIFNlY3Rpb24gNAoKCSMgU2VjdGlvbiA1IG5vdCBkZWNv
> ZGVkCgoJIyBvdXRwdXQgcmVjb3JkCglkb091dHB1dCgpIDsKCXVuZGVmKCAkcm1pbiApIDsKfSAj
> IGVuZCBmb3JlYWNoIHJlcG9ydAp9ICMgZW5kIGFheHggcmVwb3J0CgojIG91dHB1dCBhIHJlcG9y
> dApzdWIgZG9PdXRwdXQgewoKcHJpbnR2YXJzKCkgaWYoICR2ZXJib3NlICkgOwoKIyB3ZSBoYXZl
> IGEgbGVnYWwgcmVwb3J0LCBvcGVuIG9yIHN3aXRjaCB0byBhIE5ldGNkZiBmaWxlCiRzdGF0dXMg
> PSBkb05ldCggKSA7CgppZiggJHN0YXR1cyApIHsgIyBPSyB0byB3cml0ZSBkYXRhCgkjIHNldCB2
> YXJpYWJsZXMgaW50byBkYXRhcmVmCglzZXR2YXJzKCkgOwoJIyByZXBvcnQgYWxyZWFkeSBlbnRl
> cmVkLCByZXdyaXRlIHRoZSByZWNvcmQgd2l0aCBuZXcgZGF0YQoJaWYoIGRlZmluZWQoICRycHRf
> aGFzaHsgIiR3bW9JZCAkeXl5eW1tZGRoaCIgfSApICkgewoJCSggJHJlY29yZCwgJG50aW1lICkg
> PQoJCQlzcGxpdCggIiAiLCAkcnB0X2hhc2h7ICIkd21vSWQgJHl5eXltbWRkaGgiIH0gKSA7Cgl9
> IGVsc2UgeyAjIG5ldyByZXBvcnQsIG5leHQgcmVjb3JkIG51bWJlcgoJCSRyZWNvcmQgPSAkcmVj
> bnVtIDsKCQkkcnB0X2hhc2h7ICIkd21vSWQgJHl5eXltbWRkaGgiIH0gPSAkcmVjb3JkIDsKCQkk
> cmVjbnVtKysgOwoJfQoJIyBlbnRlciByZXBvcnQgZGF0YSBpbnRvIE5ldENERiBmaWxlCgkkc3Rh
> dHVzID0gTmV0Q0RGOjpyZWNwdXQoICRuY2lkLCAkcmVjb3JkLCBbIEBkYXRhcmVmIF0gKTsKCWlm
> KCAkc3RhdHVzICkgewoJCXByaW50ICJOZXRDREY6OnJlY3B1dCBzdGF0dXMgPSAkc3RhdHVzXG4i
> IDsKCQljaG9wICRyZXBvcnQgd2hpbGUoIGluZGV4KCAkcmVwb3J0LCAiXDAiICkgIT0gLTEgKSA7
> CgkJcHJpbnQgIiRuY2ZpbGVcbiRyZXBvcnRcbiIgOwoJfQp9CiMgdW5kZWZpbmUgdmFycwp1bmRl
> ZmluZXZhcnMoKSA7Cn0gICMgZW5kIGRvT3V0cHV0CgojIHVuZGVmaW5lIGFsbCByZXBvcnQgdmFy
> cwpzdWIgdW5kZWZpbmV2YXJzCnsKIyByZXBvcnQgdmFycwp1bmRlZiggJHJlcG9ydCApIDsKdW5k
> ZWYoICR3bW9JZCApIDsKdW5kZWYoICRzdG5OYW1lICkgOwp1bmRlZiggJHRpbWVfb2JzICkgOwp1
> bmRlZiggJExhdCApIDsKdW5kZWYoICRMb24gKSA7CnVuZGVmKCAkZWxldiApIDsKdW5kZWYoICRz
> dG5UeXBlICkgOwp1bmRlZiggJG1lYW5XaW5kICkgOwp1bmRlZiggJFZJUyApIDsKdW5kZWYoICRE
> SVIgKSA7CnVuZGVmKCAkU1BEICkgOwp1bmRlZiggJFQgKSA7CnVuZGVmKCAkaHVtaWRpdHkgKSA7
> CnVuZGVmKCAkVEQgKSA7CnVuZGVmKCAkUFJFUyApIDsKdW5kZWYoICRTTFAgKSA7CnVuZGVmKCAk
> Y2hhcl9QdGVuZCApIDsKdW5kZWYoICRQdGVuZCApIDsKdW5kZWYoICRQUkVDSVBfYW10ICkgOwp1
> bmRlZiggJFBSRUNJUF9wZXJpb2QgKSA7CnVuZGVmKCAkV1hwcmVzZW50ICkgOwp1bmRlZiggJFdY
> cGFzdCApIDsKdW5kZWYoICRjbG91ZENvdmVyICkgOwp1bmRlZiggJGNsb3VkTG93ICkgOwp1bmRl
> ZiggJGNsb3VkTWlkZGxlICkgOwp1bmRlZiggJGNsb3VkSGlnaCApIDsKdW5kZWYoICRzaGlwVHJ1
> ZURJUiApIDsKdW5kZWYoICRzaGlwQXZnU1BEICkgOwp1bmRlZiggJFR3ICkgOwp1bmRlZiggJFB3
> YSApIDsKdW5kZWYoICRId2EgKSA7CnVuZGVmKCAkSHdhX3RlbnRocyApIDsKdW5kZWYoICRzd2Vs
> bERJUjEgKSA7CnVuZGVmKCAkUHMxICkgOwp1bmRlZiggJEhzMSApIDsKdW5kZWYoICRzd2VsbERJ
> UjIgKSA7CnVuZGVmKCAkUHMyICkgOwp1bmRlZiggJEhzMiApIDsKdW5kZWYoICRpY2VUeXBlICkg
> Owp1bmRlZiggJGljZVRoaWNrICkgOwp1bmRlZiggJGljZVJhdGUgKSA7CnVuZGVmKCAkVGIgKSA7
> CnVuZGVmKCAkSUNFICkgOwp1bmRlZiggJGljZUNvbmNlbiApIDsKdW5kZWYoICRpY2VTdGFnZSAp
> IDsKdW5kZWYoICRpY2VMYW5kICkgOwp1bmRlZiggJGljZUVkZ2UgKSA7CnVuZGVmKCAkaWNlU2l0
> dWF0aW9uICkgOwp1bmRlZiggJFRtYXggKSA7CnVuZGVmKCAkVG1pbiApIDsKdW5kZWYoICRncm91
> bmRTdGF0ZSApIDsKdW5kZWYoICRzbm93RGVwdGggKSA7CnVuZGVmKCAkUFJFQ0lQX2FtdDI0ICkg
> Owp1bmRlZiggQGNsb3VkT2JzdXJlZCApIDsKdW5kZWYoIEBjbG91ZEdlbnVzICkgOwp1bmRlZigg
> QGNsb3VkSGVpZ2h0ICkgOwp9ICMgZW5kIG9mIHVuZGVmaW5ldkFSUwoKIyBzZXR2YXJzIGludG8g
> cmVjb3JkCnN1YiBzZXR2YXJzIHsKCiRyZXBvcnQgPSBwYWRzdHIoICRyZXBvcnQsICRyX2xlbiAp
> IDsKCnVuZGVmKCBAZGF0YXJlZiApIDsKCkBkYXRhcmVmID0gQHJlYyA7CgojIHJlcG9ydCB2YXJz
> CiRkYXRhcmVmWyAkV1sgMCBdIF0gPSBcJHJlcF90eXBlIGlmKCAkV1sgMCBdICE9IC0xICkgOwok
> ZGF0YXJlZlsgJFdbIDEgXSBdID0gXCR3bW9JZCBpZiggJFdbIDEgXSAmJiBkZWZpbmVkKCAkd21v
> SWQgKSApIDsKJGRhdGFyZWZbICRXWyAyIF0gXSA9IFwkc3RuTmFtZSBpZiggJFdbIDIgXSAmJiBk
> ZWZpbmVkKCAkc3RuTmFtZSApICkgOwokZGF0YXJlZlsgJFdbIDMgXSBdID0gXCR0aW1lX29icyBp
> ZiggJFdbIDMgXSAmJiBkZWZpbmVkKCAkdGltZV9vYnMgKSApIDsKJGRhdGFyZWZbICRXWyA0IF0g
> XSA9IFwkdGltZV9ub21pbmFsIGlmKCAkV1sgNCBdICYmIGRlZmluZWQoICR0aW1lX25vbWluYWwg
> KSApIDsKJGRhdGFyZWZbICRXWyA1IF0gXSA9IFwkTGF0IGlmKCAkV1sgNSBdICYmIGRlZmluZWQo
> ICRMYXQgKSApIDsKJGRhdGFyZWZbICRXWyA2IF0gXSA9IFwkTG9uIGlmKCAkV1sgNiBdICYmIGRl
> ZmluZWQoICRMb24gKSApIDsKJGRhdGFyZWZbICRXWyA3IF0gXSA9IFwkZWxldiBpZiggJFdbIDcg
> XSAmJiBkZWZpbmVkKCAkZWxldiApICkgOwokZGF0YXJlZlsgJFdbIDggXSBdID0gXCRzdG5UeXBl
> IGlmKCAkV1sgOCBdICYmIGRlZmluZWQoICRzdG5UeXBlICkgKSA7CiRkYXRhcmVmWyAkV1sgOSBd
> IF0gPSBcJG1lYW5XaW5kIGlmKCAkV1sgOSBdICYmIGRlZmluZWQoICRtZWFuV2luZCApICkgOwok
> ZGF0YXJlZlsgJFdbIDEwIF0gXSA9IFwkVklTIGlmKCAkV1sgMTAgXSAmJiBkZWZpbmVkKCAkVklT
> ICkpOwokZGF0YXJlZlsgJFdbIDExIF0gXSA9IFwkRElSIGlmKCAkV1sgMTEgXSAmJiBkZWZpbmVk
> KCAkRElSICkgKSA7CiRkYXRhcmVmWyAkV1sgMTIgXSBdID0gXCRTUEQgaWYoICRXWyAxMiBdICYm
> IGRlZmluZWQoICRTUEQgKSApIDsKJGRhdGFyZWZbICRXWyAxMyBdIF0gPSBcJFQgaWYoICRXWyAx
> MyBdICYmIGRlZmluZWQoICRUICkgKSA7CiRkYXRhcmVmWyAkV1sgMTQgXSBdID0gXCRodW1pZGl0
> eSBpZiggJFdbIDE0IF0gJiYgZGVmaW5lZCggJGh1bWlkaXR5ICkgKSA7CiRkYXRhcmVmWyAkV1sg
> MTUgXSBdID0gXCRURCBpZiggJFdbIDE1IF0gJiYgZGVmaW5lZCggJFREICkgKSA7CiRkYXRhcmVm
> WyAkV1sgMTYgXSBdID0gXCRQUkVTIGlmKCAkV1sgMTYgXSAmJiBkZWZpbmVkKCAkUFJFUyApICkg
> OwokZGF0YXJlZlsgJFdbIDE3IF0gXSA9IFwkU0xQIGlmKCAkV1sgMTcgXSAmJiBkZWZpbmVkKCAk
> U0xQICkgKSA7CiRkYXRhcmVmWyAkV1sgMTggXSBdID0gXCRjaGFyX1B0ZW5kIGlmKCAkV1sgMTgg
> XSAmJiBkZWZpbmVkKCAkY2hhcl9QdGVuZCApICkgOwokZGF0YXJlZlsgJFdbIDE5IF0gXSA9IFwk
> UHRlbmQgaWYoICRXWyAxOSBdICYmIGRlZmluZWQoICRQdGVuZCApICkgOwokZGF0YXJlZlsgJFdb
> IDIwIF0gXSA9IFwkUFJFQ0lQX2FtdCBpZiggJFdbIDIwIF0gJiYgZGVmaW5lZCggJFBSRUNJUF9h
> bXQgKSApIDsKJGRhdGFyZWZbICRXWyAyMSBdIF0gPSBcJFBSRUNJUF9wZXJpb2QgaWYoICRXWyAy
> MSBdICYmIAoJZGVmaW5lZCggJFBSRUNJUF9wZXJpb2QgKSApIDsKJGRhdGFyZWZbICRXWyAyMiBd
> IF0gPSBcJFdYcHJlc2VudCBpZiggJFdbIDIyIF0gJiYgZGVmaW5lZCggJFdYcHJlc2VudCApICkg
> OwokZGF0YXJlZlsgJFdbIDIzIF0gXSA9IFwkV1hwYXN0IGlmKCAkV1sgMjMgXSAmJiBkZWZpbmVk
> KCAkV1hwYXN0ICkpOwokZGF0YXJlZlsgJFdbIDI0IF0gXSA9IFwkY2xvdWRDb3ZlciBpZiggJFdb
> IDI0IF0gJiYgZGVmaW5lZCggJGNsb3VkQ292ZXIgKSApIDsKJGRhdGFyZWZbICRXWyAyNSBdIF0g
> PSBcJGNsb3VkTG93IGlmKCAkV1sgMjUgXSAmJiBkZWZpbmVkKCAkY2xvdWRMb3cgKSApIDsKJGRh
> dGFyZWZbICRXWyAyNiBdIF0gPSBcJGNsb3VkTWlkZGxlIGlmKCAkV1sgMjYgXSAmJiBkZWZpbmVk
> KCAkY2xvdWRNaWRkbGUgKSApIDsKJGRhdGFyZWZbICRXWyAyNyBdIF0gPSBcJGNsb3VkSGlnaCBp
> ZiggJFdbIDI3IF0gJiYgZGVmaW5lZCggJGNsb3VkSGlnaCApICkgOwokZGF0YXJlZlsgJFdbIDI4
> IF0gXSA9IFwkc2hpcFRydWVESVIgaWYoICRXWyAyOCBdICYmIGRlZmluZWQoICRzaGlwVHJ1ZURJ
> UiApICkgOwokZGF0YXJlZlsgJFdbIDI5IF0gXSA9IFwkc2hpcEF2Z1NQRCBpZiggJFdbIDI5IF0g
> JiYgZGVmaW5lZCggJHNoaXBBdmdTUEQgKSApIDsKJGRhdGFyZWZbICRXWyAzMCBdIF0gPSBcJFR3
> IGlmKCAkV1sgMzAgXSAmJiBkZWZpbmVkKCAkVHcgKSApIDsKJGRhdGFyZWZbICRXWyAzMSBdIF0g
> PSBcJFB3YSBpZiggJFdbIDMxIF0gJiYgZGVmaW5lZCggJFB3YSApICkgOwokZGF0YXJlZlsgJFdb
> IDMyIF0gXSA9IFwkSHdhIGlmKCAkV1sgMzIgXSAmJiBkZWZpbmVkKCAkSHdhICkgKSA7CiRkYXRh
> cmVmWyAkV1sgMzMgXSBdID0gXCRId2FfdGVudGhzIGlmKCAkV1sgMzMgXSAmJiBkZWZpbmVkKCAk
> SHdhX3RlbnRocyApICkgOwokZGF0YXJlZlsgJFdbIDM0IF0gXSA9IFwkc3dlbGxESVIxIGlmKCAk
> V1sgMzQgXSAmJiBkZWZpbmVkKCAkc3dlbGxESVIxICkgKSA7CiRkYXRhcmVmWyAkV1sgMzUgXSBd
> ID0gXCRQczEgaWYoICRXWyAzNSBdICYmIGRlZmluZWQoICRQczEgKSApIDsKJGRhdGFyZWZbICRX
> WyAzNiBdIF0gPSBcJEhzMSBpZiggJFdbIDM2IF0gJiYgZGVmaW5lZCggJEhzMSApICkgOwokZGF0
> YXJlZlsgJFdbIDM3IF0gXSA9IFwkc3dlbGxESVIyIGlmKCAkV1sgMzcgXSAmJiBkZWZpbmVkKCAk
> c3dlbGxESVIyICkgKSA7CiRkYXRhcmVmWyAkV1sgMzggXSBdID0gXCRQczIgaWYoICRXWyAzOCBd
> ICYmIGRlZmluZWQoICRQczIgKSk7CiRkYXRhcmVmWyAkV1sgMzkgXSBdID0gXCRIczIgaWYoICRX
> WyAzOSBdICYmIGRlZmluZWQoICRIczIgKSApIDsKJGRhdGFyZWZbICRXWyA0MCBdIF0gPSBcJGlj
> ZVR5cGUgaWYoICRXWyA0MCBdICYmIGRlZmluZWQoICRpY2VUeXBlICkgKSA7CiRkYXRhcmVmWyAk
> V1sgNDEgXSBdID0gXCRpY2VUaGljayBpZiggJFdbIDQxIF0gJiYgZGVmaW5lZCggJGljZVRoaWNr
> ICkgKSA7CiRkYXRhcmVmWyAkV1sgNDIgXSBdID0gXCRpY2VSYXRlIGlmKCAkV1sgNDIgXSAmJiBk
> ZWZpbmVkKCAkaWNlUmF0ZSApICkgOwokZGF0YXJlZlsgJFdbIDQzIF0gXSA9IFwkVGIgaWYoICRX
> WyA0MyBdICYmIGRlZmluZWQoICRUYiApICkgOwokZGF0YXJlZlsgJFdbIDQ0IF0gXSA9IFwkSUNF
> IGlmKCAkV1sgNDQgXSAmJiBkZWZpbmVkKCAkSUNFICkgKSA7CiRkYXRhcmVmWyAkV1sgNDUgXSBd
> ID0gXCRpY2VDb25jZW4gaWYoICRXWyA0NSBdICYmIGRlZmluZWQoICRpY2VDb25jZW4gKSApIDsK
> JGRhdGFyZWZbICRXWyA0NiBdIF0gPSBcJGljZVN0YWdlIGlmKCAkV1sgNDYgXSAmJiBkZWZpbmVk
> KCAkaWNlU3RhZ2UgKSApIDsKJGRhdGFyZWZbICRXWyA0NyBdIF0gPSBcJGljZUxhbmQgaWYoICRX
> WyA0NyBdICYmIGRlZmluZWQoICRpY2VMYW5kICkgKSA7CiRkYXRhcmVmWyAkV1sgNDggXSBdID0g
> XCRpY2VFZGdlIGlmKCAkV1sgNDggXSAmJiBkZWZpbmVkKCAkaWNlRWRnZSApKTsKJGRhdGFyZWZb
> ICRXWyA0OSBdIF0gPSBcJGljZVNpdHVhdGlvbiBpZiggJFdbIDQ5IF0gJiYgZGVmaW5lZCggJGlj
> ZVNpdHVhdGlvbiApICk7CiRkYXRhcmVmWyAkV1sgNTAgXSBdID0gXCRUbWF4IGlmKCAkV1sgNTAg
> XSAmJiBkZWZpbmVkKCAkVG1heCApICkgOwokZGF0YXJlZlsgJFdbIDUxIF0gXSA9IFwkVG1pbiBp
> ZiggJFdbIDUxIF0gJiYgZGVmaW5lZCggJFRtaW4gKSApIDsKJGRhdGFyZWZbICRXWyA1MiBdIF0g
> PSBcJGdyb3VuZFN0YXRlIGlmKCAkV1sgNTIgXSAmJiBkZWZpbmVkKCAkZ3JvdW5kU3RhdGUgKSAp
> IDsKJGRhdGFyZWZbICRXWyA1MyBdIF0gPSBcJHNub3dEZXB0aCBpZiggJFdbIDUzIF0gJiYgZGVm
> aW5lZCggJHNub3dEZXB0aCApICkgOwokZGF0YXJlZlsgJFdbIDU0IF0gXSA9IFwkUFJFQ0lQX2Ft
> dDI0IGlmKCAkV1sgNTQgXSAmJiBkZWZpbmVkKCAkUFJFQ0lQX2FtdDI0ICkgKTsKJGRhdGFyZWZb
> ICRXWyA1NSBdIF0gPSBcQGNsb3VkT2JzdXJlZCBpZiggJFdbIDU1IF0gJiYgZGVmaW5lZCggQGNs
> b3VkT2JzdXJlZCApICk7CiRkYXRhcmVmWyAkV1sgNTYgXSBdID0gXEBjbG91ZEdlbnVzIGlmKCAk
> V1sgNTYgXSAmJiBkZWZpbmVkKCBAY2xvdWRHZW51cyApICkgOwokZGF0YXJlZlsgJFdbIDU3IF0g
> XSA9IFxAY2xvdWRIZWlnaHQgaWYoICRXWyA1NyBdICYmIGRlZmluZWQoIEBjbG91ZEhlaWdodCAp
> ICkgOwokZGF0YXJlZlsgJFdbIDU4IF0gXSA9IFwkcmVwb3J0IGlmKCAkV1sgNTggXSAmJiBkZWZp
> bmVkKCAkcmVwb3J0ICkgKSA7Cgp9ICMgZW5kIHNldHZhcnMKCiMgY3JlYXRlIGEgbmV0Y2RmIGZp
> bGUgb3IgcmVvcGVuIGEgZXhpc3Rpbmcgb25lCnN1YiBkb05ldCB7CgpteSggJE5jZmlsZSwgJElk
> LCAkTnVtLCAkVGltZSwgJGJhc2VUaW1lLCAkb2Zmc2V0LCAkcnB0LCAkc3RuICkgOwoKJG5jZmls
> ZSA9ICRkYXRhZGlyIC4gIi8iIC4gJHl5eXltbWRkaGggLiAiX3N5bi5uYyIgOwojIHdyaXRpbmcg
> dG8gc2FtZSBOY2ZpbGUKcmV0dXJuIDEgaWYoICRuY2ZpbGUgZXEgJGxhc3ROYyApIDsKCiMgY3Vy
> cmVudCB0aW1lCiR0aGV0aW1lID0gdGltZSgpIDsKIyBzYXZlIGN1cnJlbnQgTmNmaWxlIGluZm8K
> JE5ldHN7ICRsYXN0TmMgfSA9ICIkbmNpZCAkcmVjbnVtICR0aGV0aW1lIiBpZiggJGxhc3ROYyAp
> IDsKCiMgRmlsZSBpcyBvcGVuLCBnZXQgbmNmaWxlIGlkIGFuZCByZWNudW0gYW5kIHJlc2V0IHRo
> ZSB0aW1lIAppZiggZGVmaW5lZCggJE5ldHN7ICRuY2ZpbGUgfSApICkgeyAjIGFscmVhZHkgb3Bl
> biBmb3Igd3JpdGVzCgkoICRuY2lkLCAkcmVjbnVtLCAkbmNUaW1lICkgPSBzcGxpdCggIiAiLCAk
> TmV0c3sgJG5jZmlsZSB9ICkgOwoJJG5jVGltZSA9ICR0aGV0aW1lIDsKCSRsYXN0TmMgPSAgJG5j
> ZmlsZSA7CglyZXR1cm4gMSA7Cn0KIyBjbG9zZSBOY2ZpbGVzIHdpdGggbm8gYWN0aXZpdHkgZm9y
> IDIwIG1pbnV0ZXMKZm9yZWFjaCAkTmNmaWxlICgga2V5cyAlTmV0cyApIHsKCSggJElkLCAkTnVt
> LCAkVGltZSApID0gc3BsaXQoICIgIiwgJE5ldHN7ICROY2ZpbGUgfSApIDsKCWlmKCAkdGhldGlt
> ZSAtICRUaW1lID4gMTIwMCApIHsKCQlwcmludCAiQ2xvc2luZyAkTmNmaWxlIHdpdGggbmNpZCAk
> SWQsIE5vIHdyaXRlIGZvciA+IDIwIE1pbnV0ZXNcbiIgOwoJCSRzdGF0dXMgPSBOZXRDREY6OmNs
> b3NlKCAkSWQgKSA7CgkJZGVsZXRlKCAkTmV0c3sgJE5jZmlsZSB9ICkgOwoJfSBlbHNpZiggJE5j
> ZmlsZSBlcSAkbGFzdE5jICkgewoJCXByaW50ICJTeW5jaW5nICRsYXN0TmMgd2l0aCBuY2lkICRu
> Y2lkXG4iIDsKCQkkc3RhdHVzID0gTmV0Q0RGOjpzeW5jKCAkSWQgKSA7Cgl9Cn0KIyByZW1vdmUg
> cnB0IGVudHJpZXMgb2xkZXIgdGhhbiAyNCBob3VycwokYmFzZVRpbWUgPSAkeXl5eW1tIC4gJGNk
> YXkgLiAkY2hvdXIgOwpmb3JlYWNoICRycHQgKCBrZXlzICVycHRfaGFzaCApIHsKCSggJHN0biwg
> JFRpbWUgKSA9IHNwbGl0KCAiICIsICRycHQgKSA7Cgkkb2Zmc2V0ID0gJGJhc2VUaW1lIC0gJFRp
> bWUgOwoJbmV4dCBpZiggJG9mZnNldCA8IDEwMCApIDsgICMgc2FtZSBkYXkgb2sgJiBwcmV2aW91
> cyBkYXkgb2sgPiAkY2hvdXIKCWRlbGV0ZSggJHJwdF9oYXNoeyAkcnB0IH0gKSA7Cn0KIyBvcGVu
> IG9yIGNyZWF0ZSBuY2ZpbGVzCmlmKCAtZSAkbmNmaWxlICkgewoJJG5jaWQgPSBOZXRDREY6Om9w
> ZW4oICIkbmNmaWxlIiwgV1JJVEUgKSA7CglyZXR1cm4gMCBpZiggJG5jaWQgPT0gLTEgKSA7Cgkk
> cmVjTnVtX2lkID0gTmV0Q0RGOjpkaW1pZCggJG5jaWQsICJyZWNOdW0iICkgOwoJJG5hbWVfaWQg
> PSAgInh4eHh4eHh4IiAgOwoJJHJlY251bSA9ICAtMSAgOwoJIyBnZXQgY3VycmVudCB2YWx1ZSBv
> ZiByZWNudW0KCU5ldENERjo6ZGltaW5xKCAkbmNpZCwgJHJlY051bV9pZCwgJG5hbWVfaWQsICRy
> ZWNudW0gKSA7Cn0gZWxzZSB7CglzeXN0ZW0oICIkbmNnZW4gLW8gJG5jZmlsZSAkY2RsZmlsZSIg
> KSA7CgkkbmNpZCA9IE5ldENERjo6b3BlbiggIiRuY2ZpbGUiLCBXUklURSApIDsKCXJldHVybiAw
> IGlmKCAkbmNpZCA9PSAtMSApIDsKCSMgTmV0Q0RGIHJlY29yZCBjb3VudGVyCgkkcmVjbnVtID0g
> MCA7Cn0KJE5ldHN7ICRuY2ZpbGUgfSA9ICIkbmNpZCAkcmVjbnVtICR0aGV0aW1lIiA7CiRsYXN0
> TmMgPSAkbmNmaWxlIDsKcHJpbnQgIk9wZW5pbmcgJG5jZmlsZSB3aXRoIG5jaWQgJG5jaWRcbiIg
> OwoKcmV0dXJuIDEgOwp9ICMgZW5kIGRvTmV0CgoKIyBwcmludCB2YXJzCnN1YiBwcmludHZhcnMK
> ewoKIyBvcmlnaW5hbCByZXBvcnQgCnByaW50ICJyZXBvcnQgPSAkcmVwb3J0IFxuIiBpZiggZGVm
> aW5lZCggJHJlcG9ydCApICkgOwpwcmludCAiXG4iIDsKCiMgcmVwb3J0IHZhcnMKcHJpbnQgInJl
> cF90eXBlID0gJHJlcF90eXBlIFxuIiBpZiggZGVmaW5lZCggJHJlcF90eXBlICkgKSA7CnByaW50
> ICJ3bW9JZCA9ICR3bW9JZCBcbiIgaWYoIGRlZmluZWQoICR3bW9JZCApICkgOwpwcmludCAic3Ru
> TmFtZSA9ICRzdG5OYW1lIFxuIiBpZiggZGVmaW5lZCggJHN0bk5hbWUgKSApIDsKcHJpbnQgImRk
> ID0gJGRkIFxuIiBpZiggZGVmaW5lZCggJGRkICkgKSA7CnByaW50ICJ0aGVtb250aCA9ICR0aGVt
> b250aCBcbiIgaWYoIGRlZmluZWQoICR0aGVtb250aCApICkgOwpwcmludCAidGhleWVhciA9ICR0
> aGV5ZWFyIFxuIiBpZiggZGVmaW5lZCggJHRoZXllYXIgKSApIDsKcHJpbnQgInJob3VyID0gJHJo
> b3VyIFxuIiBpZiggZGVmaW5lZCggJHJob3VyICkgKSA7CnByaW50ICJybWluID0gJHJtaW4gXG4i
> IGlmKCBkZWZpbmVkKCAkcm1pbiApICkgOwpwcmludCAidGltZV9vYnMgPSAkdGltZV9vYnMgXG4i
> IGlmKCBkZWZpbmVkKCAkdGltZV9vYnMgKSApIDsKcHJpbnQgInRpbWVfbm9taW5hbCA9ICR0aW1l
> X25vbWluYWwgXG4iIGlmKCBkZWZpbmVkKCAkdGltZV9ub21pbmFsICkgKSA7CnByaW50ICJ5eXl5
> bW1kZGhoID0gJHl5eXltbWRkaGggXG4iIGlmKCBkZWZpbmVkKCAkeXl5eW1tZGRoaCApICkgOwpw
> cmludCAiV2luZGljYXRvciA9ICRXaW5kaWNhdG9yIFxuIiBpZiggZGVmaW5lZCggJFdpbmRpY2F0
> b3IgKSApIDsKcHJpbnQgIkxhdCA9ICRMYXQgXG4iIGlmKCBkZWZpbmVkKCAkTGF0ICkgKSA7CnBy
> aW50ICJMb24gPSAkTG9uIFxuIiBpZiggZGVmaW5lZCggJExvbiApICkgOwpwcmludCAiZWxldiA9
> ICRlbGV2IFxuIiBpZiggZGVmaW5lZCggJGVsZXYgKSApIDsKcHJpbnQgInN0blR5cGUgPSAkc3Ru
> VHlwZSBcbiIgaWYoIGRlZmluZWQoICRzdG5UeXBlICkgKSA7CnByaW50ICJtZWFuV2luZCA9ICRt
> ZWFuV2luZCBcbiIgaWYoIGRlZmluZWQoICRtZWFuV2luZCApICkgOwpwcmludCAiVklTID0gJFZJ
> UyBcbiIgaWYoIGRlZmluZWQoICRWSVMgKSApIDsKcHJpbnQgIkRJUiA9ICRESVIgXG4iIGlmKCBk
> ZWZpbmVkKCAkRElSICkgKSA7CnByaW50ICJTUEQgPSAkU1BEIFxuIiBpZiggZGVmaW5lZCggJFNQ
> RCApICkgOwpwcmludCAiVCA9ICRUIFxuIiBpZiggZGVmaW5lZCggJFQgKSApIDsKcHJpbnQgImh1
> bWlkaXR5ID0gJGh1bWlkaXR5IFxuIiBpZiggZGVmaW5lZCggJGh1bWlkaXR5ICkgKSA7CnByaW50
> ICJURCA9ICRURCBcbiIgaWYoIGRlZmluZWQoICRURCApICkgOwpwcmludCAiUFJFUyA9ICRQUkVT
> IFxuIiBpZiggZGVmaW5lZCggJFBSRVMgKSApIDsKcHJpbnQgIlNMUCA9ICRTTFAgXG4iIGlmKCBk
> ZWZpbmVkKCAkU0xQICkgKSA7CnByaW50ICJjaGFyX1B0ZW5kID0gJGNoYXJfUHRlbmQgXG4iIGlm
> KCBkZWZpbmVkKCAkY2hhcl9QdGVuZCApICkgOwpwcmludCAiUHRlbmQgPSAkUHRlbmQgXG4iIGlm
> KCBkZWZpbmVkKCAkUHRlbmQgKSApIDsKcHJpbnQgIlBSRUNJUF9hbXQgPSAkUFJFQ0lQX2FtdCBc
> biIgaWYoIGRlZmluZWQoICRQUkVDSVBfYW10ICkgKSA7CnByaW50ICJQUkVDSVBfcGVyaW9kID0g
> JFBSRUNJUF9wZXJpb2QgXG4iIGlmKCBkZWZpbmVkKCAkUFJFQ0lQX3BlcmlvZCApICkgOwpwcmlu
> dCAiV1hwcmVzZW50ID0gJFdYcHJlc2VudCBcbiIgaWYoIGRlZmluZWQoICRXWHByZXNlbnQgKSAp
> IDsKcHJpbnQgIldYcGFzdCA9ICRXWHBhc3QgXG4iIGlmKCBkZWZpbmVkKCAkV1hwYXN0ICkgKSA7
> CnByaW50ICJjbG91ZENvdmVyID0gJGNsb3VkQ292ZXIgXG4iIGlmKCBkZWZpbmVkKCAkY2xvdWRD
> b3ZlciApICkgOwpwcmludCAiY2xvdWRMb3cgPSAkY2xvdWRMb3cgXG4iIGlmKCBkZWZpbmVkKCAk
> Y2xvdWRMb3cgKSApIDsKcHJpbnQgImNsb3VkTWlkZGxlID0gJGNsb3VkTWlkZGxlIFxuIiBpZigg
> ZGVmaW5lZCggJGNsb3VkTWlkZGxlICkgKSA7CnByaW50ICJjbG91ZEhpZ2ggPSAkY2xvdWRIaWdo
> IFxuIiBpZiggZGVmaW5lZCggJGNsb3VkSGlnaCApICkgOwpwcmludCAic2hpcFRydWVEaXIgPSAk
> c2hpcFRydWVEaXIgXG4iIGlmKCBkZWZpbmVkKCAkc2hpcFRydWVEaXIgKSApIDsKcHJpbnQgInNo
> aXBBdmdTUEQgPSAkc2hpcEF2Z1NQRCBcbiIgaWYoIGRlZmluZWQoICRzaGlwQXZnU1BEICkgKSA7
> CnByaW50ICJUdyA9ICRUdyBcbiIgaWYoIGRlZmluZWQoICRUdyApICkgOwpwcmludCAiUHdhID0g
> JFB3YSBcbiIgaWYoIGRlZmluZWQoICRQd2EgKSApIDsKcHJpbnQgIkh3YSA9ICRId2EgXG4iIGlm
> KCBkZWZpbmVkKCAkSHdhICkgKSA7CnByaW50ICJId2FfdGVudGhzID0gJEh3YV90ZW50aHMgXG4i
> IGlmKCBkZWZpbmVkKCAkSHdhX3RlbnRocyApICkgOwpwcmludCAic3dlbGxEaXIxID0gJHN3ZWxs
> RGlyMSBcbiIgaWYoIGRlZmluZWQoICRzd2VsbERpcjEgKSApIDsKcHJpbnQgIlBzMSA9ICRQczEg
> XG4iIGlmKCBkZWZpbmVkKCAkUHMxICkgKSA7CnByaW50ICJIczEgPSAkSHMxIFxuIiBpZiggZGVm
> aW5lZCggJEhzMSApICkgOwpwcmludCAic3dlbGxEaXIyID0gJHN3ZWxsRGlyMiBcbiIgaWYoIGRl
> ZmluZWQoICRzd2VsbERpcjIgKSApIDsKcHJpbnQgIlBzMiA9ICRQczIgXG4iIGlmKCBkZWZpbmVk
> KCAkUHMyICkgKSA7CnByaW50ICJIczIgPSAkSHMyIFxuIiBpZiggZGVmaW5lZCggJEhzMiApICkg
> OwpwcmludCAiaWNlVHlwZSA9ICRpY2VUeXBlIFxuIiBpZiggZGVmaW5lZCggJGljZVR5cGUgKSAp
> IDsKcHJpbnQgImljZVRoaWNrID0gJGljZVRoaWNrIFxuIiBpZiggZGVmaW5lZCggJGljZVRoaWNr
> ICkgKSA7CnByaW50ICJpY2VSYXRlID0gJGljZVJhdGUgXG4iIGlmKCBkZWZpbmVkKCAkaWNlUmF0
> ZSApICkgOwpwcmludCAiVGIgPSAkVGIgXG4iIGlmKCBkZWZpbmVkKCAkVGIgKSApIDsKcHJpbnQg
> IklDRSA9ICRJQ0UgXG4iIGlmKCBkZWZpbmVkKCAkSUNFICkgKSA7CnByaW50ICJpY2VDb25jZW4g
> PSAkaWNlQ29uY2VuIFxuIiBpZiggZGVmaW5lZCggJGljZUNvbmNlbiApICkgOwpwcmludCAiaWNl
> U3RhZ2UgPSAkaWNlU3RhZ2UgXG4iIGlmKCBkZWZpbmVkKCAkaWNlU3RhZ2UgKSApIDsKcHJpbnQg
> ImljZUxhbmQgPSAkaWNlTGFuZCBcbiIgaWYoIGRlZmluZWQoICRpY2VMYW5kICkgKSA7CnByaW50
> ICJpY2VFZGdlID0gJGljZUVkZ2UgXG4iIGlmKCBkZWZpbmVkKCAkaWNlRWRnZSApICkgOwpwcmlu
> dCAiaWNlU2l0dWF0aW9uID0gJGljZVNpdHVhdGlvbiBcbiIgaWYoIGRlZmluZWQoICRpY2VTaXR1
> YXRpb24gKSApIDsKcHJpbnQgIlRtYXggPSAkVG1heCBcbiIgaWYoIGRlZmluZWQoICRUbWF4ICkg
> KSA7CnByaW50ICJUbWluID0gJFRtaW4gXG4iIGlmKCBkZWZpbmVkKCAkVG1pbiApICkgOwpwcmlu
> dCAiZ3JvdW5kU3RhdGUgPSAkZ3JvdW5kU3RhdGUgXG4iIGlmKCBkZWZpbmVkKCAkZ3JvdW5kU3Rh
> dGUgKSApIDsKcHJpbnQgInNub3dEZXB0aCA9ICRzbm93RGVwdGggXG4iIGlmKCBkZWZpbmVkKCAk
> c25vd0RlcHRoICkgKSA7CnByaW50ICJQUkVDSVBfYW10MjQgPSAkUFJFQ0lQX2FtdDI0IFxuIiBp
> ZiggZGVmaW5lZCggJFBSRUNJUF9hbXQyNCApICkgOwpwcmludCAiY2xvdWRPYnN1cmVkID0gQGNs
> b3VkT2JzdXJlZCBcbiIgaWYoIGRlZmluZWQoIEBjbG91ZE9ic3VyZWQgKSApIDsKcHJpbnQgImNs
> b3VkR2VudXMgPSBAY2xvdWRHZW51cyBcbiIgaWYoIGRlZmluZWQoIEBjbG91ZEdlbnVzICkgKSA7
> CnByaW50ICJjbG91ZEhlaWdodCA9IEBjbG91ZEhlaWdodCBcbiIgaWYoIGRlZmluZWQoIEBjbG91
> ZEhlaWdodCApICkgOwpwcmludCAicmVwb3J0ID0gJHJlcG9ydCBcbiIgaWYoIGRlZmluZWQoICRy
> ZXBvcnQgKSApIDsKcHJpbnQgIlxuIiA7Cn0gIyBlbmQgcHJpbnR2YXJzCgojIGV4ZWN1dGUgYXQg
> ZXhpdApzdWIgYXRleGl0CnsKbG9jYWwoICRzaWcgKSA9IEBfIDsKCmlmKCAkc2lnIGVxICJlb2Yi
> ICkgewoJcHJpbnQgImVvZiBvbiBTVERJTiAtLXNodXR0aW5nIGRvd25cbiIgOwp9IGVsc2lmKCBk
> ZWZpbmVkKCAkc2lnICkpIHsKCXByaW50ICJDYXVnaHQgU0lHJHNpZyAtLXNodXR0aW5nIGRvd25c
> biIgOwp9CiMgb3BlbiBzeW4ubHN0LCBsaXN0IG9mIHJlcG9ydHMgcHJvY2Vzc2VkIGluIHRoZSBs
> YXN0ID8gaG91cnMuCm9wZW4oIExTVCwgIj4kZGF0YWRpci9zeW4ubHN0IiApIHx8IAoJZGllICJj
> b3VsZCBub3Qgb3BlbiAkZGF0YWRpci9zeW4ubHN0OiAkIVxuIiA7CnNlbGVjdCggTFNUICkgOwoj
> IHJlbW92ZSBzdG4gZW50cmllcyBvbGRlciB0aGFuIDI0IGhvdXJzCiR5eXl5bW1kZGhoID0gJHl5
> eXltbSAuICRjZGF5IC4gJGNob3VyIDsKZm9yZWFjaCAkcnB0ICgga2V5cyAlcnB0X2hhc2ggKSB7
> CgkoICRzdG4sICRUaW1lICkgPSBzcGxpdCggIiAiLCAkcnB0ICkgOwoJJG9mZnNldCA9ICR5eXl5
> bW1kZGhoIC0gJFRpbWUgOwoJbmV4dCB1bmxlc3MoICRvZmZzZXQgPCAxMDAgKSA7ICAjIHNhbWUg
> ZGF5IG9rICYgcHJldmlvdXMgZGF5IG9rID4gJGNob3VyCglwcmludCAiJHJwdCAkcnB0X2hhc2h7
> ICRycHQgfVxuIiA7Cn0KY2xvc2UgTFNUIDsKZm9yZWFjaCAkZmlsZSAoIGtleXMgJU5ldHMgKSB7
> CgkoICRuY2lkLCAkcmVjbnVtLCAkbmN0aW1lICkgPSBzcGxpdCggIiAiLCAkTmV0c3sgJGZpbGUg
> fSApIDsKCXByaW50IFNURE9VVCAiQ2xvc2luZyAkZmlsZSB3aXRoIG5jaWQgJG5jaWRcbiIgOwoJ
> JHN0YXR1cyA9IE5ldENERjo6Y2xvc2UoICRuY2lkICkgOwp9CmNsb3NlKCBTVERPVVQgKSA7CmNs
> b3NlKCBTVERFUlIgKSA7CmV4aXQoIDAgKSA7Cgp9CgojIHBhZCBzdHIgdG8gY29ycmVjdCBsZW5n
> dGgKc3ViIHBhZHN0cgp7CiggJHN0ciwgJGxlbiApID0gQF8gOwoKbG9jYWwoICRzaXplLCAkaSAp
> IDsKCiRzaXplID0gbGVuZ3RoKCAkc3RyICkgOwoKZm9yKCAkaSA9ICRzaXplOyAkaSA8ICRsZW47
> ICRpKysgKSB7CiAgICAgICAgJHN0ciAuPSAiXDAiIDsKfQppZiggJHNpemUgPiAkbGVuICkgewoJ
> cHJpbnQgU1RET1VUICJTdHJpbmcgbGVuZ3RoIGlzIG92ZXIgJGxlbiBjaGFycyBsb25nOlxuICRz
> dHJcbiIgCgkJaWYoICR2ZXJib3NlICkgOwoJJHN0ciA9IHN1YnN0ciggJHN0ciwgMCwgJGxlbiAp
> IDsKfQpyZXR1cm4gJHN0ciA7Cn0gIyBlbmQgcGFkc3RyCgpzdWIgdGhlVGltZQp7CgpteSggJHdo
> ZW4sICRtaW4sICRob3VyLCAkbWRheSwgJG1vbiwgJHllYXIsICR3ZGF5LCAkeWRheSwgJGlzZHN0
> ICkgOwoKKCAkd2hlbiApID0gQF8gOwoKJGhvdXIgPSAkcmhvdXIgOwokbWRheSA9IHN1YnN0cigg
> JHl5eXltbWRkaGgsIDYsIDIgKSA7CiRtb24gPSBzdWJzdHIoICR5eXl5bW1kZGhoLCA0LCAyICkg
> OwokeWVhciA9IHN1YnN0ciggJHl5eXltbWRkaGgsIDIsIDIgKSA7CgppZiggJHdoZW4gZXEgIm9i
> cyIgKSB7CgkkbWluID0gJHJtaW4gOwp9IGVsc2lmKCAkd2hlbiBlcSAibm9taW5hbCIgKSB7Cglp
> ZiggJHJtaW4gPiAxNCAmJiAkcm1pbiA8IDQ1ICkgewoJCSRtaW4gPSAkcm1pbiA7Cgl9IGVsc2lm
> KCAkcm1pbiA+IDQ0ICkgewoJCSRtaW4gPSA2MCA7Cgl9IGVsc2UgewoJCSRtaW4gPSAwIDsKCX0g
> Cn0KJHRpbWUgPSB0aW1lZ20oMCwgJG1pbiwgJGhvdXIsICRtZGF5LCAkbW9uIC0xLCAkeWVhciwg
> MCwgMCwgMCkgOwoKcmV0dXJuICR0aW1lIDsgCgp9ICMgdGhlVGltZQoKc3ViIGdldEhlaWdodCB7
> CgpteSggJEhlaWdodCwgJGNsb3VkSGVpZ2h0ICkgOwoKKCAkSGVpZ2h0ICkgPSBAXyA7CgppZigg
> JEhlaWdodCA8IDUxICkgewoJJGNsb3VkSGVpZ2h0ID0gJEhlaWdodCAqIDMwIDsKfSBlbHNpZigg
> JEhlaWdodCA8IDgxICkgewoJJGNsb3VkSGVpZ2h0ID0gKCAkSGVpZ2h0IC01MCApICogMzAwIDsK
> fSBlbHNpZiggJEhlaWdodCA8IDkwICkgewoJJGNsb3VkSGVpZ2h0ID0gKCggJEhlaWdodCAtODAg
> KSAqIDE1MDAgKSArIDkwMDAgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDkwICkgewoJJGNsb3VkSGVp
> Z2h0ID0gMjUgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDkxICkgewoJJGNsb3VkSGVpZ2h0ID0gNzUg
> Owp9IGVsc2lmKCAkSGVpZ2h0ID09IDkyICkgewoJJGNsb3VkSGVpZ2h0ID0gMTUwIDsKfSBlbHNp
> ZiggJEhlaWdodCA9PSA5MyApIHsKCSRjbG91ZEhlaWdodCA9IDI1MCA7Cn0gZWxzaWYoICRIZWln
> aHQgPT0gOTQgKSB7CgkkY2xvdWRIZWlnaHQgPSA0NTAgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDk1
> ICkgewoJJGNsb3VkSGVpZ2h0ID0gODAwIDsKfSBlbHNpZiggJEhlaWdodCA9PSA5NiApIHsKCSRj
> bG91ZEhlaWdodCA9IDEyNTAgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDk3ICkgewoJJGNsb3VkSGVp
> Z2h0ID0gMTc1MCA7Cn0gZWxzaWYoICRIZWlnaHQgPT0gOTggKSB7CgkkY2xvdWRIZWlnaHQgPSAy
> MjUwIDsKfSBlbHNpZiggJEhlaWdodCA9PSA5OSApIHsKCSRjbG91ZEhlaWdodCA9IDI1MDAgOwp9
> CgpyZXR1cm4gJGNsb3VkSGVpZ2h0IDsKCn0gIyBlbmQgZ2V0SGVpZ2h0Cg==
>
> ------_=_NextPart_001_01C55D46.5A42735C
> Content-Type: application/octet-stream;
>       name="syn2nc.patch"
> Content-Transfer-Encoding: base64
> Content-Description: syn2nc.patch
> Content-Disposition: attachment;
>       filename="syn2nc.patch"
>
> N2E4LDE1Cj4gCj4gIyBFbnN1cmUgdGhhdCBjaGFyYWN0ZXJzIG9uIFNURElOIGFyZSBOT1QgaW50
> ZXJwcmV0ZWQgYXMgVW5pY29kZS4KPiAjIFRoZW9yZXRpY2FsbHksIHRoaXMgaXMgdW5uZWNlc3Nh
> cnksIHNpbmNlIHN5bm9wdGljIG1lc3NhZ2VzIHNob3VsZCBjb250YWluCj4gIyBubyBjaGFyYXRl
> cnMgb3V0c2lkZSBvZiBBU0NJSSAoYWthIElTTyA4ODU5LTEgYWthIExhdGluLTEpIHJhbmdlIDAt
> MTI3Lgo+ICMgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgZm9yIHNpdGVzIGV4cGVyaWVuY2luZyB0
> ZWNobmljYWwgcHJvYmxlbXMgdG8gdHJhbnNtaXQKPiAjIGdhcmJhZ2UgY2hhcmFjdGVycyBvdXRz
> aWRlIHRoaXMgcmFuZ2UuCj4gbm8gZW5jb2Rpbmc7Cj4gCg==
>
> ------_=_NextPart_001_01C55D46.5A42735C
> Content-Type: application/octet-stream;
>       name="synoptic.20050420.1200.asc.FBSK_210"
> Content-Transfer-Encoding: base64
> Content-Description: synoptic.20050420.1200.asc.FBSK_210
> Content-Disposition: attachment;
>       filename="synoptic.20050420.1200.asc.FBSK_210"
>
> MjA5DQ0KU01CQzAxIEZCU0sgMjAxMjAwDQ0KQUFYWCAyMDEyNAo2ODI0MCA0Mjk2MCAzMDIwMiAx
> MDI1NiAyMDE0MSA0ODUyMiA1NzAyMiA4MzA4MD0KNjgzMjAgNDI5NjAgMTIzMDQgMTAyMTcgMjAw
> OTggNDg1MTUgNTcwMTQgODEwODA9CjY4MDMyIDQxNjYwIDMyOTA3IDEwMzM2IDIwMDk3IDQ4NTE3
> II4oGzj2KkowMDUwMCAgODMxMDA9CjY4MDI2IDQyNjYwIDIxODAyIDEwMzQwIDIwMDc0IDQ4NTEy
> IDU3MDI2IDgyMTAwPQo2ODA0MCA0MTY2OSAyMzQwNCAxMDMzMSAyMDEyMCA0ODUyMCA1NzAyNiA4
> MjEwMD0KNjgzMjggNDI2NjAgMTIxMDggMTAxODIgMjAwNjcgNDg1NDYgNTcwMTEgODExMDA9CjY4
> MjI2IDQyNjYwIDIyMDEzIDEwMjEwIDIwMDc5IDQ4NTM4IDU3MDE5IDgxMTgwPQo2ODE0OCA0MjY2
> MCAyMTYxMSAxMDMxMCAyMDEyMiA0ODUxNyA1NzAxOSA4MTE4MD0KNjgwMzAgNDE2NjAgNDA1MDUg
> MTAzMzcgMjAxMTAgNDg1NDcgNTcwMzAgNzA1MDAgODQxMDA9CjY4MDM4IDQxOTYwIDEyNzA2IDEw
> MzQwIDIwMTMxIDQ4NTQ2IDU3MDI1IDcwNTAwIDgxMDcwPQo2ODA1NCA0MjY2MCAzMjAwNSAxMDM0
> MSAyMDEyMSA0ODUyMiA1NzAyNCA4MzIwMD0KNjgwNzAgNDI1NjAgMDAwMDAgMTAzMjUgMjAxMjIg
> NDg1MzYgNTcwMjg9CjY4MjM0IDQyNjYwIDMyNzA1IDEwMjUyIDIwMTM0IDQ4NDk2IDU3MDEzIDgy
> MTgwPQo2ODMyNSA0MjY2MCA2MjcwMyAxMDIzNSAyMDEzOCA0ODU1MCA1NzAxNiA4NDE4MD0KNjgw
> MjkgNDI2NjAgNC8vLy8gMTAzMjUgMjAxMjYgNDg1MTkgNTcwMjggODQyMDA9DQ0KDQ0KAwENDQo=
>
> ------_=_NextPart_001_01C55D46.5A42735C--
>
> --
> NOTE: All email exchanges with Unidata User Support are recorded in the
> Unidata inquiry tracking system and then made publicly available
> through the web.  If you do not want to have your interactions made
> available in this way, you must let us know in each email you send to us.
>
> ------- End of Forwarded Message
>

===============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
address@hidden             WWW: http://www.unidata.ucar.edu/
===============================================================================