<?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>34921</bug_id>
          
          <creation_ts>2010-02-13 07:29:32 -0800</creation_ts>
          <short_desc>Web Inspector: cache created row, span and text elements in TextView to improve scroller performance on debug build.</short_desc>
          <delta_ts>2010-02-14 01:21:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>190273</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-13 07:29:32 -0800</bug_when>
    <thetext>Release mode is fast both with and without this change. I noticed that our styles are taking too long to recalc though (due to selector complexity?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190274</commentid>
    <comment_count>1</comment_count>
      <attachid>48704</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-13 07:36:51 -0800</bug_when>
    <thetext>Created attachment 48704
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190276</commentid>
    <comment_count>2</comment_count>
      <attachid>48704</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-02-13 07:57:06 -0800</bug_when>
    <thetext>Comment on attachment 48704
[PATCH] Proposed change.


&gt; +            var span = this._cachedSpans[this._cachedSpans.length - 1];
&gt; +            this._cachedSpans.length--;

I am surprised this works! You should just use the pop() function. This is done in a few other places.


I also don&apos;t understand how this helps much, since you just cache te elements, but the contents are replaces every time.

r+ if you change to use pop() before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190305</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-02-14 01:21:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 48704 [details])
&gt; 
&gt; &gt; +            var span = this._cachedSpans[this._cachedSpans.length - 1];
&gt; &gt; +            this._cachedSpans.length--;
&gt; 
&gt; I am surprised this works! You should just use the pop() function. This is done
&gt; in a few other places.
&gt; 
&gt; 
&gt; I also don&apos;t understand how this helps much, since you just cache te elements,
&gt; but the contents are replaces every time.

Scrolling a large document slowly needs thousands of spans to be created at runtime for the highlight, thousands of rows to be created for lines. Native elements are allocated in heap, js wrappers are created for all of them since they are used in our code. Caching allows to limit number of created spans to a couple of hundreds.

&gt; 
&gt; r+ if you change to use pop() before landing.

Done.


Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/SourceFrame.js
	M	WebCore/inspector/front-end/TextViewer.js
Committed r54756</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48704</attachid>
            <date>2010-02-13 07:36:51 -0800</date>
            <delta_ts>2010-02-13 07:57:05 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>reuse_divs</filename>
            <type>text/plain</type>
            <size>13176</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTdiODA1OS4uM2M2NGQ2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMi0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBjYWNoZSBjcmVhdGVkIHJvdywgc3Bh
