<?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>76749</bug_id>
          
          <creation_ts>2012-01-20 15:37:49 -0800</creation_ts>
          <short_desc>run-webkit-tests --lint-test-files should lint all the ports by default</short_desc>
          <delta_ts>2012-01-25 17:33:27 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>76745</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539859</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 15:37:49 -0800</bug_when>
    <thetext>run-webkit-tests --lint-test-files should lint all the ports by default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539863</commentid>
    <comment_count>1</comment_count>
      <attachid>123397</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 15:41:20 -0800</bug_when>
    <thetext>Created attachment 123397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539869</commentid>
    <comment_count>2</comment_count>
      <attachid>123397</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-20 15:54:39 -0800</bug_when>
    <thetext>Comment on attachment 123397
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=123397&amp;action=review

Can you add a simple test that verifies that we actually iterate through all the test configurations? Something like http://trac.webkit.org/changeset/105452.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:53
&gt; +        ports_to_lint = [host.port_factory.get(name) for name in host.port_factory.all_port_names()]

This is going to be slow. We&apos;ll be checking the each Chromium port when we only need to check one of them, no?

I&apos;m not sure what the right design is here, but it would be good to do some quick performance testing to see what the impact is once bug 76745 is resolved.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:70
&gt; +    # Currently all real ports use the same list of tests and then skip
&gt; +    # tests as desired per platform. So, in order to speed this up, we
&gt; +    # only fetch the list of tests once, instead of once per port as would
&gt; +    # be strictly correct.
&gt; +    # FIXME(dpranke): Should we cache this list in port/base.py instead?
&gt; +    #
&gt; +    # The exception is the Chromium GPU tests, but
&gt; +    # (a) they&apos;re going away, and (b) they&apos;re a subset of the Chromium tests,
&gt; +    # so it should be safe to reuse the larger list with them.
&gt; +    printer.print_update(&quot;Collecting tests ...&quot;)
&gt; +    try:
&gt; +        tests = port.tests([])
&gt; +    except IOError, e:
&gt; +        if e.errno == errno.ENOENT:
&gt; +            return -1
&gt; +        raise

I don&apos;t think we need to pass the list of tests at all.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:73
&gt; +    for port_to_lint in ports_to_lint:

Port&lt;--&gt;test_configuration is a 1:N mapping. You need to call all_test_configurations() for each port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539871</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 15:59:20 -0800</bug_when>
    <thetext>Hm, actually after talking to Dimitri and looking at bug 76745, the approach is probably overkill and we should only lint one port per test_expectations_file since the expectations parser now catches errors across all test configurations of the port, not just the one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539875</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 16:01:55 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 123397 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123397&amp;action=review
&gt; 
&gt; Can you add a simple test that verifies that we actually iterate through all the test configurations? Something like http://trac.webkit.org/changeset/105452.
&gt; 

Sure.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:53
&gt; &gt; +        ports_to_lint = [host.port_factory.get(name) for name in host.port_factory.all_port_names()]
&gt; 
&gt; This is going to be slow. We&apos;ll be checking the each Chromium port when we only need to check one of them, no?
&gt;

I thought that we actually had to test each port, but it turns out that I didn&apos;t understand how the test expecations parser had changed to look at all configurations at once. So, yeah, I think we only need to use one port per file.
 
&gt; I&apos;m not sure what the right design is here, but it would be good to do some quick performance testing to see what the impact is once bug 76745 is resolved.
&gt;

Agreed. I will wait until that change lands and revisit.
 
&gt; I don&apos;t think we need to pass the list of tests at all.
&gt;

After thinking about this further, I think this is right solely for purposes of find errors in the file. If you actually needed to know the expectations for a given test (which you don&apos;t, for --lint-test-files), I think you do.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:73
&gt; &gt; +    for port_to_lint in ports_to_lint:
&gt; 
&gt; Port&lt;--&gt;test_configuration is a 1:N mapping. You need to call all_test_configurations() for each port.

True, but as discussed above, I think this is moot now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539913</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-20 16:34:42 -0800</bug_when>
    <thetext>also, I&apos;m just gonna wait until Ojan stops hacking on this stuff before I start again. Too many cooks in one pot :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541622</commentid>
    <comment_count>6</comment_count>
      <attachid>123794</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 13:28:17 -0800</bug_when>
    <thetext>Created attachment 123794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541623</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 13:29:57 -0800</bug_when>
    <thetext>Updated after Ojan&apos;s fix to speed up --lint-test-files. It now takes 1.5 seconds to lint the chromium file and 4.5 seconds to lint all of the files on my Mac Pro.

This change also cleans up the output a bit to be more &quot;quickfix&quot; friendly and to make it clearer which errors are in which files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541666</commentid>
    <comment_count>8</comment_count>
      <attachid>123794</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-24 14:03:31 -0800</bug_when>
    <thetext>Comment on attachment 123794
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=123794&amp;action=review

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:50
&gt; +        # Only lint the platform the user asked for.

This comment is not helpful.

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:68
&gt; +                None,  # tests
&gt; +                port_to_lint.test_expectations(),
&gt; +                port_to_lint.test_configuration(),
&gt; +                True,  # is_lint_mode

Can you use named arguments here instead of comments?

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:99
&gt; +    if options.lint_test_files:
&gt; +        return lint(port, options)

You missed deleting the manager.lint() call below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541669</commentid>
    <comment_count>9</comment_count>
      <attachid>123794</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-24 14:04:07 -0800</bug_when>
    <thetext>Comment on attachment 123794
Patch

Whoops. R+&apos;d a bit preemptively. Can you add tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541689</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 14:20:31 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 123794 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123794&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:50
&gt; &gt; +        # Only lint the platform the user asked for.
&gt; 
&gt; This comment is not helpful.
&gt; 

Ok, will delete.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:68
&gt; &gt; +                None,  # tests
&gt; &gt; +                port_to_lint.test_expectations(),
&gt; &gt; +                port_to_lint.test_configuration(),
&gt; &gt; +                True,  # is_lint_mode
&gt; 
&gt; Can you use named arguments here instead of comments?
&gt; 

Sure.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:99
&gt; &gt; +    if options.lint_test_files:
&gt; &gt; +        return lint(port, options)
&gt; 
&gt; You missed deleting the manager.lint() call below.

Will fix.

(In reply to comment #9)
&gt; (From update of attachment 123794 [details])
&gt; Whoops. R+&apos;d a bit preemptively. Can you add tests?

That&apos;s okay, I posted it for review a bit preemptively as well, since a bunch of existing tests fail :). Will fix and add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541698</commentid>
    <comment_count>11</comment_count>
      <attachid>123811</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 14:29:47 -0800</bug_when>
    <thetext>Created attachment 123811
don&apos;t change log messages, update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541745</commentid>
    <comment_count>12</comment_count>
      <attachid>123821</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 15:07:14 -0800</bug_when>
    <thetext>Created attachment 123821
add tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541749</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-24 15:09:36 -0800</bug_when>
    <thetext>Please take another look?

On a related note, I&apos;ve realized that a bot should only lint its own file; it would be really annoying if a Chromium bot went red because of an error in the Apple expectations file that was otherwise unused.

I still think that when run interactively with no other arguments, linting all of the bots the right thing to do (to ensure that chromium is linted by default).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542812</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-25 17:33:27 -0800</bug_when>
    <thetext>This landed as r105936; I&apos;m not sure why the bug didn&apos;t get closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123397</attachid>
            <date>2012-01-20 15:41:20 -0800</date>
            <delta_ts>2012-01-24 13:28:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76749-20120120154119.patch</filename>
            <type>text/plain</type>
            <size>6337</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDQ5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjFjOWNkMTA5MWEzYjEzMWNmODBmM2ZjODJlZTA2NWYw
