<?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>81848</bug_id>
          
          <creation_ts>2012-03-21 17:18:33 -0700</creation_ts>
          <short_desc>Show image diffs for gpu_tests on flakiness dashboard</short_desc>
          <delta_ts>2012-03-27 12:36:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dave Tu">dtu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>584787</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-21 17:18:33 -0700</bug_when>
    <thetext>Show image diffs for gpu_tests on flakiness dashboard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584792</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-21 17:19:52 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 81847 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584798</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-21 17:20:58 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584799</commentid>
    <comment_count>3</comment_count>
      <attachid>133151</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-21 17:21:00 -0700</bug_when>
    <thetext>Created attachment 133151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584804</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-21 17:21:20 -0700</bug_when>
    <thetext>*** Bug 81847 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584807</commentid>
    <comment_count>5</comment_count>
      <attachid>133153</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-21 17:28:12 -0700</bug_when>
    <thetext>Created attachment 133153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584887</commentid>
    <comment_count>6</comment_count>
      <attachid>133153</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-21 19:07:09 -0700</bug_when>
    <thetext>Comment on attachment 133153
Patch

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

Mostly just a bunch of nits...

&gt; ChangeLog:10
&gt; +
&gt; +        * Tools/TestResultServer/static-dashboards/builders.js:
&gt; +        * Tools/TestResultServer/static-dashboards/dashboard_base.js:
&gt; +        * Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:

This needs more description. The bug title only covers part of what this patch does.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1843
&gt; +        } else {
&gt; +            html += &apos; | &lt;b&gt;Only shows actual results/diffs from the most recent *failure* on each bot.&lt;/b&gt;&apos;;
&gt; +        }

WebKit style is to not put the brackets around single line if/else.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2140
&gt; +    var failure = indexesForFailures(builder, test)[0];

s/failure/failureIndex

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2158
&gt; +    var failures = indexesForFailures(builder, test);

s/failures/failureIndexes. The old name of failures should have been buildNumbers. :)

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:-2156
&gt; -    dummyNode.onerror = function() {
&gt; -        container.parentNode.removeChild(childContainer);

Why did you remove this?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2184
&gt; +        if (opt_width &gt; 0)
&gt; +            item.style.width = opt_width + &apos;px&apos;;

I&apos;d rather you set a classname and set these widths in CSS. I&apos;m not sure why we explicitly set the height on line 2182. Looks like it&apos;s configurable.

So, you could make itemClassName the third argument to appendNonWebKitResults and not optional.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2187
&gt; +            var childContainer = document.createElement(&apos;span&apos;);

It would be better to make this a div with display:inline-block.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2189
&gt; +            var title = document.createElement(&apos;b&apos;);

Make this a div.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2190
&gt; +            title.innerText = opt_title;

Use textContent instead. innerText does weird things.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2192
&gt; +            childContainer.appendChild(document.createElement(&apos;br&apos;));

Don&apos;t need this anymore now that title is a div.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2196
&gt; +            container.insertBefore(childContainer, dummyNode);
&gt; +        } else {
&gt; +            container.insertBefore(item, dummyNode);

How about calling replaceChild instead of insertBefore?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2197
&gt; +        }

Single-line else doesn&apos;t have brackets in webkit style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588424</commentid>
    <comment_count>7</comment_count>
      <attachid>133956</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-26 18:24:01 -0700</bug_when>
    <thetext>Created attachment 133956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588426</commentid>
    <comment_count>8</comment_count>
      <attachid>133153</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-26 18:24:22 -0700</bug_when>
    <thetext>Comment on attachment 133153
Patch

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

&gt;&gt; ChangeLog:10
&gt;&gt; +        * Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:
&gt; 
&gt; This needs more description. The bug title only covers part of what this patch does.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1843
&gt;&gt; +        }
&gt; 
&gt; WebKit style is to not put the brackets around single line if/else.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2140
&gt;&gt; +    var failure = indexesForFailures(builder, test)[0];
&gt; 
&gt; s/failure/failureIndex

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2158
&gt;&gt; +    var failures = indexesForFailures(builder, test);
&gt; 
&gt; s/failures/failureIndexes. The old name of failures should have been buildNumbers. :)

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:-2156
&gt;&gt; -        container.parentNode.removeChild(childContainer);
&gt; 
&gt; Why did you remove this?

childContainer is not defined in this context, this doesn&apos;t do anything besides throw an error. Looks like it should be container.removeChild(dummyNode);

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2184
&gt;&gt; +            item.style.width = opt_width + &apos;px&apos;;
&gt; 
&gt; I&apos;d rather you set a classname and set these widths in CSS. I&apos;m not sure why we explicitly set the height on line 2182. Looks like it&apos;s configurable.
&gt; 
&gt; So, you could make itemClassName the third argument to appendNonWebKitResults and not optional.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2187
&gt;&gt; +            var childContainer = document.createElement(&apos;span&apos;);
&gt; 
&gt; It would be better to make this a div with display:inline-block.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2189
&gt;&gt; +            var title = document.createElement(&apos;b&apos;);
&gt; 
&gt; Make this a div.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2190
&gt;&gt; +            title.innerText = opt_title;
&gt; 
&gt; Use textContent instead. innerText does weird things.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2192
&gt;&gt; +            childContainer.appendChild(document.createElement(&apos;br&apos;));
&gt; 
&gt; Don&apos;t need this anymore now that title is a div.

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2196
&gt;&gt; +            container.insertBefore(item, dummyNode);
&gt; 
&gt; How about calling replaceChild instead of insertBefore?

Done.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2197
&gt;&gt; +        }
&gt; 
&gt; Single-line else doesn&apos;t have brackets in webkit style.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589061</commentid>
    <comment_count>9</comment_count>
      <attachid>133956</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-27 11:11:02 -0700</bug_when>
    <thetext>Comment on attachment 133956
Patch

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

Please fix the nits and upload a new patch for the commit queue.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:1846
&gt; +        } else {
&gt; +            html += &apos; | &lt;b&gt;Only shows actual results/diffs from the most recent *failure* on each bot.&lt;/b&gt;&apos;;
&gt; +        }

Single-line  else shouldn&apos;t have braces.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:2197
&gt; +        } else {
&gt; +            container.replaceChild(item, dummyNode);
&gt; +        }

Single-line  else shouldn&apos;t have braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589096</commentid>
    <comment_count>10</comment_count>
      <attachid>134108</attachid>
    <who name="Dave Tu">dtu</who>
    <bug_when>2012-03-27 11:46:33 -0700</bug_when>
    <thetext>Created attachment 134108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589149</commentid>
    <comment_count>11</comment_count>
      <attachid>134108</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 12:36:34 -0700</bug_when>
    <thetext>Comment on attachment 134108
Patch

Clearing flags on attachment: 134108