biBhbmQgdGV4dCBlbGVtZW50cworICAgICAgICBpbiBUZXh0VmlldyB0byBpbXByb3ZlIHNjcm9s
bGVyIHBlcmZvcm1hbmNlIG9uIGRlYnVnIGJ1aWxkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDkyMQorCisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUuc2V0IHZpc2libGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
VGV4dFZpZXdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5mcmVlQ2FjaGVkRWxlbWVudHMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlLl9idWlsZENodW5r
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUuX21ha2VMaW5l
QUNodW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fcGFp
bnRMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5fcmVs
ZWFzZUxpbmVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZS5f
YXBwZW5kU3Bhbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUu
X2FwcGVuZFRleHROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Q2h1bmspOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRDaHVuay5wcm90b3R5cGUuc2V0IGV4cGFuZGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0Q2h1bmsucHJvdG90eXBlLl9saW5lTnVtYmVyVGV4dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dENodW5rLnByb3RvdHlwZS5fY3JlYXRlUm93KToK
KwogMjAxMC0wMi0xMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggMGY5MDcwMC4uMzQzMTdhMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtNTMsNiArNTMsOSBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhp
cy5fdmlzaWJsZSA9IHZpc2libGU7CiAgICAgICAgIHRoaXMuX2NyZWF0ZVZpZXdlcklmTmVlZGVk
KCk7CisgICAgICAgIGlmICghdmlzaWJsZSAmJiB0aGlzLl90ZXh0Vmlld2VyKQorICAgICAgICAg
ICAgdGhpcy5fdGV4dFZpZXdlci5mcmVlQ2FjaGVkRWxlbWVudHMoKTsKKyAgICAgICAgICAgIAog
ICAgIH0sCiAKICAgICBnZXQgZXhlY3V0aW9uTGluZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdlci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0Vmlld2VyLmpzCmluZGV4IDA5NjQ2NGYuLjZiZGNlYjcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCkBAIC01MCw2ICs1MCw4IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0Vmlld2VyID0gZnVuY3Rpb24odGV4dE1vZGVsLCBwbGF0Zm9ybSwgdXJsKQogCiAg
ICAgdGhpcy5fZGVmYXVsdENodW5rU2l6ZSA9IDUwOwogICAgIHRoaXMuX3BhaW50Q29hbGVzY2lu
Z0xldmVsID0gMDsKKworICAgIHRoaXMuZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiB9CiAKIFdlYklu
c3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKQEAgLTExMSwxNCArMTEzLDIwIEBAIFdl
Ykluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgY2h1bmsuYWRkRGVj
b3JhdGlvbigid2Via2l0LWhpZ2hsaWdodGVkLWxpbmUiKTsKICAgICB9LAogCisgICAgZnJlZUNh
Y2hlZEVsZW1lbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9jYWNoZWRTcGFu
cyA9IFtdOworICAgICAgICB0aGlzLl9jYWNoZWRUZXh0Tm9kZXMgPSBbXTsKKyAgICAgICAgdGhp
cy5fY2FjaGVkUm93cyA9IFtdOworICAgIH0sCisKICAgICBfYnVpbGRDaHVua3M6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xpbmVzQ29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOwogCi0gICAgICAgIHZhciBwYWludExpbmVzQ2FsbGJhY2sgPSB0aGlzLl9wYWludExp
bmVzLmJpbmQodGhpcyk7CiAgICAgICAgIHRoaXMuX3RleHRDaHVua3MgPSBbXTsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl90ZXh0TW9kZWwubGluZXNDb3VudDsgaSArPSB0aGlz
Ll9kZWZhdWx0Q2h1bmtTaXplKSB7Ci0gICAgICAgICAgICB2YXIgY2h1bmsgPSBuZXcgV2ViSW5z
cGVjdG9yLlRleHRDaHVuayh0aGlzLl90ZXh0TW9kZWwsIGksIGkgKyB0aGlzLl9kZWZhdWx0Q2h1
bmtTaXplLCBwYWludExpbmVzQ2FsbGJhY2spOworICAgICAgICAgICAgdmFyIGNodW5rID0gbmV3
IFdlYkluc3BlY3Rvci5UZXh0Q2h1bmsodGhpcywgaSwgaSArIHRoaXMuX2RlZmF1bHRDaHVua1Np
emUpOwogICAgICAgICAgICAgdGhpcy5fdGV4dENodW5rcy5wdXNoKGNodW5rKTsKICAgICAgICAg
ICAgIHRoaXMuX2xpbmVzQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChjaHVuay5lbGVtZW50
KTsKICAgICAgICAgfQpAQCAtMTQwLDIzICsxNDgsMjIgQEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3
ZXIucHJvdG90eXBlID0gewogICAgICAgICBvbGRDaHVuay5leHBhbmRlZCA9IGZhbHNlOwogCiAg
ICAgICAgIHZhciBpbnNlcnRJbmRleCA9IG9sZENodW5rLmNodW5rTnVtYmVyICsgMTsKLSAgICAg
ICAgdmFyIHBhaW50TGluZXNDYWxsYmFjayA9IHRoaXMuX3BhaW50TGluZXMuYmluZCh0aGlzKTsK
IAogICAgICAgICAvLyBQcmVmaXggY2h1bmsuCiAgICAgICAgIGlmIChsaW5lTnVtYmVyID4gb2xk
Q2h1bmsuc3RhcnRMaW5lKSB7Ci0gICAgICAgICAgICB2YXIgcHJlZml4Q2h1bmsgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRleHRDaHVuayh0aGlzLl90ZXh0TW9kZWwsIG9sZENodW5rLnN0YXJ0TGluZSwg
bGluZU51bWJlciwgcGFpbnRMaW5lc0NhbGxiYWNrKTsKKyAgICAgICAgICAgIHZhciBwcmVmaXhD
aHVuayA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dENodW5rKHRoaXMsIG9sZENodW5rLnN0YXJ0TGlu
ZSwgbGluZU51bWJlcik7CiAgICAgICAgICAgICB0aGlzLl90ZXh0Q2h1bmtzLnNwbGljZShpbnNl
cnRJbmRleCsrLCAwLCBwcmVmaXhDaHVuayk7CiAgICAgICAgICAgICB0aGlzLl9saW5lc0NvbnRh
aW5lckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHByZWZpeENodW5rLmVsZW1lbnQsIG9sZENodW5rLmVs
ZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTGluZSBjaHVuay4KLSAgICAgICAgdmFy
IGxpbmVDaHVuayA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dENodW5rKHRoaXMuX3RleHRNb2RlbCwg
bGluZU51bWJlciwgbGluZU51bWJlciArIDEsIHBhaW50TGluZXNDYWxsYmFjayk7CisgICAgICAg
IHZhciBsaW5lQ2h1bmsgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRDaHVuayh0aGlzLCBsaW5lTnVt
YmVyLCBsaW5lTnVtYmVyICsgMSk7CiAgICAgICAgIHRoaXMuX3RleHRDaHVua3Muc3BsaWNlKGlu
c2VydEluZGV4KyssIDAsIGxpbmVDaHVuayk7CiAgICAgICAgIHRoaXMuX2xpbmVzQ29udGFpbmVy
RWxlbWVudC5pbnNlcnRCZWZvcmUobGluZUNodW5rLmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQp
OwogCiAgICAgICAgIC8vIFN1ZmZpeCBjaHVuay4KICAgICAgICAgaWYgKG9sZENodW5rLnN0YXJ0
TGluZSArIG9sZENodW5rLmxpbmVzQ291bnQgPiBsaW5lTnVtYmVyICsgMSkgewotICAgICAgICAg
ICAgdmFyIHN1ZmZpeENodW5rID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0Q2h1bmsodGhpcy5fdGV4
dE1vZGVsLCBsaW5lTnVtYmVyICsgMSwgb2xkQ2h1bmsuc3RhcnRMaW5lICsgb2xkQ2h1bmsubGlu
ZXNDb3VudCwgcGFpbnRMaW5lc0NhbGxiYWNrKTsKKyAgICAgICAgICAgIHZhciBzdWZmaXhDaHVu
ayA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dENodW5rKHRoaXMsIGxpbmVOdW1iZXIgKyAxLCBvbGRD
aHVuay5zdGFydExpbmUgKyBvbGRDaHVuay5saW5lc0NvdW50KTsKICAgICAgICAgICAgIHRoaXMu
X3RleHRDaHVua3Muc3BsaWNlKGluc2VydEluZGV4LCAwLCBzdWZmaXhDaHVuayk7CiAgICAgICAg
ICAgICB0aGlzLl9saW5lc0NvbnRhaW5lckVsZW1lbnQuaW5zZXJ0QmVmb3JlKHN1ZmZpeENodW5r
LmVsZW1lbnQsIG9sZENodW5rLmVsZW1lbnQpOwogICAgICAgICB9CkBAIC0zMzksMjEgKzM0Niw0
MyBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgaisrOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAocGxhaW5U
ZXh0U3RhcnQgIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobGluZS5zdWJzdHJpbmcocGxhaW5UZXh0U3RhcnQs
IGopKSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFRleHROb2RlKGVsZW1lbnQs
IGxpbmUuc3Vic3RyaW5nKHBsYWluVGV4dFN0YXJ0LCBqKSk7CiAgICAgICAgICAgICAgICAgICAg
IHBsYWluVGV4dFN0YXJ0ID0gLTE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlU3BhbihsaW5lLnN1YnN0cmluZyhqLCBq
ICsgYXR0cmlidXRlLmxlbmd0aCksIGF0dHJpYnV0ZS50b2tlblR5cGUpKTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9hcHBlbmRTcGFuKGVsZW1lbnQsIGxpbmUuc3Vic3RyaW5nKGosIGogKyBhdHRy
aWJ1dGUubGVuZ3RoKSwgYXR0cmlidXRlLnRva2VuVHlwZSk7CiAgICAgICAgICAgICAgICAgaiAr
PSBhdHRyaWJ1dGUubGVuZ3RoOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlm
IChwbGFpblRleHRTdGFydCAhPT0gLTEpCi0gICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGxpbmUuc3Vic3RyaW5nKHBsYWluVGV4dFN0YXJ0LCBs
aW5lLmxlbmd0aCkpKTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZFRleHROb2RlKGVsZW1lbnQs
IGxpbmUuc3Vic3RyaW5nKHBsYWluVGV4dFN0YXJ0LCBsaW5lLmxlbmd0aCkpOwogICAgICAgICBp
ZiAodGhpcy5fcmFuZ2VUb01hcmsgJiYgdGhpcy5fcmFuZ2VUb01hcmsuc3RhcnRMaW5lID09PSBs
aW5lTnVtYmVyKQogICAgICAgICAgICAgdGhpcy5fbWFya1JhbmdlKGVsZW1lbnQsIGxpbmUsIHRo
aXMuX3JhbmdlVG9NYXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFyay5lbmRDb2x1bW4p
OwogICAgICAgICBpZiAobGluZVJvdy5kZWNvcmF0aW9uc0VsZW1lbnQpCiAgICAgICAgICAgICBl
bGVtZW50LmFwcGVuZENoaWxkKGxpbmVSb3cuZGVjb3JhdGlvbnNFbGVtZW50KTsKICAgICB9LAog
CisgICAgX3JlbGVhc2VMaW5lc0hpZ2hsaWdodDogZnVuY3Rpb24oZnJvbUxpbmUsIHRvTGluZSkK
KyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSBmcm9tTGluZTsgaSA8IHRvTGluZTsgKytpKSB7
CisgICAgICAgICAgICB2YXIgbGluZVJvdyA9IHRoaXMuX3RleHRNb2RlbC5nZXRBdHRyaWJ1dGUo
aSwgImxpbmUtcm93Iik7CisgICAgICAgICAgICBpZiAoIWxpbmVSb3cpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGxpbmVSb3cubGFzdENoaWxk
OworICAgICAgICAgICAgaWYgKCJzcGFucyIgaW4gZWxlbWVudCkgeworICAgICAgICAgICAgICAg
IHZhciBzcGFucyA9IGVsZW1lbnQuc3BhbnM7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzcGFucy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2Fj
aGVkU3BhbnMucHVzaChzcGFuc1tpXSk7CisgICAgICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQu
c3BhbnM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoInRleHROb2RlcyIgaW4gZWxl
bWVudCkgeworICAgICAgICAgICAgICAgIHZhciB0ZXh0Tm9kZXMgPSBlbGVtZW50LnRleHROb2Rl
czsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHROb2Rlcy5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkVGV4dE5vZGVzLnB1c2godGV4
dE5vZGVzW2ldKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgZWxlbWVudC50ZXh0Tm9kZXM7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgX2dldFNlbGVjdGlvbjogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKQEAgLTQ0NywxNSArNDc2LDM4IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHsgbGluZTogbGluZVJvdy5saW5lTnVtYmVyLCBjb2x1
bW46IGNvbHVtbiB9OwogICAgIH0sCiAKLSAgICBfY3JlYXRlU3BhbjogZnVuY3Rpb24oY29udGVu
dCwgY2xhc3NOYW1lKQorICAgIF9hcHBlbmRTcGFuOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZW50
LCBjbGFzc05hbWUpCiAgICAgewotICAgICAgICBpZiAoY2xhc3NOYW1lID09PSAiaHRtbC1yZXNv
dXJjZS1saW5rIiB8fCBjbGFzc05hbWUgPT09ICJodG1sLWV4dGVybmFsLWxpbmsiKQotICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUxpbmsoY29udGVudCwgY2xhc3NOYW1lID09PSAiaHRt
bC1leHRlcm5hbC1saW5rIik7CisgICAgICAgIGlmIChjbGFzc05hbWUgPT09ICJodG1sLXJlc291
cmNlLWxpbmsiIHx8IGNsYXNzTmFtZSA9PT0gImh0bWwtZXh0ZXJuYWwtbGluayIpIHsKKyAgICAg
ICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlTGluayhjb250ZW50LCBjbGFz
c05hbWUgPT09ICJodG1sLWV4dGVybmFsLWxpbmsiKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KIAotICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKKyAgICAgICAgaWYgKHRoaXMuX2NhY2hlZFNwYW5zLmxlbmd0aCkgeworICAgICAgICAg
ICAgdmFyIHNwYW4gPSB0aGlzLl9jYWNoZWRTcGFuc1t0aGlzLl9jYWNoZWRTcGFucy5sZW5ndGgg
LSAxXTsKKyAgICAgICAgICAgIHRoaXMuX2NhY2hlZFNwYW5zLmxlbmd0aC0tOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwogICAgICAgICBzcGFuLmNsYXNzTmFtZSA9ICJ3ZWJraXQtIiArIGNsYXNzTmFtZTsKLSAg
ICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7
Ci0gICAgICAgIHJldHVybiBzcGFuOworICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gY29udGVu
dDsKKyAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChzcGFuKTsKKyAgICAgICAgaWYgKCEoInNw
YW5zIiBpbiBlbGVtZW50KSkKKyAgICAgICAgICAgIGVsZW1lbnQuc3BhbnMgPSBbXTsKKyAgICAg
ICAgZWxlbWVudC5zcGFucy5wdXNoKHNwYW4pOworICAgIH0sCisKKyAgICBfYXBwZW5kVGV4dE5v
ZGU6IGZ1bmN0aW9uKGVsZW1lbnQsIHRleHQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY2Fj
aGVkVGV4dE5vZGVzLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIHRleHROb2RlID0gdGhpcy5f
Y2FjaGVkVGV4dE5vZGVzW3RoaXMuX2NhY2hlZFRleHROb2Rlcy5sZW5ndGggLSAxXTsKKyAgICAg
ICAgICAgIHRoaXMuX2NhY2hlZFRleHROb2Rlcy5sZW5ndGgtLTsKKyAgICAgICAgICAgIHRleHRO
b2RlLm5vZGVWYWx1ZSA9IHRleHQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdmFyIHRl
eHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CisgICAgICAgIGVsZW1lbnQu
YXBwZW5kQ2hpbGQodGV4dE5vZGUpOworICAgICAgICBpZiAoISgidGV4dE5vZGVzIiBpbiBlbGVt
ZW50KSkKKyAgICAgICAgICAgIGVsZW1lbnQudGV4dE5vZGVzID0gW107CisgICAgICAgIGVsZW1l
bnQudGV4dE5vZGVzLnB1c2godGV4dE5vZGUpOwogICAgIH0sCiAKICAgICBfY3JlYXRlTGluazog
ZnVuY3Rpb24oY29udGVudCwgaXNFeHRlcm5hbCkKQEAgLTUzMiwxMCArNTg0LDEzIEBAIFdlYklu
c3BlY3Rvci5UZXh0Vmlld2VyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rv
ci5UZXh0Q2h1bmsgPSBmdW5jdGlvbih0ZXh0TW9kZWwsIHN0YXJ0TGluZSwgZW5kTGluZSwgcGFp
bnRMaW5lc0NhbGxiYWNrKQordmFyIGNhY2hlZFNwYW5zID0gW107CisKK1dlYkluc3BlY3Rvci5U
ZXh0Q2h1bmsgPSBmdW5jdGlvbih0ZXh0Vmlld2VyLCBzdGFydExpbmUsIGVuZExpbmUpCiB7Cisg
ICAgdGhpcy5fdGV4dFZpZXdlciA9IHRleHRWaWV3ZXI7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICB0aGlzLl90ZXh0TW9kZWwgPSB0ZXh0TW9k
ZWw7CisgICAgdGhpcy5fdGV4dE1vZGVsID0gdGV4dFZpZXdlci5fdGV4dE1vZGVsOwogICAgIHRo
aXMuZWxlbWVudC5jaHVuayA9IHRoaXM7CiAgICAgdGhpcy5lbGVtZW50LmxpbmVOdW1iZXIgPSBz
dGFydExpbmU7CiAKQEAgLTU1OCw3ICs2MTMsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dENodW5rID0g
ZnVuY3Rpb24odGV4dE1vZGVsLCBzdGFydExpbmUsIGVuZExpbmUsIHBhaW50TGluZXNDYWxsYgog
ICAgIGZvciAodmFyIGkgPSB0aGlzLnN0YXJ0TGluZTsgaSA8IHRoaXMuc3RhcnRMaW5lICsgdGhp
cy5saW5lc0NvdW50OyArK2kpCiAgICAgICAgIGxpbmVzLnB1c2godGhpcy5fdGV4dE1vZGVsLmxp
bmUoaSkpOwogICAgIHRoaXMuX2xpbmVDb250ZW50RWxlbWVudC50ZXh0Q29udGVudCA9IGxpbmVz
LmpvaW4oIlxuIik7Ci0gICAgdGhpcy5fcGFpbnRMaW5lcyA9IHBhaW50TGluZXNDYWxsYmFjazsK
IH0KIAogV2ViSW5zcGVjdG9yLlRleHRDaHVuay5wcm90b3R5cGUgPSB7CkBAIC02MDEsNDAgKzY1
NSwzMCBAQCBXZWJJbnNwZWN0b3IuVGV4dENodW5rLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYg
KHRoaXMubGluZXNDb3VudCA9PT0gMSkgewogICAgICAgICAgICAgdGhpcy5fdGV4dE1vZGVsLnNl
dEF0dHJpYnV0ZSh0aGlzLnN0YXJ0TGluZSwgImxpbmUtcm93IiwgdGhpcy5lbGVtZW50KTsKICAg
ICAgICAgICAgIGlmIChleHBhbmRlZCkKLSAgICAgICAgICAgICAgICB0aGlzLl9wYWludExpbmVz
KHRoaXMuc3RhcnRMaW5lLCB0aGlzLnN0YXJ0TGluZSArIDEpOworICAgICAgICAgICAgICAgIHRo
aXMuX3RleHRWaWV3ZXIuX3BhaW50TGluZXModGhpcy5zdGFydExpbmUsIHRoaXMuc3RhcnRMaW5l
ICsgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZXhw
YW5kZWQpIHsKICAgICAgICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50LnBh
cmVudEVsZW1lbnQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5zdGFydExpbmU7IGkg
PCB0aGlzLnN0YXJ0TGluZSArIHRoaXMubGluZXNDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGxpbmVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgICAgICAg
ICAgICAgIGxpbmVSb3cubGluZU51bWJlciA9IGk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbGlu
ZU51bWJlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICAg
ICAgICAgIGxpbmVOdW1iZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJ3ZWJraXQtbGluZS1udW1iZXIi
OwotICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5f
bGluZU51bWJlclRleHQoaSk7Ci0gICAgICAgICAgICAgICAgbGluZVJvdy5hcHBlbmRDaGlsZChs
aW5lTnVtYmVyRWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbGluZUNvbnRlbnRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgICAgICAgICBsaW5l
Q29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gIndlYmtpdC1saW5lLWNvbnRlbnQiOwotICAgICAg
ICAgICAgICAgIGxpbmVDb250ZW50RWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX3RleHRNb2Rl
bC5saW5lKGkpOwotICAgICAgICAgICAgICAgIGxpbmVSb3cuYXBwZW5kQ2hpbGQobGluZUNvbnRl
bnRFbGVtZW50KTsKLQorICAgICAgICAgICAgICAgIHZhciBsaW5lUm93ID0gdGhpcy5fY3JlYXRl
Um93KGkpOwogICAgICAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRBdHRyaWJ1dGUoaSwg
ImxpbmUtcm93IiwgbGluZVJvdyk7CiAgICAgICAgICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNl
cnRCZWZvcmUobGluZVJvdywgdGhpcy5lbGVtZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTsKIAotICAgICAgICAg
ICAgdGhpcy5fcGFpbnRMaW5lcyh0aGlzLnN0YXJ0TGluZSwgdGhpcy5zdGFydExpbmUgKyB0aGlz
LmxpbmVzQ291bnQpOworICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5fcGFpbnRMaW5lcyh0
aGlzLnN0YXJ0TGluZSwgdGhpcy5zdGFydExpbmUgKyB0aGlzLmxpbmVzQ291bnQpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIGZpcnN0TGluZSA9IHRoaXMuX3RleHRNb2RlbC5n
ZXRBdHRyaWJ1dGUodGhpcy5zdGFydExpbmUsICJsaW5lLXJvdyIpOwogICAgICAgICAgICAgdmFy
IHBhcmVudEVsZW1lbnQgPSBmaXJzdExpbmUucGFyZW50RWxlbWVudDsKKyAgICAgICAgICAgIHRo
aXMuX3RleHRWaWV3ZXIuX3JlbGVhc2VMaW5lc0hpZ2hsaWdodCh0aGlzLnN0YXJ0TGluZSwgdGhp
cy5zdGFydExpbmUgKyB0aGlzLmxpbmVzQ291bnQpOwogCiAgICAgICAgICAgICBwYXJlbnRFbGVt
ZW50Lmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIGZpcnN0TGluZSk7CiAgICAgICAgICAgICBm
b3IgKHZhciBpID0gdGhpcy5zdGFydExpbmU7IGkgPCB0aGlzLnN0YXJ0TGluZSArIHRoaXMubGlu
ZXNDb3VudDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGxpbmVSb3cgPSB0aGlzLl90ZXh0
TW9kZWwuZ2V0QXR0cmlidXRlKGksICJsaW5lLXJvdyIpOwogICAgICAgICAgICAgICAgIHRoaXMu
X3RleHRNb2RlbC5yZW1vdmVBdHRyaWJ1dGUoaSwgImxpbmUtcm93Iik7CisgICAgICAgICAgICAg
ICAgdGhpcy5fdGV4dFZpZXdlci5fY2FjaGVkUm93cy5wdXNoKGxpbmVSb3cpOwogICAgICAgICAg
ICAgICAgIHBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQobGluZVJvdyk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTY2Miw1ICs3MDYsMzAgQEAgV2ViSW5zcGVjdG9yLlRleHRDaHVuay5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsKICAgICAgICAgdGV4dCArPSBs
aW5lTnVtYmVyICsgMTsKICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfSwKKworICAgIF9jcmVh
dGVSb3c6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCisgICAgeworICAgICAgICB2YXIgY2FjaGVkUm93
cyA9IHRoaXMuX3RleHRWaWV3ZXIuX2NhY2hlZFJvd3M7CisgICAgICAgIGlmIChjYWNoZWRSb3dz
Lmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIGxpbmVSb3cgPSBjYWNoZWRSb3dzW2NhY2hlZFJv
d3MubGVuZ3RoIC0gMV07CisgICAgICAgICAgICBjYWNoZWRSb3dzLmxlbmd0aC0tOworICAgICAg
ICAgICAgdmFyIGxpbmVOdW1iZXJFbGVtZW50ID0gbGluZVJvdy5maXJzdENoaWxkOworICAgICAg
ICAgICAgdmFyIGxpbmVDb250ZW50RWxlbWVudCA9IGxpbmVSb3cubGFzdENoaWxkOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIGxpbmVSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0ciIpOworCisgICAgICAgICAgICB2YXIgbGluZU51bWJlckVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAgICAgICAgbGluZU51bWJlckVsZW1lbnQuY2xh
c3NOYW1lID0gIndlYmtpdC1saW5lLW51bWJlciI7CisgICAgICAgICAgICBsaW5lUm93LmFwcGVu
ZENoaWxkKGxpbmVOdW1iZXJFbGVtZW50KTsKKworICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgICAgICBsaW5l
Q29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gIndlYmtpdC1saW5lLWNvbnRlbnQiOworICAgICAg
ICAgICAgbGluZVJvdy5hcHBlbmRDaGlsZChsaW5lQ29udGVudEVsZW1lbnQpOyAgICAgICAgCisg
ICAgICAgIH0KKyAgICAgICAgbGluZVJvdy5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICAg
ICAgbGluZU51bWJlckVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9saW5lTnVtYmVyVGV4dChs
aW5lTnVtYmVyKTsKKyAgICAgICAgbGluZUNvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ID0gdGhp
cy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBsaW5lUm93Owog
ICAgIH0KIH0K
</data>
<flag name="review"
          id="31427"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>