ODhlNGI5Mi4uY2Y3ZTQxMzk0ZGMzMGQ1ZDQ3ZTVlMWE1NzJlYWQzZTQwNzZhYWMyMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTAxLTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHJ1bi13ZWJraXQtdGVzdHMgLS1saW50LXRlc3QtZmlsZXMgc2hvdWxkIGxpbnQgYWxs
IHRoZSBwb3J0cyBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Njc0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSBydW4td2Via2l0LXRlc3RzIC0tbGludC10ZXN0LWZpbGVz
IHdpbGwgb25seSBsaW50IHRoZQorICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucyBmb3IgdGhlIHNp
bmdsZSBwb3J0IGRldGVybWluZWQgYnkgdGhlIGNvbW1hbmQKKyAgICAgICAgbGluZSBvcHRpb25z
LiBUaGlzIGlzIG5vdCBvYnZpb3VzIGFuZCBjYW4gcHJvZHVjZSB1bmludGVuZGVkIHJlc3VsdHMK
KyAgICAgICAgaWYgeW91IHdhbnQgdG8gbGludCB0aGUgY2hyb21pdW0gcG9ydCAocHJvYmFibHkg
dGhlIG5vcm1hbCBjYXNlCisgICAgICAgIGZvciB1c2luZyAtLWxpbnQtdGVzdC1maWxlcykgYnV0
IGRvbid0IHNwZWNpZnkgYSBwb3J0IG5hbWUgb3IKKyAgICAgICAgLS1jaHJvbWl1bS4KKworICAg
ICAgICBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBsaW50ICphbGwqIG9mIHRoZSBwb3J0cyBp
ZiBubyBwb3J0CisgICAgICAgIG5hbWUgaXMgc3VwcGxpZWQuIFRoaXMgY2hhbmdlIGltcGxlbWVu
dHMgdGhhdCwgYW5kIGFsc28gbW92ZXMKKyAgICAgICAgdGhlIGxpbnRpbmcgbG9naWMgb3V0IG9m
IHRoZSBNYW5hZ2VyIGNsYXNzLCBzaW5jZSB0aGlzIHJlYWxseQorICAgICAgICBoYXMgbm90aGlu
ZyB0byBkbyB3aXRoIE1hbmFnZXJzLiBJdCBoYXMgbGl0dGxlIHRvIGRvIHdpdGgKKyAgICAgICAg
cnVuLXdlYmtpdC10ZXN0cywgYnV0IHNwbGl0dGluZyBpdCBpbnRvIGEgZGlmZmVyZW50IHNjcmlw
dCB3b3VsZAorICAgICAgICBpbnRyb2R1Y2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMuIEl0IG1pZ2h0
IG1ha2Ugc2Vuc2UgdG8gZG8gdGhhdAorICAgICAgICBhbnl3YXksIGluIGEgc2VwYXJhdGUgcGF0
Y2ggYW5kIGNvbWJpbmluZyB0aGF0IHdpdGggY2xlYW5pbmcgdXAKKyAgICAgICAgdGhlIHN0eWxl
IGNoZWNrZXIgdG8gc2hhcmUgbW9yZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIu
X3N0cmlwX3Rlc3RfZGlyX3ByZWZpeCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKGxpbnQpOgorICAgICAgICAo
cnVuKToKKwogMjAxMi0wMS0xOSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICByZW1vdmUgdGhlIGR1cGxpY2F0ZWQgYnVpbGQgcnVsZXMgZnJvbSBXZWJLaXQu
Z3lwLCBUb29scy5neXAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDI0ZDFiNzMxYzQwODRmMTE0
NWYyYTE2NDY2YjdhMjkzYTQ1MTE5NDIuLjgwOTBlMmJlNDUxMjVmZTdjNGMyY2FlMWE1NjQ4OWI4
M2U5NzZlN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtMzQ3LDMyICszNDcsNiBAQCBjbGFz
cyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gcGF0aFtsZW4oc2VsZi5MQVlP
VVRfVEVTVFNfRElSRUNUT1JZICsgc2VsZi5fZmlsZXN5c3RlbS5zZXApOl0KICAgICAgICAgcmV0
dXJuIHBhdGgKIAotICAgIGRlZiBsaW50KHNlbGYpOgotICAgICAgICBsaW50X2ZhaWxlZCA9IEZh
bHNlCi0gICAgICAgIGZvciB0ZXN0X2NvbmZpZ3VyYXRpb24gaW4gc2VsZi5fcG9ydC5hbGxfdGVz
dF9jb25maWd1cmF0aW9ucygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNl
bGYubGludF9leHBlY3RhdGlvbnModGVzdF9jb25maWd1cmF0aW9uKQotICAgICAgICAgICAgZXhj
ZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbGludF9m
YWlsZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiIikKLQot
ICAgICAgICBpZiBsaW50X2ZhaWxlZDoKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZmFp
bGVkLiIpCi0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgICAgICBfbG9nLmluZm8oIkxpbnQg
c3VjY2VlZGVkLiIpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgbGludF9leHBlY3RhdGlv
bnMoc2VsZiwgY29uZmlnKToKLSAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKLSAgICAgICAgdGVz
dF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKLSAgICAgICAgICAgIHBvcnQsCi0gICAg
ICAgICAgICBOb25lLAotICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAotICAg
ICAgICAgICAgY29uZmlnLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmls
ZXMsCi0gICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpKQotCiAg
ICAgZGVmIF9pc19odHRwX3Rlc3Qoc2VsZiwgdGVzdCk6CiAgICAgICAgIHJldHVybiBzZWxmLkhU
VFBfU1VCRElSIGluIHRlc3Qgb3Igc2VsZi5XRUJTT0NLRVRfU1VCRElSIGluIHRlc3QKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkKaW5kZXggYjYwNjhiNmUwMjc2NTVlNGMyM2RkYjhlNDU4MzkyNDgxMmQyYjk4YS4u
YzQyYmE5OTUyOWE5NDMyNDMwYzQ0NGVhOWFlNDEwZTZlZDkyZjQ1NCAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CkBAIC0zOCwxMiArMzgsNTcgQEAgaW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5o
b3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5t
YW5hZ2VyIGltcG9ydCBNYW5hZ2VyLCBXb3JrZXJFeGNlcHRpb24KK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBwcmludGluZwogCi0KIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKIAogCitkZWYgbGludChwb3J0LCBvcHRpb25zLCBwcmludGVyKToK
KyAgICBob3N0ID0gcG9ydC5ob3N0CisgICAgaWYgb3B0aW9ucy5wbGF0Zm9ybToKKyAgICAgICAg
IyBPbmx5IGxpbnQgdGhlIHBsYXRmb3JtIHRoZSB1c2VyIGFza2VkIGZvci4KKyAgICAgICAgcG9y
dHNfdG9fbGludCA9IFtwb3J0XQorICAgIGVsc2U6CisgICAgICAgIHBvcnRzX3RvX2xpbnQgPSBb
aG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG5hbWUpIGZvciBuYW1lIGluIGhvc3QucG9ydF9mYWN0b3J5
LmFsbF9wb3J0X25hbWVzKCldCisKKyAgICAjIEN1cnJlbnRseSBhbGwgcmVhbCBwb3J0cyB1c2Ug
dGhlIHNhbWUgbGlzdCBvZiB0ZXN0cyBhbmQgdGhlbiBza2lwCisgICAgIyB0ZXN0cyBhcyBkZXNp
cmVkIHBlciBwbGF0Zm9ybS4gU28sIGluIG9yZGVyIHRvIHNwZWVkIHRoaXMgdXAsIHdlCisgICAg
IyBvbmx5IGZldGNoIHRoZSBsaXN0IG9mIHRlc3RzIG9uY2UsIGluc3RlYWQgb2Ygb25jZSBwZXIg
cG9ydCBhcyB3b3VsZAorICAgICMgYmUgc3RyaWN0bHkgY29ycmVjdC4KKyAgICAjIEZJWE1FKGRw
cmFua2UpOiBTaG91bGQgd2UgY2FjaGUgdGhpcyBsaXN0IGluIHBvcnQvYmFzZS5weSBpbnN0ZWFk
PworICAgICMKKyAgICAjIFRoZSBleGNlcHRpb24gaXMgdGhlIENocm9taXVtIEdQVSB0ZXN0cywg
YnV0CisgICAgIyAoYSkgdGhleSdyZSBnb2luZyBhd2F5LCBhbmQgKGIpIHRoZXkncmUgYSBzdWJz
ZXQgb2YgdGhlIENocm9taXVtIHRlc3RzLAorICAgICMgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8g
cmV1c2UgdGhlIGxhcmdlciBsaXN0IHdpdGggdGhlbS4KKyAgICBwcmludGVyLnByaW50X3VwZGF0
ZSgiQ29sbGVjdGluZyB0ZXN0cyAuLi4iKQorICAgIHRyeToKKyAgICAgICAgdGVzdHMgPSBwb3J0
LnRlc3RzKFtdKQorICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICBpZiBlLmVycm5vID09
IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICByYWlzZQorCisg
ICAgbGludF9mYWlsZWQgPSBGYWxzZQorICAgIGZvciBwb3J0X3RvX2xpbnQgaW4gcG9ydHNfdG9f
bGludDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4
cGVjdGF0aW9ucyhwb3J0X3RvX2xpbnQsCisgICAgICAgICAgICAgICAgdGVzdHMsCisgICAgICAg
ICAgICAgICAgcG9ydF90b19saW50LnRlc3RfZXhwZWN0YXRpb25zKCksCisgICAgICAgICAgICAg
ICAgcG9ydF90b19saW50LnRlc3RfY29uZmlndXJhdGlvbigpLAorICAgICAgICAgICAgICAgIFRy
dWUsICAjIGlzX2xpbnRfbW9kZQorICAgICAgICAgICAgICAgIHBvcnRfdG9fbGludC50ZXN0X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKKyAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25z
LlBhcnNlRXJyb3IsIGU6CisgICAgICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUKKyAgICAgICAg
ICAgIHByaW50ZXIud3JpdGUoJycpCisKKyAgICBpZiBsaW50X2ZhaWxlZDoKKyAgICAgICAgX2xv
Zy5lcnJvcignTGludCBmYWlsZWQuJykKKyAgICAgICAgcmV0dXJuIC0xCisgICAgX2xvZy5pbmZv
KCdMaW50IHN1Y2NlZWRlZC4nKQorICAgIHJldHVybiAwCisKKwogZGVmIHJ1bihwb3J0LCBvcHRp
b25zLCBhcmdzLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLCBidWlsZGJvdF9vdXRwdXQ9c3lz
LnN0ZG91dCk6CiAgICAgd2FybmluZ3MgPSBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0LCBv
cHRpb25zKQogCkBAIC01Nyw2ICsxMDIsOSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3Ms
IHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsIGJ1aWxkYm90X291dHB1dD1zeXMuc3RkbwogICAg
ICAgICBwcmludGVyLmNsZWFudXAoKQogICAgICAgICByZXR1cm4gMAogCisgICAgaWYgb3B0aW9u
cy5saW50X3Rlc3RfZmlsZXM6CisgICAgICAgIHJldHVybiBsaW50KHBvcnQsIG9wdGlvbnMsIHBy
aW50ZXIpCisKICAgICAjIFdlIHdyYXAgYW55IHBhcnRzIG9mIHRoZSBydW4gdGhhdCBhcmUgc2xv
dyBvciBsaWtlbHkgdG8gcmFpc2UgZXhjZXB0aW9ucwogICAgICMgaW4gYSB0cnkvZmluYWxseSB0
byBlbnN1cmUgdGhhdCB3ZSBjbGVhbiB1cCB0aGUgbG9nZ2luZyBjb25maWd1cmF0aW9uLgogICAg
IHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gLTEKQEAgLTcyLDkgKzEyMCw2IEBAIGRlZiBydW4o
cG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rf
b3V0cHV0PXN5cy5zdGRvCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICBy
YWlzZQogCi0gICAgICAgIGlmIG9wdGlvbnMubGludF90ZXN0X2ZpbGVzOgotICAgICAgICAgICAg
cmV0dXJuIG1hbmFnZXIubGludCgpCi0KICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNo
ZWNraW5nIGJ1aWxkIC4uLiIpCiAgICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2J1aWxkKG1hbmFn
ZXIubmVlZHNfc2VydmVycygpKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkJ1aWxkIGNoZWNr
IGZhaWxlZCIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123794</attachid>
            <date>2012-01-24 13:28:17 -0800</date>
            <delta_ts>2012-01-24 14:29:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76749-20120124132816.patch</filename>
            <type>text/plain</type>
            <size>8661</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjM1OTVlMWVlMmFlMDUxMWRhOTEyN2JkODZkMWFjMzhm
