<?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>36606</bug_id>
          
          <creation_ts>2010-03-25 09:23:42 -0700</creation_ts>
          <short_desc>Web Inspector: Short Records filter sould be implemented in Timeline Panel</short_desc>
          <delta_ts>2010-03-26 01:05:40 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pfeldman</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>204092</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-25 09:23:42 -0700</bug_when>
    <thetext>%SUBJ%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204098</commentid>
    <comment_count>1</comment_count>
      <attachid>51648</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-25 09:36:53 -0700</bug_when>
    <thetext>Created attachment 51648
[patch] Initial version for review.

1) additional button was added to status bar. &quot;Show small records&quot;;
2) initial state of that button is off;
3) all events that are 15ms or less will be hidden until Show small records&quot; is off;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204125</commentid>
    <comment_count>2</comment_count>
      <attachid>51648</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-25 10:27:13 -0700</bug_when>
    <thetext>Comment on attachment 51648
[patch] Initial version for review.

Overall looks good. Please attach screenshot and fix comments!

&gt; +    _toggleFilterButtonClicked: function()
&gt; +    {
&gt; +        this.toggleFilterButton.toggled = !this.toggleFilterButton.toggled;
&gt; +        this._calculator._showShortEvents = this.toggleFilterButton.toggled;
&gt; +        this._scheduleRefresh();

I think you want immediate refresh here.

&gt;              }
&gt; +            record = formattedRecord;
&gt; +            while (record._isLongEvent &amp;&amp; record.parent &amp;&amp; !record.parent._isLongEvent) {
&gt; +                record = record.parent;
&gt; +                record._hasLongChildrenEvents = true;

Comment this?

&gt; -        if (record.children.length) {
&gt; +        if (record.visibleChildrenCount || (record.collapsed &amp;&amp; record.children.length &amp;&amp; (record._hasLongChildrenEvents || calculator._showShortEvents))) {

Comment would be nice. Something like: We show expand element for expanded nodes or for nodes that are collapsed and have unfiltered children, or we are not filtering.

&gt;              this._expandElement.style.top = index * this._rowHeight + &quot;px&quot;;
&gt;              this._expandElement.style.left = barPosition.left + &quot;px&quot;;
&gt;              this._expandElement.style.width = Math.max(12, barPosition.width + 25) + &quot;px&quot;;
&gt; @@ -737,6 +758,12 @@ WebInspector.TimelinePanel.FormattedRecord = function(record, parentRecord, reco
&gt;  }
&gt;  
&gt;  WebInspector.TimelinePanel.FormattedRecord.prototype = {
&gt; +    get _isLongEvent()


This should be a function, not getter.

&gt; +    {
&gt; +        const shortEventLength = 0.015;
&gt; +        return this._hasLongChildrenEvents || (this._lastChildEndTime - this.startTime) &gt; shortEventLength;

No need for _hasLongChildrenEvents here.

&gt; +    },
&gt; +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204145</commentid>
    <comment_count>3</comment_count>
      <attachid>51659</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-03-25 11:03:50 -0700</bug_when>
    <thetext>Created attachment 51659
[patch] second iteration.

1) comment about _hasLongChildrenEvents propagation was added;
2) scheduleRefresh(true);
3) complex boolean expression was redesigned and looks much clear, no comments required I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204148</commentid>
    <comment_count>4</comment_count>
      <attachid>51659</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-25 11:10:31 -0700</bug_when>
    <thetext>Comment on attachment 51659
[patch] second iteration.

&gt; +            while (record._isLongEvent() &amp;&amp; record.parent &amp;&amp; !record.parent._isLongEvent()) {
&gt; +                record = record.parent;

No need to call _isLongEvent twice on the same record. I can optimize it while landing.

I&apos;ll land manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204460</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-26 01:05:40 -0700</bug_when>
    <thetext>Slight variation landed as:

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/English.lproj/localizedStrings.js
	M	WebCore/inspector/front-end/TimelinePanel.js
	M	WebCore/inspector/front-end/inspector.css
Committed r56613</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51648</attachid>
            <date>2010-03-25 09:36:53 -0700</date>
            <delta_ts>2010-03-25 11:03:50 -0700</delta_ts>
            <desc>[patch] Initial version for review.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9329</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGFiZjFkZS4uMmI2NDIzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMy0yNSAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdCByZWNvcmQgZmlsdGVyIGlz
IGltcGxlbWVudGVkIGluIFRpbWVsaW5lIFBhbmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2MDYKKworICAgICAgICAqIEVuZ2xpc2gubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0
ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fY3Jl
YXRlU3RhdHVzYmFyQnV0dG9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUuX3RvZ2dsZUZpbHRlckJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9pbm5lckFkZFJlY29yZFRvVGltZWxpbmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9hZGRUb1Jl
Y29yZHNXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhS
b3cucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlLmdldCBfaXNMb25nRXZlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC50aW1lbGluZS1k
ZXRhaWxzKToKKyAgICAgICAgKC50aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSk6CisgICAgICAg
ICgudGltZWxpbmUtZGV0YWlscy1yb3ctZGF0YSk6CisgICAgICAgICgudGltZWxpbmUtZGV0YWls
cy10aXRsZSk6CisgICAgICAgICgudGltZWxpbmUtZmlsdGVyLXN0YXR1cy1iYXItaXRlbSAuZ2x5
cGgpOgorICAgICAgICAoLnRpbWVsaW5lLWZpbHRlci1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1v
biAuZ2x5cGgpOgorCiAyMDEwLTAzLTI1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDljOGZlNmRhM2NhNDMzMGE5NjRlNDJjNzYxZTk2
MWU3NTJmMjYxOWIuLjMwYmZiOTRiOTkyMmQzZjZhZWY1ZjRkZjc5YzM2YTk3ZDgxN2MwNTkgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTgyCnpjbVpwaCQ4PSk+KCswTnckdW4jPFNkJHNA
OEh5JGdTX3dtMGpod29aN2xeVjx3aURyeTRxP2ItJFluQG4kTnwhTQp6S3c1enpmRlRqZyU5KHNv
THtiPXd7TiZzUTxIPnRteEJgazlHQyhGWGxtSy1WMHJpNklWTXQqcFc+OHs/MSZZfU0KVHVAWFp0
U1hEV1lqWmVLYjB+WjRUU0hVUWcKCmRlbHRhIDkKUWNtY2J5ZlQ/WEIoKzBNRjAyUTFBPF5UV3kK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDdm
YjliMzAuLmZjMzRkY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzCkBAIC04Myw2ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0g
ZnVuY3Rpb24oKQogICAgIHRoaXMuX3RpbWVyUmVjb3JkcyA9IHt9OwogCiAgICAgdGhpcy5fY2Fs
Y3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKCk7CisgICAgdGhp
cy5fY2FsY3VsYXRvci5fc2hvd1Nob3J0RXZlbnRzID0gZmFsc2U7CiAgICAgdGhpcy5fYm91bmRh
cmllc0FyZVZhbGlkID0gdHJ1ZTsKICAgICB0aGlzLl9zY3JvbGxUb3AgPSAwOwogCkBAIC05OSw3
ICsxMDAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLnRvZ2ds
ZVRpbWVsaW5lQnV0dG9uLmVsZW1lbnQsIHRoaXMuY2xlYXJCdXR0b24uZWxlbWVudF07CisgICAg
ICAgIHJldHVybiBbdGhpcy50b2dnbGVGaWx0ZXJCdXR0b24uZWxlbWVudCwgdGhpcy50b2dnbGVU
aW1lbGluZUJ1dHRvbi5lbGVtZW50LCB0aGlzLmNsZWFyQnV0dG9uLmVsZW1lbnRdOwogICAgIH0s
CiAKICAgICBnZXQgY2F0ZWdvcmllcygpCkBAIC0xNDgsMTEgKzE0OSwxNCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlU3RhdHVzYmFyQnV0
dG9uczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy50b2dnbGVUaW1lbGluZUJ1dHRv
biA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAicmVjb3JkLXByb2ZpbGUt
c3RhdHVzLWJhci1pdGVtIik7CisgICAgICAgIHRoaXMudG9nZ2xlVGltZWxpbmVCdXR0b24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
Y29yZCIpLCAicmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIik7CiAgICAgICAgIHRoaXMu
dG9nZ2xlVGltZWxpbmVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dn
bGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgICAgIHRo
aXMuY2xlYXJCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgInRp
bWVsaW5lLWNsZWFyLXN0YXR1cy1iYXItaXRlbSIpOworICAgICAgICB0aGlzLmNsZWFyQnV0dG9u
ID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDbGVhciIpLCAidGltZWxpbmUtY2xlYXItc3RhdHVzLWJhci1pdGVtIik7CiAgICAgICAgIHRo
aXMuY2xlYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGVhclBhbmVs
LmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlckJ1dHRvbiA9
IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2hvdyBzaG9ydCByZWNvcmRzIiksICJ0aW1lbGluZS1maWx0ZXItc3RhdHVzLWJhci1pdGVtIik7
CisgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAg
ICAgfSwKIAogICAgIF90b2dnbGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKQEAg
LTE2NSw2ICsxNjksMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAgICAgfSwKIAorICAgIF90b2dnbGVGaWx0ZXJCdXR0b25DbGlja2VkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlckJ1dHRvbi50b2dnbGVk
ID0gIXRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQ7CisgICAgICAgIHRoaXMuX2NhbGN1
bGF0b3IuX3Nob3dTaG9ydEV2ZW50cyA9IHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQ7
CisgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCgpOworICAgIH0sCisKICAgICB0aW1lbGlu
ZVdhc1N0YXJ0ZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMudG9nZ2xlVGltZWxp
bmVCdXR0b24udG9nZ2xlZCA9IHRydWU7CkBAIC0yMjAsNiArMjMxLDcgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIEdsdWUgc3Vic2VxdWVu
dCByZWNvcmRzIHdpdGggc2FtZSBjYXRlZ29yeSBhbmQgdGl0bGUgdG9nZXRoZXIgaWYgdGhleSBh
cmUgY2xvc2VyIHRoYW4gMTAwbXMgdG8gZWFjaCBvdGhlci4KICAgICAgICAgdmFyIGxhc3RSZWNv
cmQgPSBwYXJlbnRSZWNvcmQuX2xhc3RSZWNvcmQ7CisgICAgICAgIHZhciBoYXNMb25nQ2hpbGRy
ZW5FdmVudHMgPSBmYWxzZTsKICAgICAgICAgaWYgKGxhc3RSZWNvcmQgJiYgKCFyZWNvcmQuY2hp
bGRyZW4gfHwgIXJlY29yZC5jaGlsZHJlbi5sZW5ndGgpICYmCiAgICAgICAgICAgICAgICAgbGFz
dFJlY29yZC5jYXRlZ29yeSA9PSBmb3JtYXR0ZWRSZWNvcmQuY2F0ZWdvcnkgJiYKICAgICAgICAg
ICAgICAgICBsYXN0UmVjb3JkLnRpdGxlID09IGZvcm1hdHRlZFJlY29yZC50aXRsZSAmJgpAQCAt
MjMxLDkgKzI0MywxMCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBsYXN0UmVjb3JkLmNvdW50Kys7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgcmVjb3JkLmNoaWxkcmVuICYmIGkgPCByZWNvcmQuY2hp
bGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5faW5uZXJBZGRSZWNvcmRU
b1RpbWVsaW5lKHJlY29yZC5jaGlsZHJlbltpXSwgZm9ybWF0dGVkUmVjb3JkKTsKKyAgICAgICAg
ICAgICAgICBoYXNMb25nQ2hpbGRyZW5FdmVudHMgfD0gdGhpcy5faW5uZXJBZGRSZWNvcmRUb1Rp
bWVsaW5lKHJlY29yZC5jaGlsZHJlbltpXSwgZm9ybWF0dGVkUmVjb3JkKTsKICAgICAgICAgICAg
IHBhcmVudFJlY29yZC5fbGFzdFJlY29yZCA9IHJlY29yZC5jaGlsZHJlbiAmJiByZWNvcmQuY2hp
bGRyZW4ubGVuZ3RoID8gbnVsbCA6IGZvcm1hdHRlZFJlY29yZDsKICAgICAgICAgfQorICAgICAg
ICBmb3JtYXR0ZWRSZWNvcmQuX2hhc0xvbmdDaGlsZHJlbkV2ZW50cyA9IGhhc0xvbmdDaGlsZHJl
bkV2ZW50czsKIAogICAgICAgICBpZiAoY29ubmVjdGVkVG9PbGRSZWNvcmQpIHsKICAgICAgICAg
ICAgIHZhciByZWNvcmQgPSBmb3JtYXR0ZWRSZWNvcmQ7CkBAIC0yNDEsNyArMjU0LDEzIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBy
ZWNvcmQucGFyZW50Ll9sYXN0Q2hpbGRFbmRUaW1lID0gcmVjb3JkLl9sYXN0Q2hpbGRFbmRUaW1l
OwogICAgICAgICAgICAgICAgIHJlY29yZCA9IHJlY29yZC5wYXJlbnQ7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICByZWNvcmQgPSBmb3JtYXR0ZWRSZWNvcmQ7CisgICAgICAgICAgICB3aGls
ZSAocmVjb3JkLl9pc0xvbmdFdmVudCAmJiByZWNvcmQucGFyZW50ICYmICFyZWNvcmQucGFyZW50
Ll9pc0xvbmdFdmVudCkgeworICAgICAgICAgICAgICAgIHJlY29yZCA9IHJlY29yZC5wYXJlbnQ7
CisgICAgICAgICAgICAgICAgcmVjb3JkLl9oYXNMb25nQ2hpbGRyZW5FdmVudHMgPSB0cnVlOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNMb25nQ2hpbGRyZW5F
dmVudHMgfHwgZm9ybWF0dGVkUmVjb3JkLl9pc0xvbmdFdmVudDsKICAgICB9LAogCiAgICAgc2V0
U2lkZWJhcldpZHRoOiBmdW5jdGlvbih3aWR0aCkKQEAgLTM1OSwxMiArMzc4LDE0IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9hZGRUb1JlY29yZHNX
aW5kb3c6IGZ1bmN0aW9uKHJlY29yZCwgcmVjb3Jkc1dpbmRvdykKICAgICB7Ci0gICAgICAgIHJl
Y29yZHNXaW5kb3cucHVzaChyZWNvcmQpOwotICAgICAgICBpZiAoIXJlY29yZC5jb2xsYXBzZWQp
IHsKLSAgICAgICAgICAgIHZhciBpbmRleCA9IHJlY29yZHNXaW5kb3cubGVuZ3RoOwotICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0g
ICAgICAgICAgICAgICAgdGhpcy5fYWRkVG9SZWNvcmRzV2luZG93KHJlY29yZC5jaGlsZHJlbltp
XSwgcmVjb3Jkc1dpbmRvdyk7Ci0gICAgICAgICAgICByZWNvcmQudmlzaWJsZUNoaWxkcmVuQ291
bnQgPSByZWNvcmRzV2luZG93Lmxlbmd0aCAtIGluZGV4OworICAgICAgICBpZiAodGhpcy5fY2Fs
Y3VsYXRvci5fc2hvd1Nob3J0RXZlbnRzIHx8IHJlY29yZC5faXNMb25nRXZlbnQpIHsKKyAgICAg
ICAgICAgIHJlY29yZHNXaW5kb3cucHVzaChyZWNvcmQpOworICAgICAgICAgICAgaWYgKCFyZWNv
cmQuY29sbGFwc2VkKSB7CisgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcmVjb3Jkc1dpbmRv
dy5sZW5ndGg7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWNvcmQuY2hp
bGRyZW4ubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFRvUmVjb3Jk
c1dpbmRvdyhyZWNvcmQuY2hpbGRyZW5baV0sIHJlY29yZHNXaW5kb3cpOworICAgICAgICAgICAg
ICAgIHJlY29yZC52aXNpYmxlQ2hpbGRyZW5Db3VudCA9IHJlY29yZHNXaW5kb3cubGVuZ3RoIC0g
aW5kZXg7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCkBAIC02NTEsNyArNjcy
LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9iYXJFbGVtZW50LnN0eWxlLmxlZnQgPSBiYXJQb3NpdGlvbi5sZWZ0ICsg
ZXhwYW5kT2Zmc2V0ICsgInB4IjsKICAgICAgICAgdGhpcy5fYmFyRWxlbWVudC5zdHlsZS53aWR0
aCA9ICBiYXJQb3NpdGlvbi53aWR0aCArICJweCI7CiAKLSAgICAgICAgaWYgKHJlY29yZC5jaGls
ZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgaWYgKHJlY29yZC52aXNpYmxlQ2hpbGRyZW5Db3VudCB8
fCAocmVjb3JkLmNvbGxhcHNlZCAmJiByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoICYmIChyZWNvcmQu
X2hhc0xvbmdDaGlsZHJlbkV2ZW50cyB8fCBjYWxjdWxhdG9yLl9zaG93U2hvcnRFdmVudHMpKSkg
ewogICAgICAgICAgICAgdGhpcy5fZXhwYW5kRWxlbWVudC5zdHlsZS50b3AgPSBpbmRleCAqIHRo
aXMuX3Jvd0hlaWdodCArICJweCI7CiAgICAgICAgICAgICB0aGlzLl9leHBhbmRFbGVtZW50LnN0
eWxlLmxlZnQgPSBiYXJQb3NpdGlvbi5sZWZ0ICsgInB4IjsKICAgICAgICAgICAgIHRoaXMuX2V4
cGFuZEVsZW1lbnQuc3R5bGUud2lkdGggPSBNYXRoLm1heCgxMiwgYmFyUG9zaXRpb24ud2lkdGgg
KyAyNSkgKyAicHgiOwpAQCAtNzM3LDYgKzc1OCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBmdW5jdGlvbihyZWNvcmQsIHBhcmVudFJlY29yZCwgcmVj
bwogfQogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90
eXBlID0geworICAgIGdldCBfaXNMb25nRXZlbnQoKQorICAgIHsKKyAgICAgICAgY29uc3Qgc2hv
cnRFdmVudExlbmd0aCA9IDAuMDE1OworICAgICAgICByZXR1cm4gdGhpcy5faGFzTG9uZ0NoaWxk
cmVuRXZlbnRzIHx8ICh0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5zdGFydFRpbWUpID4g
c2hvcnRFdmVudExlbmd0aDsKKyAgICB9LAorCiAgICAgX2NyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNv
bnRlbnQsIHN0eWxlTmFtZSkKICAgICB7CiAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGFiZWwiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKaW5kZXggYzczMGY2Yy4uMmQ3NmFhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKQEAgLTM2MjYsNiArMzYyNiwzMyBAQCBib2R5LmluYWN0aXZlIC5z
aWRlYmFyLXRyZWUtaXRlbS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKICAgICBi
YWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDcycHg7CiB9CiAKKy50aW1lbGluZS1kZXRhaWxzIHsKKyAg
ICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0OworfQorCisudGltZWxpbmUtZGV0YWlscy1yb3ct
dGl0bGUgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIHRleHQtYWxpZ246IHJpZ2h0Owor
ICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKy50aW1lbGluZS1kZXRhaWxzLXJvdy1kYXRh
IHsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworfQorCisudGltZWxpbmUtZGV0YWlscy10aXRs
ZSB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30K
KworLnRpbWVsaW5lLWZpbHRlci1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKKyAgICAtd2Via2l0
LW1hc2staW1hZ2U6IHVybChJbWFnZXMvbGFyZ2VyUmVzb3VyY2VzQnV0dG9uR2x5cGgucG5nKTsK
K30KKworLnRpbWVsaW5lLWZpbHRlci1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGgg
eworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig2NiwgMTI5LCAyMzUpICFpbXBvcnRhbnQ7Cit9
CisKIC8qIFByb2ZpbGVyIFN0eWxlICovCiAKICNwcm9maWxlLXZpZXdzIHsKQEAgLTM4ODUsMjUg
KzM5MTIsNiBAQCBvbC5icmVha3BvaW50LWxpc3QgewogICAgIHRleHQtc2hhZG93OiB3aGl0ZSAw
IDFweCAwOwogfQogCi0udGltZWxpbmUtZGV0YWlscyB7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogdGV4dDsKLX0KLQotLnRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIHsKLSAgICBmb250LXdl
aWdodDogYm9sZDsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLSAgICB3aGl0ZS1zcGFjZTogbm93
cmFwOwotfQotCi0udGltZWxpbmUtZGV0YWlscy1yb3ctZGF0YSB7Ci0gICAgd2hpdGUtc3BhY2U6
IG5vd3JhcDsKLX0KLQotLnRpbWVsaW5lLWRldGFpbHMtdGl0bGUgewotICAgIGZvbnQtd2VpZ2h0
OiBib2xkOwotICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci19Ci0KIC53b3JrZXJzLWxpc3Qgewog
ICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgbWFyZ2luOiAwOwo=
</data>
<flag name="review"
          id="34945"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51659</attachid>
            <date>2010-03-25 11:03:50 -0700</date>
            <delta_ts>2010-03-25 11:10:31 -0700</delta_ts>
            <desc>[patch] second iteration.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9608</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGFiZjFkZS4uMmI2NDIzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMy0yNSAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdCByZWNvcmQgZmlsdGVyIGlz
IGltcGxlbWVudGVkIGluIFRpbWVsaW5lIFBhbmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2MDYKKworICAgICAgICAqIEVuZ2xpc2gubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuZ2V0IHN0YXR1c0Jhckl0
ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fY3Jl
YXRlU3RhdHVzYmFyQnV0dG9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5wcm90b3R5cGUuX3RvZ2dsZUZpbHRlckJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9pbm5lckFkZFJlY29yZFRvVGltZWxpbmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9hZGRUb1Jl
Y29yZHNXaW5kb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhS
b3cucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlLmdldCBfaXNMb25nRXZlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC50aW1lbGluZS1k
ZXRhaWxzKToKKyAgICAgICAgKC50aW1lbGluZS1kZXRhaWxzLXJvdy10aXRsZSk6CisgICAgICAg
ICgudGltZWxpbmUtZGV0YWlscy1yb3ctZGF0YSk6CisgICAgICAgICgudGltZWxpbmUtZGV0YWls
cy10aXRsZSk6CisgICAgICAgICgudGltZWxpbmUtZmlsdGVyLXN0YXR1cy1iYXItaXRlbSAuZ2x5
cGgpOgorICAgICAgICAoLnRpbWVsaW5lLWZpbHRlci1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1v
biAuZ2x5cGgpOgorCiAyMDEwLTAzLTI1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDljOGZlNmRhM2NhNDMzMGE5NjRlNDJjNzYxZTk2
MWU3NTJmMjYxOWIuLjMwYmZiOTRiOTkyMmQzZjZhZWY1ZjRkZjc5YzM2YTk3ZDgxN2MwNTkgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMTgyCnpjbVpwaCQ4PSk+KCswTnckdW4jPFNkJHNA
OEh5JGdTX3dtMGpod29aN2xeVjx3aURyeTRxP2ItJFluQG4kTnwhTQp6S3c1enpmRlRqZyU5KHNv
THtiPXd7TiZzUTxIPnRteEJgazlHQyhGWGxtSy1WMHJpNklWTXQqcFc+OHs/MSZZfU0KVHVAWFp0
U1hEV1lqWmVLYjB+WjRUU0hVUWcKCmRlbHRhIDkKUWNtY2J5ZlQ/WEIoKzBNRjAyUTFBPF5UV3kK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDdm
YjliMzAuLjZkNGRjNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzCkBAIC04Myw2ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0g
ZnVuY3Rpb24oKQogICAgIHRoaXMuX3RpbWVyUmVjb3JkcyA9IHt9OwogCiAgICAgdGhpcy5fY2Fs
Y3VsYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVDYWxjdWxhdG9yKCk7CisgICAgdGhp
cy5fY2FsY3VsYXRvci5fc2hvd1Nob3J0RXZlbnRzID0gZmFsc2U7CiAgICAgdGhpcy5fYm91bmRh
cmllc0FyZVZhbGlkID0gdHJ1ZTsKICAgICB0aGlzLl9zY3JvbGxUb3AgPSAwOwogCkBAIC05OSw3
ICsxMDAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICBnZXQgc3RhdHVzQmFySXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLnRvZ2ds
ZVRpbWVsaW5lQnV0dG9uLmVsZW1lbnQsIHRoaXMuY2xlYXJCdXR0b24uZWxlbWVudF07CisgICAg
ICAgIHJldHVybiBbdGhpcy50b2dnbGVGaWx0ZXJCdXR0b24uZWxlbWVudCwgdGhpcy50b2dnbGVU
aW1lbGluZUJ1dHRvbi5lbGVtZW50LCB0aGlzLmNsZWFyQnV0dG9uLmVsZW1lbnRdOwogICAgIH0s
CiAKICAgICBnZXQgY2F0ZWdvcmllcygpCkBAIC0xNDgsMTEgKzE0OSwxNCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlU3RhdHVzYmFyQnV0
dG9uczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy50b2dnbGVUaW1lbGluZUJ1dHRv
biA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKCIiLCAicmVjb3JkLXByb2ZpbGUt
c3RhdHVzLWJhci1pdGVtIik7CisgICAgICAgIHRoaXMudG9nZ2xlVGltZWxpbmVCdXR0b24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
Y29yZCIpLCAicmVjb3JkLXByb2ZpbGUtc3RhdHVzLWJhci1pdGVtIik7CiAgICAgICAgIHRoaXMu
dG9nZ2xlVGltZWxpbmVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dn
bGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgICAgIHRo
aXMuY2xlYXJCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1dHRvbigiIiwgInRp
bWVsaW5lLWNsZWFyLXN0YXR1cy1iYXItaXRlbSIpOworICAgICAgICB0aGlzLmNsZWFyQnV0dG9u
ID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDbGVhciIpLCAidGltZWxpbmUtY2xlYXItc3RhdHVzLWJhci1pdGVtIik7CiAgICAgICAgIHRo
aXMuY2xlYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGVhclBhbmVs
LmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlckJ1dHRvbiA9
IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2hvdyBzaG9ydCByZWNvcmRzIiksICJ0aW1lbGluZS1maWx0ZXItc3RhdHVzLWJhci1pdGVtIik7
CisgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fdG9nZ2xlRmlsdGVyQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAg
ICAgfSwKIAogICAgIF90b2dnbGVUaW1lbGluZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKQEAg
LTE2NSw2ICsxNjksMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAgICAgfSwKIAorICAgIF90b2dnbGVGaWx0ZXJCdXR0b25DbGlja2VkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlckJ1dHRvbi50b2dnbGVk
ID0gIXRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQ7CisgICAgICAgIHRoaXMuX2NhbGN1
bGF0b3IuX3Nob3dTaG9ydEV2ZW50cyA9IHRoaXMudG9nZ2xlRmlsdGVyQnV0dG9uLnRvZ2dsZWQ7
CisgICAgICAgIHRoaXMuX3NjaGVkdWxlUmVmcmVzaCh0cnVlKTsKKyAgICB9LAorCiAgICAgdGlt
ZWxpbmVXYXNTdGFydGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnRvZ2dsZVRp
bWVsaW5lQnV0dG9uLnRvZ2dsZWQgPSB0cnVlOwpAQCAtMjIwLDYgKzIzMSw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBHbHVlIHN1YnNl
cXVlbnQgcmVjb3JkcyB3aXRoIHNhbWUgY2F0ZWdvcnkgYW5kIHRpdGxlIHRvZ2V0aGVyIGlmIHRo
ZXkgYXJlIGNsb3NlciB0aGFuIDEwMG1zIHRvIGVhY2ggb3RoZXIuCiAgICAgICAgIHZhciBsYXN0
UmVjb3JkID0gcGFyZW50UmVjb3JkLl9sYXN0UmVjb3JkOworICAgICAgICB2YXIgaGFzTG9uZ0No
aWxkcmVuRXZlbnRzID0gZmFsc2U7CiAgICAgICAgIGlmIChsYXN0UmVjb3JkICYmICghcmVjb3Jk
LmNoaWxkcmVuIHx8ICFyZWNvcmQuY2hpbGRyZW4ubGVuZ3RoKSAmJgogICAgICAgICAgICAgICAg
IGxhc3RSZWNvcmQuY2F0ZWdvcnkgPT0gZm9ybWF0dGVkUmVjb3JkLmNhdGVnb3J5ICYmCiAgICAg
ICAgICAgICAgICAgbGFzdFJlY29yZC50aXRsZSA9PSBmb3JtYXR0ZWRSZWNvcmQudGl0bGUgJiYK
QEAgLTIzMSw5ICsyNDMsMTAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgbGFzdFJlY29yZC5jb3VudCsrOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJlY29yZC5jaGlsZHJlbiAmJiBpIDwgcmVjb3Jk
LmNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIHRoaXMuX2lubmVyQWRkUmVj
b3JkVG9UaW1lbGluZShyZWNvcmQuY2hpbGRyZW5baV0sIGZvcm1hdHRlZFJlY29yZCk7CisgICAg
ICAgICAgICAgICAgaGFzTG9uZ0NoaWxkcmVuRXZlbnRzIHw9IHRoaXMuX2lubmVyQWRkUmVjb3Jk
VG9UaW1lbGluZShyZWNvcmQuY2hpbGRyZW5baV0sIGZvcm1hdHRlZFJlY29yZCk7CiAgICAgICAg
ICAgICBwYXJlbnRSZWNvcmQuX2xhc3RSZWNvcmQgPSByZWNvcmQuY2hpbGRyZW4gJiYgcmVjb3Jk
LmNoaWxkcmVuLmxlbmd0aCA/IG51bGwgOiBmb3JtYXR0ZWRSZWNvcmQ7CiAgICAgICAgIH0KKyAg
ICAgICAgZm9ybWF0dGVkUmVjb3JkLl9oYXNMb25nQ2hpbGRyZW5FdmVudHMgPSBoYXNMb25nQ2hp
bGRyZW5FdmVudHM7CiAKICAgICAgICAgaWYgKGNvbm5lY3RlZFRvT2xkUmVjb3JkKSB7CiAgICAg
ICAgICAgICB2YXIgcmVjb3JkID0gZm9ybWF0dGVkUmVjb3JkOwpAQCAtMjQxLDcgKzI1NCwxNiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgcmVjb3JkLnBhcmVudC5fbGFzdENoaWxkRW5kVGltZSA9IHJlY29yZC5fbGFzdENoaWxkRW5k
VGltZTsKICAgICAgICAgICAgICAgICByZWNvcmQgPSByZWNvcmQucGFyZW50OwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLy8gV2UgaGF2ZSBhdHRhY2hlZCBhIGZyZXNoIGV2ZW50IHJlY29y
ZCByZWNlaXZlZCBmcm9tIFRpbWVsaW5lIEFnZW50IHRvIHNvbWUgb2xkIGV2ZW50IHJlY29yZC4K
KyAgICAgICAgICAgIC8vIElmIHRoYXQgb2xkIHBhcmVudCByZWNvcmQgaGFzbid0IGhhZCBsb25n
IGNoaWxkcmVuIGV2ZW50cyBhbmQgdGhlIG5ldyBjaGlsZCByZWNvcmQgaGFzIGl0CisgICAgICAg
ICAgICAvLyB0aGVuIHdlIHdhbnQgdG8gcHJvcGFnYXRlIF9oYXNMb25nQ2hpbGRyZW5FdmVudHMg
ZmxhZyB0byBwYXJlbnQsIGdyYW5kLXBhcmVudCBldGMuCisgICAgICAgICAgICByZWNvcmQgPSBm
b3JtYXR0ZWRSZWNvcmQ7CisgICAgICAgICAgICB3aGlsZSAocmVjb3JkLl9pc0xvbmdFdmVudCgp
ICYmIHJlY29yZC5wYXJlbnQgJiYgIXJlY29yZC5wYXJlbnQuX2lzTG9uZ0V2ZW50KCkpIHsKKyAg
ICAgICAgICAgICAgICByZWNvcmQgPSByZWNvcmQucGFyZW50OworICAgICAgICAgICAgICAgIHJl
Y29yZC5faGFzTG9uZ0NoaWxkcmVuRXZlbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQorICAgICAgICByZXR1cm4gaGFzTG9uZ0NoaWxkcmVuRXZlbnRzIHx8IGZvcm1hdHRlZFJl
Y29yZC5faXNMb25nRXZlbnQoKTsKICAgICB9LAogCiAgICAgc2V0U2lkZWJhcldpZHRoOiBmdW5j
dGlvbih3aWR0aCkKQEAgLTM1OSwxMiArMzgxLDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9hZGRUb1JlY29yZHNXaW5kb3c6IGZ1bmN0aW9uKHJl
Y29yZCwgcmVjb3Jkc1dpbmRvdykKICAgICB7Ci0gICAgICAgIHJlY29yZHNXaW5kb3cucHVzaChy
ZWNvcmQpOwotICAgICAgICBpZiAoIXJlY29yZC5jb2xsYXBzZWQpIHsKLSAgICAgICAgICAgIHZh
ciBpbmRleCA9IHJlY29yZHNXaW5kb3cubGVuZ3RoOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCByZWNvcmQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhp
cy5fYWRkVG9SZWNvcmRzV2luZG93KHJlY29yZC5jaGlsZHJlbltpXSwgcmVjb3Jkc1dpbmRvdyk7
Ci0gICAgICAgICAgICByZWNvcmQudmlzaWJsZUNoaWxkcmVuQ291bnQgPSByZWNvcmRzV2luZG93
Lmxlbmd0aCAtIGluZGV4OworICAgICAgICBpZiAodGhpcy5fY2FsY3VsYXRvci5fc2hvd1Nob3J0
RXZlbnRzIHx8IHJlY29yZC5faXNMb25nRXZlbnQoKSkgeworICAgICAgICAgICAgcmVjb3Jkc1dp
bmRvdy5wdXNoKHJlY29yZCk7CisgICAgICAgICAgICBpZiAoIXJlY29yZC5jb2xsYXBzZWQpIHsK
KyAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSByZWNvcmRzV2luZG93Lmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY29yZC5jaGlsZHJlbi5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkVG9SZWNvcmRzV2luZG93KHJlY29yZC5j
aGlsZHJlbltpXSwgcmVjb3Jkc1dpbmRvdyk7CisgICAgICAgICAgICAgICAgcmVjb3JkLnZpc2li
bGVDaGlsZHJlbkNvdW50ID0gcmVjb3Jkc1dpbmRvdy5sZW5ndGggLSBpbmRleDsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0sCiAKQEAgLTY1MSw3ICs2NzUsNyBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRHcmFwaFJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Jh
ckVsZW1lbnQuc3R5bGUubGVmdCA9IGJhclBvc2l0aW9uLmxlZnQgKyBleHBhbmRPZmZzZXQgKyAi
cHgiOwogICAgICAgICB0aGlzLl9iYXJFbGVtZW50LnN0eWxlLndpZHRoID0gIGJhclBvc2l0aW9u
LndpZHRoICsgInB4IjsKIAotICAgICAgICBpZiAocmVjb3JkLmNoaWxkcmVuLmxlbmd0aCkgewor
ICAgICAgICBpZiAocmVjb3JkLnZpc2libGVDaGlsZHJlbkNvdW50IHx8IHJlY29yZC5faGFzTG9u
Z0NoaWxkcmVuRXZlbnRzIHx8IChjYWxjdWxhdG9yLl9zaG93U2hvcnRFdmVudHMgJiYgcmVjb3Jk
LmNoaWxkcmVuLmxlbmd0aCkpIHsKICAgICAgICAgICAgIHRoaXMuX2V4cGFuZEVsZW1lbnQuc3R5
bGUudG9wID0gaW5kZXggKiB0aGlzLl9yb3dIZWlnaHQgKyAicHgiOwogICAgICAgICAgICAgdGhp
cy5fZXhwYW5kRWxlbWVudC5zdHlsZS5sZWZ0ID0gYmFyUG9zaXRpb24ubGVmdCArICJweCI7CiAg
ICAgICAgICAgICB0aGlzLl9leHBhbmRFbGVtZW50LnN0eWxlLndpZHRoID0gTWF0aC5tYXgoMTIs
IGJhclBvc2l0aW9uLndpZHRoICsgMjUpICsgInB4IjsKQEAgLTczNyw2ICs3NjEsMTIgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkID0gZnVuY3Rpb24ocmVjb3Jk
LCBwYXJlbnRSZWNvcmQsIHJlY28KIH0KIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9y
bWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKKyAgICBfaXNMb25nRXZlbnQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGNvbnN0IHNob3J0RXZlbnRMZW5ndGggPSAwLjAxNTsKKyAgICAgICAg
cmV0dXJuICh0aGlzLl9sYXN0Q2hpbGRFbmRUaW1lIC0gdGhpcy5zdGFydFRpbWUpID4gc2hvcnRF
dmVudExlbmd0aDsKKyAgICB9LAorCiAgICAgX2NyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbnRlbnQs
IHN0eWxlTmFtZSkKICAgICB7CiAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGFiZWwiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
aW5kZXggYzczMGY2Yy4uMmQ3NmFhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKQEAgLTM2MjYsNiArMzYyNiwzMyBAQCBib2R5LmluYWN0aXZlIC5zaWRlYmFy
LXRyZWUtaXRlbS5zZWxlY3RlZCAuYnViYmxlLnNlYXJjaC1tYXRjaGVzIHsKICAgICBiYWNrZ3Jv
dW5kLXBvc2l0aW9uLXk6IDcycHg7CiB9CiAKKy50aW1lbGluZS1kZXRhaWxzIHsKKyAgICAtd2Vi
a2l0LXVzZXItc2VsZWN0OiB0ZXh0OworfQorCisudGltZWxpbmUtZGV0YWlscy1yb3ctdGl0bGUg
eworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIHdo
aXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKy50aW1lbGluZS1kZXRhaWxzLXJvdy1kYXRhIHsKKyAg
ICB3aGl0ZS1zcGFjZTogbm93cmFwOworfQorCisudGltZWxpbmUtZGV0YWlscy10aXRsZSB7Cisg
ICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworLnRp
bWVsaW5lLWZpbHRlci1zdGF0dXMtYmFyLWl0ZW0gLmdseXBoIHsKKyAgICAtd2Via2l0LW1hc2st
aW1hZ2U6IHVybChJbWFnZXMvbGFyZ2VyUmVzb3VyY2VzQnV0dG9uR2x5cGgucG5nKTsKK30KKwor
LnRpbWVsaW5lLWZpbHRlci1zdGF0dXMtYmFyLWl0ZW0udG9nZ2xlZC1vbiAuZ2x5cGggeworICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYig2NiwgMTI5LCAyMzUpICFpbXBvcnRhbnQ7Cit9CisKIC8q
IFByb2ZpbGVyIFN0eWxlICovCiAKICNwcm9maWxlLXZpZXdzIHsKQEAgLTM4ODUsMjUgKzM5MTIs
NiBAQCBvbC5icmVha3BvaW50LWxpc3QgewogICAgIHRleHQtc2hhZG93OiB3aGl0ZSAwIDFweCAw
OwogfQogCi0udGltZWxpbmUtZGV0YWlscyB7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4
dDsKLX0KLQotLnRpbWVsaW5lLWRldGFpbHMtcm93LXRpdGxlIHsKLSAgICBmb250LXdlaWdodDog
Ym9sZDsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwot
fQotCi0udGltZWxpbmUtZGV0YWlscy1yb3ctZGF0YSB7Ci0gICAgd2hpdGUtc3BhY2U6IG5vd3Jh
cDsKLX0KLQotLnRpbWVsaW5lLWRldGFpbHMtdGl0bGUgewotICAgIGZvbnQtd2VpZ2h0OiBib2xk
OwotICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci19Ci0KIC53b3JrZXJzLWxpc3QgewogICAgIGxp
c3Qtc3R5bGU6IG5vbmU7CiAgICAgbWFyZ2luOiAwOwo=
</data>
<flag name="review"
          id="34965"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>