<?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>34439</bug_id>
          
          <creation_ts>2010-02-01 11:10:24 -0800</creation_ts>
          <short_desc>webkit-patch does not prompt username if the default one is incorrect</short_desc>
          <delta_ts>2010-02-23 01:31:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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="Victor Wang">victorw</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>186490</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-02-01 11:10:24 -0800</bug_when>
    <thetext>webkit-patch grabs and shows a default user name when landing a patch. If the default one is incorrect, it should prompt user to change it.
It would be also nice if the script supports a &quot;username&quot; command line option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186555</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-01 13:42:07 -0800</bug_when>
    <thetext>I&apos;m not sure what the &quot;default&quot; username is.

And is this for bugzilla or svn?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186557</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-01 13:46:07 -0800</bug_when>
    <thetext>Not sure if this bug is related, but I can confirm that for svn, unless you have initially checked out the repo. with a username or committed a change by hand (and overridden the username with the --username flag) then the default username is the login username.

(In reply to comment #1)
&gt; I&apos;m not sure what the &quot;default&quot; username is.
&gt; 
&gt; And is this for bugzilla or svn?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186581</commentid>
    <comment_count>3</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-02-01 15:00:10 -0800</bug_when>
    <thetext>This is for svn.

Agree with Daniel, sounds like the default username is from the login username. In this bug, I am more concerning about webkit-patch does not prompt &quot;username&quot; option if the one it tries is incorrect. I would like to be able to specify a username when I run the script or enter the right one if the one the script is using is incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188105</commentid>
    <comment_count>4</comment_count>
      <attachid>48209</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-05 00:20:02 -0800</bug_when>
    <thetext>Created attachment 48209
Patch with unit tests

I am open to suggestions on better names for methods and variables as well as suggestions on the approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188542</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-07 19:07:40 -0800</bug_when>
    <thetext>The code around raw_input should be in the user.py module.  Maybe add a retry option to prompt() somehow?  I think we have a similar idiom in bugzilla.py for the bugzilla password that should use the same code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188582</commentid>
    <comment_count>6</comment_count>
      <attachid>48209</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-08 00:16:38 -0800</bug_when>
    <thetext>Comment on attachment 48209
Patch with unit tests

Will look into factoring the code based on Adam&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191612</commentid>
    <comment_count>7</comment_count>
      <attachid>49015</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-18 08:17:14 -0800</bug_when>
    <thetext>Created attachment 49015
Patch with unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192093</commentid>
    <comment_count>8</comment_count>
      <attachid>49015</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-19 16:18:58 -0800</bug_when>
    <thetext>Comment on attachment 49015
Patch with unit tests

I would have made this generic:
 307     def has_webkit_authorization_file(home_directory=os.getenv(&quot;HOME&quot;)):

not webkit-specific.  Or at least have a generic version.  Since it looks at the values from SVN itself, it seems no need to have _webkit_ in the name.  It could use those values as default values to arguments passed to it.

I would have written this using List.extend:
373             svn_commit_args.append(&apos;--username&apos;)
 374             svn_commit_args.append(username)
svn_commit_args.extend([&quot;--username&quot;, username])

I think we&apos;re trying to standardize on &quot; instead of &apos; anyway.  You can ask Adam for more infos.

Making this static just makes it harder to mock/unit test:
6     @staticmethod
 307     def has_webkit_authorization_file(home_directory=os.getenv(&quot;HOME&quot;)):

I suggest not making it static.

Otherwise I think this looks OK.

Clearly we don&apos;t have any unit testing of the actual commit, since the SVN.has_webkit_authorization_file call would actually be hitting disk for the real auth file in those cases!

r- for the above nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192094</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-19 16:20:34 -0800</bug_when>
    <thetext>     svn_server_realm = &quot;&lt;http://svn.webkit.org:80&gt; Mac OS Forge&quot;
 261     svn_server_host = &quot;svn.webkit.org&quot;
Should just be instance variables.  They can have some class-level defaults if you like.  But eventually we really need some sort of webkit_config.py module which holds all this webkit-specific stuff.  Not that we ever plan to re-use webkit-patch for some other project, but it makes things read cleaner if we have all the webkit-specifc config in as few places as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192124</commentid>
    <comment_count>10</comment_count>
      <attachid>49114</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-19 17:27:20 -0800</bug_when>
    <thetext>Created attachment 49114
Patch with unit tests

Updated patch based on Eric&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192577</commentid>
    <comment_count>11</comment_count>
      <attachid>49114</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-22 13:03:53 -0800</bug_when>
    <thetext>Comment on attachment 49114
Patch with unit tests

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192832</commentid>
    <comment_count>12</comment_count>
      <attachid>49114</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-23 01:31:09 -0800</bug_when>
    <thetext>Comment on attachment 49114
Patch with unit tests

Clearing flags on attachment: 49114

Committed r55131: &lt;http://trac.webkit.org/changeset/55131&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192833</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-23 01:31:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48209</attachid>
            <date>2010-02-05 00:20:02 -0800</date>
            <delta_ts>2010-02-18 08:17:14 -0800</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug34439.patch</filename>
            <type>text/plain</type>
            <size>7092</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU0NDExKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMDQgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDQzOQor
CisgICAgICAgIFByb21wdHMgYSBwZXJzb24gZm9yIHRoZWlyIFNWTiB1c2VybmFtZSBpZiBub3Qg
YWxyZWFkeSBjYWNoZWQgKGJ5IFN1YnZlcnNpb24pLgorCisgICAgICAgIEN1cnJlbnRseSwgd2Vi
a2l0LXBhdGNoIGlzIHVuYWJsZSB0byBjb21taXQgdG8gdGhlIFNWTiByZXBvLiB1bmxlc3MgdGhl
CisgICAgICAgIFdlYktpdCBTVk4gdXNlcm5hbWUgaXMgYWxyZWFkeSBjYWNoZWQgKGZyb20gb2Yg
YSBwcmlvciBjb21taXQgYnkgaGFuZCkKKyAgICAgICAgYmVjYXVzZSAic3ZuIGNvbW1pdCIgKGNh
bGxlZCBieSB3ZWJraXQtcGF0Y2gpIGRlZmF1bHRzIHRvIHVzaW5nIHRoZSBzeXN0ZW0KKyAgICAg
ICAgbG9naW4gbmFtZSB1bmxlc3MgdGhlIHVzZXJuYW1lIGlzIGFscmVhZHkgY2FjaGVkIG9yIHNw
ZWNpZmllZCBvbiB0aGUKKyAgICAgICAgY29tbWFuZCBsaW5lLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zY20ucHk6IEFkZGVkIG1ldGhvZHMgU1ZOLmhhc193ZWJraXRfYXV0aG9yaXph
dGlvbl9maWxlIGFuZAorICAgICAgICBtb2RpZmllZCBTVk4uY29tbWl0X3dpdGhfbWVzc2FnZSB0
byBjYWxsIGl0LiBBZGRlZCBvcHRpb25hbCB1c2VybmFtZSBwYXJhbWV0ZXIKKyAgICAgICAgdG8g
bWV0aG9kIFNWTi5jb21taXRfd2l0aF9tZXNzYWdlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvc2NtX3VuaXR0ZXN0LnB5OiBBZGRlZCB1bml0IHRlc3QgbWV0aG9kczogU1ZOVGVzdC50ZXN0
X2NvbW1pdF93aXRoX3VzZXJuYW1lLAorICAgICAgICBTVk5UZXN0LnRlc3RfaGFzX3dlYmtpdF9h
dXRob3JpemF0aW9uX2ZpbGUsIGFuZCBTVk5UZXN0LnRlc3Rfbm90X2hhdmVfd2Via2l0X2F1dGhv
cml6YXRpb25fZmlsZS4KKwogMjAxMC0wMi0wNCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc2NtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc2NtLnB5CShyZXZpc2lvbiA1NDQwOSkKKysrIFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDggQEAg
Y2xhc3MgU0NNOgogCiAKIGNsYXNzIFNWTihTQ00pOgorICAgIHdlYmtpdF9zdm5fcmVhbG1fc3Ry
aW5nID0gIjxodHRwOi8vc3ZuLndlYmtpdC5vcmc6ODA+IE1hYyBPUyBGb3JnZSIKKwogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBjd2QsIGRyeXJ1bj1GYWxzZSk6CiAgICAgICAgIFNDTS5fX2luaXRf
XyhzZWxmLCBjd2QsIGRyeXJ1bikKICAgICAgICAgc2VsZi5jYWNoZWRfdmVyc2lvbiA9IE5vbmUK
QEAgLTI5OSw2ICszMDEsMTUgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgZGVmIGNvbW1pdF9zdWNj
ZXNzX3JlZ2V4cCgpOgogICAgICAgICByZXR1cm4gIl5Db21taXR0ZWQgcmV2aXNpb24gKD9QPHN2
bl9yZXZpc2lvbj5cZCspXC4kIgogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBoYXNfd2Vi
a2l0X2F1dGhvcml6YXRpb25fZmlsZShob21lX2RpcmVjdG9yeT1vcy5nZXRlbnYoIkhPTUUiKSk6
CisgICAgICAgICMgQXNzdW1lcyB3ZSBoYXZlIGZpbmQgYW5kIGdyZXAgaW5zdGFsbGVkLgorICAg
ICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oaG9tZV9kaXJlY3RvcnksICcu
c3VidmVyc2lvbicpKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBmaW5kX2Fy
Z3MgPSBbJ2ZpbmQnLCAnLnN1YnZlcnNpb24nLCAnLXR5cGUnLCAnZicsICctZXhlYycsICdncmVw
JywgJy1xJywgU1ZOLndlYmtpdF9zdm5fcmVhbG1fc3RyaW5nLCAne30nLCAnOycsICctcHJpbnQn
XTsKKyAgICAgICAgZmluZF9vdXRwdXQgPSBydW5fY29tbWFuZChmaW5kX2FyZ3MsIGN3ZD1ob21l
X2RpcmVjdG9yeSwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKS5yc3RyaXAo
KQorICAgICAgICByZXR1cm4gZmluZF9vdXRwdXQgYW5kIG9zLnBhdGguaXNmaWxlKG9zLnBhdGgu
am9pbihob21lX2RpcmVjdG9yeSwgZmluZF9vdXRwdXQpKQorCiAgICAgZGVmIHN2bl92ZXJzaW9u
KHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5jYWNoZWRfdmVyc2lvbjoKICAgICAgICAgICAg
IHNlbGYuY2FjaGVkX3ZlcnNpb24gPSBydW5fY29tbWFuZChbJ3N2bicsICctLXZlcnNpb24nLCAn
LS1xdWlldCddKQpAQCAtMzQ3LDExICszNTgsMjUgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgZGVm
IHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydz
dm4nLCAncmV2ZXJ0J10gKyBmaWxlX3BhdGhzKQogCi0gICAgZGVmIGNvbW1pdF93aXRoX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSk6CisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVz
c2FnZSwgdXNlcm5hbWUpOgogICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKICAgICAgICAgICAgICMg
UmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mg
d2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgogICAgICAgICAgICAgcmV0dXJu
ICJEcnkgcnVuLCBubyBjb21taXQuXG5Db21taXR0ZWQgcmV2aXNpb24gMC4iCi0gICAgICAgIHJl
dHVybiBydW5fY29tbWFuZChbJ3N2bicsICdjb21taXQnLCAnLW0nLCBtZXNzYWdlXSwgZXJyb3Jf
aGFuZGxlcj1jb21taXRfZXJyb3JfaGFuZGxlcikKKyAgICAgICAgc3ZuX2NvbW1pdF9hcmdzID0g
Wydzdm4nLCAnY29tbWl0J10KKyAgICAgICAgaWYgbm90IHVzZXJuYW1lIGFuZCBub3Qgc2VsZi5o
YXNfd2Via2l0X2F1dGhvcml6YXRpb25fZmlsZSgpOgorICAgICAgICAgICAgYXR0ZW1wdHMgPSAw
CisgICAgICAgICAgICB3aGlsZSBub3QgdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgYXR0ZW1w
dHMgKz0gMQorICAgICAgICAgICAgICAgIHVzZXJuYW1lID0gcmF3X2lucHV0KCJTVk4gbG9naW46
ICIpCisgICAgICAgICAgICAgICAgaWYgYXR0ZW1wdHMgPj0gNToKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCJZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBTdWJ2ZXJzaW9uIHVz
ZXJuYW1lIHRvIHBlcmZvcm0gdGhlIGNvbW1pdCBhcy4iKQorICAgICAgICBpZiB1c2VybmFtZToK
KyAgICAgICAgICAgIHN2bl9jb21taXRfYXJncy5hcHBlbmQoJy0tdXNlcm5hbWUnKQorICAgICAg
ICAgICAgc3ZuX2NvbW1pdF9hcmdzLmFwcGVuZCh1c2VybmFtZSkKKworICAgICAgICBzdm5fY29t
bWl0X2FyZ3MuYXBwZW5kKCctbScpCisgICAgICAgIHN2bl9jb21taXRfYXJncy5hcHBlbmQobWVz
c2FnZSkKKyAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKHN2bl9jb21taXRfYXJncywgZXJyb3Jf
aGFuZGxlcj1jb21taXRfZXJyb3JfaGFuZGxlcikKIAogICAgIGRlZiBzdm5fY29tbWl0X2xvZyhz
ZWxmLCBzdm5fcmV2aXNpb24pOgogICAgICAgICBzdm5fcmV2aXNpb24gPSBzZWxmLnN0cmlwX3Jf
ZnJvbV9zdm5fcmV2aXNpb24oc3RyKHN2bl9yZXZpc2lvbikpCkluZGV4OiBXZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3NjbV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3NjbV91bml0dGVzdC5weQkocmV2aXNpb24gNTQ0MDkpCisrKyBX
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3NjbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMzksNyArMzksNyBAQCBpbXBvcnQgdXJsbGliCiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0
IGRhdGUKIGZyb20gd2Via2l0cHkuZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIHJ1bl9jb21t
YW5kLCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJraXRweS5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lz
dGVtLCBTQ00sIENoZWNrb3V0TmVlZHNVcGRhdGUsIGNvbW1pdF9lcnJvcl9oYW5kbGVyCitmcm9t
IHdlYmtpdHB5LnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNDTSwgU1ZOLCBDaGVja291
dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlcgogZnJvbSB3ZWJraXRweS5idWd6aWxs
YSBpbXBvcnQgQXR0YWNobWVudCAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiAK
ICMgRXZlbnR1YWxseSB3ZSB3aWxsIHdhbnQgdG8gd3JpdGUgdGVzdHMgd2hpY2ggd29yayBmb3Ig
Ym90aCBzY21zLiAobGlrZSB1cGRhdGVfd2Via2l0LCBjaGFuZ2VkX2ZpbGVzLCBldGMuKQpAQCAt
MTgwLDE0ICsxODAsMTQgQEAgY2xhc3MgU0NNVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAg
ICAjIFRlc3RzIHdoaWNoIGJvdGggR2l0VGVzdCBhbmQgU1ZOVGVzdCBzaG91bGQgcnVuLgogICAg
ICMgRklYTUU6IFRoZXJlIG11c3QgYmUgYSBzaW1wbGVyIHdheSB0byBhZGQgdGhlc2Ugdy9vIGFk
ZGluZyBhIHdyYXBwZXIgbWV0aG9kIHRvIGJvdGggc3ViY2xhc3NlcwotICAgIGRlZiBfc2hhcmVk
X3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmKToKKyAgICBkZWYgX3NoYXJlZF90ZXN0X2Nv
bW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgdXNlcm5hbWUpOgogICAgICAgICB3cml0ZV9pbnRvX2Zp
bGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgY29t
bWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCdhbm90aGVyIHRlc3QgY29t
bWl0JykKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdl
KCdhbm90aGVyIHRlc3QgY29tbWl0JywgdXNlcm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAn
NScpCiAKICAgICAgICAgc2VsZi5zY20uZHJ5cnVuID0gVHJ1ZQogICAgICAgICB3cml0ZV9pbnRv
X2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKLSAg
ICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCd5ZXQgYW5v
dGhlciB0ZXN0IGNvbW1pdCcpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0
X3dpdGhfbWVzc2FnZSgneWV0IGFub3RoZXIgdGVzdCBjb21taXQnLCB1c2VybmFtZSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4
dChjb21taXRfdGV4dCksICcwJykKIAogICAgIGRlZiBfc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZm
KHNlbGYpOgpAQCAtNDU5LDYgKzQ1OSwyOCBAQCBRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TURE
eU9ETXhNRHczNEdCCiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToKICAg
ICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSgpCiAKKyAgICBkZWYg
dGVzdF9jb21taXRfd2l0aF91c2VybmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5fc2hhcmVkX3Rl
c3RfY29tbWl0X3dpdGhfbWVzc2FnZSgnZGJhdGVzQHdlYmtpdC5vcmcnKQorCisgICAgZGVmIHRl
c3RfaGFzX3dlYmtpdF9hdXRob3JpemF0aW9uX2ZpbGUoc2VsZik6CisgICAgICAgIGZha2VfaG9t
ZV9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0iZmFrZV9ob21lX2RpciIpCisgICAgICAg
IHN2bl9jb25maWdfZGlyX3BhdGggPSBvcy5wYXRoLmpvaW4oZmFrZV9ob21lX2RpciwgJy5zdWJ2
ZXJzaW9uJykKKyAgICAgICAgb3MubWtkaXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkKKyAgICAgICAg
ZmFrZV93ZWJraXRfYXV0aF9maWxlID0gb3MucGF0aC5qb2luKHN2bl9jb25maWdfZGlyX3BhdGgs
ICdmYWtlX3dlYmtpdF9hdXRoX2ZpbGUnKQorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0
aChmYWtlX3dlYmtpdF9hdXRoX2ZpbGUsIFNWTi53ZWJraXRfc3ZuX3JlYWxtX3N0cmluZykKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKFNWTi5oYXNfd2Via2l0X2F1dGhvcml6YXRpb25fZmlsZShm
YWtlX2hvbWVfZGlyKSkKKyAgICAgICAgb3MucmVtb3ZlKGZha2Vfd2Via2l0X2F1dGhfZmlsZSkK
KyAgICAgICAgb3Mucm1kaXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkKKyAgICAgICAgb3Mucm1kaXIo
ZmFrZV9ob21lX2RpcikKKworICAgIGRlZiB0ZXN0X25vdF9oYXZlX3dlYmtpdF9hdXRob3JpemF0
aW9uX2ZpbGUoc2VsZik6CisgICAgICAgIGZha2VfaG9tZV9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1w
KHN1ZmZpeD0iZmFrZV9ob21lX2RpciIpCisgICAgICAgIHN2bl9jb25maWdfZGlyX3BhdGggPSBv
cy5wYXRoLmpvaW4oZmFrZV9ob21lX2RpciwgJy5zdWJ2ZXJzaW9uJykKKyAgICAgICAgb3MubWtk
aXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShTVk4uaGFz
X3dlYmtpdF9hdXRob3JpemF0aW9uX2ZpbGUoZmFrZV9ob21lX2RpcikpCisgICAgICAgIG9zLnJt
ZGlyKHN2bl9jb25maWdfZGlyX3BhdGgpCisgICAgICAgIG9zLnJtZGlyKGZha2VfaG9tZV9kaXIp
CisKICAgICBkZWYgdGVzdF9yZXZlcnNlX2RpZmYoc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJl
ZF90ZXN0X3JldmVyc2VfZGlmZigpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49015</attachid>
            <date>2010-02-18 08:17:14 -0800</date>
            <delta_ts>2010-02-19 17:27:20 -0800</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug34439_1.patch</filename>
            <type>text/plain</type>
            <size>7338</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU0NjkzKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMTEgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDQzOQorCisg
ICAgICAgIFByb21wdHMgYSBwZXJzb24gZm9yIHRoZWlyIFNWTiB1c2VybmFtZSBpZiBub3QgYWxy
ZWFkeSBjYWNoZWQgKGJ5IFN1YnZlcnNpb24pLgorCisgICAgICAgIEN1cnJlbnRseSwgd2Via2l0
LXBhdGNoIGlzIHVuYWJsZSB0byBjb21taXQgdG8gdGhlIFNWTiByZXBvLiB1bmxlc3MgdGhlCisg
ICAgICAgIFdlYktpdCBTVk4gdXNlcm5hbWUgaXMgYWxyZWFkeSBjYWNoZWQgKGZyb20gb2YgYSBw
cmlvciBjb21taXQgYnkgaGFuZCkKKyAgICAgICAgYmVjYXVzZSAic3ZuIGNvbW1pdCIgKGNhbGxl
ZCBieSB3ZWJraXQtcGF0Y2gpIGRlZmF1bHRzIHRvIHVzaW5nIHRoZSBzeXN0ZW0KKyAgICAgICAg
bG9naW4gbmFtZSB1bmxlc3MgdGhlIHVzZXJuYW1lIGlzIGFscmVhZHkgY2FjaGVkIG9yIHNwZWNp
ZmllZCBvbiB0aGUKKyAgICAgICAgY29tbWFuZCBsaW5lLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zY20ucHk6IEFkZGVkIG1ldGhvZHMgU1ZOLmhhc193ZWJraXRfYXV0aG9yaXphdGlv
bl9maWxlIGFuZAorICAgICAgICBtb2RpZmllZCBTVk4uY29tbWl0X3dpdGhfbWVzc2FnZSB0byBj
YWxsIGl0LiBBZGRlZCBvcHRpb25hbCB1c2VybmFtZSBwYXJhbWV0ZXIKKyAgICAgICAgdG8gbWV0
aG9kIFNWTi5jb21taXRfd2l0aF9tZXNzYWdlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c2NtX3VuaXR0ZXN0LnB5OiBBZGRlZCB1bml0IHRlc3QgbWV0aG9kczogU1ZOVGVzdC50ZXN0X2Nv
bW1pdF93aXRoX3VzZXJuYW1lLAorICAgICAgICBTVk5UZXN0LnRlc3RfaGFzX3dlYmtpdF9hdXRo
b3JpemF0aW9uX2ZpbGUsIGFuZCBTVk5UZXN0LnRlc3Rfbm90X2hhdmVfd2Via2l0X2F1dGhvcml6
YXRpb25fZmlsZS4KKwogMjAxMC0wMi0xMSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc2NtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc2NtLnB5CShyZXZpc2lvbiA1NDY5MikKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc2NtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIGltcG9ydCBz
dWJwcm9jZXNzCiAjIEltcG9ydCBXZWJLaXQtc3BlY2lmaWMgbW9kdWxlcy4KIGZyb20gd2Via2l0
cHkuY2hhbmdlbG9ncyBpbXBvcnQgQ2hhbmdlTG9nCiBmcm9tIHdlYmtpdHB5LmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHku
dXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRweS53ZWJraXRfbG9nZ2luZyBpbXBvcnQgZXJy
b3IsIGxvZwogCiBkZWYgZGV0ZWN0X3NjbV9zeXN0ZW0ocGF0aCk6CkBAIC0yNTYsNiArMjU3LDkg
QEAgY2xhc3MgU0NNOgogCiAKIGNsYXNzIFNWTihTQ00pOgorICAgIHN2bl9zZXJ2ZXJfcmVhbG0g
PSAiPGh0dHA6Ly9zdm4ud2Via2l0Lm9yZzo4MD4gTWFjIE9TIEZvcmdlIgorICAgIHN2bl9zZXJ2
ZXJfaG9zdCA9ICJzdm4ud2Via2l0Lm9yZyIKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjd2Qs
IGRyeXJ1bj1GYWxzZSk6CiAgICAgICAgIFNDTS5fX2luaXRfXyhzZWxmLCBjd2QsIGRyeXJ1bikK
ICAgICAgICAgc2VsZi5jYWNoZWRfdmVyc2lvbiA9IE5vbmUKQEAgLTI5OSw2ICszMDMsMTUgQEAg
Y2xhc3MgU1ZOKFNDTSk6CiAgICAgZGVmIGNvbW1pdF9zdWNjZXNzX3JlZ2V4cCgpOgogICAgICAg
ICByZXR1cm4gIl5Db21taXR0ZWQgcmV2aXNpb24gKD9QPHN2bl9yZXZpc2lvbj5cZCspXC4kIgog
CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBoYXNfd2Via2l0X2F1dGhvcml6YXRpb25fZmls
ZShob21lX2RpcmVjdG9yeT1vcy5nZXRlbnYoIkhPTUUiKSk6CisgICAgICAgICMgQXNzdW1lcyB3
ZSBoYXZlIGZpbmQgYW5kIGdyZXAgaW5zdGFsbGVkLgorICAgICAgICBpZiBub3Qgb3MucGF0aC5p
c2Rpcihvcy5wYXRoLmpvaW4oaG9tZV9kaXJlY3RvcnksICcuc3VidmVyc2lvbicpKToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBmaW5kX2FyZ3MgPSBbJ2ZpbmQnLCAnLnN1YnZl
cnNpb24nLCAnLXR5cGUnLCAnZicsICctZXhlYycsICdncmVwJywgJy1xJywgU1ZOLnN2bl9zZXJ2
ZXJfcmVhbG0sICd7fScsICc7JywgJy1wcmludCddOworICAgICAgICBmaW5kX291dHB1dCA9IHJ1
bl9jb21tYW5kKGZpbmRfYXJncywgY3dkPWhvbWVfZGlyZWN0b3J5LCBlcnJvcl9oYW5kbGVyPUV4
ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpLnJzdHJpcCgpCisgICAgICAgIHJldHVybiBmaW5kX291dHB1
dCBhbmQgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvbWVfZGlyZWN0b3J5LCBmaW5kX291
dHB1dCkpCisKICAgICBkZWYgc3ZuX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxm
LmNhY2hlZF92ZXJzaW9uOgogICAgICAgICAgICAgc2VsZi5jYWNoZWRfdmVyc2lvbiA9IHJ1bl9j
b21tYW5kKFsnc3ZuJywgJy0tdmVyc2lvbicsICctLXF1aWV0J10pCkBAIC0zNDcsMTEgKzM2MCwy
MiBAQCBjbGFzcyBTVk4oU0NNKToKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0
aHMpOgogICAgICAgICBydW5fY29tbWFuZChbJ3N2bicsICdyZXZlcnQnXSArIGZpbGVfcGF0aHMp
CiAKLSAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKKyAgICBkZWYg
Y29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZSk6CiAgICAgICAgIGlm
IHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3Mg
bGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxs
IHN1Y2NlZWQuCiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIGNvbW1pdC5cbkNvbW1p
dHRlZCByZXZpc2lvbiAwLiIKLSAgICAgICAgcmV0dXJuIHJ1bl9jb21tYW5kKFsnc3ZuJywgJ2Nv
bW1pdCcsICctbScsIG1lc3NhZ2VdLCBlcnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5kbGVy
KQorICAgICAgICBzdm5fY29tbWl0X2FyZ3MgPSBbJ3N2bicsICdjb21taXQnXQorICAgICAgICBp
ZiBub3QgdXNlcm5hbWUgYW5kIG5vdCBzZWxmLmhhc193ZWJraXRfYXV0aG9yaXphdGlvbl9maWxl
KCk6CisgICAgICAgICAgICB1c2VybmFtZSA9IFVzZXIucHJvbXB0KCIlcyBsb2dpbjogIiAlIHN2
bl9zZXJ2ZXJfaG9zdCwgcmVwZWF0PTUpCisgICAgICAgICAgICBpZiBub3QgdXNlcm5hbWU6Cisg
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZSB1
c2VybmFtZSBvbiAlcyB0byBwZXJmb3JtIHRoZSBjb21taXQgYXMuIiAlIHN2bl9zZXJ2ZXJfaG9z
dCkKKyAgICAgICAgaWYgdXNlcm5hbWU6CisgICAgICAgICAgICBzdm5fY29tbWl0X2FyZ3MuYXBw
ZW5kKCctLXVzZXJuYW1lJykKKyAgICAgICAgICAgIHN2bl9jb21taXRfYXJncy5hcHBlbmQodXNl
cm5hbWUpCisKKyAgICAgICAgc3ZuX2NvbW1pdF9hcmdzLmFwcGVuZCgnLW0nKQorICAgICAgICBz
dm5fY29tbWl0X2FyZ3MuYXBwZW5kKG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBydW5fY29tbWFu
ZChzdm5fY29tbWl0X2FyZ3MsIGVycm9yX2hhbmRsZXI9Y29tbWl0X2Vycm9yX2hhbmRsZXIpCiAK
ICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKICAgICAgICAgc3Zu
X3JldmlzaW9uID0gc2VsZi5zdHJpcF9yX2Zyb21fc3ZuX3JldmlzaW9uKHN0cihzdm5fcmV2aXNp
b24pKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zY21fdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zY21fdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDU0NjkyKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zY21f
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgaW1wb3J0IHVybGxp
YgogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCiBmcm9tIHdlYmtpdHB5LmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHku
c2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwgU0NNLCBDaGVja291dE5lZWRzVXBkYXRlLCBj
b21taXRfZXJyb3JfaGFuZGxlcgorZnJvbSB3ZWJraXRweS5zY20gaW1wb3J0IGRldGVjdF9zY21f
c3lzdGVtLCBTQ00sIFNWTiwgQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRs
ZXIKIGZyb20gd2Via2l0cHkuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQgIyBGSVhNRTogVGhp
cyBzaG91bGQgbm90IGJlIG5lZWRlZAogCiAjIEV2ZW50dWFsbHkgd2Ugd2lsbCB3YW50IHRvIHdy
aXRlIHRlc3RzIHdoaWNoIHdvcmsgZm9yIGJvdGggc2Ntcy4gKGxpa2UgdXBkYXRlX3dlYmtpdCwg
Y2hhbmdlZF9maWxlcywgZXRjLikKQEAgLTE4MCwxNCArMTgwLDE0IEBAIGNsYXNzIFNDTVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBUZXN0cyB3aGljaCBib3RoIEdpdFRlc3QgYW5k
IFNWTlRlc3Qgc2hvdWxkIHJ1bi4KICAgICAjIEZJWE1FOiBUaGVyZSBtdXN0IGJlIGEgc2ltcGxl
ciB3YXkgdG8gYWRkIHRoZXNlIHcvbyBhZGRpbmcgYSB3cmFwcGVyIG1ldGhvZCB0byBib3RoIHN1
YmNsYXNzZXMKLSAgICBkZWYgX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZik6
CisgICAgZGVmIF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIHVzZXJuYW1l
KToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdtb3JlIHRl
c3QgY29udGVudCcpCi0gICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0X3dpdGhf
bWVzc2FnZSgnYW5vdGhlciB0ZXN0IGNvbW1pdCcpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2Vs
Zi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgnYW5vdGhlciB0ZXN0IGNvbW1pdCcsIHVzZXJuYW1l
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2Nv
bW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQogCiAgICAgICAgIHNlbGYuc2NtLmRyeXJ1biA9
IFRydWUKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdzdGls
bCBtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29t
bWl0X3dpdGhfbWVzc2FnZSgneWV0IGFub3RoZXIgdGVzdCBjb21taXQnKQorICAgICAgICBjb21t
aXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoJ3lldCBhbm90aGVyIHRlc3Qg
Y29tbWl0JywgdXNlcm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3Zu
X3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcpCiAKICAgICBkZWYg
X3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKQEAgLTQ1OSw2ICs0NTksMjggQEAgUTFk
VEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQgogICAgIGRlZiB0ZXN0X2NvbW1p
dF90ZXh0X3BhcnNpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93
aXRoX21lc3NhZ2UoKQogCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfdXNlcm5hbWUoc2VsZik6
CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UoJ2RiYXRlc0B3
ZWJraXQub3JnJykKKworICAgIGRlZiB0ZXN0X2hhc193ZWJraXRfYXV0aG9yaXphdGlvbl9maWxl
KHNlbGYpOgorICAgICAgICBmYWtlX2hvbWVfZGlyID0gdGVtcGZpbGUubWtkdGVtcChzdWZmaXg9
ImZha2VfaG9tZV9kaXIiKQorICAgICAgICBzdm5fY29uZmlnX2Rpcl9wYXRoID0gb3MucGF0aC5q
b2luKGZha2VfaG9tZV9kaXIsICcuc3VidmVyc2lvbicpCisgICAgICAgIG9zLm1rZGlyKHN2bl9j
b25maWdfZGlyX3BhdGgpCisgICAgICAgIGZha2Vfd2Via2l0X2F1dGhfZmlsZSA9IG9zLnBhdGgu
am9pbihzdm5fY29uZmlnX2Rpcl9wYXRoLCAnZmFrZV93ZWJraXRfYXV0aF9maWxlJykKKyAgICAg
ICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoZmFrZV93ZWJraXRfYXV0aF9maWxlLCBTVk4uc3Zu
X3NlcnZlcl9yZWFsbSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFNWTi5oYXNfd2Via2l0X2F1
dGhvcml6YXRpb25fZmlsZShmYWtlX2hvbWVfZGlyKSkKKyAgICAgICAgb3MucmVtb3ZlKGZha2Vf
d2Via2l0X2F1dGhfZmlsZSkKKyAgICAgICAgb3Mucm1kaXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkK
KyAgICAgICAgb3Mucm1kaXIoZmFrZV9ob21lX2RpcikKKworICAgIGRlZiB0ZXN0X25vdF9oYXZl
X3dlYmtpdF9hdXRob3JpemF0aW9uX2ZpbGUoc2VsZik6CisgICAgICAgIGZha2VfaG9tZV9kaXIg
PSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0iZmFrZV9ob21lX2RpciIpCisgICAgICAgIHN2bl9j
b25maWdfZGlyX3BhdGggPSBvcy5wYXRoLmpvaW4oZmFrZV9ob21lX2RpciwgJy5zdWJ2ZXJzaW9u
JykKKyAgICAgICAgb3MubWtkaXIoc3ZuX2NvbmZpZ19kaXJfcGF0aCkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShTVk4uaGFzX3dlYmtpdF9hdXRob3JpemF0aW9uX2ZpbGUoZmFrZV9ob21lX2Rp
cikpCisgICAgICAgIG9zLnJtZGlyKHN2bl9jb25maWdfZGlyX3BhdGgpCisgICAgICAgIG9zLnJt
ZGlyKGZha2VfaG9tZV9kaXIpCisKICAgICBkZWYgdGVzdF9yZXZlcnNlX2RpZmYoc2VsZik6CiAg
ICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZigpCiAK
</data>
<flag name="review"
          id="31772"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49114</attachid>
            <date>2010-02-19 17:27:20 -0800</date>
            <delta_ts>2010-02-23 01:31:09 -0800</delta_ts>
            <desc>Patch with unit tests</desc>
            <filename>Bug34439_2.patch</filename>
            <type>text/plain</type>
            <size>7486</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU0OTk3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMTkgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDQzOQorCisg
ICAgICAgIFByb21wdHMgYSBwZXJzb24gZm9yIHRoZWlyIFNWTiB1c2VybmFtZSBpZiBub3QgYWxy
ZWFkeSBjYWNoZWQgKGJ5IFN1YnZlcnNpb24pLgorCisgICAgICAgIEN1cnJlbnRseSwgd2Via2l0
LXBhdGNoIGlzIHVuYWJsZSB0byBjb21taXQgdG8gdGhlIFNWTiByZXBvLiB1bmxlc3MgdGhlCisg
ICAgICAgIFdlYktpdCBTVk4gdXNlcm5hbWUgaXMgYWxyZWFkeSBjYWNoZWQgKGZyb20gb2YgYSBw
cmlvciBjb21taXQgYnkgaGFuZCkKKyAgICAgICAgYmVjYXVzZSAic3ZuIGNvbW1pdCIgKGNhbGxl
ZCBieSB3ZWJraXQtcGF0Y2gpIGRlZmF1bHRzIHRvIHVzaW5nIHRoZSBzeXN0ZW0KKyAgICAgICAg
bG9naW4gbmFtZSB1bmxlc3MgdGhlIHVzZXJuYW1lIGlzIGFscmVhZHkgY2FjaGVkIG9yIHNwZWNp
ZmllZCBvbiB0aGUKKyAgICAgICAgY29tbWFuZCBsaW5lLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zY20ucHk6IEFkZGVkIG1ldGhvZHMgU1ZOLmhhc19hdXRob3JpemF0aW9uX2Zvcl9y
ZWFsbSBhbmQKKyAgICAgICAgbW9kaWZpZWQgU1ZOLmNvbW1pdF93aXRoX21lc3NhZ2UgdG8gY2Fs
bCBpdC4gQWRkZWQgb3B0aW9uYWwgdXNlcm5hbWUgcGFyYW1ldGVyCisgICAgICAgIHRvIG1ldGhv
ZCBTVk4uY29tbWl0X3dpdGhfbWVzc2FnZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Nj
bV91bml0dGVzdC5weTogQWRkZWQgdW5pdCB0ZXN0IG1ldGhvZHM6IFNWTlRlc3QudGVzdF9jb21t
aXRfd2l0aF91c2VybmFtZSwKKyAgICAgICAgU1ZOVGVzdC50ZXN0X2hhc19hdXRob3JpemF0aW9u
X2Zvcl9yZWFsbSwgYW5kIFNWTlRlc3QudGVzdF9ub3RfaGF2ZV9hdXRob3JpemF0aW9uX2Zvcl9y
ZWFsbS4KKwogMjAxMC0wMi0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zY20ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zY20ucHkJKHJldmlzaW9uIDU0OTk3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zY20ucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgaW1wb3J0
IHN1YnByb2Nlc3MKICMgSW1wb3J0IFdlYktpdC1zcGVjaWZpYyBtb2R1bGVzLgogZnJvbSB3ZWJr
aXRweS5jaGFuZ2Vsb2dzIGltcG9ydCBDaGFuZ2VMb2cKIGZyb20gd2Via2l0cHkuZXhlY3V0aXZl
IGltcG9ydCBFeGVjdXRpdmUsIHJ1bl9jb21tYW5kLCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRw
eS51c2VyIGltcG9ydCBVc2VyCiBmcm9tIHdlYmtpdHB5LndlYmtpdF9sb2dnaW5nIGltcG9ydCBl
cnJvciwgbG9nCiAKIGRlZiBkZXRlY3Rfc2NtX3N5c3RlbShwYXRoKToKQEAgLTI1Niw2ICsyNTcs
MTAgQEAgY2xhc3MgU0NNOgogCiAKIGNsYXNzIFNWTihTQ00pOgorICAgICMgRklYTUU6IFdlIHNo
b3VsZCBtb3ZlIHRoZXNlIHZhbHVlcyB0byBhIFdlYktpdC1zcGVjaWZpYyBjb25maWcuIGZpbGUu
CisgICAgc3ZuX3NlcnZlcl9ob3N0ID0gInN2bi53ZWJraXQub3JnIgorICAgIHN2bl9zZXJ2ZXJf
cmVhbG0gPSAiPGh0dHA6Ly9zdm4ud2Via2l0Lm9yZzo4MD4gTWFjIE9TIEZvcmdlIgorCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCwgZHJ5cnVuPUZhbHNlKToKICAgICAgICAgU0NNLl9faW5p
dF9fKHNlbGYsIGN3ZCwgZHJ5cnVuKQogICAgICAgICBzZWxmLmNhY2hlZF92ZXJzaW9uID0gTm9u
ZQpAQCAtMjk5LDYgKzMwNCwxNCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICBkZWYgY29tbWl0X3N1
Y2Nlc3NfcmVnZXhwKCk6CiAgICAgICAgIHJldHVybiAiXkNvbW1pdHRlZCByZXZpc2lvbiAoP1A8
c3ZuX3JldmlzaW9uPlxkKylcLiQiCiAKKyAgICBkZWYgaGFzX2F1dGhvcml6YXRpb25fZm9yX3Jl
YWxtKHNlbGYsIHJlYWxtPXN2bl9zZXJ2ZXJfcmVhbG0sIGhvbWVfZGlyZWN0b3J5PW9zLmdldGVu
digiSE9NRSIpKToKKyAgICAgICAgIyBBc3N1bWVzIGZpbmQgYW5kIGdyZXAgYXJlIGluc3RhbGxl
ZC4KKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGhvbWVfZGlyZWN0
b3J5LCAiLnN1YnZlcnNpb24iKSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
ZmluZF9hcmdzID0gWyJmaW5kIiwgIi5zdWJ2ZXJzaW9uIiwgIi10eXBlIiwgImYiLCAiLWV4ZWMi
LCAiZ3JlcCIsICItcSIsIHJlYWxtLCAie30iLCAiOyIsICItcHJpbnQiXTsKKyAgICAgICAgZmlu
ZF9vdXRwdXQgPSBydW5fY29tbWFuZChmaW5kX2FyZ3MsIGN3ZD1ob21lX2RpcmVjdG9yeSwgZXJy
b3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKS5yc3RyaXAoKQorICAgICAgICByZXR1
cm4gZmluZF9vdXRwdXQgYW5kIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihob21lX2RpcmVj
dG9yeSwgZmluZF9vdXRwdXQpKQorCiAgICAgZGVmIHN2bl92ZXJzaW9uKHNlbGYpOgogICAgICAg
ICBpZiBub3Qgc2VsZi5jYWNoZWRfdmVyc2lvbjoKICAgICAgICAgICAgIHNlbGYuY2FjaGVkX3Zl
cnNpb24gPSBydW5fY29tbWFuZChbJ3N2bicsICctLXZlcnNpb24nLCAnLS1xdWlldCddKQpAQCAt
MzQ3LDExICszNjAsMTkgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgZGVmIHJldmVydF9maWxlcyhz
ZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydzdm4nLCAncmV2ZXJ0J10g
KyBmaWxlX3BhdGhzKQogCi0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2Fn
ZSk6CisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWUp
OgogICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKICAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5n
IHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFyc2UgdGhp
cyBvdXRwdXQgd2lsbCBzdWNjZWVkLgogICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyBj
b21taXQuXG5Db21taXR0ZWQgcmV2aXNpb24gMC4iCi0gICAgICAgIHJldHVybiBydW5fY29tbWFu
ZChbJ3N2bicsICdjb21taXQnLCAnLW0nLCBtZXNzYWdlXSwgZXJyb3JfaGFuZGxlcj1jb21taXRf
ZXJyb3JfaGFuZGxlcikKKyAgICAgICAgc3ZuX2NvbW1pdF9hcmdzID0gWyJzdm4iLCAiY29tbWl0
Il0KKyAgICAgICAgaWYgbm90IHVzZXJuYW1lIGFuZCBub3Qgc2VsZi5oYXNfYXV0aG9yaXphdGlv
bl9mb3JfcmVhbG0oKToKKyAgICAgICAgICAgIHVzZXJuYW1lID0gVXNlci5wcm9tcHQoIiVzIGxv
Z2luOiAiICUgc2VsZi5zdm5fc2VydmVyX2hvc3QsIHJlcGVhdD01KQorICAgICAgICAgICAgaWYg
bm90IHVzZXJuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWW91IG5lZWQg
dG8gc3BlY2lmeSB0aGUgdXNlcm5hbWUgb24gJXMgdG8gcGVyZm9ybSB0aGUgY29tbWl0IGFzLiIg
JSBzZWxmLnN2bl9zZXJ2ZXJfaG9zdCkKKyAgICAgICAgaWYgdXNlcm5hbWU6CisgICAgICAgICAg
ICBzdm5fY29tbWl0X2FyZ3MuZXh0ZW5kKFsiLS11c2VybmFtZSIsIHVzZXJuYW1lXSkKKyAgICAg
ICAgc3ZuX2NvbW1pdF9hcmdzLmV4dGVuZChbIi1tIiwgbWVzc2FnZV0pCisgICAgICAgIHJldHVy
biBydW5fY29tbWFuZChzdm5fY29tbWl0X2FyZ3MsIGVycm9yX2hhbmRsZXI9Y29tbWl0X2Vycm9y
X2hhbmRsZXIpCiAKICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToK
ICAgICAgICAgc3ZuX3JldmlzaW9uID0gc2VsZi5zdHJpcF9yX2Zyb21fc3ZuX3JldmlzaW9uKHN0
cihzdm5fcmV2aXNpb24pKQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zY21f
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
Y21fdW5pdHRlc3QucHkJKHJldmlzaW9uIDU0OTk3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zY21fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
aW1wb3J0IHVybGxpYgogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCiBmcm9tIHdlYmtpdHB5
LmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKLWZy
b20gd2Via2l0cHkuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwgU0NNLCBDaGVja291dE5l
ZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlcgorZnJvbSB3ZWJraXRweS5zY20gaW1wb3J0
IGRldGVjdF9zY21fc3lzdGVtLCBTQ00sIFNWTiwgQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0
X2Vycm9yX2hhbmRsZXIKIGZyb20gd2Via2l0cHkuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQg
IyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZAogCiAjIEV2ZW50dWFsbHkgd2Ugd2ls
bCB3YW50IHRvIHdyaXRlIHRlc3RzIHdoaWNoIHdvcmsgZm9yIGJvdGggc2Ntcy4gKGxpa2UgdXBk
YXRlX3dlYmtpdCwgY2hhbmdlZF9maWxlcywgZXRjLikKQEAgLTE4MCwxNCArMTgwLDE0IEBAIGNs
YXNzIFNDTVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBUZXN0cyB3aGljaCBib3Ro
IEdpdFRlc3QgYW5kIFNWTlRlc3Qgc2hvdWxkIHJ1bi4KICAgICAjIEZJWE1FOiBUaGVyZSBtdXN0
IGJlIGEgc2ltcGxlciB3YXkgdG8gYWRkIHRoZXNlIHcvbyBhZGRpbmcgYSB3cmFwcGVyIG1ldGhv
ZCB0byBib3RoIHN1YmNsYXNzZXMKLSAgICBkZWYgX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21l
c3NhZ2Uoc2VsZik6CisgICAgZGVmIF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNl
bGYsIHVzZXJuYW1lKToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZScsICdtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20u
Y29tbWl0X3dpdGhfbWVzc2FnZSgnYW5vdGhlciB0ZXN0IGNvbW1pdCcpCisgICAgICAgIGNvbW1p
dF90ZXh0ID0gc2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1p
dCIsIHVzZXJuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZp
c2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzUnKQogCiAgICAgICAgIHNlbGYu
c2NtLmRyeXJ1biA9IFRydWUKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3Rf
ZmlsZScsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAgIGNvbW1pdF90ZXh0ID0g
c2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgneWV0IGFub3RoZXIgdGVzdCBjb21taXQnKQor
ICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBh
bm90aGVyIHRlc3QgY29tbWl0IiwgdXNlcm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcp
CiAKICAgICBkZWYgX3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZihzZWxmKToKQEAgLTQ1OSw2ICs0
NTksMzAgQEAgUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQgogICAgIGRl
ZiB0ZXN0X2NvbW1pdF90ZXh0X3BhcnNpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90
ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UoKQogCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfdXNl
cm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2UoImRiYXRlc0B3ZWJraXQub3JnIikKKworICAgIGRlZiB0ZXN0X2hhc19hdXRob3JpemF0aW9u
X2Zvcl9yZWFsbShzZWxmKToKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5z
dm5fY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgZmFrZV9ob21lX2RpciA9IHRlbXBmaWxlLm1rZHRl
bXAoc3VmZml4PSJmYWtlX2hvbWVfZGlyIikKKyAgICAgICAgc3ZuX2NvbmZpZ19kaXJfcGF0aCA9
IG9zLnBhdGguam9pbihmYWtlX2hvbWVfZGlyLCAiLnN1YnZlcnNpb24iKQorICAgICAgICBvcy5t
a2Rpcihzdm5fY29uZmlnX2Rpcl9wYXRoKQorICAgICAgICBmYWtlX3dlYmtpdF9hdXRoX2ZpbGUg
PSBvcy5wYXRoLmpvaW4oc3ZuX2NvbmZpZ19kaXJfcGF0aCwgImZha2Vfd2Via2l0X2F1dGhfZmls
ZSIpCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKGZha2Vfd2Via2l0X2F1dGhfZmls
ZSwgU1ZOLnN2bl9zZXJ2ZXJfcmVhbG0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY20uaGFz
X2F1dGhvcml6YXRpb25fZm9yX3JlYWxtKGhvbWVfZGlyZWN0b3J5PWZha2VfaG9tZV9kaXIpKQor
ICAgICAgICBvcy5yZW1vdmUoZmFrZV93ZWJraXRfYXV0aF9maWxlKQorICAgICAgICBvcy5ybWRp
cihzdm5fY29uZmlnX2Rpcl9wYXRoKQorICAgICAgICBvcy5ybWRpcihmYWtlX2hvbWVfZGlyKQor
CisgICAgZGVmIHRlc3Rfbm90X2hhdmVfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0oc2VsZik6Cisg
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCisg
ICAgICAgIGZha2VfaG9tZV9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0iZmFrZV9ob21l
X2RpciIpCisgICAgICAgIHN2bl9jb25maWdfZGlyX3BhdGggPSBvcy5wYXRoLmpvaW4oZmFrZV9o
b21lX2RpciwgIi5zdWJ2ZXJzaW9uIikKKyAgICAgICAgb3MubWtkaXIoc3ZuX2NvbmZpZ19kaXJf
cGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY20uaGFzX2F1dGhvcml6YXRpb25fZm9y
X3JlYWxtKGhvbWVfZGlyZWN0b3J5PWZha2VfaG9tZV9kaXIpKQorICAgICAgICBvcy5ybWRpcihz
dm5fY29uZmlnX2Rpcl9wYXRoKQorICAgICAgICBvcy5ybWRpcihmYWtlX2hvbWVfZGlyKQorCiAg
ICAgZGVmIHRlc3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVz
dF9yZXZlcnNlX2RpZmYoKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>