NzA3ZWI5Yi4uYmNmNGQwZDMwMDdjNTk0MTZkMDBmNTliMDAxZTE1YmY4Y2Y0MDFhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTAxLTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHJ1bi13ZWJraXQtdGVzdHMgLS1saW50LXRlc3QtZmlsZXMgc2hvdWxkIGxpbnQgYWxs
IHRoZSBwb3J0cyBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Njc0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSBydW4td2Via2l0LXRlc3RzIC0tbGludC10ZXN0LWZpbGVz
IHdpbGwgb25seSBsaW50IHRoZQorICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucyBmb3IgdGhlIHNp
bmdsZSBwb3J0IGRldGVybWluZWQgYnkgdGhlIGNvbW1hbmQKKyAgICAgICAgbGluZSBvcHRpb25z
LiBUaGlzIGlzIG5vdCBvYnZpb3VzIGFuZCBjYW4gcHJvZHVjZSB1bmludGVuZGVkIHJlc3VsdHMK
KyAgICAgICAgaWYgeW91IHdhbnQgdG8gbGludCB0aGUgY2hyb21pdW0gcG9ydCAocHJvYmFibHkg
dGhlIG5vcm1hbCBjYXNlCisgICAgICAgIGZvciB1c2luZyAtLWxpbnQtdGVzdC1maWxlcykgYnV0
IGRvbid0IHNwZWNpZnkgYSBwb3J0IG5hbWUgb3IKKyAgICAgICAgLS1jaHJvbWl1bS4KKworICAg
ICAgICBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBsaW50ICphbGwqIG9mIHRoZSBwb3J0cyBp
ZiBubyBwb3J0CisgICAgICAgIG5hbWUgaXMgc3VwcGxpZWQuIFRoaXMgY2hhbmdlIGltcGxlbWVu
dHMgdGhhdCwgYW5kIGFsc28gbW92ZXMKKyAgICAgICAgdGhlIGxpbnRpbmcgbG9naWMgb3V0IG9m
IHRoZSBNYW5hZ2VyIGNsYXNzLCBzaW5jZSB0aGlzIHJlYWxseQorICAgICAgICBoYXMgbm90aGlu
ZyB0byBkbyB3aXRoIE1hbmFnZXJzLiBJdCBoYXMgbGl0dGxlIHRvIGRvIHdpdGgKKyAgICAgICAg
cnVuLXdlYmtpdC10ZXN0cywgYnV0IHNwbGl0dGluZyBpdCBpbnRvIGEgZGlmZmVyZW50IHNjcmlw
dCB3b3VsZAorICAgICAgICBpbnRyb2R1Y2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMuIEl0IG1pZ2h0
IG1ha2Ugc2Vuc2UgdG8gZG8gdGhhdAorICAgICAgICBhbnl3YXksIGluIGEgc2VwYXJhdGUgcGF0
Y2ggYW5kIGNvbWJpbmluZyB0aGF0IHdpdGggY2xlYW5pbmcgdXAKKyAgICAgICAgdGhlIHN0eWxl
IGNoZWNrZXIgdG8gc2hhcmUgbW9yZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIu
X3N0cmlwX3Rlc3RfZGlyX3ByZWZpeCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKGxpbnQpOgorICAgICAgICAo
cnVuKToKKwogMjAxMi0wMS0yNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICByMTA1Njc0IGJyb2tlIGNoZWNrLXdlYmtpdC1zdHlsZSBmb3IgY2hyb21pdW0n
cyB0ZXN0X2V4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IGNmMzVmMjRjY2Uw
M2E2YmI4NTAyYjFkYWUxMTI3NzMzN2QxYTk3ZDYuLjgwOTBlMmJlNDUxMjVmZTdjNGMyY2FlMWE1
NjQ4OWI4M2U5NzZlN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtMzQ3LDI1ICszNDcsNiBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gcGF0aFtsZW4oc2Vs
Zi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZICsgc2VsZi5fZmlsZXN5c3RlbS5zZXApOl0KICAgICAg
ICAgcmV0dXJuIHBhdGgKIAotICAgIGRlZiBsaW50KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAotICAgICAgICAgICAg
ICAgIHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25zKCksCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9y
dC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxp
bnRfdGVzdF9maWxlcywKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRp
b25zX292ZXJyaWRlcygpKQotICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VF
cnJvciwgZXJyOgotICAgICAgICAgICAgZm9yIGVycm9yIGluIGVyci5lcnJvcnM6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZShlcnJvcikKLSAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIud3JpdGUoIiIpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCJMaW50IGZhaWxlZC4iKQot
ICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAgX2xvZy5pbmZvKCJMaW50IHN1Y2NlZWRl
ZC4iKQotICAgICAgICByZXR1cm4gMAotCiAgICAgZGVmIF9pc19odHRwX3Rlc3Qoc2VsZiwgdGVz
dCk6CiAgICAgICAgIHJldHVybiBzZWxmLkhUVFBfU1VCRElSIGluIHRlc3Qgb3Igc2VsZi5XRUJT
T0NLRVRfU1VCRElSIGluIHRlc3QKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4
IGNmYTJjY2U4ZTAzYzU4NTRlNWE3MTZjODRhNWQ5M2EwYTI3M2M4OGIuLjM2NWFmNTA5MWNkMzI5
ZTczYWEzZjNiMjYzYjdkZTk1ZWUxYzU1ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMu
cHkKQEAgLTc4MywyNSArNzgzLDI1IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnMob2JqZWN0KToK
ICAgICBkZWYgX3JlcG9ydF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGVycm9ycyA9IFtdCiAgICAg
ICAgIHdhcm5pbmdzID0gW10KKyAgICAgICAgdGVzdF9leHBlY3RhdGlvbl9wYXRoID0gc2VsZi5f
cG9ydC5wYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoKQorICAgICAgICBpZiB0ZXN0X2V4
cGVjdGF0aW9uX3BhdGguc3RhcnRzd2l0aChzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFz
ZSgpKToKKyAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25fcGF0aCA9IHNlbGYuX3BvcnQuaG9z
dC5maWxlc3lzdGVtLnJlbHBhdGgodGVzdF9leHBlY3RhdGlvbl9wYXRoLCBzZWxmLl9wb3J0LnBh
dGhfZnJvbV93ZWJraXRfYmFzZSgpKQogICAgICAgICBmb3IgZXhwZWN0YXRpb24gaW4gc2VsZi5f
ZXhwZWN0YXRpb25zOgogICAgICAgICAgICAgZm9yIGVycm9yIGluIGV4cGVjdGF0aW9uLmVycm9y
czoKLSAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCJMaW5lOiVzICVzICVzIiAlIChleHBl
Y3RhdGlvbi5saW5lX251bWJlciwgZXJyb3IsIGV4cGVjdGF0aW9uLm5hbWUgaWYgZXhwZWN0YXRp
b24uZXhwZWN0YXRpb25zIGVsc2UgZXhwZWN0YXRpb24ub3JpZ2luYWxfc3RyaW5nKSkKKyAgICAg
ICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCclczolZCAlcyAlcycgJSAodGVzdF9leHBlY3RhdGlv
bl9wYXRoLCBleHBlY3RhdGlvbi5saW5lX251bWJlciwgZXJyb3IsIGV4cGVjdGF0aW9uLm5hbWUg
aWYgZXhwZWN0YXRpb24uZXhwZWN0YXRpb25zIGVsc2UgZXhwZWN0YXRpb24ub3JpZ2luYWxfc3Ry
aW5nKSkKICAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIGV4cGVjdGF0aW9uLndhcm5pbmdzOgot
ICAgICAgICAgICAgICAgIHdhcm5pbmdzLmFwcGVuZCgiTGluZTolcyAlcyAlcyIgJSAoZXhwZWN0
YXRpb24ubGluZV9udW1iZXIsIHdhcm5pbmcsIGV4cGVjdGF0aW9uLm5hbWUgaWYgZXhwZWN0YXRp
b24uZXhwZWN0YXRpb25zIGVsc2UgZXhwZWN0YXRpb24ub3JpZ2luYWxfc3RyaW5nKSkKKyAgICAg
ICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoJyVzOiVkICVzICVzJyAlICh0ZXN0X2V4cGVjdGF0
aW9uX3BhdGgsIGV4cGVjdGF0aW9uLmxpbmVfbnVtYmVyLCB3YXJuaW5nLCBleHBlY3RhdGlvbi5u
YW1lIGlmIGV4cGVjdGF0aW9uLmV4cGVjdGF0aW9ucyBlbHNlIGV4cGVjdGF0aW9uLm9yaWdpbmFs
X3N0cmluZykpCiAKICAgICAgICAgZm9yIHdhcm5pbmcgaW4gc2VsZi5fc2tpcHBlZF90ZXN0c193
YXJuaW5nczoKLSAgICAgICAgICAgIHdhcm5pbmdzLmFwcGVuZCh3YXJuaW5nKQorICAgICAgICAg
ICAgd2FybmluZ3MuYXBwZW5kKCclcyVzJyAlICh0ZXN0X2V4cGVjdGF0aW9uX3BhdGgsIHdhcm5p
bmcpKQogCiAgICAgICAgIGlmIGVycm9ycyBvciB3YXJuaW5nczoKLSAgICAgICAgICAgIHRlc3Rf
ZXhwZWN0YXRpb25fcGF0aCA9IHNlbGYuX3BvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19m
aWxlKCkKLSAgICAgICAgICAgIGZhaWx1cmVfdGl0bGUgPSAiRkFJTFVSRVMgSU4gJXMiICUgdGVz
dF9leHBlY3RhdGlvbl9wYXRoCi0KICAgICAgICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAg
ICAgICByYWlzZSBQYXJzZUVycm9yKGZhdGFsPVRydWUsIGVycm9ycz1bZmFpbHVyZV90aXRsZV0g
KyBlcnJvcnMpCisgICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihmYXRhbD1UcnVlLCBl
cnJvcnM9c29ydGVkKGVycm9ycyArIHdhcm5pbmdzKSkKICAgICAgICAgICAgIGlmIHdhcm5pbmdz
OgogICAgICAgICAgICAgICAgIHNlbGYuX2hhc193YXJuaW5ncyA9IFRydWUKICAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9pc19saW50X21vZGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFBh
cnNlRXJyb3IoZmF0YWw9RmFsc2UsIGVycm9ycz1bZmFpbHVyZV90aXRsZV0gKyB3YXJuaW5ncykK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihmYXRhbD1GYWxzZSwgZXJyb3Jz
PXdhcm5pbmdzKQogCiAgICAgZGVmIF9wcm9jZXNzX3Rlc3RzX3dpdGhvdXRfZXhwZWN0YXRpb25z
KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKQEAgLTgzMiw4ICs4MzIs
NyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4K
ICAgICAgICAgZm9yIGluZGV4LCB0ZXN0IGluIGVudW1lcmF0ZShzZWxmLl9leHBlY3RhdGlvbnMs
IHN0YXJ0PTEpOgogICAgICAgICAgICAgaWYgdGVzdC5uYW1lIGFuZCB0ZXN0Lm5hbWUgaW4gdGVz
dHNfdG9fc2tpcDoKLSAgICAgICAgICAgICAgICBzZWxmLl9za2lwcGVkX3Rlc3RzX3dhcm5pbmdz
LmFwcGVuZCgnVGhlICVzIHRlc3QgZnJvbSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgaW4gbGluZSAl
ZCBpcyBhbHNvIGluIFNraXBwZWQhJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRl
c3QubmFtZSwgaW5kZXgpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NraXBwZWRfdGVzdHNfd2Fy
bmluZ3MuYXBwZW5kKCc6JWQgJXMgaXMgYWxzbyBpbiBhIFNraXBwZWQgZmlsZS4nICUgKGluZGV4
LCB0ZXN0Lm5hbWUpKQogICAgICAgICBza2lwcGVkX3Rlc3RzID0gJ1xuJy5qb2luKG1hcChsYW1i
ZGEgdGVzdF9wYXRoOiAnQlVHX1NLSVBQRUQgU0tJUCA6ICVzID0gRkFJTCcgJSB0ZXN0X3BhdGgs
IHRlc3RzX3RvX3NraXApKQogICAgICAgICBmb3IgdGVzdCBpbiBzZWxmLl9wYXJzZXIucGFyc2Uo
c2tpcHBlZF90ZXN0cyk6CiAgICAgICAgICAgICBzZWxmLl9tb2RlbC5hZGRfZXhwZWN0YXRpb25f
bGluZSh0ZXN0LCBvdmVycmlkZXNfYWxsb3dlZD1UcnVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNzJh
NzNjNTQxYjRjM2E5ZjQzNDRmNjExYWVhYTlmODBiZTMyOWFkZi4uZTZlODkyNWNlMWE2ZjMyMjc2
OGMyZWRhZmRjZmVhNjNmNzBiYzA4MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0zOCwxMiArMzgsNTAg
QEAgaW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5tYW5hZ2VyIGltcG9ydCBNYW5h
Z2VyLCBXb3JrZXJFeGNlcHRpb24KK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdz
IGltcG9ydCBwcmludGluZwogCi0KIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
IAogCitkZWYgbGludChwb3J0LCBvcHRpb25zKToKKyAgICBob3N0ID0gcG9ydC5ob3N0CisgICAg
aWYgb3B0aW9ucy5wbGF0Zm9ybToKKyAgICAgICAgIyBPbmx5IGxpbnQgdGhlIHBsYXRmb3JtIHRo
ZSB1c2VyIGFza2VkIGZvci4KKyAgICAgICAgcG9ydHNfdG9fbGludCA9IFtwb3J0XQorICAgIGVs
c2U6CisgICAgICAgIHBvcnRzX3RvX2xpbnQgPSBbaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG5hbWUp
IGZvciBuYW1lIGluIGhvc3QucG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCldCisKKyAgICBm
aWxlc19saW50ZWQgPSBzZXQoKQorICAgIGxpbnRfZmFpbGVkID0gRmFsc2UKKworICAgIGZvciBw
b3J0X3RvX2xpbnQgaW4gcG9ydHNfdG9fbGludDoKKyAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGUg
PSBwb3J0X3RvX2xpbnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKKyAgICAgICAg
aWYgZXhwZWN0YXRpb25zX2ZpbGUgaW4gZmlsZXNfbGludGVkOgorICAgICAgICAgICAgY29udGlu
dWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhw
ZWN0YXRpb25zKHBvcnRfdG9fbGludCwKKyAgICAgICAgICAgICAgICBOb25lLCAgIyB0ZXN0cwor
ICAgICAgICAgICAgICAgIHBvcnRfdG9fbGludC50ZXN0X2V4cGVjdGF0aW9ucygpLAorICAgICAg
ICAgICAgICAgIHBvcnRfdG9fbGludC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKKyAgICAgICAgICAg
ICAgICBUcnVlLCAgIyBpc19saW50X21vZGUKKyAgICAgICAgICAgICAgICBwb3J0X3RvX2xpbnQu
dGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkpCisgICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVj
dGF0aW9ucy5QYXJzZUVycm9yLCBlOgorICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCisg
ICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAgICAgICAgZm9yIGVycm9yIGluIGUuZXJy
b3JzOgorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoZXJyb3IpCisgICAgICAgICAgICBfbG9n
LmVycm9yKCcnKQorICAgICAgICBmaWxlc19saW50ZWQuYWRkKGV4cGVjdGF0aW9uc19maWxlKQor
CisgICAgaWYgbGludF9mYWlsZWQ6CisgICAgICAgIF9sb2cuZXJyb3IoJ0xpbnQgZmFpbGVkLicp
CisgICAgICAgIHJldHVybiAtMQorICAgIF9sb2cuaW5mbygnTGludCBzdWNjZWVkZWQuJykKKyAg
ICByZXR1cm4gMAorCisKIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRw
dXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rfb3V0cHV0PXN5cy5zdGRvdXQpOgogICAgIHdhcm5pbmdz
ID0gX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydCwgb3B0aW9ucykKIApAQCAtNTcsNiArOTUs
OSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRl
cnIsIGJ1aWxkYm90X291dHB1dD1zeXMuc3RkbwogICAgICAgICBwcmludGVyLmNsZWFudXAoKQog
ICAgICAgICByZXR1cm4gMAogCisgICAgaWYgb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6CisgICAg
ICAgIHJldHVybiBsaW50KHBvcnQsIG9wdGlvbnMpCisKICAgICAjIFdlIHdyYXAgYW55IHBhcnRz
IG9mIHRoZSBydW4gdGhhdCBhcmUgc2xvdyBvciBsaWtlbHkgdG8gcmFpc2UgZXhjZXB0aW9ucwog
ICAgICMgaW4gYSB0cnkvZmluYWxseSB0byBlbnN1cmUgdGhhdCB3ZSBjbGVhbiB1cCB0aGUgbG9n
Z2luZyBjb25maWd1cmF0aW9uLgogICAgIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gLTEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123811</attachid>
            <date>2012-01-24 14:29:47 -0800</date>
            <delta_ts>2012-01-24 15:07:10 -0800</delta_ts>
            <desc>don&apos;t change log messages, update w/ review feedback</desc>
            <filename>bug-76749-20120124142945.patch</filename>
            <type>text/plain</type>
            <size>5743</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjM1OTVlMWVlMmFlMDUxMWRhOTEyN2JkODZkMWFjMzhm
