<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>17531</bug_id>
          
          <creation_ts>2008-02-25 00:28:36 -0800</creation_ts>
          <short_desc>Add interactive mode to testkjs</short_desc>
          <delta_ts>2008-06-09 10:12:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>71855</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-25 00:28:36 -0800</bug_when>
    <thetext>Adding an interactive shell to testkjs seems like the next step.  Let&apos;s do it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71856</commentid>
    <comment_count>1</comment_count>
      <attachid>19341</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-25 00:35:40 -0800</bug_when>
    <thetext>Created attachment 19341
First stab at it

Here is a first stab at an interactive shell mode.  If the platform you are on has readline support (currently I only have it set for Darwin, since I know it does, but the automake platforms can be made to check for it too) I use it and make use of the history, otherwise we just use getchar.  The way interactive mode works with files is that all the files are run first, and if they succeed, we go into interactive mode.

There are some names I don&apos;t especially like in this patch (the Options struct for one, not really sure we even need it) and I think it has gotten to the point where we need a more fleshed out usage message.  All in all though, this is pretty close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71857</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-25 00:40:13 -0800</bug_when>
    <thetext>Another feature I would like to add to the interactive mode, though not necessarily in this first version, is good autocompletion support (js keywords, variables in scope).  This can be done rather easily using readline.

It also just occurred to me.  Does it make sense to enter interactive mode if -p has been supplied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71861</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-25 04:01:20 -0800</bug_when>
    <thetext>+#if HAVE(asREADLINE)

I wonder if the default behaviour for running testkjs with no arguments should be to drop into the interactive shell?  With your patch it doesn&apos;t seem possible to get into interactive mode without executing code from some file first.  That may be a useful mode for inspecting the state of a completed script, but based on experiences using Python&apos;s interactive interpreter I feel it may be less commonly used than interactive mode without executing any code from a file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82722</commentid>
    <comment_count>4</comment_count>
      <attachid>21590</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-09 01:20:57 -0700</bug_when>
    <thetext>Created attachment 21590
Proposed patch

Here is a cleaned up version of Sam&apos;s patch. I made the prompt string the same as SpiderMonkey&apos;s, and I made it enter interactive mode if no files are specified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82742</commentid>
    <comment_count>5</comment_count>
      <attachid>21590</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-09 06:51:08 -0700</bug_when>
    <thetext>Comment on attachment 21590
Proposed patch

+static const char* interactivePrompt = &quot;&gt; &quot;;

This should be static const char[] or static const char* const. The declaration as-is asks for a non-const global pointing to a const string.

+    fprintf(stderr, &quot;  -p         Prints formatted source code\n&quot;);

I think this option is a little silly now that it does no formatting and just spits the code out as-is.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82760</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-06-09 09:43:15 -0700</bug_when>
    <thetext>-p still seems to do a relatively good job.  Oliver explained to me why it may give worse results than before on some input, but in my quick test with some crazy-obfuscated gmail source code it gave reasonable results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82761</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-09 10:02:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 21590 [edit])
&gt; +static const char* interactivePrompt = &quot;&gt; &quot;;
&gt; 
&gt; This should be static const char[] or static const char* const. The declaration
&gt; as-is asks for a non-const global pointing to a const string.

Thanks. I meant to make it a static const char[].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82762</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-09 10:12:01 -0700</bug_when>
    <thetext>Landed in r34470.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19341</attachid>
            <date>2008-02-25 00:35:40 -0800</date>
            <delta_ts>2008-02-25 00:35:40 -0800</delta_ts>
            <desc>First stab at it</desc>
            <filename>interactiveMode.diff</filename>
            <type>text/plain</type>
            <size>8219</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MzA1NTUpCisrKyBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDcgQEAKIAkJOTVDMThENDkwQzkwRTgyNjAwRTcyRjcz