Committed r112303: &lt;http://trac.webkit.org/changeset/112303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589151</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-27 12:36:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133151</attachid>
            <date>2012-03-21 17:21:00 -0700</date>
            <delta_ts>2012-03-21 17:28:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81848-20120321172059.patch</filename>
            <type>text/plain</type>
            <size>9956</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExMTYy
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAz
LTIxICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTaG93IGltYWdlIGRp
ZmZzIGZvciBncHVfdGVzdHMgb24gZmxha2luZXNzIGRhc2hib2FyZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4NDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanM6CisgICAgICAgICogVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKiBU
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9h
cmQuaHRtbDoKKwogMjAxMi0wMy0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTW92ZSB3dGYvUGxhdGZvcm0uaCBmcm9tIEphdmFTY3JpcHRDb3JlIHRvIFNvdXJj
ZS9XVEYvd3RmCkluZGV4OiBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2J1aWxkZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvYnVpbGRlcnMuanMJKHJldmlzaW9uIDExMTYyMCkKKysrIFRvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDYgKzUxLDcgQEAgdmFyIExFR0FDWV9CVUlMREVSX01BU1RFUlNfVE9fR1JPVVBTID0g
ewogICAgICdDaHJvbWl1bSc6ICdAREVQUyAtIGNocm9taXVtLm9yZycsCiAgICAgJ0Nocm9taXVt
Q2hyb21pdW1PUyc6ICdAREVQUyBDck9TIC0gY2hyb21pdW0ub3JnJywKICAgICAnQ2hyb21pdW1H
UFUnOiAnQERFUFMgLSBjaHJvbWl1bS5vcmcnLAorICAgICdDaHJvbWl1bUdQVUZZSSc6ICdAREVQ
UyBGWUkgLSBjaHJvbWl1bS5vcmcnLAogICAgICdDaHJvbWl1bVdlYmtpdCc6ICdAVG9UIC0gY2hy
b21pdW0ub3JnJywKICAgICAnd2Via2l0Lm9yZyc6ICdAVG9UIC0gd2Via2l0Lm9yZycKIH07CkBA
IC0xNjEsMTEgKzE2MiwxNSBAQCB2YXIgQ0hST01JVU1fR1BVX0ZZSV9HVEVTVFNfREVQU19CVUlM
REVSCiAgICAgWydNYWMgUmVsZWFzZSAoQVRJKSddLAogICAgIFsnTGludXggUmVsZWFzZSAoQVRJ
KSddLAogICAgIFsnTGludXggUmVsZWFzZSAoSW50ZWwpJ10sCisgICAgWydXaW43IEF1ZGlvJ10s
CisgICAgWydMaW51eCBBdWRpbyddLAogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihD
SFJPTUlVTV9HUFVfRllJX0dURVNUU19ERVBTX0JVSUxERVJTLCBDSFJPTUlVTV9HUFVfRllJX0JV
SUxERVJfTUFTVEVSKTsKIAogdmFyIENIUk9NSVVNX0dQVV9HVEVTVFNfVE9UX0JVSUxERVJTID0g
WwotICAgIFsnR1BVIFdpbjcgKGRiZykgKE5WSURJQSknLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9C
VUlMREVSXSwKKyAgICBbJ0dQVSBXaW43IChOVklESUEpJywgQnVpbGRlckdyb3VwLkRFRkFVTFRf
QlVJTERFUl0sCisgICAgWydHUFUgV2luNyAoZGJnKSAoTlZJRElBKSddLAorICAgIFsnR1BVIE1h
YyddLAogICAgIFsnR1BVIE1hYyAoZGJnKSddLAogICAgIFsnR1BVIExpbnV4IChkYmcpIChOVklE
SUEpJ10sCiBdOwpJbmRleDogVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy9kYXNoYm9hcmRfYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCShyZXZpc2lvbiAxMTE2MjApCisr
KyBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDExIEBAIGZ1bmN0aW9uIGlzTGF5b3V0
VGVzdFJlc3VsdHMoKQogICAgIHJldHVybiBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSA9PSAnbGF5
b3V0LXRlc3RzJzsKIH0KIAorZnVuY3Rpb24gaXNHUFVUZXN0UmVzdWx0cygpCit7CisgICAgcmV0
dXJuIGdfY3VycmVudFN0YXRlLnRlc3RUeXBlID09ICdncHVfdGVzdHMnOworfQorCiBmdW5jdGlv
biBjdXJyZW50QnVpbGRlckdyb3VwQ2F0ZWdvcnkob3B0X3N0YXRlKQogewogICAgIHZhciBzdGF0
ZSA9IG9wdF9zdGF0ZSB8fCBnX2N1cnJlbnRTdGF0ZTsKSW5kZXg6IFRvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNz
X2Rhc2hib2FyZC5odG1sCShyZXZpc2lvbiAxMTE2MjApCisrKyBUb29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTIxMyw4ICsxMjEzLDggQEAgZnVuY3Rpb24gaXNGYWlsdXJlKGJ1aWxkZXIsIHRl
c3ROYW1lLCBpbgogICAgIGNvbnNvbGUuZXJyb3IoJ0luZGV4IGV4Y2VlZHMgbnVtYmVyIG9mIHJl
c3VsdHM6ICcgKyBpbmRleCk7CiB9CiAKLS8vIFJldHVybnMgYW4gYXJyYXkgb2YgYnVpbGROdW1i
ZXJzIGZvciBhbGwgYnVpbGRzIHdoZXJlIHRoaXMgdGVzdCBmYWlsZWQuCi1mdW5jdGlvbiBidWls
ZE51bWJlcnNGb3JGYWlsdXJlcyhidWlsZGVyLCB0ZXN0TmFtZSkKKy8vIFJldHVybnMgYW4gYXJy
YXkgb2YgaW5kZXhlcyBmb3IgYWxsIGJ1aWxkcyB3aGVyZSB0aGlzIHRlc3QgZmFpbGVkLgorZnVu
Y3Rpb24gaW5kZXhlc0ZvckZhaWx1cmVzKGJ1aWxkZXIsIHRlc3ROYW1lKQogewogICAgIHZhciBy
YXdSZXN1bHRzID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLnRlc3RzW3Rlc3ROYW1lXS5y
ZXN1bHRzOwogICAgIHZhciBidWlsZE51bWJlcnMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRl
cl0uYnVpbGROdW1iZXJzOwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgZnVuY3Rpb24gYnVpbGROdW1i
ZXJzRm9yRmFpbHVyZXMoYnVpbGRlcgogICAgICAgICB2YXIgbnVtUmVzdWx0cyA9IHJhd1Jlc3Vs
dHNbaV1bUkxFLkxFTkdUSF07CiAgICAgICAgIGlmIChpc0ZhaWxpbmdSZXN1bHQocmF3UmVzdWx0
c1tpXVtSTEUuVkFMVUVdKSkgewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1S
ZXN1bHRzOyBqKyspCi0gICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChidWlsZE51bWJlcnNb
aW5kZXggKyBqXSk7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChpbmRleCArIGopOwog
ICAgICAgICB9CiAgICAgICAgIGluZGV4ICs9IG51bVJlc3VsdHM7CiAgICAgfQpAQCAtMTgyOSwx
NiArMTgyOSwxOCBAQCBmdW5jdGlvbiBodG1sRm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRlCiAg
ICAgaHRtbCArPSAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD0nICsgdGVzdCArICc+PGRp
dj4nICsKICAgICAgICAgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93RXhwZWN0YXRpb25zJywg
J3Jlc3VsdHMnKQogCi0gICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkgewotICAgICAgICBo
dG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93TGFyZ2VFeHBlY3RhdGlv
bnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOworICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkg
fHwgaXNHUFVUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRz
KCkpCisgICAgICAgICAgICBodG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdz
aG93TGFyZ2VFeHBlY3RhdGlvbnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOwogICAgICAgICBpZiAo
bWFzdGVyID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewogICAgICAgICAgICAgdmFyIHJldmlz
aW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgJyc7CiAgICAgICAgICAgICBodG1sICs9
ICc8Zm9ybSBvbnN1Ym1pdD0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCByZXZpc2lv
bi52YWx1ZSk7JyArCiAgICAgICAgICAgICAgICAgJ3JldHVybiBmYWxzZTsiPlNob3cgcmVzdWx0
cyBmb3IgV2ViS2l0IHJldmlzaW9uOiAnICsKICAgICAgICAgICAgICAgICAnPGlucHV0IG5hbWU9
cmV2aXNpb24gcGxhY2Vob2xkZXI9ImUuZy4gNjU1NDAiIHZhbHVlPSInICsgcmV2aXNpb24gKwog
ICAgICAgICAgICAgICAgICciIGlkPXJldmlzaW9uLWlucHV0PjwvZm9ybT4nOwotICAgICAgfSBl
bHNlCi0gICAgICAgIGh0bWwgKz0gJyB8IDxiPk9ubHkgc2hvd3MgYWN0dWFsIHJlc3VsdHMvZGlm
ZnMgZnJvbSB0aGUgbW9zdCByZWNlbnQgKmZhaWx1cmUqIG9uIGVhY2ggYm90LjwvYj4nOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaHRtbCArPSAnIHwgPGI+T25seSBzaG93cyBhY3R1
YWwgcmVzdWx0cy9kaWZmcyBmcm9tIHRoZSBtb3N0IHJlY2VudCAqZmFpbHVyZSogb24gZWFjaCBi
b3QuPC9iPic7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgaHRtbCArPSAnIHwgPHNw
YW4+UmVzdWx0cyBoZWlnaHQ6PGlucHV0ICcgKwogICAgICAgICAgICdvbmNoYW5nZT0ic2V0UXVl
cnlQYXJhbWV0ZXIoXCdyZXN1bHRzSGVpZ2h0XCcsdGhpcy52YWx1ZSkiIHZhbHVlPSInICsKQEAg
LTIxMTQsMzEgKzIxMTYsNTkgQEAgZnVuY3Rpb24gZXhwZWN0YXRpb25zVGl0bGUocGxhdGZvcm0s
IHBhdAogCiBmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zKGV4cGVjdGF0aW9uc0NvbnRhaW5lcikK
IHsKKyAgICB2YXIgdGVzdCA9IGV4cGVjdGF0aW9uc0NvbnRhaW5lci5nZXRBdHRyaWJ1dGUoJ3Rl
c3QnKTsKICAgICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpKQotICAgICAgICBsb2FkRXhwZWN0
YXRpb25zTGF5b3V0VGVzdHMoZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAgICAgbG9hZEV4
cGVjdGF0aW9uc0xheW91dFRlc3RzKHRlc3QsIGV4cGVjdGF0aW9uc0NvbnRhaW5lcik7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHZhciB0ZXN0ID0gZXhwZWN0YXRpb25zQ29udGFpbmVyLmdldEF0dHJp
YnV0ZSgndGVzdCcpOwogICAgICAgICB2YXIgcmVzdWx0cyA9IGdfdGVzdFRvUmVzdWx0c01hcFt0
ZXN0XTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgbG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKHJlc3VsdHNbaV0uYnVp
bGRlciwgdGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAgICAgICAgIGlmIChpc0dQ
VVRlc3RSZXN1bHRzKCkpCisgICAgICAgICAgICAgICAgbG9hZEdQVVJlc3VsdHNGb3JCdWlsZGVy
KHJlc3VsdHNbaV0uYnVpbGRlciwgdGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2FkTm9uV2ViS2l0UmVzdWx0c0ZvckJ1aWxk
ZXIocmVzdWx0c1tpXS5idWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpOwogICAg
IH0KIH0KIAorZnVuY3Rpb24gbG9hZEdQVVJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRlc3Qs
IGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKK3sKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdleHBlY3Rh
dGlvbnMtY29udGFpbmVyJzsKKyAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXY+PGI+JyAr
IGJ1aWxkZXIgKyAnPC9iPjwvZGl2Pic7CisgICAgZXhwZWN0YXRpb25zQ29udGFpbmVyLmFwcGVu
ZENoaWxkKGNvbnRhaW5lcik7CisKKyAgICB2YXIgYmFzZVVybCA9ICdodHRwOi8vY2hyb21pdW0t
YnJvd3Nlci1ncHUtdGVzdHMuY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vcnVucy8n
CisgICAgdmFyIGZhaWx1cmUgPSBpbmRleGVzRm9yRmFpbHVyZXMoYnVpbGRlciwgdGVzdClbMF07
CisKKyAgICB2YXIgYnVpbGROdW1iZXIgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0uYnVp
bGROdW1iZXJzW2ZhaWx1cmVdOworICAgIHZhciBwYXRoVG9Mb2cgPSBidWlsZGVyTWFzdGVyKGJ1
aWxkZXIpLmdldExvZ1BhdGgoYnVpbGRlciwgYnVpbGROdW1iZXIpICsgcGF0aFRvRmFpbHVyZUxv
Zyh0ZXN0KTsKKworICAgIHZhciBjaHJvbWVSZXZpc2lvbiA9IGdfcmVzdWx0c0J5QnVpbGRlclti
dWlsZGVyXS5jaHJvbWVSZXZpc2lvbltmYWlsdXJlXTsKKyAgICB2YXIgYnVpbGRlck5hbWUgPSBi
dWlsZGVyLnJlcGxhY2UoL1teQS1aYS16MC05IF0vZywgJycpLnJlcGxhY2UoLyAvZywgJ18nKTsK
KyAgICB2YXIgcmVzdWx0c1VybCA9IGJhc2VVcmwgKyBjaHJvbWVSZXZpc2lvbiArICdfJyArIGJ1
aWxkZXJOYW1lICsgJ18vJzsKKyAgICB2YXIgZmlsZW5hbWUgPSB0ZXN0LnNwbGl0KC9cLi8pWzFd
ICsgJy5wbmcnOworCisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHBhdGhU
b0xvZyk7CisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHJlc3VsdHNVcmwg
KyAnZ2VuLycgKyBmaWxlbmFtZSwgJ0dlbmVyYXRlZCcsIDQwMCk7CisgICAgYXBwZW5kTm9uV2Vi
S2l0UmVzdWx0cyhjb250YWluZXIsIHJlc3VsdHNVcmwgKyAncmVmLycgKyBmaWxlbmFtZSwgJ1Jl
ZmVyZW5jZScsIDQwMCk7CisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHJl
c3VsdHNVcmwgKyAnZGlmZi8nICsgZmlsZW5hbWUsICdEaWZmJywgNDAwKTsKK30KKwogZnVuY3Rp
b24gbG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0
aW9uc0NvbnRhaW5lcikKIHsKLSAgICB2YXIgZmFpbHVyZXMgPSBidWlsZE51bWJlcnNGb3JGYWls
dXJlcyhidWlsZGVyLCB0ZXN0KTsKKyAgICB2YXIgZmFpbHVyZXMgPSBpbmRleGVzRm9yRmFpbHVy
ZXMoYnVpbGRlciwgdGVzdCk7CiAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwogICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdj48Yj4nICsgYnVp
bGRlciArICc8L2I+PC9kaXY+JzsKICAgICBleHBlY3RhdGlvbnNDb250YWluZXIuYXBwZW5kQ2hp
bGQoY29udGFpbmVyKTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZhaWx1cmVzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGFueW1v
cmUuIERpZCB0aGUgcGF0aHMgY2hhbmdlPwogICAgICAgICAvLyBPbmNlIHRoYXQncyByZXNvbHZl
ZCwgc2VlIGlmIHdlIG5lZWQgdG8gdHJ5IGVhY2ggR1RFU1RfTU9ESUZJRVJTIHByZWZpeCBhcyB3
ZWxsLgotICAgICAgICB2YXIgcGF0aFRvTG9nID0gYnVpbGRlck1hc3RlcihidWlsZGVyKS5nZXRM
b2dQYXRoKGJ1aWxkZXIsIGZhaWx1cmVzW2ldKSArIHBhdGhUb0ZhaWx1cmVMb2codGVzdCk7Cisg
ICAgICAgIHZhciBidWlsZE51bWJlciA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS5idWls
ZE51bWJlcnNbZmFpbHVyZXNbaV1dOworICAgICAgICB2YXIgcGF0aFRvTG9nID0gYnVpbGRlck1h
c3RlcihidWlsZGVyKS5nZXRMb2dQYXRoKGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKSArIHBhdGhUb0Zh
aWx1cmVMb2codGVzdCk7CiAgICAgICAgIGFwcGVuZE5vbldlYktpdFJlc3VsdHMoY29udGFpbmVy
LCBwYXRoVG9Mb2cpOwogICAgIH0KIH0KIAotZnVuY3Rpb24gYXBwZW5kTm9uV2ViS2l0UmVzdWx0
cyhjb250YWluZXIsIHVybCkKK2Z1bmN0aW9uIGFwcGVuZE5vbldlYktpdFJlc3VsdHMoY29udGFp
bmVyLCB1cmwsIG9wdF90aXRsZSwgb3B0X3dpZHRoKQogewogICAgIC8vIFVzZSBhIHNjcmlwdCB0
YWcgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlIFVSTCA0MDRzLgogICAgIC8vIE5lZWQgdG8gdXNlIGEg
c2NyaXB0IHRhZyBzaW5jZSB0aGUgVVJMIGlzIGNyb3NzLWRvbWFpbi4KQEAgLTIxNTAsMTAgKzIx
ODAsMjEgQEAgZnVuY3Rpb24gYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZQogICAgICAg
ICBpdGVtLnNyYyA9IGR1bW15Tm9kZS5zcmM7CiAgICAgICAgIGl0ZW0uY2xhc3NOYW1lID0gJ25v
bi13ZWJraXQtcmVzdWx0cyc7CiAgICAgICAgIGl0ZW0uc3R5bGUuaGVpZ2h0ID0gZ19jdXJyZW50
U3RhdGUucmVzdWx0c0hlaWdodCArICdweCc7Ci0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGls
ZChpdGVtKTsKLSAgICB9Ci0gICAgZHVtbXlOb2RlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGRDb250YWluZXIpOwor
ICAgICAgICBpZiAob3B0X3dpZHRoID4gMCkKKyAgICAgICAgICAgIGl0ZW0uc3R5bGUud2lkdGgg
PSBvcHRfd2lkdGggKyAncHgnOworCisgICAgICAgIGlmIChvcHRfdGl0bGUpIHsKKyAgICAgICAg
ICAgIHZhciBjaGlsZENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsK
KyAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdleHBlY3RhdGlvbnMtaXRl
bSc7CisgICAgICAgICAgICB2YXIgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7
CisgICAgICAgICAgICB0aXRsZS5pbm5lclRleHQgPSBvcHRfdGl0bGU7CisgICAgICAgICAgICBj
aGlsZENvbnRhaW5lci5hcHBlbmRDaGlsZCh0aXRsZSk7CisgICAgICAgICAgICBjaGlsZENvbnRh
aW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKKyAgICAgICAg
ICAgIGNoaWxkQ29udGFpbmVyLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgICAgICAgY29udGFp
bmVyLmluc2VydEJlZm9yZShjaGlsZENvbnRhaW5lciwgZHVtbXlOb2RlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRCZWZvcmUoaXRlbSwgZHVtbXlOb2Rl
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkdW1teU5v
ZGUpOwpAQCAtMjIxOCwxMSArMjI1OSwxMCBAQCBmdW5jdGlvbiBsb2FkQmFzZWxpbmVzRm9yVGVz
dChleHBlY3RhdGlvCiAgICAgICAgIGxvYWRCYXNlbGluZXNGb3JUZXN0KGV4cGVjdGF0aW9uc0Nv
bnRhaW5lcnMsIGV4cGVjdGF0aW9uc0NvbnRhaW5lciwgYmFzZVRlc3QodGVzdCwgc3VpdGUpKTsK
IH0KIAotZnVuY3Rpb24gbG9hZEV4cGVjdGF0aW9uc0xheW91dFRlc3RzKGV4cGVjdGF0aW9uc0Nv
bnRhaW5lcikKK2Z1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBleHBl
Y3RhdGlvbnNDb250YWluZXIpCiB7CiAgICAgLy8gTWFwIGZyb20gZmlsZSBleHRlbnNpb24gdG8g
Y29udGFpbmVyIGRpdiBmb3IgZXhwZWN0YXRpb25zIG9mIHRoYXQgdHlwZS4KICAgICB2YXIgZXhw
ZWN0YXRpb25zQ29udGFpbmVycyA9IHt9OwotICAgIHZhciB0ZXN0ID0gZXhwZWN0YXRpb25zQ29u
dGFpbmVyLmdldEF0dHJpYnV0ZSgndGVzdCcpOwogCiAgICAgdmFyIHJldmlzaW9uQ29udGFpbmVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgcmV2aXNpb25Db250YWluZXIu
dGV4dENvbnRlbnQgPSAiU2hvd2luZyByZXN1bHRzIGZvcjogIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133153</attachid>
            <date>2012-03-21 17:28:12 -0700</date>
            <delta_ts>2012-03-26 18:24:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81848-20120321172811.patch</filename>
            <type>text/plain</type>
            <size>9956</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExMTYy
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAz
LTIxICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTaG93IGltYWdlIGRp
ZmZzIGZvciBncHVfdGVzdHMgb24gZmxha2luZXNzIGRhc2hib2FyZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4NDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanM6CisgICAgICAgICogVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKiBU
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9h
cmQuaHRtbDoKKwogMjAxMi0wMy0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTW92ZSB3dGYvUGxhdGZvcm0uaCBmcm9tIEphdmFTY3JpcHRDb3JlIHRvIFNvdXJj
ZS9XVEYvd3RmCkluZGV4OiBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2J1aWxkZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvYnVpbGRlcnMuanMJKHJldmlzaW9uIDExMTYyMCkKKysrIFRvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDYgKzUxLDcgQEAgdmFyIExFR0FDWV9CVUlMREVSX01BU1RFUlNfVE9fR1JPVVBTID0g
ewogICAgICdDaHJvbWl1bSc6ICdAREVQUyAtIGNocm9taXVtLm9yZycsCiAgICAgJ0Nocm9taXVt
Q2hyb21pdW1PUyc6ICdAREVQUyBDck9TIC0gY2hyb21pdW0ub3JnJywKICAgICAnQ2hyb21pdW1H
UFUnOiAnQERFUFMgLSBjaHJvbWl1bS5vcmcnLAorICAgICdDaHJvbWl1bUdQVUZZSSc6ICdAREVQ
UyBGWUkgLSBjaHJvbWl1bS5vcmcnLAogICAgICdDaHJvbWl1bVdlYmtpdCc6ICdAVG9UIC0gY2hy
b21pdW0ub3JnJywKICAgICAnd2Via2l0Lm9yZyc6ICdAVG9UIC0gd2Via2l0Lm9yZycKIH07CkBA
IC0xNjEsMTEgKzE2MiwxNSBAQCB2YXIgQ0hST01JVU1fR1BVX0ZZSV9HVEVTVFNfREVQU19CVUlM
REVSCiAgICAgWydNYWMgUmVsZWFzZSAoQVRJKSddLAogICAgIFsnTGludXggUmVsZWFzZSAoQVRJ
KSddLAogICAgIFsnTGludXggUmVsZWFzZSAoSW50ZWwpJ10sCisgICAgWydXaW43IEF1ZGlvJ10s
CisgICAgWydMaW51eCBBdWRpbyddLAogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihD
SFJPTUlVTV9HUFVfRllJX0dURVNUU19ERVBTX0JVSUxERVJTLCBDSFJPTUlVTV9HUFVfRllJX0JV
SUxERVJfTUFTVEVSKTsKIAogdmFyIENIUk9NSVVNX0dQVV9HVEVTVFNfVE9UX0JVSUxERVJTID0g
WwotICAgIFsnR1BVIFdpbjcgKGRiZykgKE5WSURJQSknLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9C
VUlMREVSXSwKKyAgICBbJ0dQVSBXaW43IChOVklESUEpJywgQnVpbGRlckdyb3VwLkRFRkFVTFRf
QlVJTERFUl0sCisgICAgWydHUFUgV2luNyAoZGJnKSAoTlZJRElBKSddLAorICAgIFsnR1BVIE1h
YyddLAogICAgIFsnR1BVIE1hYyAoZGJnKSddLAogICAgIFsnR1BVIExpbnV4IChkYmcpIChOVklE
SUEpJ10sCiBdOwpJbmRleDogVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy9kYXNoYm9hcmRfYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCShyZXZpc2lvbiAxMTE2MjApCisr
KyBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNl
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDExIEBAIGZ1bmN0aW9uIGlzTGF5b3V0
VGVzdFJlc3VsdHMoKQogICAgIHJldHVybiBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSA9PSAnbGF5
b3V0LXRlc3RzJzsKIH0KIAorZnVuY3Rpb24gaXNHUFVUZXN0UmVzdWx0cygpCit7CisgICAgcmV0
dXJuIGdfY3VycmVudFN0YXRlLnRlc3RUeXBlID09ICdncHVfdGVzdHMnOworfQorCiBmdW5jdGlv
biBjdXJyZW50QnVpbGRlckdyb3VwQ2F0ZWdvcnkob3B0X3N0YXRlKQogewogICAgIHZhciBzdGF0
ZSA9IG9wdF9zdGF0ZSB8fCBnX2N1cnJlbnRTdGF0ZTsKSW5kZXg6IFRvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNz
X2Rhc2hib2FyZC5odG1sCShyZXZpc2lvbiAxMTE2MjApCisrKyBUb29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTIxMyw4ICsxMjEzLDggQEAgZnVuY3Rpb24gaXNGYWlsdXJlKGJ1aWxkZXIsIHRl
c3ROYW1lLCBpbgogICAgIGNvbnNvbGUuZXJyb3IoJ0luZGV4IGV4Y2VlZHMgbnVtYmVyIG9mIHJl
c3VsdHM6ICcgKyBpbmRleCk7CiB9CiAKLS8vIFJldHVybnMgYW4gYXJyYXkgb2YgYnVpbGROdW1i
ZXJzIGZvciBhbGwgYnVpbGRzIHdoZXJlIHRoaXMgdGVzdCBmYWlsZWQuCi1mdW5jdGlvbiBidWls
ZE51bWJlcnNGb3JGYWlsdXJlcyhidWlsZGVyLCB0ZXN0TmFtZSkKKy8vIFJldHVybnMgYW4gYXJy
YXkgb2YgaW5kZXhlcyBmb3IgYWxsIGJ1aWxkcyB3aGVyZSB0aGlzIHRlc3QgZmFpbGVkLgorZnVu
Y3Rpb24gaW5kZXhlc0ZvckZhaWx1cmVzKGJ1aWxkZXIsIHRlc3ROYW1lKQogewogICAgIHZhciBy
YXdSZXN1bHRzID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLnRlc3RzW3Rlc3ROYW1lXS5y
ZXN1bHRzOwogICAgIHZhciBidWlsZE51bWJlcnMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRl
cl0uYnVpbGROdW1iZXJzOwpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgZnVuY3Rpb24gYnVpbGROdW1i
ZXJzRm9yRmFpbHVyZXMoYnVpbGRlcgogICAgICAgICB2YXIgbnVtUmVzdWx0cyA9IHJhd1Jlc3Vs
dHNbaV1bUkxFLkxFTkdUSF07CiAgICAgICAgIGlmIChpc0ZhaWxpbmdSZXN1bHQocmF3UmVzdWx0
c1tpXVtSTEUuVkFMVUVdKSkgewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1S
ZXN1bHRzOyBqKyspCi0gICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChidWlsZE51bWJlcnNb
aW5kZXggKyBqXSk7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChpbmRleCArIGopOwog
ICAgICAgICB9CiAgICAgICAgIGluZGV4ICs9IG51bVJlc3VsdHM7CiAgICAgfQpAQCAtMTgyOSwx
NiArMTgyOSwxOCBAQCBmdW5jdGlvbiBodG1sRm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRlCiAg
ICAgaHRtbCArPSAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD0nICsgdGVzdCArICc+PGRp
dj4nICsKICAgICAgICAgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93RXhwZWN0YXRpb25zJywg
J3Jlc3VsdHMnKQogCi0gICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkgewotICAgICAgICBo
dG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93TGFyZ2VFeHBlY3RhdGlv
bnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOworICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkg
fHwgaXNHUFVUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRz
KCkpCisgICAgICAgICAgICBodG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdz
aG93TGFyZ2VFeHBlY3RhdGlvbnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOwogICAgICAgICBpZiAo
bWFzdGVyID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewogICAgICAgICAgICAgdmFyIHJldmlz
aW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgJyc7CiAgICAgICAgICAgICBodG1sICs9
ICc8Zm9ybSBvbnN1Ym1pdD0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCByZXZpc2lv
bi52YWx1ZSk7JyArCiAgICAgICAgICAgICAgICAgJ3JldHVybiBmYWxzZTsiPlNob3cgcmVzdWx0
cyBmb3IgV2ViS2l0IHJldmlzaW9uOiAnICsKICAgICAgICAgICAgICAgICAnPGlucHV0IG5hbWU9
cmV2aXNpb24gcGxhY2Vob2xkZXI9ImUuZy4gNjU1NDAiIHZhbHVlPSInICsgcmV2aXNpb24gKwog
ICAgICAgICAgICAgICAgICciIGlkPXJldmlzaW9uLWlucHV0PjwvZm9ybT4nOwotICAgICAgfSBl
bHNlCi0gICAgICAgIGh0bWwgKz0gJyB8IDxiPk9ubHkgc2hvd3MgYWN0dWFsIHJlc3VsdHMvZGlm
ZnMgZnJvbSB0aGUgbW9zdCByZWNlbnQgKmZhaWx1cmUqIG9uIGVhY2ggYm90LjwvYj4nOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaHRtbCArPSAnIHwgPGI+T25seSBzaG93cyBhY3R1
YWwgcmVzdWx0cy9kaWZmcyBmcm9tIHRoZSBtb3N0IHJlY2VudCAqZmFpbHVyZSogb24gZWFjaCBi
b3QuPC9iPic7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgaHRtbCArPSAnIHwgPHNw
YW4+UmVzdWx0cyBoZWlnaHQ6PGlucHV0ICcgKwogICAgICAgICAgICdvbmNoYW5nZT0ic2V0UXVl
cnlQYXJhbWV0ZXIoXCdyZXN1bHRzSGVpZ2h0XCcsdGhpcy52YWx1ZSkiIHZhbHVlPSInICsKQEAg
LTIxMTQsMzEgKzIxMTYsNTkgQEAgZnVuY3Rpb24gZXhwZWN0YXRpb25zVGl0bGUocGxhdGZvcm0s
IHBhdAogCiBmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zKGV4cGVjdGF0aW9uc0NvbnRhaW5lcikK
IHsKKyAgICB2YXIgdGVzdCA9IGV4cGVjdGF0aW9uc0NvbnRhaW5lci5nZXRBdHRyaWJ1dGUoJ3Rl
c3QnKTsKICAgICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpKQotICAgICAgICBsb2FkRXhwZWN0
YXRpb25zTGF5b3V0VGVzdHMoZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAgICAgbG9hZEV4
cGVjdGF0aW9uc0xheW91dFRlc3RzKHRlc3QsIGV4cGVjdGF0aW9uc0NvbnRhaW5lcik7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHZhciB0ZXN0ID0gZXhwZWN0YXRpb25zQ29udGFpbmVyLmdldEF0dHJp
YnV0ZSgndGVzdCcpOwogICAgICAgICB2YXIgcmVzdWx0cyA9IGdfdGVzdFRvUmVzdWx0c01hcFt0
ZXN0XTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgbG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKHJlc3VsdHNbaV0uYnVp
bGRlciwgdGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAgICAgICAgIGlmIChpc0dQ
VVRlc3RSZXN1bHRzKCkpCisgICAgICAgICAgICAgICAgbG9hZEdQVVJlc3VsdHNGb3JCdWlsZGVy
KHJlc3VsdHNbaV0uYnVpbGRlciwgdGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2FkTm9uV2ViS2l0UmVzdWx0c0ZvckJ1aWxk
ZXIocmVzdWx0c1tpXS5idWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpOwogICAg
IH0KIH0KIAorZnVuY3Rpb24gbG9hZEdQVVJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRlc3Qs
IGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKK3sKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdleHBlY3Rh
dGlvbnMtY29udGFpbmVyJzsKKyAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXY+PGI+JyAr
IGJ1aWxkZXIgKyAnPC9iPjwvZGl2Pic7CisgICAgZXhwZWN0YXRpb25zQ29udGFpbmVyLmFwcGVu
ZENoaWxkKGNvbnRhaW5lcik7CisKKyAgICB2YXIgYmFzZVVybCA9ICdodHRwOi8vY2hyb21pdW0t
YnJvd3Nlci1ncHUtdGVzdHMuY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vcnVucy8n
CisgICAgdmFyIGZhaWx1cmUgPSBpbmRleGVzRm9yRmFpbHVyZXMoYnVpbGRlciwgdGVzdClbMF07
CisKKyAgICB2YXIgYnVpbGROdW1iZXIgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0uYnVp
bGROdW1iZXJzW2ZhaWx1cmVdOworICAgIHZhciBwYXRoVG9Mb2cgPSBidWlsZGVyTWFzdGVyKGJ1
aWxkZXIpLmdldExvZ1BhdGgoYnVpbGRlciwgYnVpbGROdW1iZXIpICsgcGF0aFRvRmFpbHVyZUxv
Zyh0ZXN0KTsKKworICAgIHZhciBjaHJvbWVSZXZpc2lvbiA9IGdfcmVzdWx0c0J5QnVpbGRlclti
dWlsZGVyXS5jaHJvbWVSZXZpc2lvbltmYWlsdXJlXTsKKyAgICB2YXIgYnVpbGRlck5hbWUgPSBi
dWlsZGVyLnJlcGxhY2UoL1teQS1aYS16MC05IF0vZywgJycpLnJlcGxhY2UoLyAvZywgJ18nKTsK
KyAgICB2YXIgcmVzdWx0c1VybCA9IGJhc2VVcmwgKyBjaHJvbWVSZXZpc2lvbiArICdfJyArIGJ1
aWxkZXJOYW1lICsgJ18vJzsKKyAgICB2YXIgZmlsZW5hbWUgPSB0ZXN0LnNwbGl0KC9cLi8pWzFd
ICsgJy5wbmcnOworCisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHBhdGhU
b0xvZyk7CisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHJlc3VsdHNVcmwg
KyAnZ2VuLycgKyBmaWxlbmFtZSwgJ0dlbmVyYXRlZCcsIDQwMCk7CisgICAgYXBwZW5kTm9uV2Vi
S2l0UmVzdWx0cyhjb250YWluZXIsIHJlc3VsdHNVcmwgKyAncmVmLycgKyBmaWxlbmFtZSwgJ1Jl
ZmVyZW5jZScsIDQwMCk7CisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHJl
c3VsdHNVcmwgKyAnZGlmZi8nICsgZmlsZW5hbWUsICdEaWZmJywgNDAwKTsKK30KKwogZnVuY3Rp
b24gbG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0
aW9uc0NvbnRhaW5lcikKIHsKLSAgICB2YXIgZmFpbHVyZXMgPSBidWlsZE51bWJlcnNGb3JGYWls
dXJlcyhidWlsZGVyLCB0ZXN0KTsKKyAgICB2YXIgZmFpbHVyZXMgPSBpbmRleGVzRm9yRmFpbHVy
ZXMoYnVpbGRlciwgdGVzdCk7CiAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwogICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdj48Yj4nICsgYnVp
bGRlciArICc8L2I+PC9kaXY+JzsKICAgICBleHBlY3RhdGlvbnNDb250YWluZXIuYXBwZW5kQ2hp
bGQoY29udGFpbmVyKTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZhaWx1cmVzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGFueW1v
cmUuIERpZCB0aGUgcGF0aHMgY2hhbmdlPwogICAgICAgICAvLyBPbmNlIHRoYXQncyByZXNvbHZl
ZCwgc2VlIGlmIHdlIG5lZWQgdG8gdHJ5IGVhY2ggR1RFU1RfTU9ESUZJRVJTIHByZWZpeCBhcyB3
ZWxsLgotICAgICAgICB2YXIgcGF0aFRvTG9nID0gYnVpbGRlck1hc3RlcihidWlsZGVyKS5nZXRM
b2dQYXRoKGJ1aWxkZXIsIGZhaWx1cmVzW2ldKSArIHBhdGhUb0ZhaWx1cmVMb2codGVzdCk7Cisg
ICAgICAgIHZhciBidWlsZE51bWJlciA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS5idWls
ZE51bWJlcnNbZmFpbHVyZXNbaV1dOworICAgICAgICB2YXIgcGF0aFRvTG9nID0gYnVpbGRlck1h
c3RlcihidWlsZGVyKS5nZXRMb2dQYXRoKGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKSArIHBhdGhUb0Zh
aWx1cmVMb2codGVzdCk7CiAgICAgICAgIGFwcGVuZE5vbldlYktpdFJlc3VsdHMoY29udGFpbmVy
LCBwYXRoVG9Mb2cpOwogICAgIH0KIH0KIAotZnVuY3Rpb24gYXBwZW5kTm9uV2ViS2l0UmVzdWx0
cyhjb250YWluZXIsIHVybCkKK2Z1bmN0aW9uIGFwcGVuZE5vbldlYktpdFJlc3VsdHMoY29udGFp
bmVyLCB1cmwsIG9wdF90aXRsZSwgb3B0X3dpZHRoKQogewogICAgIC8vIFVzZSBhIHNjcmlwdCB0
YWcgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlIFVSTCA0MDRzLgogICAgIC8vIE5lZWQgdG8gdXNlIGEg
c2NyaXB0IHRhZyBzaW5jZSB0aGUgVVJMIGlzIGNyb3NzLWRvbWFpbi4KQEAgLTIxNTAsMTAgKzIx
ODAsMjEgQEAgZnVuY3Rpb24gYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZQogICAgICAg
ICBpdGVtLnNyYyA9IGR1bW15Tm9kZS5zcmM7CiAgICAgICAgIGl0ZW0uY2xhc3NOYW1lID0gJ25v
bi13ZWJraXQtcmVzdWx0cyc7CiAgICAgICAgIGl0ZW0uc3R5bGUuaGVpZ2h0ID0gZ19jdXJyZW50
U3RhdGUucmVzdWx0c0hlaWdodCArICdweCc7Ci0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGls
ZChpdGVtKTsKLSAgICB9Ci0gICAgZHVtbXlOb2RlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAg
ICAgICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGRDb250YWluZXIpOwor
ICAgICAgICBpZiAob3B0X3dpZHRoID4gMCkKKyAgICAgICAgICAgIGl0ZW0uc3R5bGUud2lkdGgg
PSBvcHRfd2lkdGggKyAncHgnOworCisgICAgICAgIGlmIChvcHRfdGl0bGUpIHsKKyAgICAgICAg
ICAgIHZhciBjaGlsZENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsK
KyAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdleHBlY3RhdGlvbnMtaXRl
bSc7CisgICAgICAgICAgICB2YXIgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7
CisgICAgICAgICAgICB0aXRsZS5pbm5lclRleHQgPSBvcHRfdGl0bGU7CisgICAgICAgICAgICBj
aGlsZENvbnRhaW5lci5hcHBlbmRDaGlsZCh0aXRsZSk7CisgICAgICAgICAgICBjaGlsZENvbnRh
aW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKKyAgICAgICAg
ICAgIGNoaWxkQ29udGFpbmVyLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgICAgICAgY29udGFp
bmVyLmluc2VydEJlZm9yZShjaGlsZENvbnRhaW5lciwgZHVtbXlOb2RlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRCZWZvcmUoaXRlbSwgZHVtbXlOb2Rl
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkdW1teU5v
ZGUpOwpAQCAtMjIxOCwxMSArMjI1OSwxMCBAQCBmdW5jdGlvbiBsb2FkQmFzZWxpbmVzRm9yVGVz
dChleHBlY3RhdGlvCiAgICAgICAgIGxvYWRCYXNlbGluZXNGb3JUZXN0KGV4cGVjdGF0aW9uc0Nv
bnRhaW5lcnMsIGV4cGVjdGF0aW9uc0NvbnRhaW5lciwgYmFzZVRlc3QodGVzdCwgc3VpdGUpKTsK
IH0KIAotZnVuY3Rpb24gbG9hZEV4cGVjdGF0aW9uc0xheW91dFRlc3RzKGV4cGVjdGF0aW9uc0Nv
bnRhaW5lcikKK2Z1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBleHBl
Y3RhdGlvbnNDb250YWluZXIpCiB7CiAgICAgLy8gTWFwIGZyb20gZmlsZSBleHRlbnNpb24gdG8g
Y29udGFpbmVyIGRpdiBmb3IgZXhwZWN0YXRpb25zIG9mIHRoYXQgdHlwZS4KICAgICB2YXIgZXhw
ZWN0YXRpb25zQ29udGFpbmVycyA9IHt9OwotICAgIHZhciB0ZXN0ID0gZXhwZWN0YXRpb25zQ29u
dGFpbmVyLmdldEF0dHJpYnV0ZSgndGVzdCcpOwogCiAgICAgdmFyIHJldmlzaW9uQ29udGFpbmVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgcmV2aXNpb25Db250YWluZXIu
dGV4dENvbnRlbnQgPSAiU2hvd2luZyByZXN1bHRzIGZvcjogIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133956</attachid>
            <date>2012-03-26 18:24:01 -0700</date>
            <delta_ts>2012-03-27 11:46:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81848-20120326182400.patch</filename>
            <type>text/plain</type>
            <size>10673</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExMTYy
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAz
LTIxICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTaG93IGltYWdlIGRp
ZmZzIGZvciBncHVfdGVzdHMgb24gZmxha2luZXNzIGRhc2hib2FyZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4NDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgcmVzdWx0cyBsYXlvdXQg
Zm9yIGdwdV90ZXN0cyB0aGF0IHB1bGxzIHRoZSBpbWFnZSBkaWZmcyBpbgorICAgICAgICBhZGRp
dGlvbiB0byB0aGUgdGV4dCBvdXRwdXQuIEFsc28gYWRkIG5ldyBncHVfdGVzdHMgYnVpbGRlcnMu
CisKKyAgICAgICAgKiBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1
aWxkZXJzLmpzOiBVcGRhdGUKKyAgICAgICAgZ3B1X3Rlc3RzIGJ1aWxkZXJzLgorICAgICAgICAq
IFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2Uu
anM6IEFkZCBhCisgICAgICAgIGZ1bmN0aW9uIHRvIGNoZWNrIGZvciBHUFUgdGVzdCB0eXBlLgor
ICAgICAgICAqIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZC5odG1sOgorICAgICAgICBBZGQgbmV3IEdQVSByZXN1bHRzIGxheW91dC4K
KwogMjAxMi0wMy0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TW92ZSB3dGYvUGxhdGZvcm0uaCBmcm9tIEphdmFTY3JpcHRDb3JlIHRvIFNvdXJjZS9XVEYvd3Rm
CkluZGV4OiBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvYnVpbGRlcnMuanMJKHJldmlzaW9uIDExMTYyMCkKKysrIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYg
KzUxLDcgQEAgdmFyIExFR0FDWV9CVUlMREVSX01BU1RFUlNfVE9fR1JPVVBTID0gewogICAgICdD
aHJvbWl1bSc6ICdAREVQUyAtIGNocm9taXVtLm9yZycsCiAgICAgJ0Nocm9taXVtQ2hyb21pdW1P
Uyc6ICdAREVQUyBDck9TIC0gY2hyb21pdW0ub3JnJywKICAgICAnQ2hyb21pdW1HUFUnOiAnQERF
UFMgLSBjaHJvbWl1bS5vcmcnLAorICAgICdDaHJvbWl1bUdQVUZZSSc6ICdAREVQUyBGWUkgLSBj
aHJvbWl1bS5vcmcnLAogICAgICdDaHJvbWl1bVdlYmtpdCc6ICdAVG9UIC0gY2hyb21pdW0ub3Jn
JywKICAgICAnd2Via2l0Lm9yZyc6ICdAVG9UIC0gd2Via2l0Lm9yZycKIH07CkBAIC0xNjEsMTEg
KzE2MiwxNSBAQCB2YXIgQ0hST01JVU1fR1BVX0ZZSV9HVEVTVFNfREVQU19CVUlMREVSCiAgICAg
WydNYWMgUmVsZWFzZSAoQVRJKSddLAogICAgIFsnTGludXggUmVsZWFzZSAoQVRJKSddLAogICAg
IFsnTGludXggUmVsZWFzZSAoSW50ZWwpJ10sCisgICAgWydXaW43IEF1ZGlvJ10sCisgICAgWydM
aW51eCBBdWRpbyddLAogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihDSFJPTUlVTV9H
UFVfRllJX0dURVNUU19ERVBTX0JVSUxERVJTLCBDSFJPTUlVTV9HUFVfRllJX0JVSUxERVJfTUFT
VEVSKTsKIAogdmFyIENIUk9NSVVNX0dQVV9HVEVTVFNfVE9UX0JVSUxERVJTID0gWwotICAgIFsn
R1BVIFdpbjcgKGRiZykgKE5WSURJQSknLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwK
KyAgICBbJ0dQVSBXaW43IChOVklESUEpJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUl0s
CisgICAgWydHUFUgV2luNyAoZGJnKSAoTlZJRElBKSddLAorICAgIFsnR1BVIE1hYyddLAogICAg
IFsnR1BVIE1hYyAoZGJnKSddLAogICAgIFsnR1BVIExpbnV4IChkYmcpIChOVklESUEpJ10sCiBd
OwpJbmRleDogVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9h
cmRfYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCShyZXZpc2lvbiAxMTE2MjApCisrKyBUb29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDExIEBAIGZ1bmN0aW9uIGlzTGF5b3V0VGVzdFJlc3Vs
dHMoKQogICAgIHJldHVybiBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSA9PSAnbGF5b3V0LXRlc3Rz
JzsKIH0KIAorZnVuY3Rpb24gaXNHUFVUZXN0UmVzdWx0cygpCit7CisgICAgcmV0dXJuIGdfY3Vy
cmVudFN0YXRlLnRlc3RUeXBlID09ICdncHVfdGVzdHMnOworfQorCiBmdW5jdGlvbiBjdXJyZW50
QnVpbGRlckdyb3VwQ2F0ZWdvcnkob3B0X3N0YXRlKQogewogICAgIHZhciBzdGF0ZSA9IG9wdF9z
dGF0ZSB8fCBnX2N1cnJlbnRTdGF0ZTsKSW5kZXg6IFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2Fy
ZC5odG1sCShyZXZpc2lvbiAxMTE2MjApCisrKyBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjYyLDYgKzI2Miw5IEBAIHByZS5leHBlY3RhdGlvbiB7CiAubm9uLXdlYmtpdC1yZXN1bHRzIHsK
ICAgICB3aWR0aDogOTklOwogfQorLmdwdS10ZXN0LXJlc3VsdHMgeworICAgIHdpZHRoOiA0MDBw
eDsKK30KIC51c2VkLXBsYXRmb3JtIHsKICAgICBmbG9hdDogcmlnaHQ7CiAgICAgY29sb3I6IGRh
cmtibHVlOwpAQCAtMTIxMyw4ICsxMjE2LDggQEAgZnVuY3Rpb24gaXNGYWlsdXJlKGJ1aWxkZXIs
IHRlc3ROYW1lLCBpbgogICAgIGNvbnNvbGUuZXJyb3IoJ0luZGV4IGV4Y2VlZHMgbnVtYmVyIG9m
IHJlc3VsdHM6ICcgKyBpbmRleCk7CiB9CiAKLS8vIFJldHVybnMgYW4gYXJyYXkgb2YgYnVpbGRO
dW1iZXJzIGZvciBhbGwgYnVpbGRzIHdoZXJlIHRoaXMgdGVzdCBmYWlsZWQuCi1mdW5jdGlvbiBi
dWlsZE51bWJlcnNGb3JGYWlsdXJlcyhidWlsZGVyLCB0ZXN0TmFtZSkKKy8vIFJldHVybnMgYW4g
YXJyYXkgb2YgaW5kZXhlcyBmb3IgYWxsIGJ1aWxkcyB3aGVyZSB0aGlzIHRlc3QgZmFpbGVkLgor
ZnVuY3Rpb24gaW5kZXhlc0ZvckZhaWx1cmVzKGJ1aWxkZXIsIHRlc3ROYW1lKQogewogICAgIHZh
ciByYXdSZXN1bHRzID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLnRlc3RzW3Rlc3ROYW1l
XS5yZXN1bHRzOwogICAgIHZhciBidWlsZE51bWJlcnMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVp
bGRlcl0uYnVpbGROdW1iZXJzOwpAQCAtMTIyNCw3ICsxMjI3LDcgQEAgZnVuY3Rpb24gYnVpbGRO
dW1iZXJzRm9yRmFpbHVyZXMoYnVpbGRlcgogICAgICAgICB2YXIgbnVtUmVzdWx0cyA9IHJhd1Jl
c3VsdHNbaV1bUkxFLkxFTkdUSF07CiAgICAgICAgIGlmIChpc0ZhaWxpbmdSZXN1bHQocmF3UmVz
dWx0c1tpXVtSTEUuVkFMVUVdKSkgewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBu
dW1SZXN1bHRzOyBqKyspCi0gICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChidWlsZE51bWJl
cnNbaW5kZXggKyBqXSk7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChpbmRleCArIGop
OwogICAgICAgICB9CiAgICAgICAgIGluZGV4ICs9IG51bVJlc3VsdHM7CiAgICAgfQpAQCAtMTgy
OSwxNiArMTgzMiwxOCBAQCBmdW5jdGlvbiBodG1sRm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRl
CiAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD0nICsgdGVzdCArICc+
PGRpdj4nICsKICAgICAgICAgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93RXhwZWN0YXRpb25z
JywgJ3Jlc3VsdHMnKQogCi0gICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkgewotICAgICAg
ICBodG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93TGFyZ2VFeHBlY3Rh
dGlvbnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOworICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRz
KCkgfHwgaXNHUFVUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIGlmIChpc0xheW91dFRlc3RSZXN1
bHRzKCkpCisgICAgICAgICAgICBodG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRl
KCdzaG93TGFyZ2VFeHBlY3RhdGlvbnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOwogICAgICAgICBp
ZiAobWFzdGVyID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewogICAgICAgICAgICAgdmFyIHJl
dmlzaW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgJyc7CiAgICAgICAgICAgICBodG1s
ICs9ICc8Zm9ybSBvbnN1Ym1pdD0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCByZXZp
c2lvbi52YWx1ZSk7JyArCiAgICAgICAgICAgICAgICAgJ3JldHVybiBmYWxzZTsiPlNob3cgcmVz
dWx0cyBmb3IgV2ViS2l0IHJldmlzaW9uOiAnICsKICAgICAgICAgICAgICAgICAnPGlucHV0IG5h
bWU9cmV2aXNpb24gcGxhY2Vob2xkZXI9ImUuZy4gNjU1NDAiIHZhbHVlPSInICsgcmV2aXNpb24g
KwogICAgICAgICAgICAgICAgICciIGlkPXJldmlzaW9uLWlucHV0PjwvZm9ybT4nOwotICAgICAg
fSBlbHNlCi0gICAgICAgIGh0bWwgKz0gJyB8IDxiPk9ubHkgc2hvd3MgYWN0dWFsIHJlc3VsdHMv
ZGlmZnMgZnJvbSB0aGUgbW9zdCByZWNlbnQgKmZhaWx1cmUqIG9uIGVhY2ggYm90LjwvYj4nOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaHRtbCArPSAnIHwgPGI+T25seSBzaG93cyBh
Y3R1YWwgcmVzdWx0cy9kaWZmcyBmcm9tIHRoZSBtb3N0IHJlY2VudCAqZmFpbHVyZSogb24gZWFj
aCBib3QuPC9iPic7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgaHRtbCArPSAnIHwg
PHNwYW4+UmVzdWx0cyBoZWlnaHQ6PGlucHV0ICcgKwogICAgICAgICAgICdvbmNoYW5nZT0ic2V0
UXVlcnlQYXJhbWV0ZXIoXCdyZXN1bHRzSGVpZ2h0XCcsdGhpcy52YWx1ZSkiIHZhbHVlPSInICsK
QEAgLTIxMTQsMzEgKzIxMTksNTkgQEAgZnVuY3Rpb24gZXhwZWN0YXRpb25zVGl0bGUocGxhdGZv
cm0sIHBhdAogCiBmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zKGV4cGVjdGF0aW9uc0NvbnRhaW5l
cikKIHsKKyAgICB2YXIgdGVzdCA9IGV4cGVjdGF0aW9uc0NvbnRhaW5lci5nZXRBdHRyaWJ1dGUo
J3Rlc3QnKTsKICAgICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpKQotICAgICAgICBsb2FkRXhw
ZWN0YXRpb25zTGF5b3V0VGVzdHMoZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAgICAgbG9h
ZEV4cGVjdGF0aW9uc0xheW91dFRlc3RzKHRlc3QsIGV4cGVjdGF0aW9uc0NvbnRhaW5lcik7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIHZhciB0ZXN0ID0gZXhwZWN0YXRpb25zQ29udGFpbmVyLmdldEF0
dHJpYnV0ZSgndGVzdCcpOwogICAgICAgICB2YXIgcmVzdWx0cyA9IGdfdGVzdFRvUmVzdWx0c01h
cFt0ZXN0XTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsr
KQotICAgICAgICAgICAgbG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKHJlc3VsdHNbaV0u
YnVpbGRlciwgdGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAgICAgICAgICAgIGlmIChp
c0dQVVRlc3RSZXN1bHRzKCkpCisgICAgICAgICAgICAgICAgbG9hZEdQVVJlc3VsdHNGb3JCdWls
ZGVyKHJlc3VsdHNbaV0uYnVpbGRlciwgdGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2FkTm9uV2ViS2l0UmVzdWx0c0ZvckJ1
aWxkZXIocmVzdWx0c1tpXS5idWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpOwog
ICAgIH0KIH0KIAorZnVuY3Rpb24gbG9hZEdQVVJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRl
c3QsIGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKK3sKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdleHBl
Y3RhdGlvbnMtY29udGFpbmVyJzsKKyAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXY+PGI+
JyArIGJ1aWxkZXIgKyAnPC9iPjwvZGl2Pic7CisgICAgZXhwZWN0YXRpb25zQ29udGFpbmVyLmFw
cGVuZENoaWxkKGNvbnRhaW5lcik7CisKKyAgICB2YXIgYmFzZVVybCA9ICdodHRwOi8vY2hyb21p
dW0tYnJvd3Nlci1ncHUtdGVzdHMuY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vcnVu
cy8nCisgICAgdmFyIGZhaWx1cmVJbmRleCA9IGluZGV4ZXNGb3JGYWlsdXJlcyhidWlsZGVyLCB0
ZXN0KVswXTsKKworICAgIHZhciBidWlsZE51bWJlciA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWls
ZGVyXS5idWlsZE51bWJlcnNbZmFpbHVyZUluZGV4XTsKKyAgICB2YXIgcGF0aFRvTG9nID0gYnVp
bGRlck1hc3RlcihidWlsZGVyKS5nZXRMb2dQYXRoKGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKSArIHBh
dGhUb0ZhaWx1cmVMb2codGVzdCk7CisKKyAgICB2YXIgY2hyb21lUmV2aXNpb24gPSBnX3Jlc3Vs
dHNCeUJ1aWxkZXJbYnVpbGRlcl0uY2hyb21lUmV2aXNpb25bZmFpbHVyZUluZGV4XTsKKyAgICB2
YXIgYnVpbGRlck5hbWUgPSBidWlsZGVyLnJlcGxhY2UoL1teQS1aYS16MC05IF0vZywgJycpLnJl
cGxhY2UoLyAvZywgJ18nKTsKKyAgICB2YXIgcmVzdWx0c1VybCA9IGJhc2VVcmwgKyBjaHJvbWVS
ZXZpc2lvbiArICdfJyArIGJ1aWxkZXJOYW1lICsgJ18vJzsKKyAgICB2YXIgZmlsZW5hbWUgPSB0
ZXN0LnNwbGl0KC9cLi8pWzFdICsgJy5wbmcnOworCisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0
cyhjb250YWluZXIsIHBhdGhUb0xvZywgJ25vbi13ZWJraXQtcmVzdWx0cycpOworICAgIGFwcGVu
ZE5vbldlYktpdFJlc3VsdHMoY29udGFpbmVyLCByZXN1bHRzVXJsICsgJ2dlbi8nICsgZmlsZW5h
bWUsICdncHUtdGVzdC1yZXN1bHRzJywgJ0dlbmVyYXRlZCcpOworICAgIGFwcGVuZE5vbldlYktp
dFJlc3VsdHMoY29udGFpbmVyLCByZXN1bHRzVXJsICsgJ3JlZi8nICsgZmlsZW5hbWUsICdncHUt
dGVzdC1yZXN1bHRzJywgJ1JlZmVyZW5jZScpOworICAgIGFwcGVuZE5vbldlYktpdFJlc3VsdHMo
Y29udGFpbmVyLCByZXN1bHRzVXJsICsgJ2RpZmYvJyArIGZpbGVuYW1lLCAnZ3B1LXRlc3QtcmVz
dWx0cycsICdEaWZmJyk7Cit9CisKIGZ1bmN0aW9uIGxvYWROb25XZWJLaXRSZXN1bHRzRm9yQnVp
bGRlcihidWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpCiB7Ci0gICAgdmFyIGZh
aWx1cmVzID0gYnVpbGROdW1iZXJzRm9yRmFpbHVyZXMoYnVpbGRlciwgdGVzdCk7CisgICAgdmFy
IGZhaWx1cmVJbmRleGVzID0gaW5kZXhlc0ZvckZhaWx1cmVzKGJ1aWxkZXIsIHRlc3QpOwogICAg
IHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICBjb250
YWluZXIuaW5uZXJIVE1MID0gJzxkaXY+PGI+JyArIGJ1aWxkZXIgKyAnPC9iPjwvZGl2Pic7CiAg
ICAgZXhwZWN0YXRpb25zQ29udGFpbmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7Ci0gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBmYWlsdXJlcy5sZW5ndGg7IGkrKykgeworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZmFpbHVyZUluZGV4ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZG9lc24ndCBzZWVtIHRvIHdvcmsgYW55bW9yZS4gRGlkIHRoZSBwYXRocyBjaGFuZ2U/
CiAgICAgICAgIC8vIE9uY2UgdGhhdCdzIHJlc29sdmVkLCBzZWUgaWYgd2UgbmVlZCB0byB0cnkg
ZWFjaCBHVEVTVF9NT0RJRklFUlMgcHJlZml4IGFzIHdlbGwuCi0gICAgICAgIHZhciBwYXRoVG9M
b2cgPSBidWlsZGVyTWFzdGVyKGJ1aWxkZXIpLmdldExvZ1BhdGgoYnVpbGRlciwgZmFpbHVyZXNb
aV0pICsgcGF0aFRvRmFpbHVyZUxvZyh0ZXN0KTsKLSAgICAgICAgYXBwZW5kTm9uV2ViS2l0UmVz
dWx0cyhjb250YWluZXIsIHBhdGhUb0xvZyk7CisgICAgICAgIHZhciBidWlsZE51bWJlciA9IGdf
cmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS5idWlsZE51bWJlcnNbZmFpbHVyZUluZGV4ZXNbaV1d
OworICAgICAgICB2YXIgcGF0aFRvTG9nID0gYnVpbGRlck1hc3RlcihidWlsZGVyKS5nZXRMb2dQ
YXRoKGJ1aWxkZXIsIGJ1aWxkTnVtYmVyKSArIHBhdGhUb0ZhaWx1cmVMb2codGVzdCk7CisgICAg
ICAgIGFwcGVuZE5vbldlYktpdFJlc3VsdHMoY29udGFpbmVyLCBwYXRoVG9Mb2csICdub24td2Vi
a2l0LXJlc3VsdHMnKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIGFwcGVuZE5vbldlYktpdFJlc3Vs
dHMoY29udGFpbmVyLCB1cmwpCitmdW5jdGlvbiBhcHBlbmROb25XZWJLaXRSZXN1bHRzKGNvbnRh
aW5lciwgdXJsLCBpdGVtQ2xhc3NOYW1lLCBvcHRfdGl0bGUpCiB7CiAgICAgLy8gVXNlIGEgc2Ny
aXB0IHRhZyB0byBkZXRlY3Qgd2hldGhlciB0aGUgVVJMIDQwNHMuCiAgICAgLy8gTmVlZCB0byB1
c2UgYSBzY3JpcHQgdGFnIHNpbmNlIHRoZSBVUkwgaXMgY3Jvc3MtZG9tYWluLgpAQCAtMjE0OCwx
MiArMjE4MSwyMyBAQCBmdW5jdGlvbiBhcHBlbmROb25XZWJLaXRSZXN1bHRzKGNvbnRhaW5lCiAg
ICAgZHVtbXlOb2RlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgaXRlbSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICAgICBpdGVtLnNyYyA9IGR1bW15
Tm9kZS5zcmM7Ci0gICAgICAgIGl0ZW0uY2xhc3NOYW1lID0gJ25vbi13ZWJraXQtcmVzdWx0cyc7
CisgICAgICAgIGl0ZW0uY2xhc3NOYW1lID0gaXRlbUNsYXNzTmFtZTsKICAgICAgICAgaXRlbS5z
dHlsZS5oZWlnaHQgPSBnX2N1cnJlbnRTdGF0ZS5yZXN1bHRzSGVpZ2h0ICsgJ3B4JzsKLSAgICAg
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGl0ZW0pOworCisgICAgICAgIGlmIChvcHRfdGl0bGUp
IHsKKyAgICAgICAgICAgIHZhciBjaGlsZENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICAgICAgY2hpbGRDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdp
bmxpbmUtYmxvY2snOworICAgICAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9IG9wdF90aXRsZTsK
KyAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyLmFwcGVuZENoaWxkKHRpdGxlKTsKKyAgICAgICAg
ICAgIGNoaWxkQ29udGFpbmVyLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgICAgICAgY29udGFp
bmVyLnJlcGxhY2VDaGlsZChjaGlsZENvbnRhaW5lciwgZHVtbXlOb2RlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5yZXBsYWNlQ2hpbGQoaXRlbSwgZHVtbXlOb2Rl
KTsKKyAgICAgICAgfQogICAgIH0KICAgICBkdW1teU5vZGUub25lcnJvciA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICBjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjaGlsZENvbnRhaW5l
cik7CisgICAgICAgIGNvbnRhaW5lci5yZW1vdmVDaGlsZChkdW1teU5vZGUpOwogICAgIH0KIAog
ICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkdW1teU5vZGUpOwpAQCAtMjIxOCwxMSArMjI2Miwx
MCBAQCBmdW5jdGlvbiBsb2FkQmFzZWxpbmVzRm9yVGVzdChleHBlY3RhdGlvCiAgICAgICAgIGxv
YWRCYXNlbGluZXNGb3JUZXN0KGV4cGVjdGF0aW9uc0NvbnRhaW5lcnMsIGV4cGVjdGF0aW9uc0Nv
bnRhaW5lciwgYmFzZVRlc3QodGVzdCwgc3VpdGUpKTsKIH0KIAotZnVuY3Rpb24gbG9hZEV4cGVj
dGF0aW9uc0xheW91dFRlc3RzKGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKK2Z1bmN0aW9uIGxvYWRF
eHBlY3RhdGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpCiB7CiAg
ICAgLy8gTWFwIGZyb20gZmlsZSBleHRlbnNpb24gdG8gY29udGFpbmVyIGRpdiBmb3IgZXhwZWN0
YXRpb25zIG9mIHRoYXQgdHlwZS4KICAgICB2YXIgZXhwZWN0YXRpb25zQ29udGFpbmVycyA9IHt9
OwotICAgIHZhciB0ZXN0ID0gZXhwZWN0YXRpb25zQ29udGFpbmVyLmdldEF0dHJpYnV0ZSgndGVz
dCcpOwogCiAgICAgdmFyIHJldmlzaW9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CiAgICAgcmV2aXNpb25Db250YWluZXIudGV4dENvbnRlbnQgPSAiU2hvd2luZyBy
ZXN1bHRzIGZvcjogIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134108</attachid>
            <date>2012-03-27 11:46:33 -0700</date>
            <delta_ts>2012-03-27 12:36:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81848-20120327114632.patch</filename>
            <type>text/plain</type>
            <size>10647</size>
            <attacher name="Dave Tu">dtu</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExMTYy
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAz
LTIxICBEYXZlIFR1ICA8ZHR1QGNocm9taXVtLm9yZz4KKworICAgICAgICBTaG93IGltYWdlIGRp
ZmZzIGZvciBncHVfdGVzdHMgb24gZmxha2luZXNzIGRhc2hib2FyZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4NDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgcmVzdWx0cyBsYXlvdXQg
Zm9yIGdwdV90ZXN0cyB0aGF0IHB1bGxzIHRoZSBpbWFnZSBkaWZmcyBpbgorICAgICAgICBhZGRp
dGlvbiB0byB0aGUgdGV4dCBvdXRwdXQuIEFsc28gYWRkIG5ldyBncHVfdGVzdHMgYnVpbGRlcnMu
CisKKyAgICAgICAgKiBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1
aWxkZXJzLmpzOiBVcGRhdGUKKyAgICAgICAgZ3B1X3Rlc3RzIGJ1aWxkZXJzLgorICAgICAgICAq
IFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2Uu
anM6IEFkZCBhCisgICAgICAgIGZ1bmN0aW9uIHRvIGNoZWNrIGZvciBHUFUgdGVzdCB0eXBlLgor
ICAgICAgICAqIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZC5odG1sOgorICAgICAgICBBZGQgbmV3IEdQVSByZXN1bHRzIGxheW91dC4K
KwogMjAxMi0wMy0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TW92ZSB3dGYvUGxhdGZvcm0uaCBmcm9tIEphdmFTY3JpcHRDb3JlIHRvIFNvdXJjZS9XVEYvd3Rm
CkluZGV4OiBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvYnVpbGRlcnMuanMJKHJldmlzaW9uIDExMTYyMCkKKysrIFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYg
KzUxLDcgQEAgdmFyIExFR0FDWV9CVUlMREVSX01BU1RFUlNfVE9fR1JPVVBTID0gewogICAgICdD
aHJvbWl1bSc6ICdAREVQUyAtIGNocm9taXVtLm9yZycsCiAgICAgJ0Nocm9taXVtQ2hyb21pdW1P
Uyc6ICdAREVQUyBDck9TIC0gY2hyb21pdW0ub3JnJywKICAgICAnQ2hyb21pdW1HUFUnOiAnQERF
UFMgLSBjaHJvbWl1bS5vcmcnLAorICAgICdDaHJvbWl1bUdQVUZZSSc6ICdAREVQUyBGWUkgLSBj
aHJvbWl1bS5vcmcnLAogICAgICdDaHJvbWl1bVdlYmtpdCc6ICdAVG9UIC0gY2hyb21pdW0ub3Jn
JywKICAgICAnd2Via2l0Lm9yZyc6ICdAVG9UIC0gd2Via2l0Lm9yZycKIH07CkBAIC0xNjEsMTEg
KzE2MiwxNSBAQCB2YXIgQ0hST01JVU1fR1BVX0ZZSV9HVEVTVFNfREVQU19CVUlMREVSCiAgICAg
WydNYWMgUmVsZWFzZSAoQVRJKSddLAogICAgIFsnTGludXggUmVsZWFzZSAoQVRJKSddLAogICAg
IFsnTGludXggUmVsZWFzZSAoSW50ZWwpJ10sCisgICAgWydXaW43IEF1ZGlvJ10sCisgICAgWydM
aW51eCBBdWRpbyddLAogXTsKIGFzc29jaWF0ZUJ1aWxkZXJzV2l0aE1hc3RlcihDSFJPTUlVTV9H
UFVfRllJX0dURVNUU19ERVBTX0JVSUxERVJTLCBDSFJPTUlVTV9HUFVfRllJX0JVSUxERVJfTUFT
VEVSKTsKIAogdmFyIENIUk9NSVVNX0dQVV9HVEVTVFNfVE9UX0JVSUxERVJTID0gWwotICAgIFsn
R1BVIFdpbjcgKGRiZykgKE5WSURJQSknLCBCdWlsZGVyR3JvdXAuREVGQVVMVF9CVUlMREVSXSwK
KyAgICBbJ0dQVSBXaW43IChOVklESUEpJywgQnVpbGRlckdyb3VwLkRFRkFVTFRfQlVJTERFUl0s
CisgICAgWydHUFUgV2luNyAoZGJnKSAoTlZJRElBKSddLAorICAgIFsnR1BVIE1hYyddLAogICAg
IFsnR1BVIE1hYyAoZGJnKSddLAogICAgIFsnR1BVIExpbnV4IChkYmcpIChOVklESUEpJ10sCiBd
OwpJbmRleDogVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9h
cmRfYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCShyZXZpc2lvbiAxMTE2MjApCisrKyBUb29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDExIEBAIGZ1bmN0aW9uIGlzTGF5b3V0VGVzdFJlc3Vs
dHMoKQogICAgIHJldHVybiBnX2N1cnJlbnRTdGF0ZS50ZXN0VHlwZSA9PSAnbGF5b3V0LXRlc3Rz
JzsKIH0KIAorZnVuY3Rpb24gaXNHUFVUZXN0UmVzdWx0cygpCit7CisgICAgcmV0dXJuIGdfY3Vy
cmVudFN0YXRlLnRlc3RUeXBlID09ICdncHVfdGVzdHMnOworfQorCiBmdW5jdGlvbiBjdXJyZW50
QnVpbGRlckdyb3VwQ2F0ZWdvcnkob3B0X3N0YXRlKQogewogICAgIHZhciBzdGF0ZSA9IG9wdF9z
dGF0ZSB8fCBnX2N1cnJlbnRTdGF0ZTsKSW5kZXg6IFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2Fy
ZC5odG1sCShyZXZpc2lvbiAxMTE2MjApCisrKyBUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MjYyLDYgKzI2Miw5IEBAIHByZS5leHBlY3RhdGlvbiB7CiAubm9uLXdlYmtpdC1yZXN1bHRzIHsK
ICAgICB3aWR0aDogOTklOwogfQorLmdwdS10ZXN0LXJlc3VsdHMgeworICAgIHdpZHRoOiA0MDBw
eDsKK30KIC51c2VkLXBsYXRmb3JtIHsKICAgICBmbG9hdDogcmlnaHQ7CiAgICAgY29sb3I6IGRh
cmtibHVlOwpAQCAtMTIxMyw4ICsxMjE2LDggQEAgZnVuY3Rpb24gaXNGYWlsdXJlKGJ1aWxkZXIs
IHRlc3ROYW1lLCBpbgogICAgIGNvbnNvbGUuZXJyb3IoJ0luZGV4IGV4Y2VlZHMgbnVtYmVyIG9m
IHJlc3VsdHM6ICcgKyBpbmRleCk7CiB9CiAKLS8vIFJldHVybnMgYW4gYXJyYXkgb2YgYnVpbGRO
dW1iZXJzIGZvciBhbGwgYnVpbGRzIHdoZXJlIHRoaXMgdGVzdCBmYWlsZWQuCi1mdW5jdGlvbiBi
dWlsZE51bWJlcnNGb3JGYWlsdXJlcyhidWlsZGVyLCB0ZXN0TmFtZSkKKy8vIFJldHVybnMgYW4g
YXJyYXkgb2YgaW5kZXhlcyBmb3IgYWxsIGJ1aWxkcyB3aGVyZSB0aGlzIHRlc3QgZmFpbGVkLgor
ZnVuY3Rpb24gaW5kZXhlc0ZvckZhaWx1cmVzKGJ1aWxkZXIsIHRlc3ROYW1lKQogewogICAgIHZh
ciByYXdSZXN1bHRzID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLnRlc3RzW3Rlc3ROYW1l
XS5yZXN1bHRzOwogICAgIHZhciBidWlsZE51bWJlcnMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVp
bGRlcl0uYnVpbGROdW1iZXJzOwpAQCAtMTIyNCw3ICsxMjI3LDcgQEAgZnVuY3Rpb24gYnVpbGRO
dW1iZXJzRm9yRmFpbHVyZXMoYnVpbGRlcgogICAgICAgICB2YXIgbnVtUmVzdWx0cyA9IHJhd1Jl
c3VsdHNbaV1bUkxFLkxFTkdUSF07CiAgICAgICAgIGlmIChpc0ZhaWxpbmdSZXN1bHQocmF3UmVz
dWx0c1tpXVtSTEUuVkFMVUVdKSkgewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBu
dW1SZXN1bHRzOyBqKyspCi0gICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChidWlsZE51bWJl
cnNbaW5kZXggKyBqXSk7CisgICAgICAgICAgICAgICAgZmFpbHVyZXMucHVzaChpbmRleCArIGop
OwogICAgICAgICB9CiAgICAgICAgIGluZGV4ICs9IG51bVJlc3VsdHM7CiAgICAgfQpAQCAtMTgy
OSwxNiArMTgzMiwxNyBAQCBmdW5jdGlvbiBodG1sRm9ySW5kaXZpZHVsVGVzdE9uQWxsQnVpbGRl
CiAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD0nICsgdGVzdCArICc+
PGRpdj4nICsKICAgICAgICAgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93RXhwZWN0YXRpb25z
JywgJ3Jlc3VsdHMnKQogCi0gICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkgewotICAgICAg
ICBodG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRlKCdzaG93TGFyZ2VFeHBlY3Rh
dGlvbnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOworICAgIGlmIChpc0xheW91dFRlc3RSZXN1bHRz
KCkgfHwgaXNHUFVUZXN0UmVzdWx0cygpKSB7CisgICAgICAgIGlmIChpc0xheW91dFRlc3RSZXN1
bHRzKCkpCisgICAgICAgICAgICBodG1sICs9ICcgfCAnICsgbGlua0hUTUxUb1RvZ2dsZVN0YXRl
KCdzaG93TGFyZ2VFeHBlY3RhdGlvbnMnLCAnbGFyZ2UgdGh1bWJuYWlscycpOwogICAgICAgICBp
ZiAobWFzdGVyID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewogICAgICAgICAgICAgdmFyIHJl
dmlzaW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgJyc7CiAgICAgICAgICAgICBodG1s
ICs9ICc8Zm9ybSBvbnN1Ym1pdD0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdyZXZpc2lvblwnLCByZXZp
c2lvbi52YWx1ZSk7JyArCiAgICAgICAgICAgICAgICAgJ3JldHVybiBmYWxzZTsiPlNob3cgcmVz
dWx0cyBmb3IgV2ViS2l0IHJldmlzaW9uOiAnICsKICAgICAgICAgICAgICAgICAnPGlucHV0IG5h
bWU9cmV2aXNpb24gcGxhY2Vob2xkZXI9ImUuZy4gNjU1NDAiIHZhbHVlPSInICsgcmV2aXNpb24g
KwogICAgICAgICAgICAgICAgICciIGlkPXJldmlzaW9uLWlucHV0PjwvZm9ybT4nOwotICAgICAg
fSBlbHNlCi0gICAgICAgIGh0bWwgKz0gJyB8IDxiPk9ubHkgc2hvd3MgYWN0dWFsIHJlc3VsdHMv
ZGlmZnMgZnJvbSB0aGUgbW9zdCByZWNlbnQgKmZhaWx1cmUqIG9uIGVhY2ggYm90LjwvYj4nOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGh0bWwgKz0gJyB8IDxiPk9ubHkgc2hvd3MgYWN0
dWFsIHJlc3VsdHMvZGlmZnMgZnJvbSB0aGUgbW9zdCByZWNlbnQgKmZhaWx1cmUqIG9uIGVhY2gg
Ym90LjwvYj4nOwogICAgIH0gZWxzZSB7CiAgICAgICBodG1sICs9ICcgfCA8c3Bhbj5SZXN1bHRz
IGhlaWdodDo8aW5wdXQgJyArCiAgICAgICAgICAgJ29uY2hhbmdlPSJzZXRRdWVyeVBhcmFtZXRl
cihcJ3Jlc3VsdHNIZWlnaHRcJyx0aGlzLnZhbHVlKSIgdmFsdWU9IicgKwpAQCAtMjExNCwzMSAr
MjExOCw1OSBAQCBmdW5jdGlvbiBleHBlY3RhdGlvbnNUaXRsZShwbGF0Zm9ybSwgcGF0CiAKIGZ1
bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnMoZXhwZWN0YXRpb25zQ29udGFpbmVyKQogeworICAgIHZh
ciB0ZXN0ID0gZXhwZWN0YXRpb25zQ29udGFpbmVyLmdldEF0dHJpYnV0ZSgndGVzdCcpOwogICAg
IGlmIChpc0xheW91dFRlc3RSZXN1bHRzKCkpCi0gICAgICAgIGxvYWRFeHBlY3RhdGlvbnNMYXlv
dXRUZXN0cyhleHBlY3RhdGlvbnNDb250YWluZXIpOworICAgICAgICBsb2FkRXhwZWN0YXRpb25z
TGF5b3V0VGVzdHModGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgdmFyIHRlc3QgPSBleHBlY3RhdGlvbnNDb250YWluZXIuZ2V0QXR0cmlidXRlKCd0ZXN0
Jyk7CiAgICAgICAgIHZhciByZXN1bHRzID0gZ190ZXN0VG9SZXN1bHRzTWFwW3Rlc3RdOwogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspCi0gICAgICAgICAg
ICBsb2FkTm9uV2ViS2l0UmVzdWx0c0ZvckJ1aWxkZXIocmVzdWx0c1tpXS5idWlsZGVyLCB0ZXN0
LCBleHBlY3RhdGlvbnNDb250YWluZXIpOworICAgICAgICAgICAgaWYgKGlzR1BVVGVzdFJlc3Vs
dHMoKSkKKyAgICAgICAgICAgICAgICBsb2FkR1BVUmVzdWx0c0ZvckJ1aWxkZXIocmVzdWx0c1tp
XS5idWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGxvYWROb25XZWJLaXRSZXN1bHRzRm9yQnVpbGRlcihyZXN1bHRz
W2ldLmJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0aW9uc0NvbnRhaW5lcik7CiAgICAgfQogfQogCitm
dW5jdGlvbiBsb2FkR1BVUmVzdWx0c0ZvckJ1aWxkZXIoYnVpbGRlciwgdGVzdCwgZXhwZWN0YXRp
b25zQ29udGFpbmVyKQoreworICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ2V4cGVjdGF0aW9ucy1jb250
YWluZXInOworICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdj48Yj4nICsgYnVpbGRlciAr
ICc8L2I+PC9kaXY+JzsKKyAgICBleHBlY3RhdGlvbnNDb250YWluZXIuYXBwZW5kQ2hpbGQoY29u
dGFpbmVyKTsKKworICAgIHZhciBiYXNlVXJsID0gJ2h0dHA6Ly9jaHJvbWl1bS1icm93c2VyLWdw
dS10ZXN0cy5jb21tb25kYXRhc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9ydW5zLycKKyAgICB2YXIg
ZmFpbHVyZUluZGV4ID0gaW5kZXhlc0ZvckZhaWx1cmVzKGJ1aWxkZXIsIHRlc3QpWzBdOworCisg
ICAgdmFyIGJ1aWxkTnVtYmVyID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLmJ1aWxkTnVt
YmVyc1tmYWlsdXJlSW5kZXhdOworICAgIHZhciBwYXRoVG9Mb2cgPSBidWlsZGVyTWFzdGVyKGJ1
aWxkZXIpLmdldExvZ1BhdGgoYnVpbGRlciwgYnVpbGROdW1iZXIpICsgcGF0aFRvRmFpbHVyZUxv
Zyh0ZXN0KTsKKworICAgIHZhciBjaHJvbWVSZXZpc2lvbiA9IGdfcmVzdWx0c0J5QnVpbGRlclti
dWlsZGVyXS5jaHJvbWVSZXZpc2lvbltmYWlsdXJlSW5kZXhdOworICAgIHZhciBidWlsZGVyTmFt
ZSA9IGJ1aWxkZXIucmVwbGFjZSgvW15BLVphLXowLTkgXS9nLCAnJykucmVwbGFjZSgvIC9nLCAn
XycpOworICAgIHZhciByZXN1bHRzVXJsID0gYmFzZVVybCArIGNocm9tZVJldmlzaW9uICsgJ18n
ICsgYnVpbGRlck5hbWUgKyAnXy8nOworICAgIHZhciBmaWxlbmFtZSA9IHRlc3Quc3BsaXQoL1wu
LylbMV0gKyAnLnBuZyc7CisKKyAgICBhcHBlbmROb25XZWJLaXRSZXN1bHRzKGNvbnRhaW5lciwg
cGF0aFRvTG9nLCAnbm9uLXdlYmtpdC1yZXN1bHRzJyk7CisgICAgYXBwZW5kTm9uV2ViS2l0UmVz
dWx0cyhjb250YWluZXIsIHJlc3VsdHNVcmwgKyAnZ2VuLycgKyBmaWxlbmFtZSwgJ2dwdS10ZXN0
LXJlc3VsdHMnLCAnR2VuZXJhdGVkJyk7CisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250
YWluZXIsIHJlc3VsdHNVcmwgKyAncmVmLycgKyBmaWxlbmFtZSwgJ2dwdS10ZXN0LXJlc3VsdHMn
LCAnUmVmZXJlbmNlJyk7CisgICAgYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHJl
c3VsdHNVcmwgKyAnZGlmZi8nICsgZmlsZW5hbWUsICdncHUtdGVzdC1yZXN1bHRzJywgJ0RpZmYn
KTsKK30KKwogZnVuY3Rpb24gbG9hZE5vbldlYktpdFJlc3VsdHNGb3JCdWlsZGVyKGJ1aWxkZXIs
IHRlc3QsIGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKIHsKLSAgICB2YXIgZmFpbHVyZXMgPSBidWls
ZE51bWJlcnNGb3JGYWlsdXJlcyhidWlsZGVyLCB0ZXN0KTsKKyAgICB2YXIgZmFpbHVyZUluZGV4
ZXMgPSBpbmRleGVzRm9yRmFpbHVyZXMoYnVpbGRlciwgdGVzdCk7CiAgICAgdmFyIGNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIGNvbnRhaW5lci5pbm5lckhU
TUwgPSAnPGRpdj48Yj4nICsgYnVpbGRlciArICc8L2I+PC9kaXY+JzsKICAgICBleHBlY3RhdGlv
bnNDb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGZhaWx1cmVzLmxlbmd0aDsgaSsrKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmYWls
dXJlSW5kZXhlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0
IHNlZW0gdG8gd29yayBhbnltb3JlLiBEaWQgdGhlIHBhdGhzIGNoYW5nZT8KICAgICAgICAgLy8g
T25jZSB0aGF0J3MgcmVzb2x2ZWQsIHNlZSBpZiB3ZSBuZWVkIHRvIHRyeSBlYWNoIEdURVNUX01P
RElGSUVSUyBwcmVmaXggYXMgd2VsbC4KLSAgICAgICAgdmFyIHBhdGhUb0xvZyA9IGJ1aWxkZXJN
YXN0ZXIoYnVpbGRlcikuZ2V0TG9nUGF0aChidWlsZGVyLCBmYWlsdXJlc1tpXSkgKyBwYXRoVG9G
YWlsdXJlTG9nKHRlc3QpOwotICAgICAgICBhcHBlbmROb25XZWJLaXRSZXN1bHRzKGNvbnRhaW5l
ciwgcGF0aFRvTG9nKTsKKyAgICAgICAgdmFyIGJ1aWxkTnVtYmVyID0gZ19yZXN1bHRzQnlCdWls
ZGVyW2J1aWxkZXJdLmJ1aWxkTnVtYmVyc1tmYWlsdXJlSW5kZXhlc1tpXV07CisgICAgICAgIHZh
ciBwYXRoVG9Mb2cgPSBidWlsZGVyTWFzdGVyKGJ1aWxkZXIpLmdldExvZ1BhdGgoYnVpbGRlciwg
YnVpbGROdW1iZXIpICsgcGF0aFRvRmFpbHVyZUxvZyh0ZXN0KTsKKyAgICAgICAgYXBwZW5kTm9u
V2ViS2l0UmVzdWx0cyhjb250YWluZXIsIHBhdGhUb0xvZywgJ25vbi13ZWJraXQtcmVzdWx0cycp
OwogICAgIH0KIH0KIAotZnVuY3Rpb24gYXBwZW5kTm9uV2ViS2l0UmVzdWx0cyhjb250YWluZXIs
IHVybCkKK2Z1bmN0aW9uIGFwcGVuZE5vbldlYktpdFJlc3VsdHMoY29udGFpbmVyLCB1cmwsIGl0
ZW1DbGFzc05hbWUsIG9wdF90aXRsZSkKIHsKICAgICAvLyBVc2UgYSBzY3JpcHQgdGFnIHRvIGRl
dGVjdCB3aGV0aGVyIHRoZSBVUkwgNDA0cy4KICAgICAvLyBOZWVkIHRvIHVzZSBhIHNjcmlwdCB0
YWcgc2luY2UgdGhlIFVSTCBpcyBjcm9zcy1kb21haW4uCkBAIC0yMTQ4LDEyICsyMTgwLDIyIEBA
IGZ1bmN0aW9uIGFwcGVuZE5vbldlYktpdFJlc3VsdHMoY29udGFpbmUKICAgICBkdW1teU5vZGUu
b25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaWZyYW1lJyk7CiAgICAgICAgIGl0ZW0uc3JjID0gZHVtbXlOb2RlLnNyYzsKLSAg
ICAgICAgaXRlbS5jbGFzc05hbWUgPSAnbm9uLXdlYmtpdC1yZXN1bHRzJzsKKyAgICAgICAgaXRl
bS5jbGFzc05hbWUgPSBpdGVtQ2xhc3NOYW1lOwogICAgICAgICBpdGVtLnN0eWxlLmhlaWdodCA9
IGdfY3VycmVudFN0YXRlLnJlc3VsdHNIZWlnaHQgKyAncHgnOwotICAgICAgICBjb250YWluZXIu
YXBwZW5kQ2hpbGQoaXRlbSk7CisKKyAgICAgICAgaWYgKG9wdF90aXRsZSkgeworICAgICAgICAg
ICAgdmFyIGNoaWxkQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgICAgICBjaGlsZENvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7
CisgICAgICAgICAgICB2YXIgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgICAgIHRpdGxlLnRleHRDb250ZW50ID0gb3B0X3RpdGxlOworICAgICAgICAgICAg
Y2hpbGRDb250YWluZXIuYXBwZW5kQ2hpbGQodGl0bGUpOworICAgICAgICAgICAgY2hpbGRDb250
YWluZXIuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAgICBjb250YWluZXIucmVwbGFjZUNo
aWxkKGNoaWxkQ29udGFpbmVyLCBkdW1teU5vZGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGNvbnRhaW5lci5yZXBsYWNlQ2hpbGQoaXRlbSwgZHVtbXlOb2RlKTsKICAgICB9CiAgICAg
ZHVtbXlOb2RlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgY29udGFpbmVyLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGRDb250YWluZXIpOworICAgICAgICBjb250YWluZXIucmVt
b3ZlQ2hpbGQoZHVtbXlOb2RlKTsKICAgICB9CiAKICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQo
ZHVtbXlOb2RlKTsKQEAgLTIyMTgsMTEgKzIyNjAsMTAgQEAgZnVuY3Rpb24gbG9hZEJhc2VsaW5l
c0ZvclRlc3QoZXhwZWN0YXRpbwogICAgICAgICBsb2FkQmFzZWxpbmVzRm9yVGVzdChleHBlY3Rh
dGlvbnNDb250YWluZXJzLCBleHBlY3RhdGlvbnNDb250YWluZXIsIGJhc2VUZXN0KHRlc3QsIHN1
aXRlKSk7CiB9CiAKLWZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyhleHBlY3Rh
dGlvbnNDb250YWluZXIpCitmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zTGF5b3V0VGVzdHModGVz
dCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogewogICAgIC8vIE1hcCBmcm9tIGZpbGUgZXh0ZW5z
aW9uIHRvIGNvbnRhaW5lciBkaXYgZm9yIGV4cGVjdGF0aW9ucyBvZiB0aGF0IHR5cGUuCiAgICAg
dmFyIGV4cGVjdGF0aW9uc0NvbnRhaW5lcnMgPSB7fTsKLSAgICB2YXIgdGVzdCA9IGV4cGVjdGF0
aW9uc0NvbnRhaW5lci5nZXRBdHRyaWJ1dGUoJ3Rlc3QnKTsKIAogICAgIHZhciByZXZpc2lvbkNv
bnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIHJldmlzaW9uQ29u
dGFpbmVyLnRleHRDb250ZW50ID0gIlNob3dpbmcgcmVzdWx0cyBmb3I6ICIK
</data>

          </attachment>
      

    </bug>

</bugzilla>