NzA3ZWI5Yi4uYmNmNGQwZDMwMDdjNTk0MTZkMDBmNTliMDAxZTE1YmY4Y2Y0MDFhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTAxLTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHJ1bi13ZWJraXQtdGVzdHMgLS1saW50LXRlc3QtZmlsZXMgc2hvdWxkIGxpbnQgYWxs
IHRoZSBwb3J0cyBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Njc0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSBydW4td2Via2l0LXRlc3RzIC0tbGludC10ZXN0LWZpbGVz
IHdpbGwgb25seSBsaW50IHRoZQorICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucyBmb3IgdGhlIHNp
bmdsZSBwb3J0IGRldGVybWluZWQgYnkgdGhlIGNvbW1hbmQKKyAgICAgICAgbGluZSBvcHRpb25z
LiBUaGlzIGlzIG5vdCBvYnZpb3VzIGFuZCBjYW4gcHJvZHVjZSB1bmludGVuZGVkIHJlc3VsdHMK
KyAgICAgICAgaWYgeW91IHdhbnQgdG8gbGludCB0aGUgY2hyb21pdW0gcG9ydCAocHJvYmFibHkg
dGhlIG5vcm1hbCBjYXNlCisgICAgICAgIGZvciB1c2luZyAtLWxpbnQtdGVzdC1maWxlcykgYnV0
IGRvbid0IHNwZWNpZnkgYSBwb3J0IG5hbWUgb3IKKyAgICAgICAgLS1jaHJvbWl1bS4KKworICAg
ICAgICBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBsaW50ICphbGwqIG9mIHRoZSBwb3J0cyBp
ZiBubyBwb3J0CisgICAgICAgIG5hbWUgaXMgc3VwcGxpZWQuIFRoaXMgY2hhbmdlIGltcGxlbWVu
dHMgdGhhdCwgYW5kIGFsc28gbW92ZXMKKyAgICAgICAgdGhlIGxpbnRpbmcgbG9naWMgb3V0IG9m
IHRoZSBNYW5hZ2VyIGNsYXNzLCBzaW5jZSB0aGlzIHJlYWxseQorICAgICAgICBoYXMgbm90aGlu
ZyB0byBkbyB3aXRoIE1hbmFnZXJzLiBJdCBoYXMgbGl0dGxlIHRvIGRvIHdpdGgKKyAgICAgICAg
cnVuLXdlYmtpdC10ZXN0cywgYnV0IHNwbGl0dGluZyBpdCBpbnRvIGEgZGlmZmVyZW50IHNjcmlw
dCB3b3VsZAorICAgICAgICBpbnRyb2R1Y2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMuIEl0IG1pZ2h0
IG1ha2Ugc2Vuc2UgdG8gZG8gdGhhdAorICAgICAgICBhbnl3YXksIGluIGEgc2VwYXJhdGUgcGF0
Y2ggYW5kIGNvbWJpbmluZyB0aGF0IHdpdGggY2xlYW5pbmcgdXAKKyAgICAgICAgdGhlIHN0eWxl
IGNoZWNrZXIgdG8gc2hhcmUgbW9yZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIu
X3N0cmlwX3Rlc3RfZGlyX3ByZWZpeCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKGxpbnQpOgorICAgICAgICAo
cnVuKToKKwogMjAxMi0wMS0yNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICByMTA1Njc0IGJyb2tlIGNoZWNrLXdlYmtpdC1zdHlsZSBmb3IgY2hyb21pdW0n
cyB0ZXN0X2V4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IGNmMzVmMjRjY2Uw
M2E2YmI4NTAyYjFkYWUxMTI3NzMzN2QxYTk3ZDYuLjgwOTBlMmJlNDUxMjVmZTdjNGMyY2FlMWE1
NjQ4OWI4M2U5NzZlN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtMzQ3LDI1ICszNDcsNiBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gcGF0aFtsZW4oc2Vs
Zi5MQVlPVVRfVEVTVFNfRElSRUNUT1JZICsgc2VsZi5fZmlsZXN5c3RlbS5zZXApOl0KICAgICAg
ICAgcmV0dXJuIHBhdGgKIAotICAgIGRlZiBsaW50KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAotICAgICAgICAgICAg
ICAgIHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAgTm9uZSwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25zKCksCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9y
dC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxp
bnRfdGVzdF9maWxlcywKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRp
b25zX292ZXJyaWRlcygpKQotICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VF
cnJvciwgZXJyOgotICAgICAgICAgICAgZm9yIGVycm9yIGluIGVyci5lcnJvcnM6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZShlcnJvcikKLSAgICAgICAgICAgIHNlbGYuX3By
aW50ZXIud3JpdGUoIiIpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCJMaW50IGZhaWxlZC4iKQot
ICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAgX2xvZy5pbmZvKCJMaW50IHN1Y2NlZWRl
ZC4iKQotICAgICAgICByZXR1cm4gMAotCiAgICAgZGVmIF9pc19odHRwX3Rlc3Qoc2VsZiwgdGVz
dCk6CiAgICAgICAgIHJldHVybiBzZWxmLkhUVFBfU1VCRElSIGluIHRlc3Qgb3Igc2VsZi5XRUJT
T0NLRVRfU1VCRElSIGluIHRlc3QKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNzJhNzNjNTQxYjRjM2E5
ZjQzNDRmNjExYWVhYTlmODBiZTMyOWFkZi4uMDg3OGNiZjRlNzI5OWRmNjBlZjFkOWU4MjUyMGJj
MTg3ODU3MDk5YyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0zOCwxMiArMzgsNDkgQEAgaW1wb3J0IHN5
cwogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5jb250cm9sbGVycy5tYW5hZ2VyIGltcG9ydCBNYW5hZ2VyLCBXb3JrZXJF
eGNlcHRpb24KK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9l
eHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBwcmlu
dGluZwogCi0KIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCitkZWYgbGlu
dChwb3J0LCBvcHRpb25zKToKKyAgICBob3N0ID0gcG9ydC5ob3N0CisgICAgaWYgb3B0aW9ucy5w
bGF0Zm9ybToKKyAgICAgICAgcG9ydHNfdG9fbGludCA9IFtwb3J0XQorICAgIGVsc2U6CisgICAg
ICAgIHBvcnRzX3RvX2xpbnQgPSBbaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG5hbWUpIGZvciBuYW1l
IGluIGhvc3QucG9ydF9mYWN0b3J5LmFsbF9wb3J0X25hbWVzKCldCisKKyAgICBmaWxlc19saW50
ZWQgPSBzZXQoKQorICAgIGxpbnRfZmFpbGVkID0gRmFsc2UKKworICAgIGZvciBwb3J0X3RvX2xp
bnQgaW4gcG9ydHNfdG9fbGludDoKKyAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGUgPSBwb3J0X3Rv
X2xpbnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKKyAgICAgICAgaWYgZXhwZWN0
YXRpb25zX2ZpbGUgaW4gZmlsZXNfbGludGVkOgorICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25z
KHBvcnRfdG9fbGludCwKKyAgICAgICAgICAgICAgICB0ZXN0cz1Ob25lLAorICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9ucz1wb3J0X3RvX2xpbnQudGVzdF9leHBlY3RhdGlvbnMoKSwKKyAgICAg
ICAgICAgICAgICB0ZXN0X2NvbmZpZz1wb3J0X3RvX2xpbnQudGVzdF9jb25maWd1cmF0aW9uKCks
CisgICAgICAgICAgICAgICAgaXNfbGludF9tb2RlPVRydWUsCisgICAgICAgICAgICAgICAgb3Zl
cnJpZGVzPXBvcnRfdG9fbGludC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKKyAgICAg
ICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3IsIGU6CisgICAgICAgICAgICBs
aW50X2ZhaWxlZCA9IFRydWUKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAg
ICBmb3IgZXJyb3IgaW4gZS5lcnJvcnM6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJv
cikKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgIGZpbGVzX2xpbnRlZC5hZGQo
ZXhwZWN0YXRpb25zX2ZpbGUpCisKKyAgICBpZiBsaW50X2ZhaWxlZDoKKyAgICAgICAgX2xvZy5l
cnJvcignTGludCBmYWlsZWQuJykKKyAgICAgICAgcmV0dXJuIC0xCisgICAgX2xvZy5pbmZvKCdM
aW50IHN1Y2NlZWRlZC4nKQorICAgIHJldHVybiAwCisKKwogZGVmIHJ1bihwb3J0LCBvcHRpb25z
LCBhcmdzLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLCBidWlsZGJvdF9vdXRwdXQ9c3lzLnN0
ZG91dCk6CiAgICAgd2FybmluZ3MgPSBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0LCBvcHRp
b25zKQogCkBAIC01Nyw2ICs5NCw5IEBAIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVn
dWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwgYnVpbGRib3Rfb3V0cHV0PXN5cy5zdGRvCiAgICAgICAg
IHByaW50ZXIuY2xlYW51cCgpCiAgICAgICAgIHJldHVybiAwCiAKKyAgICBpZiBvcHRpb25zLmxp
bnRfdGVzdF9maWxlczoKKyAgICAgICAgcmV0dXJuIGxpbnQocG9ydCwgb3B0aW9ucykKKwogICAg
ICMgV2Ugd3JhcCBhbnkgcGFydHMgb2YgdGhlIHJ1biB0aGF0IGFyZSBzbG93IG9yIGxpa2VseSB0
byByYWlzZSBleGNlcHRpb25zCiAgICAgIyBpbiBhIHRyeS9maW5hbGx5IHRvIGVuc3VyZSB0aGF0
IHdlIGNsZWFuIHVwIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uCiAgICAgdW5leHBlY3RlZF9y
ZXN1bHRfY291bnQgPSAtMQpAQCAtNjQsOSArMTA0LDYgQEAgZGVmIHJ1bihwb3J0LCBvcHRpb25z
LCBhcmdzLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLCBidWlsZGJvdF9vdXRwdXQ9c3lzLnN0
ZG8KICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydCwgb3B0aW9ucywgcHJpbnRlcikKICAg
ICAgICAgbWFuYWdlci5wcmludF9jb25maWcoKQogCi0gICAgICAgIGlmIG9wdGlvbnMubGludF90
ZXN0X2ZpbGVzOgotICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIubGludCgpCi0KICAgICAgICAg
cHJpbnRlci5wcmludF91cGRhdGUoIkNvbGxlY3RpbmcgdGVzdHMgLi4uIikKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3RzKGFyZ3MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123821</attachid>
            <date>2012-01-24 15:07:14 -0800</date>
            <delta_ts>2012-01-24 15:39:36 -0800</delta_ts>
            <desc>add tests</desc>
            <filename>bug-76749-20120124150713.patch</filename>
            <type>text/plain</type>
            <size>11012</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjM1OTVlMWVlMmFlMDUxMWRhOTEyN2JkODZkMWFjMzhm