IC8qIEpTUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NUMxOEQzRTBDOTBFN0VGMDBFNzJGNzMgLyogSlNSZXRhaW5QdHIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEU4OTQzMjBDRDA2
MDI0MDAzNjcxNzkgLyogSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFODk0MzEwQ0QwNjAyNDAwMzY3MTc5
IC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCAqLzsgfTsKIAkJQThFODk0MzQwQ0QwNjAz
RjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlCQzhFMDNGNjBENzJBOUZDMDA2RkM2MDggLyogbGliZWRpdC4yLmR5bGliIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4RTAzRjUwRDcyQTlGQzAw
NkZDNjA4IC8qIGxpYmVkaXQuMi5keWxpYiAqLzsgfTsKIAkJQkNGNjU1NTkwQTIwNDk3MTAwMzhB
MTk0IC8qIE1hdGhFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRjY1NTNCMEEyMDQ4REUwMDM4QTE5NCAvKiBNYXRoRXh0cmFzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDIxMjAyMkIwQUQ0
MzEwRDAwRUQ3OUI2IC8qIERhdGVNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZU1hdGguaCAq
LzsgfTsKIAkJRTExRDUxNzYwQjJFNzk4RDAwNTZDMTg4IC8qIFN0cmluZ0V4dHJhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTExRDUxNzUwQjJFNzk4
RDAwNTZDMTg4IC8qIFN0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01NzQsNiArNTc1LDcgQEAKIAkJOTVDMThEM0UwQzkwRTdF
RjAwRTcyRjczIC8qIEpTUmV0YWluUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUmV0YWluUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RTg5NDMx
MENEMDYwMjQwMDM2NzE3OSAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThFODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpT
R2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFs
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOEUwM0Y1MEQ3MkE5RkMw
MDZGQzYwOCAvKiBsaWJlZGl0LjIuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmVk
aXQuMi5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQuMi5keWxpYjsgc291cmNlVHJlZSA9
ICI8YWJzb2x1dGU+IjsgfTsKIAkJQkNGNjU1M0IwQTIwNDhERTAwMzhBMTk0IC8qIE1hdGhFeHRy
YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhFeHRyYXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDIxMjAyMjgwQUQ0MzEwQzAwRUQ3OUI2IC8qIERh
dGVNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlTWF0
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI5MEFENDMxMEMwMEVE
NzlCNiAvKiBEYXRlTWF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
ZU1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3Niw2ICs2NzgsNyBAQAog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTkzMkY1
QkVBMDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKKwkJCQlCQzhFMDNGNjBENzJBOUZDMDA2RkM2MDggLyogbGliZWRpdC4yLmR5bGli
IGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC03MjQsNiArNzI3LDcgQEAKIAkJCQk1MUYwRUI2MTA1Qzg2
QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCiAJCQkJOTMyMkEwMDMwNkMz
NDFEMzAwOTA2N0JCIC8qIGxpYmljdWNvcmUuZHlsaWIgKi8sCiAJCQkJNTFGMEVDMDcwNUM4NkM5
QTAwRTZERjFCIC8qIGxpYm9iamMuZHlsaWIgKi8sCisJCQkJQkM4RTAzRjUwRDcyQTlGQzAwNkZD
NjA4IC8qIGxpYmVkaXQuMi5keWxpYiAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkluZGV4OiBranMvY29uZmlnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga2pzL2NvbmZpZy5oCShyZXZpc2lvbiAzMDU0OCkKKysrIGtqcy9jb25maWcuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0zNSw2ICszNSw3IEBACiAjZGVmaW5lIEhBVkVfU1lTX1BBUkFNX0ggMQogI2RlZmlu
ZSBIQVZFX1NZU19USU1FX0ggMQogI2RlZmluZSBIQVZFX1NZU19USU1FQl9IIDEKKyNkZWZpbmUg
SEFWRV9SRUFETElORSAxCiAKICNlbGlmIFBMQVRGT1JNKFdJTl9PUykKIApJbmRleDoga2pzL3Rl
c3RranMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy90ZXN0a2pzLmNwcAkocmV2aXNpb24gMzA1NjAp
CisrKyBranMvdGVzdGtqcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEwIEBACiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgog
CisjaWYgSEFWRShSRUFETElORSkKKyNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorI2Vu
ZGlmCisKICNpZiBIQVZFKFNZU19USU1FX0gpCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNlbmRp
ZgpAQCAtNjUsNiArNjksMTkgQEAgc3RhdGljIEpTVmFsdWUqIGZ1bmN0aW9uTG9hZChFeGVjU3Rh
dGUqLAogc3RhdGljIEpTVmFsdWUqIGZ1bmN0aW9uUmVhZGxpbmUoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBjb25zdCBMaXN0Jik7CiBzdGF0aWMgSlNWYWx1ZSogZnVuY3Rpb25RdWl0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgY29uc3QgTGlzdCYpOwogCitzdHJ1Y3QgT3B0aW9ucyB7CisgICAgT3B0
aW9ucygpCisgICAgICAgIDogcHJldHR5UHJpbnQoZmFsc2UpCisgICAgICAgICwgaW50ZXJhY3Rp
dmUoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgcHJldHR5UHJpbnQ7CisgICAgYm9v
bCBpbnRlcmFjdGl2ZTsKKyAgICBWZWN0b3I8VVN0cmluZz4gZmlsZU5hbWVzOworICAgIFZlY3Rv
cjxVU3RyaW5nPiBhcmd1bWVudHM7Cit9OworCiBjbGFzcyBTdG9wV2F0Y2ggewogcHVibGljOgog
ICAgIHZvaWQgc3RhcnQoKTsKQEAgLTI2OCwxMSArMjg1LDkgQEAgc3RhdGljIGJvb2wgcHJldHR5
UHJpbnRTY3JpcHQoY29uc3QgVVN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9v
bCBydW5XaXRoU2NyaXB0cyhjb25zdCBWZWN0b3I8VVN0cmluZz4mIGZpbGVOYW1lcywgVmVjdG9y
PFVTdHJpbmc+JiBhcmd1bWVudHMsIGJvb2wgcHJldHR5UHJpbnQpCitzdGF0aWMgYm9vbCBydW5X
aXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFVTdHJp
bmc+JiBmaWxlTmFtZXMsIGJvb2wgcHJldHR5UHJpbnQpCiB7Ci0gICAgR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBuZXcgR2xvYmFsT2JqZWN0KGFyZ3VtZW50cyk7CiAgICAgVmVjdG9yPGNo
YXI+IHNjcmlwdDsKLQogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZpbGVOYW1lcy5zaXplKCk7IGkrKykgewpAQCAtMjkxLDEzICszMDYsNDQg
QEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoY29uc3QgVmVjdG9yPAogICAgIHJldHVybiBz
dWNjZXNzOwogfQogCitzdGF0aWMgdm9pZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICB3aGlsZSAoIWRvbmUp
IHsKKyNpZiBIQVZFKGFzUkVBRExJTkUpCisgICAgICAgIGNoYXIqIGxpbmUgPSByZWFkbGluZSgi
Pj4gIik7CisgICAgICAgIGlmICghbGluZSkKKyAgICAgICAgICAgIGJyZWFrOyAvLyBTb21ldGhp
bmcgYmFkIGhhcHBlbmVkLgorICAgICAgICBpZiAobGluZVswXSkKKyAgICAgICAgICAgIGFkZF9o
aXN0b3J5KGxpbmUpOworICAgICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBJbnRlcnByZXRl
cjo6ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJJbnRlcnByZXRlciIsIDAs
IGxpbmUpOworICAgICAgICBmcmVlKGxpbmUpOworI2Vsc2UKKyAgICAgICAgcHJpbnRmKCI+PiAi
KTsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDI1Nj4gbGluZTsKKyAgICAgICAgaW50IGM7CisgICAg
ICAgIHdoaWxlICgoYyA9IGdldGNoYXIoKSkgIT0gRU9GKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIGFsc28gYnJlYWsgb24gXHI/IAorICAgICAgICAgICAgaWYgKGMgPT0gJ1xu
JykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGxpbmUuYXBwZW5kKGMpOwor
ICAgICAgICB9CisgICAgICAgIGxpbmUuYXBwZW5kKCdcMCcpOworICAgICAgICBDb21wbGV0aW9u
IGNvbXBsZXRpb24gPSBJbnRlcnByZXRlcjo6ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksICJJbnRlcnByZXRlciIsIDAsIGxpbmUuZGF0YSgpKTsKKyNlbmRpZgorICAgICAgICBp
ZiAoY29tcGxldGlvbi5pc1ZhbHVlQ29tcGxldGlvbigpKQorICAgICAgICAgICAgcHJpbnRmKCIl
c1xuIiwgY29tcGxldGlvbi52YWx1ZSgpLT50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSkuVVRGOFN0cmluZygpLmNfc3RyKCkpOworICAgIH0KK30KKworCiBzdGF0aWMgdm9pZCBw
cmludFVzYWdlU3RhdGVtZW50KCkKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiB0ZXN0
a2pzIC1mIGZpbGUxIFstZiBmaWxlMi4uLl1bLXBdWy0tIGFyZ3VtZW50cy4uLl1cbiIpOworICAg
IGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IHRlc3RranMgLWYgZmlsZTEgWy1mIGZpbGUyLi4uXVst
cF1bLWldWy0tIGFyZ3VtZW50cy4uLl1cbiIpOwogICAgIGV4aXQoLTEpOwogfQogCi1zdGF0aWMg
dm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIFZlY3RvcjxVU3RyaW5n
PiYgZmlsZU5hbWVzLCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cywgYm9vbCYgcHJldHR5UHJp
bnQpCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIE9w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGFyZ2MgPCAzKQogICAgICAgICBwcmludFVzYWdl
U3RhdGVtZW50KCk7CkBAIC0zMDgsMTEgKzM1NCwxNSBAQCBzdGF0aWMgdm9pZCBwYXJzZUFyZ3Vt
ZW50cyhpbnQgYXJnYywgY2hhCiAgICAgICAgIGlmIChzdHJjbXAoYXJnLCAiLWYiKSA9PSAwKSB7
CiAgICAgICAgICAgICBpZiAoKytpID09IGFyZ2MpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2Fn
ZVN0YXRlbWVudCgpOwotICAgICAgICAgICAgZmlsZU5hbWVzLmFwcGVuZChhcmd2W2ldKTsKKyAg
ICAgICAgICAgIG9wdGlvbnMuZmlsZU5hbWVzLmFwcGVuZChhcmd2W2ldKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHJjbXAoYXJnLCAiLXAiKSA9PSAw
KSB7Ci0gICAgICAgICAgICBwcmV0dHlQcmludCA9IHRydWU7CisgICAgICAgICAgICBvcHRpb25z
LnByZXR0eVByaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChzdHJjbXAoYXJnLCAiLWkiKSA9PSAwKSB7CisgICAgICAgICAgICBvcHRpb25z
LmludGVyYWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChzdHJjbXAoYXJnLCAiLS0iKSA9PSAwKSB7CkBAIC0zMjMsMTkgKzM3MywyMCBA
QCBzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhCiAgICAgfQogCiAgICAg
Zm9yICg7IGkgPCBhcmdjOyArK2kpCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndltpXSk7
CisgICAgICAgIG9wdGlvbnMuYXJndW1lbnRzLmFwcGVuZChhcmd2W2ldKTsKIH0KIAogaW50IGtq
c21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewogICAgIEpTTG9jayBsb2NrOwogCi0gICAg
Ym9vbCBwcmV0dHlQcmludCA9IGZhbHNlOwotICAgIFZlY3RvcjxVU3RyaW5nPiBmaWxlTmFtZXM7
Ci0gICAgVmVjdG9yPFVTdHJpbmc+IGFyZ3VtZW50czsKLSAgICBwYXJzZUFyZ3VtZW50cyhhcmdj
LCBhcmd2LCBmaWxlTmFtZXMsIGFyZ3VtZW50cywgcHJldHR5UHJpbnQpOworICAgIE9wdGlvbnMg
b3B0aW9uczsKKyAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zKTsKIAotICAg
IGJvb2wgc3VjY2VzcyA9IHJ1bldpdGhTY3JpcHRzKGZpbGVOYW1lcywgYXJndW1lbnRzLCBwcmV0
dHlQcmludCk7CisgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgR2xvYmFsT2Jq
ZWN0KG9wdGlvbnMuYXJndW1lbnRzKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBydW5XaXRoU2NyaXB0
cyhnbG9iYWxPYmplY3QsIG9wdGlvbnMuZmlsZU5hbWVzLCBvcHRpb25zLnByZXR0eVByaW50KTsK
KyAgICBpZiAob3B0aW9ucy5pbnRlcmFjdGl2ZSAmJiBzdWNjZXNzKQorICAgICAgICBydW5JbnRl
cmFjdGl2ZShnbG9iYWxPYmplY3QpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIENvbGxlY3Rvcjo6
Y29sbGVjdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21590</attachid>
            <date>2008-06-09 01:20:57 -0700</date>
            <delta_ts>2008-06-09 06:51:08 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>readline.diff</filename>
            <type>text/plain</type>
            <size>10655</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM0NDY2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDgtMDYt
MDkgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE3NTMxOiBBZGQgaW50
ZXJhY3RpdmUgbW9kZSB0byB0ZXN0a2pzCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzE+CisKKyAgICAgICAgVGhpcyBpcyBhIGNsZWFuZWQgdXAg
dmVyc2lvbiBvZiBTYW0ncyBlYXJsaWVyIHBhdGNoIHRvIGFkZCBhbgorICAgICAgICBpbnRlcmFj
dGl2ZSBtb2RlIHRvIHRlc3RranMuCisKKyAgICAgICAgUmVhZGxpbmUgc3VwcG9ydCBpcyBvbmx5
IGVuYWJsZWQgb24gRGFyd2luIHBsYXRmb3JtcyBmb3Igbm93LCBidXQKKyAgICAgICAgb3RoZXIg
cG9ydHMgY2FuIGVuYWJsZSBpdCBieSBkZWZpbmluZyBIQVZFX1JFQURMSU5FIGluIGtqcy9jb25m
aWcuaC4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICoga2pzL2NvbmZpZy5oOgorICAgICAgICAqIGtqcy90ZXN0a2pzLmNwcDoK
KyAgICAgICAgKE9wdGlvbnM6Ok9wdGlvbnMpOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgor
ICAgICAgICAocnVuSW50ZXJhY3RpdmUpOgorICAgICAgICAocHJpbnRVc2FnZVN0YXRlbWVudCk6
CisgICAgICAgIChwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChranNtYWluKToKKwogMjAwOC0w
Ni0wOCAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMzQ0NjIpCisrKyBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3LDcgQEAKIAkJQTdD
MzFEQUEwREJFQkE0MzAwRkRGOEVCIC8qIFNlZ21lbnRlZFZlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdDMzFEQTgwREJFQkE0MzAwRkRGOEVC
IC8qIFNlZ21lbnRlZFZlY3Rvci5oICovOyB9OwogCQlBOEU4OTQzMjBDRDA2MDI0MDAzNjcxNzkg
LyogSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThFODk0MzEwQ0QwNjAyNDAwMzY3MTc5IC8qIEpTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaCAqLzsgfTsKIAkJQThFODk0MzQwQ0QwNjAzRjAwMzY3MTc5IC8q
IEpTR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzhFMDNGNjBE
NzJBOUZDMDA2RkM2MDggLyogbGliZWRpdC4yLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4RTAzRjUwRDcyQTlGQzAwNkZDNjA4IC8qIGxp
YmVkaXQuMi5keWxpYiAqLzsgfTsKIAkJQkM4RjNDRUQwREFGMUE4MDAwNTc3QTgwIC8qIENvbnN0
cnVjdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDOEYzQ0NGMERBRjE3QkEwMDU3N0E4MCAvKiBDb25zdHJ1Y3REYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNGNjU1NTkwQTIwNDk3MTAw
MzhBMTk0IC8qIE1hdGhFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRjY1NTNCMEEyMDQ4REUwMDM4QTE5NCAvKiBNYXRoRXh0cmFzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDIxMjAyMkIw
QUQ0MzEwRDAwRUQ3OUI2IC8qIERhdGVNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZU1hdGgu
aCAqLzsgfTsKQEAgLTU3NCw2ICs1NzUsNyBAQAogCQlBN0MzMURBODBEQkVCQTQzMDBGREY4RUIg
LyogU2VnbWVudGVkVmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNl
Z21lbnRlZFZlY3Rvci5oOyBwYXRoID0gVk0vU2VnbWVudGVkVmVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE4RTg5NDMxMENEMDYwMjQwMDM2NzE3OSAvKiBKU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThF
ODk0MzMwQ0QwNjAzRjAwMzY3MTc5IC8qIEpTR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDOEUwM0Y1MEQ3MkE5RkMwMDZGQzYwOCAvKiBsaWJlZGl0LjIuZHlsaWIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmVkaXQuMi5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xp
YmVkaXQuMi5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQkM4RjNDQ0Yw
REFGMTdCQTAwNTc3QTgwIC8qIENvbnN0cnVjdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29uc3RydWN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0Y2NTUzQjBBMjA0OERFMDAzOEExOTQgLyogTWF0aEV4dHJhcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMjEyMDIyODBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZU1hdGguY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVNYXRoLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY4Niw2ICs2ODgsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTkzMkY1QkVBMDgyMkExQzcwMDczNjk3NSAv
KiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCQzhFMDNG
NjBENzJBOUZDMDA2RkM2MDggLyogbGliZWRpdC4yLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC03NDUsNiArNzQ4LDcgQEAKIAkJCQk1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRh
dGlvbi5mcmFtZXdvcmsgKi8sCiAJCQkJOTMyMkEwMDMwNkMzNDFEMzAwOTA2N0JCIC8qIGxpYmlj
dWNvcmUuZHlsaWIgKi8sCiAJCQkJNTFGMEVDMDcwNUM4NkM5QTAwRTZERjFCIC8qIGxpYm9iamMu
ZHlsaWIgKi8sCisJCQkJQkM4RTAzRjUwRDcyQTlGQzAwNkZDNjA4IC8qIGxpYmVkaXQuMi5keWxp
YiAqLywKIAkJCSk7CiAJCQluYW1lID0gRnJhbWV3b3JrczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkluZGV4OiBranMvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2NvbmZpZy5oCShy
ZXZpc2lvbiAzNDQ2MikKKysrIGtqcy9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2RlZmluZSBIQVZFX0VSUk5PX0ggMQogI2RlZmluZSBIQVZFX01NQVAgMQogI2Rl
ZmluZSBIQVZFX01FUkdFU09SVCAxCisjZGVmaW5lIEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBI
QVZFX1NCUksgMQogI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCiAjZGVmaW5lIEhBVkVfU1lTX1BB
UkFNX0ggMQpJbmRleDoga2pzL3Rlc3RranMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy90ZXN0a2pz
LmNwcAkocmV2aXNpb24gMzQ0NjIpCisrKyBranMvdGVzdGtqcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKIAorI2lmIEhB
VkUoUkVBRExJTkUpCisjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4KKyNlbmRpZgorCiAj
aWYgSEFWRShTWVNfVElNRV9IKQogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKQEAgLTc1
LDYgKzc5LDI0IEBAIHN0YXRpYyBKU1ZhbHVlKiBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiwKIHN0
YXRpYyBKU1ZhbHVlKiBmdW5jdGlvblJlYWRsaW5lKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29u
c3QgTGlzdCYpOwogc3RhdGljIEpTVmFsdWUqIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUqLCBKU09i
amVjdCosIGNvbnN0IExpc3QmKTsKIAorc3RydWN0IE9wdGlvbnMgeworICAgIE9wdGlvbnMoKQor
ICAgICAgICA6IGludGVyYWN0aXZlKGZhbHNlKQorICAgICAgICAsIHByZXR0eVByaW50KGZhbHNl
KQorICAgICAgICAsIGR1bXAoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaW50ZXJh
Y3RpdmU7CisgICAgYm9vbCBwcmV0dHlQcmludDsKKyAgICBib29sIGR1bXA7CisgICAgVmVjdG9y
PFVTdHJpbmc+IGZpbGVOYW1lczsKKyAgICBWZWN0b3I8VVN0cmluZz4gYXJndW1lbnRzOworfTsK
Kworc3RhdGljIGNvbnN0IGNoYXIqIGludGVyYWN0aXZlUHJvbXB0ID0gIj4gIjsKK3N0YXRpYyBj
b25zdCBVU3RyaW5nIGludGVycHJldGVyTmFtZSgiSW50ZXJwcmV0ZXIiKTsKKwogY2xhc3MgU3Rv
cFdhdGNoIHsKIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCk7CkBAIC0yOTIsMTYgKzMxNCwxNCBA
QCBzdGF0aWMgYm9vbCBwcmV0dHlQcmludFNjcmlwdChFeGVjU3RhdGUqCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKGNvbnN0IFZlY3RvcjxVU3RyaW5n
PiYgZmlsZU5hbWVzLCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cywgYm9vbCBwcmV0dHlQcmlu
dCwgYm9vbCBkdW1wKQorc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgZmlsZU5hbWVzLCBib29sIHByZXR0
eVByaW50LCBib29sIGR1bXApCiB7Ci0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBu
ZXcgR2xvYmFsT2JqZWN0KGFyZ3VtZW50cyk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKIAog
ICAgIGlmIChkdW1wKQogICAgICAgICBDb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENv
ZGUodHJ1ZSk7CiAKICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWxlTmFtZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgVVN0cmluZyBmaWxl
TmFtZSA9IGZpbGVOYW1lc1tpXTsKIApAQCAtMzI0LDM2ICszNDQsNzIgQEAgc3RhdGljIGJvb2wg
cnVuV2l0aFNjcmlwdHMoY29uc3QgVmVjdG9yPAogICAgIHJldHVybiBzdWNjZXNzOwogfQogCitz
dGF0aWMgdm9pZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sg
ICAKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICB3aGlsZSAoIWRvbmUpIHsKKyNpZiBIQVZF
X1JFQURMSU5FCisgICAgICAgIGNoYXIqIGxpbmUgPSByZWFkbGluZShpbnRlcmFjdGl2ZVByb21w
dCk7CisgICAgICAgIGlmICghbGluZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAo
bGluZVswXSkKKyAgICAgICAgICAgIGFkZF9oaXN0b3J5KGxpbmUpOworICAgICAgICBDb21wbGV0
aW9uIGNvbXBsZXRpb24gPSBJbnRlcnByZXRlcjo6ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBpbnRlcnByZXRlck5h
bWUsIDEsIGxpbmUpOworICAgICAgICBmcmVlKGxpbmUpOworI2Vsc2UKKyAgICAgICAgcHJpbnRm
KGludGVyYWN0aXZlUHJvbXB0KTsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDI1Nj4gbGluZTsKKyAg
ICAgICAgaW50IGM7CisgICAgICAgIHdoaWxlICgoYyA9IGdldGNoYXIoKSkgIT0gRU9GKSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFsc28gYnJlYWsgb24gXHI/IAorICAgICAg
ICAgICAgaWYgKGMgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGxpbmUuYXBwZW5kKGMpOworICAgICAgICB9CisgICAgICAgIGxpbmUuYXBwZW5kKCdcMCcpOwor
ICAgICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBJbnRlcnByZXRlcjo6ZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigp
LCBpbnRlcnByZXRlck5hbWUsIDEsIGxpbmUuZGF0YSgpKTsKKyNlbmRpZgorICAgICAgICBpZiAo
Y29tcGxldGlvbi5pc1ZhbHVlQ29tcGxldGlvbigpKQorICAgICAgICAgICAgcHJpbnRmKCIlc1xu
IiwgY29tcGxldGlvbi52YWx1ZSgpLT50b1N0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSkuVVRGOFN0cmluZygpLmNfc3RyKCkpOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgcHJpbnRV
c2FnZVN0YXRlbWVudCgpCiB7CiAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogdGVzdGtqcyBb
b3B0aW9uc10gW2ZpbGVzXSBbLS0gYXJndW1lbnRzXVxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIs
ICIgIC1mICBTcGVjaWZpZXMgYSBzb3VyY2UgZmlsZSAoZGVwcmVjYXRlZClcbiIpOwotICAgIGZw
cmludGYoc3RkZXJyLCAiICAtcCAgUHJpbnRzIGZvcm1hdHRlZCBzb3VyY2UgY29kZVxuIik7Ci0g
ICAgZnByaW50ZihzdGRlcnIsICIgIC1kICBEdW1wcyBieXRlY29kZSAoZGVidWcgYnVpbGRzIG9u
bHkpXG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXMgIEluc3RhbGxzIHNpZ25hbCBoYW5k
bGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCAoVW5peCBwbGF0Zm9ybXMgb25seSlcbiIpOworICAg
IGZwcmludGYoc3RkZXJyLCAiICAtZCAgICAgICAgIER1bXBzIGJ5dGVjb2RlIChkZWJ1ZyBidWls
ZHMgb25seSlcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtZiAgICAgICAgIFNwZWNpZmll
cyBhIHNvdXJjZSBmaWxlIChkZXByZWNhdGVkKVxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIg
IC1ofC0taGVscCAgUHJpbnRzIHRoaXMgaGVscCBtZXNzYWdlXG4iKTsKKyAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgLWkgICAgICAgICBFbmFibGVzIGludGVyYWN0aXZlIG1vZGUgKGRlZmF1bHQgaWYg
bm8gZmlsZXMgYXJlIHNwZWNpZmllZClcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtcCAg
ICAgICAgIFByaW50cyBmb3JtYXR0ZWQgc291cmNlIGNvZGVcbiIpOworICAgIGZwcmludGYoc3Rk
ZXJyLCAiICAtcyAgICAgICAgIEluc3RhbGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24g
YSBjcmFzaCAoVW5peCBwbGF0Zm9ybXMgb25seSlcbiIpOwogICAgIGV4aXQoLTEpOwogfQogCi1z
dGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIFZlY3RvcjxV
U3RyaW5nPiYgZmlsZU5hbWVzLCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cywgYm9vbCYgcHJl
dHR5UHJpbnQsIGJvb2wmIGR1bXApCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJn
YywgY2hhcioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKGFyZ2MgPCAyKQot
ICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KCk7Ci0KICAgICBpbnQgaSA9IDE7CiAgICAgZm9y
ICg7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsK
ICAgICAgICAgaWYgKHN0cmNtcChhcmcsICItZiIpID09IDApIHsKICAgICAgICAgICAgIGlmICgr
K2kgPT0gYXJnYykKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KCk7Ci0gICAg
ICAgICAgICBmaWxlTmFtZXMuYXBwZW5kKGFyZ3ZbaV0pOworICAgICAgICAgICAgb3B0aW9ucy5m
aWxlTmFtZXMuYXBwZW5kKGFyZ3ZbaV0pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHN0cmNtcChhcmcsICItaCIpID09IDAgfHwgc3RyY21wKGFyZywgIi0t
aGVscCIpID09IDApIHsKKyAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoc3RyY21wKGFyZywgIi1pIikgPT0gMCkgeworICAgICAgICAgICAg
b3B0aW9ucy5pbnRlcmFjdGl2ZSA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoc3RyY21wKGFyZywgIi1wIikgPT0gMCkgewotICAgICAgICAgICAg
cHJldHR5UHJpbnQgPSB0cnVlOworICAgICAgICAgICAgb3B0aW9ucy5wcmV0dHlQcmludCA9IHRy
dWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc3RyY21w
KGFyZywgIi1kIikgPT0gMCkgewotICAgICAgICAgICAgZHVtcCA9IHRydWU7CisgICAgICAgICAg
ICBvcHRpb25zLmR1bXAgPSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHN0cmNtcChhcmcsICItcyIpID09IDApIHsKQEAgLTM2OSwxNCArNDI1LDE0
IEBAIHN0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGEKICAgICAgICAgICAg
ICsraTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZpbGVOYW1lcy5h
cHBlbmQoYXJndltpXSk7CisgICAgICAgIG9wdGlvbnMuZmlsZU5hbWVzLmFwcGVuZChhcmd2W2ld
KTsKICAgICB9CiAgICAgCi0gICAgaWYgKGZpbGVOYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIHBy
aW50VXNhZ2VTdGF0ZW1lbnQoKTsKKyAgICBpZiAob3B0aW9ucy5maWxlTmFtZXMuaXNFbXB0eSgp
KQorICAgICAgICBvcHRpb25zLmludGVyYWN0aXZlID0gdHJ1ZTsKICAgICAKICAgICBmb3IgKDsg
aSA8IGFyZ2M7ICsraSkKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZChhcmd2W2ldKTsKKyAgICAg
ICAgb3B0aW9ucy5hcmd1bWVudHMuYXBwZW5kKGFyZ3ZbaV0pOwogfQogCiBpbnQga2pzbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCkBAIC0zODUsMTMgKzQ0MSwxMyBAQCBpbnQga2pzbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICBKU0xvY2sgbG9jazsKIAotICAgIGJvb2wgcHJl
dHR5UHJpbnQgPSBmYWxzZTsKLSAgICBib29sIGR1bXAgPSBmYWxzZTsKLSAgICBWZWN0b3I8VVN0
cmluZz4gZmlsZU5hbWVzOwotICAgIFZlY3RvcjxVU3RyaW5nPiBhcmd1bWVudHM7Ci0gICAgcGFy
c2VBcmd1bWVudHMoYXJnYywgYXJndiwgZmlsZU5hbWVzLCBhcmd1bWVudHMsIHByZXR0eVByaW50
LCBkdW1wKTsKKyAgICBPcHRpb25zIG9wdGlvbnM7CisgICAgcGFyc2VBcmd1bWVudHMoYXJnYywg
YXJndiwgb3B0aW9ucyk7CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBydW5XaXRoU2NyaXB0cyhmaWxl
TmFtZXMsIGFyZ3VtZW50cywgcHJldHR5UHJpbnQsIGR1bXApOworICAgIEdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbmV3IEdsb2JhbE9iamVjdChvcHRpb25zLmFyZ3VtZW50cyk7CisgICAg
Ym9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLmZpbGVO
YW1lcywgb3B0aW9ucy5wcmV0dHlQcmludCwgb3B0aW9ucy5kdW1wKTsKKyAgICBpZiAob3B0aW9u
cy5pbnRlcmFjdGl2ZSAmJiBzdWNjZXNzKQorICAgICAgICBydW5JbnRlcmFjdGl2ZShnbG9iYWxP
YmplY3QpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIENvbGxlY3Rvcjo6Y29sbGVjdCgpOwo=
</data>
<flag name="review"
          id="9469"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>