NzA3ZWI5Yi4uZWNhNzAyM2Q3MTAxOTlkOTZmMGRlNTM5OGRmYmI0ZGJmZThiNWY3NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQw
IEBACiAyMDEyLTAxLTI0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHJ1bi13ZWJraXQtdGVzdHMgLS1saW50LXRlc3QtZmlsZXMgc2hvdWxkIGxpbnQgYWxs
IHRoZSBwb3J0cyBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03Njc0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEN1cnJlbnRseSBydW4td2Via2l0LXRlc3RzIC0tbGludC10ZXN0LWZpbGVz
IHdpbGwgb25seSBsaW50IHRoZQorICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucyBmb3IgdGhlIHNp
bmdsZSBwb3J0IGRldGVybWluZWQgYnkgdGhlIGNvbW1hbmQKKyAgICAgICAgbGluZSBvcHRpb25z
LiBUaGlzIGlzIG5vdCBvYnZpb3VzIGFuZCBjYW4gcHJvZHVjZSB1bmludGVuZGVkIHJlc3VsdHMK
KyAgICAgICAgaWYgeW91IHdhbnQgdG8gbGludCB0aGUgY2hyb21pdW0gcG9ydCAocHJvYmFibHkg
dGhlIG5vcm1hbCBjYXNlCisgICAgICAgIGZvciB1c2luZyAtLWxpbnQtdGVzdC1maWxlcykgYnV0
IGRvbid0IHNwZWNpZnkgYSBwb3J0IG5hbWUgb3IKKyAgICAgICAgLS1jaHJvbWl1bS4KKworICAg
ICAgICBJIHRoaW5rIHdlIHNob3VsZCBwcm9iYWJseSBsaW50ICphbGwqIG9mIHRoZSBwb3J0cyBp
ZiBubyBwb3J0CisgICAgICAgIG5hbWUgaXMgc3VwcGxpZWQuIFRoaXMgY2hhbmdlIGltcGxlbWVu
dHMgdGhhdCwgYW5kIGFsc28gbW92ZXMKKyAgICAgICAgdGhlIGxpbnRpbmcgbG9naWMgb3V0IG9m
IHRoZSBNYW5hZ2VyIGNsYXNzLCBzaW5jZSB0aGlzIHJlYWxseQorICAgICAgICBoYXMgbm90aGlu
ZyB0byBkbyB3aXRoIE1hbmFnZXJzLiBJdCBoYXMgbGl0dGxlIHRvIGRvIHdpdGgKKyAgICAgICAg
cnVuLXdlYmtpdC10ZXN0cywgYnV0IHNwbGl0dGluZyBpdCBpbnRvIGEgZGlmZmVyZW50IHNjcmlw
dCB3b3VsZAorICAgICAgICBpbnRyb2R1Y2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMuIEl0IG1pZ2h0
IG1ha2Ugc2Vuc2UgdG8gZG8gdGhhdAorICAgICAgICBhbnl3YXksIGluIGEgc2VwYXJhdGUgcGF0
Y2ggYW5kIGNvbWJpbmluZyB0aGF0IHdpdGggY2xlYW5pbmcgdXAKKyAgICAgICAgdGhlIHN0eWxl
IGNoZWNrZXIgdG8gc2hhcmUgbW9yZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIu
X3N0cmlwX3Rlc3RfZGlyX3ByZWZpeCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKGxpbnQpOgorICAgICAgICAo
cnVuKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToKKyAgICAgICAgKExpbnRUZXN0LnRlc3RfYWxsX2Nv
bmZpZ3VyYXRpb25zKTogYWRkZWQuCisgICAgICAgIChMaW50VGVzdC50ZXN0X2xpbnRfdGVzdF9m
aWxlcyk6IGFkZGVkLgorICAgICAgICAoTGludFRlc3QudGVzdF9saW50X3Rlc3RfZmlsZXNfX2Vy
cm9ycyk6IGFkZGVkLgorICAgICAgICAoTWFpblRlc3QudGVzdF9saW50X3Rlc3RfZmlsZXMpOiBy
ZW1vdmVkLgorICAgICAgICAoTWFpblRlc3QudGVzdF9saW50X3Rlc3RfZmlsZXNfX2Vycm9ycyk6
IHJlbW92ZWQuCisKKzIwMTItMDEtMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5v
cmc+CisKICAgICAgICAgcjEwNTY3NCBicm9rZSBjaGVjay13ZWJraXQtc3R5bGUgZm9yIGNocm9t
aXVtJ3MgdGVzdF9leHBlY3RhdGlvbnMuCiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXggY2YzNWYyNGNjZTAzYTZiYjg1MDJiMWRhZTExMjc3
MzM3ZDFhOTdkNi4uODA5MGUyYmU0NTEyNWZlN2M0YzJjYWUxYTU2NDg5YjgzZTk3NmU3ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC0zNDcsMjUgKzM0Nyw2IEBAIGNsYXNzIE1hbmFnZXIob2Jq
ZWN0KToKICAgICAgICAgICAgIHJldHVybiBwYXRoW2xlbihzZWxmLkxBWU9VVF9URVNUU19ESVJF
Q1RPUlkgKyBzZWxmLl9maWxlc3lzdGVtLnNlcCk6XQogICAgICAgICByZXR1cm4gcGF0aAogCi0g
ICAgZGVmIGxpbnQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0
YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydCwKLSAg
ICAgICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQudGVzdF9leHBl
Y3RhdGlvbnMoKSwKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfY29uZmlndXJhdGlv
bigpLAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAotICAg
ICAgICAgICAgICAgIHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkpCi0g
ICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yLCBlcnI6Ci0gICAgICAg
ICAgICBmb3IgZXJyb3IgaW4gZXJyLmVycm9yczoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcmlu
dGVyLndyaXRlKGVycm9yKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiIikKLSAg
ICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZmFpbGVkLiIpCi0gICAgICAgICAgICByZXR1cm4g
LTEKLQotICAgICAgICBfbG9nLmluZm8oIkxpbnQgc3VjY2VlZGVkLiIpCi0gICAgICAgIHJldHVy
biAwCi0KICAgICBkZWYgX2lzX2h0dHBfdGVzdChzZWxmLCB0ZXN0KToKICAgICAgICAgcmV0dXJu
IHNlbGYuSFRUUF9TVUJESVIgaW4gdGVzdCBvciBzZWxmLldFQlNPQ0tFVF9TVUJESVIgaW4gdGVz
dAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0cy5weQppbmRleCA3MmE3M2M1NDFiNGMzYTlmNDM0NGY2MTFhZWFhOWY4MGJl
MzI5YWRmLi5kNDlmMzU4OWVhZDUwNzBhZTQwZDY5YzUxNjViOTk4ZDkwM2M1MDQ0IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkKQEAgLTM4LDEyICszOCw1MCBAQCBpbXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRy
b2xsZXJzLm1hbmFnZXIgaW1wb3J0IE1hbmFnZXIsIFdvcmtlckV4Y2VwdGlvbgorZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MgaW1wb3J0IHByaW50aW5nCiAKIAogX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKK2RlZiBsaW50KHBvcnQsIG9wdGlvbnMsIGV4
cGVjdGF0aW9uc19jbGFzcyk6CisgICAgaG9zdCA9IHBvcnQuaG9zdAorICAgIGlmIG9wdGlvbnMu
cGxhdGZvcm06CisgICAgICAgIHBvcnRzX3RvX2xpbnQgPSBbcG9ydF0KKyAgICBlbHNlOgorICAg
ICAgICBwb3J0c190b19saW50ID0gW2hvc3QucG9ydF9mYWN0b3J5LmdldChuYW1lKSBmb3IgbmFt
ZSBpbiBob3N0LnBvcnRfZmFjdG9yeS5hbGxfcG9ydF9uYW1lcygpXQorCisgICAgZmlsZXNfbGlu
dGVkID0gc2V0KCkKKyAgICBsaW50X2ZhaWxlZCA9IEZhbHNlCisKKyAgICBmb3IgcG9ydF90b19s
aW50IGluIHBvcnRzX3RvX2xpbnQ6CisgICAgICAgIGV4cGVjdGF0aW9uc19maWxlID0gcG9ydF90
b19saW50LnBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpCisgICAgICAgIGlmIGV4cGVj
dGF0aW9uc19maWxlIGluIGZpbGVzX2xpbnRlZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgZXhwZWN0YXRpb25zX2NsYXNzKHBvcnRfdG9fbGludCwK
KyAgICAgICAgICAgICAgICB0ZXN0cz1Ob25lLAorICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9u
cz1wb3J0X3RvX2xpbnQudGVzdF9leHBlY3RhdGlvbnMoKSwKKyAgICAgICAgICAgICAgICB0ZXN0
X2NvbmZpZz1wb3J0X3RvX2xpbnQudGVzdF9jb25maWd1cmF0aW9uKCksCisgICAgICAgICAgICAg
ICAgaXNfbGludF9tb2RlPVRydWUsCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVzPXBvcnRfdG9f
bGludC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKKyAgICAgICAgZXhjZXB0IHRlc3Rf
ZXhwZWN0YXRpb25zLlBhcnNlRXJyb3IsIGU6CisgICAgICAgICAgICBsaW50X2ZhaWxlZCA9IFRy
dWUKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICBmb3IgZXJyb3IgaW4g
ZS5lcnJvcnM6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikKKyAgICAgICAgICAg
IF9sb2cuZXJyb3IoJycpCisgICAgICAgIGZpbGVzX2xpbnRlZC5hZGQoZXhwZWN0YXRpb25zX2Zp
bGUpCisKKyAgICBpZiBsaW50X2ZhaWxlZDoKKyAgICAgICAgX2xvZy5lcnJvcignTGludCBmYWls
ZWQuJykKKyAgICAgICAgcmV0dXJuIC0xCisgICAgX2xvZy5pbmZvKCdMaW50IHN1Y2NlZWRlZC4n
KQorICAgIHJldHVybiAwCisKKwogZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCByZWd1bGFy
X291dHB1dD1zeXMuc3RkZXJyLCBidWlsZGJvdF9vdXRwdXQ9c3lzLnN0ZG91dCk6CiAgICAgd2Fy
bmluZ3MgPSBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0LCBvcHRpb25zKQogCkBAIC01Nyw2
ICs5NSw5IEBAIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9c3lz
LnN0ZGVyciwgYnVpbGRib3Rfb3V0cHV0PXN5cy5zdGRvCiAgICAgICAgIHByaW50ZXIuY2xlYW51
cCgpCiAgICAgICAgIHJldHVybiAwCiAKKyAgICBpZiBvcHRpb25zLmxpbnRfdGVzdF9maWxlczoK
KyAgICAgICAgcmV0dXJuIGxpbnQocG9ydCwgb3B0aW9ucywgdGVzdF9leHBlY3RhdGlvbnMuVGVz
dEV4cGVjdGF0aW9ucykKKwogICAgICMgV2Ugd3JhcCBhbnkgcGFydHMgb2YgdGhlIHJ1biB0aGF0
IGFyZSBzbG93IG9yIGxpa2VseSB0byByYWlzZSBleGNlcHRpb25zCiAgICAgIyBpbiBhIHRyeS9m
aW5hbGx5IHRvIGVuc3VyZSB0aGF0IHdlIGNsZWFuIHVwIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRp
b24uCiAgICAgdW5leHBlY3RlZF9yZXN1bHRfY291bnQgPSAtMQpAQCAtNjQsOSArMTA1LDYgQEAg
ZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLCBi
dWlsZGJvdF9vdXRwdXQ9c3lzLnN0ZG8KICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9ydCwg
b3B0aW9ucywgcHJpbnRlcikKICAgICAgICAgbWFuYWdlci5wcmludF9jb25maWcoKQogCi0gICAg
ICAgIGlmIG9wdGlvbnMubGludF90ZXN0X2ZpbGVzOgotICAgICAgICAgICAgcmV0dXJuIG1hbmFn
ZXIubGludCgpCi0KICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNvbGxlY3RpbmcgdGVz
dHMgLi4uIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3Rz
KGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4
IGUzZjY5ODBiYjA1YTA1MmJiMGMzYmE0Zjc5ZTViYzE4OGM0OWRmNDguLjQ4ZjkwYTRmNGEyMWVi
ODY0NGYyN2Y5ZWEzMjk3YWE1YWNhYjk0M2EgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNf
aW50ZWdyYXRpb250ZXN0LnB5CkBAIC03MSw2ICs3MSw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzIGltcG9ydCBydW5fd2Via2l0X3Rlc3RzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0IGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LnRlc3Qg
aW1wb3J0IFRlc3RQb3J0LCBUZXN0RHJpdmVyCiBmcm9tIHdlYmtpdHB5LnRlc3Quc2tpcCBpbXBv
cnQgc2tpcF9pZgorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9u
cwogCiAKIGRlZiBwYXJzZV9hcmdzKGV4dHJhX2FyZ3M9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFs
c2UsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBuZXdfcmVzdWx0cz1GYWxzZSwgcHJpbnRfbm90aGlu
Zz1UcnVlKToKQEAgLTE4OCw2ICsxODksNzYgQEAgZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJn
cz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlLAogdW5l
eHBlY3RlZF90ZXN0c19jb3VudCA9IDEyCiAKIAorY2xhc3MgTGludFRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgorICAgIGRlZiB0ZXN0X2FsbF9jb25maWd1cmF0aW9ucyhzZWxmKToKKworICAgICAg
ICBjbGFzcyBGYWtlUG9ydChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAg
ICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2V4cGVjdGF0
aW9ucyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJycKKworICAgICAgICAgICAgZGVm
IHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5wYXRoCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2Vs
Zik6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgZGVmIHRlc3Rf
ZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgICAgIGNsYXNzIEZha2VGYWN0b3J5KG9iamVjdCk6CisgICAgICAgICAgICBkZWYg
X19pbml0X18oc2VsZiwgaG9zdCwgcG9ydHMpOgorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCA9
IGhvc3QKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnRzID0ge30KKyAgICAgICAgICAgICAgICBm
b3IgcG9ydCBpbiBwb3J0czoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3J0c1twb3J0Lm5h
bWVdID0gcG9ydAorICAgICAgICAgICAgICAgICAgICBwb3J0Lmhvc3QgPSBob3N0CisgICAgICAg
ICAgICAgICAgICAgIHBvcnQuZmFjdG9yeSA9IHNlbGYKKworICAgICAgICAgICAgZGVmIGdldChz
ZWxmLCBwb3J0X25hbWUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYucG9ydHNbcG9ydF9uYW1lXQorCisgICAgICAgICAgICBkZWYgYWxsX3BvcnRfbmFtZXMo
c2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZWxmLnBvcnRzLmtleXMoKSkK
KworICAgICAgICBjbGFzcyBGYWtlRXhwZWN0YXRpb25zUGFyc2VyKG9iamVjdCk6CisgICAgICAg
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg
ICAgICAgICBwb3J0Lmhvc3QucG9ydHNfcGFyc2VkLmFwcGVuZChwb3J0Lm5hbWUpCisKKyAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgaG9zdC5wb3J0c19wYXJzZWQgPSBbXQorICAg
ICAgICBob3N0LnBvcnRfZmFjdG9yeSA9IEZha2VGYWN0b3J5KGhvc3QsIChGYWtlUG9ydCgnYScs
ICdwYXRoLXRvLWEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmFrZVBvcnQoJ2InLCAncGF0aC10by1iJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZha2VQb3J0KCdiLXdpbicsICdwYXRoLXRvLWInKSkp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocnVuX3dlYmtpdF90ZXN0cy5saW50KGhvc3Qu
cG9ydF9mYWN0b3J5LnBvcnRzWydhJ10sIE1vY2tPcHRpb25zKHBsYXRmb3JtPU5vbmUpLCBGYWtl
RXhwZWN0YXRpb25zUGFyc2VyKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaG9zdC5w
b3J0c19wYXJzZWQsIFsnYScsICdiJ10pCisKKyAgICAgICAgaG9zdC5wb3J0c19wYXJzZWQgPSBb
XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhydW5fd2Via2l0X3Rlc3RzLmxpbnQoaG9zdC5w
b3J0X2ZhY3RvcnkucG9ydHNbJ2EnXSwgTW9ja09wdGlvbnMocGxhdGZvcm09J2EnKSwgRmFrZUV4
cGVjdGF0aW9uc1BhcnNlciksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhvc3QucG9y
dHNfcGFyc2VkLCBbJ2EnXSkKKworICAgIGRlZiB0ZXN0X2xpbnRfdGVzdF9maWxlcyhzZWxmKToK
KyAgICAgICAgcmVzLCBvdXQsIGVyciwgdXNlciA9IGxvZ2dpbmdfcnVuKFsnLS1saW50LXRlc3Qt
ZmlsZXMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDApCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShvdXQuZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueShbJ0xp
bnQgc3VjY2VlZGVkJyBpbiBtc2cgZm9yIG1zZyBpbiBlcnIuZ2V0KCldKSkKKworICAgIGRlZiB0
ZXN0X2xpbnRfdGVzdF9maWxlc19fZXJyb3JzKHNlbGYpOgorICAgICAgICBvcHRpb25zLCBwYXJz
ZWRfYXJncyA9IHBhcnNlX2FyZ3MoWyctLWxpbnQtdGVzdC1maWxlcyddKQorICAgICAgICBob3N0
ID0gTW9ja0hvc3QoKQorICAgICAgICBwb3J0X29iaiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChv
cHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMpCisgICAgICAgIHBvcnRfb2JqLnRlc3Rf
ZXhwZWN0YXRpb25zID0gbGFtYmRhOiAiIyBzeW50YXggZXJyb3IiCisgICAgICAgIHJlcywgb3V0
LCBlcnIgPSBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9hcmdzKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG91dC5lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnTGludCBmYWls
ZWQnIGluIG1zZyBmb3IgbXNnIGluIGVyci5nZXQoKV0pKQorCisKIGNsYXNzIE1haW5UZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyhz
ZWxmKToKICAgICAgICAgIyBUaGlzIGp1c3QgdGVzdHMgdGhhdCB3ZSByZWNvZ25pemUgdGhlIGNv
bW1hbmQgbGluZSBhcmdzCkBAIC0yODQsMjMgKzM1NSw2IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIFsnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQu
aHRtbCcsICctLXdvcmtlci1tb2RlbCcsICdpbmxpbmUnXSwKICAgICAgICAgICAgIHRlc3RzX2lu
Y2x1ZGVkPVRydWUpCiAKLSAgICBkZWYgdGVzdF9saW50X3Rlc3RfZmlsZXMoc2VsZik6Ci0gICAg
ICAgIHJlcywgb3V0LCBlcnIsIHVzZXIgPSBsb2dnaW5nX3J1bihbJy0tbGludC10ZXN0LWZpbGVz
J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAwKQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUob3V0LmVtcHR5KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoWydMaW50IHN1
Y2NlZWRlZCcgaW4gbXNnIGZvciBtc2cgaW4gZXJyLmdldCgpXSkpCi0KLSAgICBkZWYgdGVzdF9s
aW50X3Rlc3RfZmlsZXNfX2Vycm9ycyhzZWxmKToKLSAgICAgICAgb3B0aW9ucywgcGFyc2VkX2Fy
Z3MgPSBwYXJzZV9hcmdzKFsnLS1saW50LXRlc3QtZmlsZXMnXSkKLSAgICAgICAgaG9zdCA9IE1v
Y2tIb3N0KCkKLSAgICAgICAgcG9ydF9vYmogPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQob3B0aW9u
cy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zKQotICAgICAgICBwb3J0X29iai50ZXN0X2V4cGVj
dGF0aW9ucyA9IGxhbWJkYTogIiMgc3ludGF4IGVycm9yIgotICAgICAgICByZXMsIG91dCwgZXJy
ID0gcnVuX2FuZF9jYXB0dXJlKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncykKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShv
dXQuZW1wdHkoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueShbJ0xpbnQgZmFpbGVkJyBp
biBtc2cgZm9yIG1zZyBpbiBlcnIuZ2V0KCldKSkKLQogICAgIGRlZiB0ZXN0X25vX3Rlc3RzX2Zv
dW5kKHNlbGYpOgogICAgICAgICByZXMsIG91dCwgZXJyLCB1c2VyID0gbG9nZ2luZ19ydW4oWydy
ZXNvdXJjZXMnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXMsIC0xKQo=
</data>
<flag name="review"
          id="124945"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>