<?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>55456</bug_id>
          
          <creation_ts>2011-03-01 04:08:20 -0800</creation_ts>
          <short_desc>Web Inspector: Extremely slow DOM search in GMail</short_desc>
          <delta_ts>2011-03-08 01:06:35 -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="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mathias</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>359791</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-03-01 04:08:20 -0800</bug_when>
    <thetext>1. Open a message in gmail
2. Click inspect element somewhere
3. Search for &apos;.oM&apos; using the search box on top of the Web Inspector
The search takes forever (almost).

Upstreaming Chromium issue http://code.google.com/p/chromium/issues/detail?id=64928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359825</commentid>
    <comment_count>1</comment_count>
      <attachid>84217</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-03-01 05:17:22 -0800</bug_when>
    <thetext>Created attachment 84217
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359842</commentid>
    <comment_count>2</comment_count>
      <attachid>84220</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-03-01 05:58:48 -0800</bug_when>
    <thetext>Created attachment 84220
[PATCH] Avoid storing refs to normalHTML in nodes not participating in search highlighting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359854</commentid>
    <comment_count>3</comment_count>
      <attachid>84220</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-01 06:16:40 -0800</bug_when>
    <thetext>Comment on attachment 84220
[PATCH] Avoid storing refs to normalHTML in nodes not participating in search highlighting

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

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:1451
&gt;              text = text.substring(match.index + 1);

while (match) {
1449            highlightSearchResult(this.listItemElement, offset + match.index, match[0].length);
Could we replace quadratic algorithm here with a linear one?

&gt; Source/WebCore/inspector/front-end/utilities.js:1023
&gt; +function setAtTextOffset(textNodeIterator, relativeOffset)

This should be a method on the iterator.

&gt; Source/WebCore/inspector/front-end/utilities.js:1062
&gt; +    var textNodeIterator = new OrderedNodeSnapshotIterator(document.evaluate(&quot;.//text()&quot;, element, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null));

Consider inlining the iterator. Looks like a loop would work equally well here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359895</commentid>
    <comment_count>4</comment_count>
      <attachid>84231</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-03-01 08:01:08 -0800</bug_when>
    <thetext>Created attachment 84231
[PATCH] Comments addressed, please re-review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359899</commentid>
    <comment_count>5</comment_count>
      <attachid>84231</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-01 08:13:01 -0800</bug_when>
    <thetext>Comment on attachment 84231
[PATCH] Comments addressed, please re-review

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

&gt; Source/WebCore/inspector/front-end/utilities.js:1034
&gt; +    var previousOffset = 0;

This is not used. Please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359917</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-03-01 08:52:15 -0800</bug_when>
    <thetext>Landed with the unused var fix.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       Source/WebCore/ChangeLog
        M       Source/WebCore/inspector/front-end/ElementsPanel.js
        M       Source/WebCore/inspector/front-end/ElementsTreeOutline.js
        M       Source/WebCore/inspector/front-end/utilities.js
Committed r80003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359955</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-01 09:42:51 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80003 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
loader/reload-subresource-when-type-changes.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84217</attachid>
            <date>2011-03-01 05:17:22 -0800</date>
            <delta_ts>2011-03-01 05:58:48 -0800</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>slowsearch.patch</filename>
            <type>text/plain</type>
            <size>7570</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDcyYWM0MzBjNzc2NTg5MDUyMzU2NzcwZjg5MDVjMjFhNjM3ZTIyMDQKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTWFyIDEg
MTU6Mzk6MjEgMjAxMSArMDMwMAoKICAgIEZpeCBzbG93IERPTSBzZWFyY2gKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggODQwMWJjMy4uM2RmZWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAz
LTAxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0
cmVtZWx5IHNsb3cgRE9NIHNlYXJjaCBpbiBHTWFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU0NTYKKworICAgICAgICBUaGUgc29sdXRpb24gY29t
cHJpc2VzIHRocmVlIG1ham9yIHBhcnRzOgorICAgICAgICAtIGF2b2lkIG11bHRpcGxlIGludm9j
YXRpb25zIG9mIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHMoKSwgb25lIHBlciBlYWNoIG5vZGVJZHMg
Y2h1bmsuCisgICAgICAgIC0gY2FjaGUgaGlnaGxpZ2h0ZWQgbm9kZSdzIGlubmVySFRNTCBzbyB0
aGF0IG5vIGV4dHJhIF9ub2RlVGl0bGVJbmZvKCkgY2FsbHMgd2lsbCBiZSBuZWVkZWQuCisgICAg
ICAgIC0gcmVwbGFjZSBoYW5kLXdyaXR0ZW4gVGV4dCBub2RlcyBpdGVyYXRpb24gd2l0aCBhIHNu
YXBzaG90LWJhc2VkICIuLy90ZXh0KCkiIFhQYXRoUmVzdWx0LgorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5hZGROb2Rlc1RvU2VhcmNoUmVzdWx0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuaGlnaGxpZ2h0
U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVu
dC5wcm90b3R5cGUudXBkYXRlVGl0bGUpOgorICAgICAgICAoKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAgICAgICAgKCk6CisKIDIwMTEtMDMtMDEgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCAzNmRiODFlLi5lZGE5MzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0y
MjQsNyArMjI0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQoMCwgdGhpcyk7
CiAKLSAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleDsKICAgICAgICAgdGhpcy5fc2Vh
cmNoUmVzdWx0cyA9IFtdOwogICAgICAgICBET01BZ2VudC5zZWFyY2hDYW5jZWxlZCgpOwogICAg
IH0sCkBAIC0yOTEsNiArMjkxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIW5vZGVJZHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIHZhciBvbGRTZWFyY2hSZXN1bHRJbmRleCA9IHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgbm9kZUlkID0gbm9kZUlkc1tpXTsKICAgICAgICAg
ICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChub2RlSWQpOwpA
QCAtMzAwLDcgKzMwMSwxMCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwogICAg
ICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKKworICAgICAgICAvLyBB
dm9pZCBpbnZvY2F0aW9ucyBvZiBoaWdobGlnaHRpbmcgZm9yIGV2ZXJ5IGNodW5rIG9mIG5vZGVJ
ZHMuCisgICAgICAgIGlmIChvbGRTZWFyY2hSZXN1bHRJbmRleCAhPT0gdGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4KQorICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q3VycmVudFNlYXJj
aFJlc3VsdCgpOwogICAgICAgICB0aGlzLl91cGRhdGVNYXRjaGVzQ291bnRTb29uKCk7CiAgICAg
fSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IDkxYWZjZTQuLmM1ZjY4YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKQEAgLTMyOSw4ICszMjksMTEgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgPT09IHNl
YXJjaFF1ZXJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmIChzZWFyY2hRdWVy
eSkKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hIaWdobGlnaHRlZEhUTUw7IC8vIEEg
bmV3IHNlYXJjaCBxdWVyeSAobm90IGNsZWFyLXRoZS1jdXJyZW50LWhpZ2hsaWdodGluZykuCisK
ICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBzZWFyY2hRdWVyeTsKLSAgICAgICAgdGhpcy51
cGRhdGVUaXRsZSgpOworICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKHRydWUpOwogICAgIH0sCiAK
ICAgICBnZXQgaG92ZXJlZCgpCkBAIC0xMTk4LDE0ICsxMjAxLDE4IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICh0YWdzLmxl
bmd0aCA9PT0gMSA/IG51bGwgOiB0YWdzW3RhZ3MubGVuZ3RoLTFdKTsKICAgICB9LAogCi0gICAg
dXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVUaXRsZTogZnVuY3Rpb24ob25seVNl
YXJjaFF1ZXJ5Q2hhbmdlZCkKICAgICB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBlZGl0aW5nLCBy
ZXR1cm4gZWFybHkgdG8gcHJldmVudCBjYW5jZWxpbmcgdGhlIGVkaXQuCiAgICAgICAgIC8vIEFm
dGVyIGVkaXRpbmcgaXMgY29tbWl0dGVkIHVwZGF0ZVRpdGxlIHdpbGwgYmUgY2FsbGVkLgogICAg
ICAgICBpZiAodGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0
aGlzLnRpdGxlSFRNTCA9ICI8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPiIgKyB0aGlzLl9ub2Rl
VGl0bGVJbmZvKFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKS50aXRsZUhUTUwgKyAiPC9zcGFuPiI7
CisgICAgICAgIGlmICghb25seVNlYXJjaFF1ZXJ5Q2hhbmdlZCB8fCAhdGhpcy5fbm9ybWFsSFRN
TCkKKyAgICAgICAgICAgIHRoaXMuX25vcm1hbEhUTUwgPSAiPHNwYW4gY2xhc3M9XCJoaWdobGln
aHRcIj4iICsgdGhpcy5fbm9kZVRpdGxlSW5mbyhXZWJJbnNwZWN0b3IubGlua2lmeVVSTCkudGl0
bGVIVE1MICsgIjwvc3Bhbj4iOworCisgICAgICAgIHRoaXMudGl0bGVIVE1MID0gdGhpcy5fbm9y
bWFsSFRNTDsKKwogICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50OwogICAgICAg
ICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLl9wcmV2ZW50Rm9sbG93aW5n
TGlua3NPbkRvdWJsZUNsaWNrKCk7CkBAIC0xNDIzLDYgKzE0MzAsMTEgQEAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl9zZWFyY2hRdWVyeSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMu
X3NlYXJjaEhpZ2hsaWdodGVkSFRNTCkgeworICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1l
bnQuaW5uZXJIVE1MID0gdGhpcy5fc2VhcmNoSGlnaGxpZ2h0ZWRIVE1MOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgdmFyIHRleHQgPSB0aGlzLmxpc3RJdGVtRWxl
bWVudC50ZXh0Q29udGVudDsKICAgICAgICAgdmFyIHJlZ2V4T2JqZWN0ID0gY3JlYXRlU2VhcmNo
UmVnZXgodGhpcy5fc2VhcmNoUXVlcnkpOwogCkBAIC0xNDM0LDYgKzE0NDYsNyBAQCBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0ZXh0
ID0gdGV4dC5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyAxKTsKICAgICAgICAgICAgIG1hdGNoID0g
cmVnZXhPYmplY3QuZXhlYyh0ZXh0KTsKICAgICAgICAgfQorICAgICAgICB0aGlzLl9zZWFyY2hI
aWdobGlnaHRlZEhUTUwgPSB0aGlzLmxpc3RJdGVtRWxlbWVudC5pbm5lckhUTUw7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxp
dGllcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpz
CmluZGV4IDY0NjcwZTEuLjAwNjRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCkBAIC0xMDIwLDYgKzEwMjAsMzYgQEAgZnVuY3Rpb24g
aXNFbnRlcktleShldmVudCkgewogICAgIHJldHVybiBldmVudC5rZXlDb2RlICE9PSAyMjkgJiYg
ZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkVudGVyIjsKIH0KIAorZnVuY3Rpb24gc2V0QXRUZXh0
T2Zmc2V0KHRleHROb2RlSXRlcmF0b3IsIHJlbGF0aXZlT2Zmc2V0KQoreworICAgIHZhciBvZmZz
ZXQgPSByZWxhdGl2ZU9mZnNldDsKKyAgICB2YXIgbm9kZTsKKyAgICB2YXIgbGVuZ3RoOworICAg
IHdoaWxlIChub2RlID0gdGV4dE5vZGVJdGVyYXRvci5pdGVyYXRlTmV4dCgpKSB7CisgICAgICAg
IGxlbmd0aCA9IG5vZGUubm9kZVZhbHVlLmxlbmd0aAorICAgICAgICBpZiAob2Zmc2V0IDw9IGxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybiB7IGNvbnRhaW5lcjogbm9kZSwgb2Zmc2V0OiBvZmZz
ZXQgfTsKKyAgICAgICAgb2Zmc2V0IC09IGxlbmd0aDsKKyAgICB9CisKKyAgICByZXR1cm4gbnVs
bDsKK30KKworT3JkZXJlZE5vZGVTbmFwc2hvdEl0ZXJhdG9yID0gZnVuY3Rpb24oc25hcHNob3Qp
Cit7CisgICAgdGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdDsKKyAgICB0aGlzLl9jdXJyZW50SW5k
ZXggPSAwOworICAgIHRoaXMuX3NpemUgPSBzbmFwc2hvdC5zbmFwc2hvdExlbmd0aDsKK30KKwor
T3JkZXJlZE5vZGVTbmFwc2hvdEl0ZXJhdG9yLnByb3RvdHlwZSA9IHsKKyAgICBpdGVyYXRlTmV4
dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRJbmRleCA+PSB0
aGlzLl9zaXplKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiB0aGlz
Ll9zbmFwc2hvdC5zbmFwc2hvdEl0ZW0odGhpcy5fY3VycmVudEluZGV4KyspOworICAgIH0KK30K
IAogZnVuY3Rpb24gaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KGVsZW1lbnQsIG9mZnNldCwgbGVuZ3Ro
KQogewpAQCAtMTAyOSw3ICsxMDU5LDggQEAgZnVuY3Rpb24gaGlnaGxpZ2h0U2VhcmNoUmVzdWx0
KGVsZW1lbnQsIG9mZnNldCwgbGVuZ3RoKQogICAgIGhpZ2hsaWdodE5vZGUuY2xhc3NOYW1lID0g
IndlYmtpdC1zZWFyY2gtcmVzdWx0IjsKICAgICBoaWdobGlnaHROb2RlLnRleHRDb250ZW50ID0g
bGluZVRleHQuc3Vic3RyaW5nKG9mZnNldCwgZW5kT2Zmc2V0KTsKIAotICAgIHZhciBib3VuZGFy
eSA9IGVsZW1lbnQucmFuZ2VCb3VuZGFyeUZvck9mZnNldChvZmZzZXQpOworICAgIHZhciB0ZXh0
Tm9kZUl0ZXJhdG9yID0gbmV3IE9yZGVyZWROb2RlU25hcHNob3RJdGVyYXRvcihkb2N1bWVudC5l
dmFsdWF0ZSgiLi8vdGV4dCgpIiwgZWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuT1JERVJFRF9O
T0RFX1NOQVBTSE9UX1RZUEUsIG51bGwpKTsKKyAgICB2YXIgYm91bmRhcnkgPSBzZXRBdFRleHRP
ZmZzZXQodGV4dE5vZGVJdGVyYXRvciwgb2Zmc2V0KSB8fCB7IGNvbnRhaW5lcjogZWxlbWVudCwg
b2Zmc2V0OiAwIH07CiAgICAgdmFyIHRleHROb2RlID0gYm91bmRhcnkuY29udGFpbmVyOwogICAg
IHZhciB0ZXh0ID0gdGV4dE5vZGUudGV4dENvbnRlbnQ7CiAKQEAgLTEwNDcsNyArMTA3OCw3IEBA
IGZ1bmN0aW9uIGhpZ2hsaWdodFNlYXJjaFJlc3VsdChlbGVtZW50LCBvZmZzZXQsIGxlbmd0aCkK
IAogICAgIGxlbmd0aCAtPSB0ZXh0Lmxlbmd0aCAtIGJvdW5kYXJ5Lm9mZnNldDsKICAgICB0ZXh0
Tm9kZS50ZXh0Q29udGVudCA9IHRleHQuc3Vic3RyaW5nKDAsIGJvdW5kYXJ5Lm9mZnNldCk7Ci0g
ICAgdGV4dE5vZGUgPSB0ZXh0Tm9kZS50cmF2ZXJzZU5leHRUZXh0Tm9kZShlbGVtZW50KTsKKyAg
ICB0ZXh0Tm9kZSA9IHRleHROb2RlSXRlcmF0b3IuaXRlcmF0ZU5leHQoKTsKIAogICAgIHdoaWxl
ICh0ZXh0Tm9kZSkgewogICAgICAgICB2YXIgdGV4dCA9IHRleHROb2RlLnRleHRDb250ZW50OwpA
QCAtMTA1OCw3ICsxMDg5LDcgQEAgZnVuY3Rpb24gaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KGVsZW1l
bnQsIG9mZnNldCwgbGVuZ3RoKQogCiAgICAgICAgIGxlbmd0aCAtPSB0ZXh0Lmxlbmd0aDsKICAg
ICAgICAgdGV4dE5vZGUudGV4dENvbnRlbnQgPSAiIjsKLSAgICAgICAgdGV4dE5vZGUgPSB0ZXh0
Tm9kZS50cmF2ZXJzZU5leHRUZXh0Tm9kZShlbGVtZW50KTsKKyAgICAgICAgdGV4dE5vZGUgPSB0
ZXh0Tm9kZUl0ZXJhdG9yLml0ZXJhdGVOZXh0KCk7CiAgICAgfQogCiAgICAgcGFyZW50RWxlbWVu
dC5pbnNlcnRCZWZvcmUoaGlnaGxpZ2h0Tm9kZSwgYW5jaG9yRWxlbWVudCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84220</attachid>
            <date>2011-03-01 05:58:48 -0800</date>
            <delta_ts>2011-03-01 08:01:08 -0800</delta_ts>
            <desc>[PATCH] Avoid storing refs to normalHTML in nodes not participating in search highlighting</desc>
            <filename>slowsearch.patch</filename>
            <type>text/plain</type>
            <size>7715</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGUzYmJhZjhiYjg4OTQ3YzRjN2FjM2JhNDY4MmQ2YjliODE0NTcxNTUKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTWFyIDEg
MTU6Mzk6MjEgMjAxMSArMDMwMAoKICAgIEZpeCBzbG93IERPTSBzZWFyY2gKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggODQwMWJjMy4uM2RmZWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAz
LTAxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0
cmVtZWx5IHNsb3cgRE9NIHNlYXJjaCBpbiBHTWFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU0NTYKKworICAgICAgICBUaGUgc29sdXRpb24gY29t
cHJpc2VzIHRocmVlIG1ham9yIHBhcnRzOgorICAgICAgICAtIGF2b2lkIG11bHRpcGxlIGludm9j
YXRpb25zIG9mIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHMoKSwgb25lIHBlciBlYWNoIG5vZGVJZHMg
Y2h1bmsuCisgICAgICAgIC0gY2FjaGUgaGlnaGxpZ2h0ZWQgbm9kZSdzIGlubmVySFRNTCBzbyB0
aGF0IG5vIGV4dHJhIF9ub2RlVGl0bGVJbmZvKCkgY2FsbHMgd2lsbCBiZSBuZWVkZWQuCisgICAg
ICAgIC0gcmVwbGFjZSBoYW5kLXdyaXR0ZW4gVGV4dCBub2RlcyBpdGVyYXRpb24gd2l0aCBhIHNu
YXBzaG90LWJhc2VkICIuLy90ZXh0KCkiIFhQYXRoUmVzdWx0LgorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5hZGROb2Rlc1RvU2VhcmNoUmVzdWx0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuaGlnaGxpZ2h0
U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVu
dC5wcm90b3R5cGUudXBkYXRlVGl0bGUpOgorICAgICAgICAoKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAgICAgICAgKCk6CisKIDIwMTEtMDMtMDEgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCAzNmRiODFlLi5lZGE5MzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0y
MjQsNyArMjI0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQoMCwgdGhpcyk7
CiAKLSAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleDsKICAgICAgICAgdGhpcy5fc2Vh
cmNoUmVzdWx0cyA9IFtdOwogICAgICAgICBET01BZ2VudC5zZWFyY2hDYW5jZWxlZCgpOwogICAg
IH0sCkBAIC0yOTEsNiArMjkxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIW5vZGVJZHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIHZhciBvbGRTZWFyY2hSZXN1bHRJbmRleCA9IHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgbm9kZUlkID0gbm9kZUlkc1tpXTsKICAgICAgICAg
ICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChub2RlSWQpOwpA
QCAtMzAwLDcgKzMwMSwxMCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwogICAg
ICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKKworICAgICAgICAvLyBB
dm9pZCBpbnZvY2F0aW9ucyBvZiBoaWdobGlnaHRpbmcgZm9yIGV2ZXJ5IGNodW5rIG9mIG5vZGVJ
ZHMuCisgICAgICAgIGlmIChvbGRTZWFyY2hSZXN1bHRJbmRleCAhPT0gdGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4KQorICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q3VycmVudFNlYXJj
aFJlc3VsdCgpOwogICAgICAgICB0aGlzLl91cGRhdGVNYXRjaGVzQ291bnRTb29uKCk7CiAgICAg
fSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IDkxYWZjZTQuLjY5YzA0MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKQEAgLTMyOSw4ICszMjksMTEgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgPT09IHNl
YXJjaFF1ZXJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmIChzZWFyY2hRdWVy
eSkKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hIaWdobGlnaHRlZEhUTUw7IC8vIEEg
bmV3IHNlYXJjaCBxdWVyeSAobm90IGNsZWFyLXRoZS1jdXJyZW50LWhpZ2hsaWdodGluZykuCisK
ICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBzZWFyY2hRdWVyeTsKLSAgICAgICAgdGhpcy51
cGRhdGVUaXRsZSgpOworICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKHRydWUpOwogICAgIH0sCiAK
ICAgICBnZXQgaG92ZXJlZCgpCkBAIC0xMTk4LDE0ICsxMjAxLDIwIEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICh0YWdzLmxl
bmd0aCA9PT0gMSA/IG51bGwgOiB0YWdzW3RhZ3MubGVuZ3RoLTFdKTsKICAgICB9LAogCi0gICAg
dXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVUaXRsZTogZnVuY3Rpb24ob25seVNl
YXJjaFF1ZXJ5Q2hhbmdlZCkKICAgICB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBlZGl0aW5nLCBy
ZXR1cm4gZWFybHkgdG8gcHJldmVudCBjYW5jZWxpbmcgdGhlIGVkaXQuCiAgICAgICAgIC8vIEFm
dGVyIGVkaXRpbmcgaXMgY29tbWl0dGVkIHVwZGF0ZVRpdGxlIHdpbGwgYmUgY2FsbGVkLgogICAg
ICAgICBpZiAodGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0
aGlzLnRpdGxlSFRNTCA9ICI8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPiIgKyB0aGlzLl9ub2Rl
VGl0bGVJbmZvKFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKS50aXRsZUhUTUwgKyAiPC9zcGFuPiI7
CisgICAgICAgIGlmIChvbmx5U2VhcmNoUXVlcnlDaGFuZ2VkICYmIHRoaXMuX25vcm1hbEhUTUwp
CisgICAgICAgICAgICB0aGlzLnRpdGxlSFRNTCA9IHRoaXMuX25vcm1hbEhUTUw7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX25vcm1hbEhUTUw7CisgICAgICAgICAg
ICB0aGlzLnRpdGxlSFRNTCA9ICI8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPiIgKyB0aGlzLl9u
b2RlVGl0bGVJbmZvKFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKS50aXRsZUhUTUwgKyAiPC9zcGFu
PiI7CisgICAgICAgIH0KKwogICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50Owog
ICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLl9wcmV2ZW50Rm9s
bG93aW5nTGlua3NPbkRvdWJsZUNsaWNrKCk7CkBAIC0xNDIzLDYgKzE0MzIsMTQgQEAgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9zZWFyY2hRdWVyeSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KHRoaXMuX3NlYXJjaEhpZ2hsaWdodGVkSFRNTCkgeworICAgICAgICAgICAgdGhpcy5saXN0SXRl
bUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5fc2VhcmNoSGlnaGxpZ2h0ZWRIVE1MOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLl9ub3JtYWxIVE1M
KQorICAgICAgICAgICAgdGhpcy5fbm9ybWFsSFRNTCA9IHRoaXMudGl0bGVIVE1MOworCiAgICAg
ICAgIHZhciB0ZXh0ID0gdGhpcy5saXN0SXRlbUVsZW1lbnQudGV4dENvbnRlbnQ7CiAgICAgICAg
IHZhciByZWdleE9iamVjdCA9IGNyZWF0ZVNlYXJjaFJlZ2V4KHRoaXMuX3NlYXJjaFF1ZXJ5KTsK
IApAQCAtMTQzNCw2ICsxNDUxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKG1hdGNoLmlu
ZGV4ICsgMSk7CiAgICAgICAgICAgICBtYXRjaCA9IHJlZ2V4T2JqZWN0LmV4ZWModGV4dCk7CiAg
ICAgICAgIH0KKyAgICAgICAgdGhpcy5fc2VhcmNoSGlnaGxpZ2h0ZWRIVE1MID0gdGhpcy5saXN0
SXRlbUVsZW1lbnQuaW5uZXJIVE1MOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCA2NDY3MGUxLi4wMDY0ZDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpA
QCAtMTAyMCw2ICsxMDIwLDM2IEBAIGZ1bmN0aW9uIGlzRW50ZXJLZXkoZXZlbnQpIHsKICAgICBy
ZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMjI5ICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJF
bnRlciI7CiB9CiAKK2Z1bmN0aW9uIHNldEF0VGV4dE9mZnNldCh0ZXh0Tm9kZUl0ZXJhdG9yLCBy
ZWxhdGl2ZU9mZnNldCkKK3sKKyAgICB2YXIgb2Zmc2V0ID0gcmVsYXRpdmVPZmZzZXQ7CisgICAg
dmFyIG5vZGU7CisgICAgdmFyIGxlbmd0aDsKKyAgICB3aGlsZSAobm9kZSA9IHRleHROb2RlSXRl
cmF0b3IuaXRlcmF0ZU5leHQoKSkgeworICAgICAgICBsZW5ndGggPSBub2RlLm5vZGVWYWx1ZS5s
ZW5ndGgKKyAgICAgICAgaWYgKG9mZnNldCA8PSBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
eyBjb250YWluZXI6IG5vZGUsIG9mZnNldDogb2Zmc2V0IH07CisgICAgICAgIG9mZnNldCAtPSBs
ZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7Cit9CisKK09yZGVyZWROb2RlU25hcHNo
b3RJdGVyYXRvciA9IGZ1bmN0aW9uKHNuYXBzaG90KQoreworICAgIHRoaXMuX3NuYXBzaG90ID0g
c25hcHNob3Q7CisgICAgdGhpcy5fY3VycmVudEluZGV4ID0gMDsKKyAgICB0aGlzLl9zaXplID0g
c25hcHNob3Quc25hcHNob3RMZW5ndGg7Cit9CisKK09yZGVyZWROb2RlU25hcHNob3RJdGVyYXRv
ci5wcm90b3R5cGUgPSB7CisgICAgaXRlcmF0ZU5leHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPj0gdGhpcy5fc2l6ZSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3Quc25hcHNob3RJdGVtKHRo
aXMuX2N1cnJlbnRJbmRleCsrKTsKKyAgICB9Cit9CiAKIGZ1bmN0aW9uIGhpZ2hsaWdodFNlYXJj
aFJlc3VsdChlbGVtZW50LCBvZmZzZXQsIGxlbmd0aCkKIHsKQEAgLTEwMjksNyArMTA1OSw4IEBA
IGZ1bmN0aW9uIGhpZ2hsaWdodFNlYXJjaFJlc3VsdChlbGVtZW50LCBvZmZzZXQsIGxlbmd0aCkK
ICAgICBoaWdobGlnaHROb2RlLmNsYXNzTmFtZSA9ICJ3ZWJraXQtc2VhcmNoLXJlc3VsdCI7CiAg
ICAgaGlnaGxpZ2h0Tm9kZS50ZXh0Q29udGVudCA9IGxpbmVUZXh0LnN1YnN0cmluZyhvZmZzZXQs
IGVuZE9mZnNldCk7CiAKLSAgICB2YXIgYm91bmRhcnkgPSBlbGVtZW50LnJhbmdlQm91bmRhcnlG
b3JPZmZzZXQob2Zmc2V0KTsKKyAgICB2YXIgdGV4dE5vZGVJdGVyYXRvciA9IG5ldyBPcmRlcmVk
Tm9kZVNuYXBzaG90SXRlcmF0b3IoZG9jdW1lbnQuZXZhbHVhdGUoIi4vL3RleHQoKSIsIGVsZW1l
bnQsIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKSk7
CisgICAgdmFyIGJvdW5kYXJ5ID0gc2V0QXRUZXh0T2Zmc2V0KHRleHROb2RlSXRlcmF0b3IsIG9m
ZnNldCkgfHwgeyBjb250YWluZXI6IGVsZW1lbnQsIG9mZnNldDogMCB9OwogICAgIHZhciB0ZXh0
Tm9kZSA9IGJvdW5kYXJ5LmNvbnRhaW5lcjsKICAgICB2YXIgdGV4dCA9IHRleHROb2RlLnRleHRD
b250ZW50OwogCkBAIC0xMDQ3LDcgKzEwNzgsNyBAQCBmdW5jdGlvbiBoaWdobGlnaHRTZWFyY2hS
ZXN1bHQoZWxlbWVudCwgb2Zmc2V0LCBsZW5ndGgpCiAKICAgICBsZW5ndGggLT0gdGV4dC5sZW5n
dGggLSBib3VuZGFyeS5vZmZzZXQ7CiAgICAgdGV4dE5vZGUudGV4dENvbnRlbnQgPSB0ZXh0LnN1
YnN0cmluZygwLCBib3VuZGFyeS5vZmZzZXQpOwotICAgIHRleHROb2RlID0gdGV4dE5vZGUudHJh
dmVyc2VOZXh0VGV4dE5vZGUoZWxlbWVudCk7CisgICAgdGV4dE5vZGUgPSB0ZXh0Tm9kZUl0ZXJh
dG9yLml0ZXJhdGVOZXh0KCk7CiAKICAgICB3aGlsZSAodGV4dE5vZGUpIHsKICAgICAgICAgdmFy
IHRleHQgPSB0ZXh0Tm9kZS50ZXh0Q29udGVudDsKQEAgLTEwNTgsNyArMTA4OSw3IEBAIGZ1bmN0
aW9uIGhpZ2hsaWdodFNlYXJjaFJlc3VsdChlbGVtZW50LCBvZmZzZXQsIGxlbmd0aCkKIAogICAg
ICAgICBsZW5ndGggLT0gdGV4dC5sZW5ndGg7CiAgICAgICAgIHRleHROb2RlLnRleHRDb250ZW50
ID0gIiI7Ci0gICAgICAgIHRleHROb2RlID0gdGV4dE5vZGUudHJhdmVyc2VOZXh0VGV4dE5vZGUo
ZWxlbWVudCk7CisgICAgICAgIHRleHROb2RlID0gdGV4dE5vZGVJdGVyYXRvci5pdGVyYXRlTmV4
dCgpOwogICAgIH0KIAogICAgIHBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhpZ2hsaWdodE5v
ZGUsIGFuY2hvckVsZW1lbnQpOwo=
</data>
<flag name="review"
          id="76187"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84231</attachid>
            <date>2011-03-01 08:01:08 -0800</date>
            <delta_ts>2011-03-01 08:31:02 -0800</delta_ts>
            <desc>[PATCH] Comments addressed, please re-review</desc>
            <filename>slowsearch.patch</filename>
            <type>text/plain</type>
            <size>11047</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDY0NGYyMDk3YWVmNDI1MjM3MWE0YWQzYmYzMGQxNjY0MGM3NzMyYTkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTWFyIDEg
MTU6Mzk6MjEgMjAxMSArMDMwMAoKICAgIEZpeCBzbG93IERPTSBzZWFyY2gKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggODQwMWJjMy4uM2RmZWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAz
LTAxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0
cmVtZWx5IHNsb3cgRE9NIHNlYXJjaCBpbiBHTWFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU0NTYKKworICAgICAgICBUaGUgc29sdXRpb24gY29t
cHJpc2VzIHRocmVlIG1ham9yIHBhcnRzOgorICAgICAgICAtIGF2b2lkIG11bHRpcGxlIGludm9j
YXRpb25zIG9mIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHMoKSwgb25lIHBlciBlYWNoIG5vZGVJZHMg
Y2h1bmsuCisgICAgICAgIC0gY2FjaGUgaGlnaGxpZ2h0ZWQgbm9kZSdzIGlubmVySFRNTCBzbyB0
aGF0IG5vIGV4dHJhIF9ub2RlVGl0bGVJbmZvKCkgY2FsbHMgd2lsbCBiZSBuZWVkZWQuCisgICAg
ICAgIC0gcmVwbGFjZSBoYW5kLXdyaXR0ZW4gVGV4dCBub2RlcyBpdGVyYXRpb24gd2l0aCBhIHNu
YXBzaG90LWJhc2VkICIuLy90ZXh0KCkiIFhQYXRoUmVzdWx0LgorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnNlYXJjaENhbmNlbGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5hZGROb2Rlc1RvU2VhcmNoUmVzdWx0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuaGlnaGxpZ2h0
U2VhcmNoUmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVu
dC5wcm90b3R5cGUudXBkYXRlVGl0bGUpOgorICAgICAgICAoKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAgICAgICAgKCk6CisKIDIwMTEtMDMtMDEgIFN0
ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCAzNmRiODFlLi5lZGE5MzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0y
MjQsNyArMjI0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQoMCwgdGhpcyk7
CiAKLSAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKKyAgICAgICAg
ZGVsZXRlIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleDsKICAgICAgICAgdGhpcy5fc2Vh
cmNoUmVzdWx0cyA9IFtdOwogICAgICAgICBET01BZ2VudC5zZWFyY2hDYW5jZWxlZCgpOwogICAg
IH0sCkBAIC0yOTEsNiArMjkxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoIW5vZGVJZHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIHZhciBvbGRTZWFyY2hSZXN1bHRJbmRleCA9IHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgbm9kZUlkID0gbm9kZUlkc1tpXTsKICAgICAgICAg
ICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChub2RlSWQpOwpA
QCAtMzAwLDcgKzMwMSwxMCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwogICAg
ICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKG5vZGUpOwogICAgICAgICB9Ci0gICAg
ICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKKworICAgICAgICAvLyBB
dm9pZCBpbnZvY2F0aW9ucyBvZiBoaWdobGlnaHRpbmcgZm9yIGV2ZXJ5IGNodW5rIG9mIG5vZGVJ
ZHMuCisgICAgICAgIGlmIChvbGRTZWFyY2hSZXN1bHRJbmRleCAhPT0gdGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4KQorICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q3VycmVudFNlYXJj
aFJlc3VsdCgpOwogICAgICAgICB0aGlzLl91cGRhdGVNYXRjaGVzQ291bnRTb29uKCk7CiAgICAg
fSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IDkxYWZjZTQuLmYwMWUxODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKQEAgLTMyOSw4ICszMjksMTEgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgPT09IHNl
YXJjaFF1ZXJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmIChzZWFyY2hRdWVy
eSkKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hIaWdobGlnaHRlZEhUTUw7IC8vIEEg
bmV3IHNlYXJjaCBxdWVyeSAobm90IGNsZWFyLXRoZS1jdXJyZW50LWhpZ2hsaWdodGluZykuCisK
ICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBzZWFyY2hRdWVyeTsKLSAgICAgICAgdGhpcy51
cGRhdGVUaXRsZSgpOworICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlKHRydWUpOwogICAgIH0sCiAK
ICAgICBnZXQgaG92ZXJlZCgpCkBAIC0xMTk4LDE0ICsxMjAxLDIwIEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICh0YWdzLmxl
bmd0aCA9PT0gMSA/IG51bGwgOiB0YWdzW3RhZ3MubGVuZ3RoLTFdKTsKICAgICB9LAogCi0gICAg
dXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVUaXRsZTogZnVuY3Rpb24ob25seVNl
YXJjaFF1ZXJ5Q2hhbmdlZCkKICAgICB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBlZGl0aW5nLCBy
ZXR1cm4gZWFybHkgdG8gcHJldmVudCBjYW5jZWxpbmcgdGhlIGVkaXQuCiAgICAgICAgIC8vIEFm
dGVyIGVkaXRpbmcgaXMgY29tbWl0dGVkIHVwZGF0ZVRpdGxlIHdpbGwgYmUgY2FsbGVkLgogICAg
ICAgICBpZiAodGhpcy5fZWRpdGluZykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0
aGlzLnRpdGxlSFRNTCA9ICI8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPiIgKyB0aGlzLl9ub2Rl
VGl0bGVJbmZvKFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKS50aXRsZUhUTUwgKyAiPC9zcGFuPiI7
CisgICAgICAgIGlmIChvbmx5U2VhcmNoUXVlcnlDaGFuZ2VkICYmIHRoaXMuX25vcm1hbEhUTUwp
CisgICAgICAgICAgICB0aGlzLnRpdGxlSFRNTCA9IHRoaXMuX25vcm1hbEhUTUw7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX25vcm1hbEhUTUw7CisgICAgICAgICAg
ICB0aGlzLnRpdGxlSFRNTCA9ICI8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPiIgKyB0aGlzLl9u
b2RlVGl0bGVJbmZvKFdlYkluc3BlY3Rvci5saW5raWZ5VVJMKS50aXRsZUhUTUwgKyAiPC9zcGFu
PiI7CisgICAgICAgIH0KKwogICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3Rpb25FbGVtZW50Owog
ICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLl9wcmV2ZW50Rm9s
bG93aW5nTGlua3NPbkRvdWJsZUNsaWNrKCk7CkBAIC0xNDIzLDE3ICsxNDMyLDI2IEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fc2VhcmNoUXVlcnkpCiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
ICh0aGlzLl9zZWFyY2hIaWdobGlnaHRlZEhUTUwpIHsKKyAgICAgICAgICAgIHRoaXMubGlzdEl0
ZW1FbGVtZW50LmlubmVySFRNTCA9IHRoaXMuX3NlYXJjaEhpZ2hsaWdodGVkSFRNTDsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhpcy5fbm9ybWFsSFRN
TCkKKyAgICAgICAgICAgIHRoaXMuX25vcm1hbEhUTUwgPSB0aGlzLnRpdGxlSFRNTDsKKwogICAg
ICAgICB2YXIgdGV4dCA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LnRleHRDb250ZW50OwotICAgICAg
ICB2YXIgcmVnZXhPYmplY3QgPSBjcmVhdGVTZWFyY2hSZWdleCh0aGlzLl9zZWFyY2hRdWVyeSk7
CisgICAgICAgIHZhciByZWdleE9iamVjdCA9IGNyZWF0ZVNlYXJjaFJlZ2V4KHRoaXMuX3NlYXJj
aFF1ZXJ5LCAiZyIpOwogCiAgICAgICAgIHZhciBvZmZzZXQgPSAwOwogICAgICAgICB2YXIgbWF0
Y2ggPSByZWdleE9iamVjdC5leGVjKHRleHQpOworICAgICAgICB2YXIgbWF0Y2hSYW5nZXMgPSBb
XTsKICAgICAgICAgd2hpbGUgKG1hdGNoKSB7Ci0gICAgICAgICAgICBoaWdobGlnaHRTZWFyY2hS
ZXN1bHQodGhpcy5saXN0SXRlbUVsZW1lbnQsIG9mZnNldCArIG1hdGNoLmluZGV4LCBtYXRjaFsw
XS5sZW5ndGgpOwotICAgICAgICAgICAgb2Zmc2V0ICs9IG1hdGNoLmluZGV4ICsgMTsKLSAgICAg
ICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZyhtYXRjaC5pbmRleCArIDEpOworICAgICAgICAg
ICAgbWF0Y2hSYW5nZXMucHVzaCh7IG9mZnNldDogbWF0Y2guaW5kZXgsIGxlbmd0aDogbWF0Y2hb
MF0ubGVuZ3RoIH0pOwogICAgICAgICAgICAgbWF0Y2ggPSByZWdleE9iamVjdC5leGVjKHRleHQp
OwogICAgICAgICB9CisgICAgICAgIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHModGhpcy5saXN0SXRl
bUVsZW1lbnQsIG1hdGNoUmFuZ2VzKTsKKyAgICAgICAgdGhpcy5fc2VhcmNoSGlnaGxpZ2h0ZWRI
VE1MID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuaW5uZXJIVE1MOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCA2NDY3
MGUxLi4xMzkyN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcwpAQCAtMTAyMCw1MiArMTAyMCw5MiBAQCBmdW5jdGlvbiBpc0VudGVyS2V5
KGV2ZW50KSB7CiAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGUgIT09IDIyOSAmJiBldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiRW50ZXIiOwogfQogCi0KIGZ1bmN0aW9uIGhpZ2hsaWdodFNlYXJjaFJl
c3VsdChlbGVtZW50LCBvZmZzZXQsIGxlbmd0aCkKIHsKKyAgICB2YXIgcmVzdWx0ID0gaGlnaGxp
Z2h0U2VhcmNoUmVzdWx0cyhlbGVtZW50LCBbe29mZnNldDogb2Zmc2V0LCBsZW5ndGg6IGxlbmd0
aCB9XSk7CisgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPyByZXN1bHRbMF0gOiBudWxsOworfQor
CitmdW5jdGlvbiBoaWdobGlnaHRTZWFyY2hSZXN1bHRzKGVsZW1lbnQsIHJlc3VsdFJhbmdlcykK
K3sKKyAgICB2YXIgaGlnaGxpZ2h0Tm9kZXMgPSBbXTsKICAgICB2YXIgbGluZVRleHQgPSBlbGVt
ZW50LnRleHRDb250ZW50OwotICAgIHZhciBlbmRPZmZzZXQgPSBvZmZzZXQgKyBsZW5ndGg7Ci0g
ICAgdmFyIGhpZ2hsaWdodE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0g
ICAgaGlnaGxpZ2h0Tm9kZS5jbGFzc05hbWUgPSAid2Via2l0LXNlYXJjaC1yZXN1bHQiOwotICAg
IGhpZ2hsaWdodE5vZGUudGV4dENvbnRlbnQgPSBsaW5lVGV4dC5zdWJzdHJpbmcob2Zmc2V0LCBl
bmRPZmZzZXQpOwotCi0gICAgdmFyIGJvdW5kYXJ5ID0gZWxlbWVudC5yYW5nZUJvdW5kYXJ5Rm9y
T2Zmc2V0KG9mZnNldCk7Ci0gICAgdmFyIHRleHROb2RlID0gYm91bmRhcnkuY29udGFpbmVyOwot
ICAgIHZhciB0ZXh0ID0gdGV4dE5vZGUudGV4dENvbnRlbnQ7Ci0KLSAgICBpZiAoYm91bmRhcnku
b2Zmc2V0ICsgbGVuZ3RoIDwgdGV4dC5sZW5ndGgpIHsKLSAgICAgICAgLy8gU2VsZWN0aW9uIGJl
bG9uZyB0byBhIHNpbmdsZSBzcGxpdCBtb2RlLgotICAgICAgICB0ZXh0Tm9kZS50ZXh0Q29udGVu
dCA9IHRleHQuc3Vic3RyaW5nKGJvdW5kYXJ5Lm9mZnNldCArIGxlbmd0aCk7Ci0gICAgICAgIHRl
eHROb2RlLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhpZ2hsaWdodE5vZGUsIHRleHROb2Rl
KTsKLSAgICAgICAgdmFyIHByZWZpeE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0
LnN1YnN0cmluZygwLCBib3VuZGFyeS5vZmZzZXQpKTsKLSAgICAgICAgdGV4dE5vZGUucGFyZW50
RWxlbWVudC5pbnNlcnRCZWZvcmUocHJlZml4Tm9kZSwgaGlnaGxpZ2h0Tm9kZSk7Ci0gICAgICAg
IHJldHVybiBoaWdobGlnaHROb2RlOwotICAgIH0KKyAgICB2YXIgdGV4dE5vZGVTbmFwc2hvdCA9
IGRvY3VtZW50LmV2YWx1YXRlKCIuLy90ZXh0KCkiLCBlbGVtZW50LCBudWxsLCBYUGF0aFJlc3Vs
dC5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSwgbnVsbCk7CisgICAgdmFyIHByZXZpb3VzT2Zm
c2V0ID0gMDsKKworICAgIHZhciBzbmFwc2hvdExlbmd0aCA9IHRleHROb2RlU25hcHNob3Quc25h
cHNob3RMZW5ndGg7CisgICAgdmFyIHNuYXBzaG90Tm9kZU9mZnNldCA9IDA7CisgICAgdmFyIGN1
cnJlbnRTbmFwc2hvdEl0ZW0gPSAwOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRS
YW5nZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHJlc3VsdExlbmd0aCA9IHJlc3VsdFJh
bmdlc1tpXS5sZW5ndGg7CisgICAgICAgIHZhciBzdGFydE9mZnNldCA9IHJlc3VsdFJhbmdlc1tp
XS5vZmZzZXQ7CisgICAgICAgIHZhciBlbmRPZmZzZXQgPSBzdGFydE9mZnNldCArIHJlc3VsdExl
bmd0aDsKKyAgICAgICAgdmFyIGxlbmd0aCA9IHJlc3VsdExlbmd0aDsKKyAgICAgICAgdmFyIHRl
eHROb2RlOworICAgICAgICB2YXIgdGV4dE5vZGVPZmZzZXQ7CisgICAgICAgIHZhciBmb3VuZDsK
KworICAgICAgICB3aGlsZSAoY3VycmVudFNuYXBzaG90SXRlbSA8IHNuYXBzaG90TGVuZ3RoKSB7
CisgICAgICAgICAgICB0ZXh0Tm9kZSA9IHRleHROb2RlU25hcHNob3Quc25hcHNob3RJdGVtKGN1
cnJlbnRTbmFwc2hvdEl0ZW0rKyk7CisgICAgICAgICAgICB2YXIgdGV4dE5vZGVMZW5ndGggPSB0
ZXh0Tm9kZS5ub2RlVmFsdWUubGVuZ3RoOworICAgICAgICAgICAgaWYgKHNuYXBzaG90Tm9kZU9m
ZnNldCArIHRleHROb2RlTGVuZ3RoID49IHN0YXJ0T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAg
dGV4dE5vZGVPZmZzZXQgPSBzdGFydE9mZnNldCAtIHNuYXBzaG90Tm9kZU9mZnNldDsKKyAgICAg
ICAgICAgICAgICBzbmFwc2hvdE5vZGVPZmZzZXQgKz0gdGV4dE5vZGVMZW5ndGg7CisgICAgICAg
ICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgc25hcHNob3ROb2RlT2Zmc2V0ICs9IHRleHROb2RlTGVuZ3RoOwor
ICAgICAgICB9CiAKLSAgICB2YXIgcGFyZW50RWxlbWVudCA9IHRleHROb2RlLnBhcmVudEVsZW1l
bnQ7Ci0gICAgdmFyIGFuY2hvckVsZW1lbnQgPSB0ZXh0Tm9kZS5uZXh0U2libGluZzsKKyAgICAg
ICAgaWYgKCFmb3VuZCkgeworICAgICAgICAgICAgdGV4dE5vZGUgPSBlbGVtZW50OworICAgICAg
ICAgICAgdGV4dE5vZGVPZmZzZXQgPSAwOworICAgICAgICB9CiAKLSAgICBsZW5ndGggLT0gdGV4
dC5sZW5ndGggLSBib3VuZGFyeS5vZmZzZXQ7Ci0gICAgdGV4dE5vZGUudGV4dENvbnRlbnQgPSB0
ZXh0LnN1YnN0cmluZygwLCBib3VuZGFyeS5vZmZzZXQpOwotICAgIHRleHROb2RlID0gdGV4dE5v
ZGUudHJhdmVyc2VOZXh0VGV4dE5vZGUoZWxlbWVudCk7CisgICAgICAgIHZhciBoaWdobGlnaHRO
b2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBoaWdobGlnaHRO
b2RlLmNsYXNzTmFtZSA9ICJ3ZWJraXQtc2VhcmNoLXJlc3VsdCI7CisgICAgICAgIGhpZ2hsaWdo
dE5vZGUudGV4dENvbnRlbnQgPSBsaW5lVGV4dC5zdWJzdHJpbmcoc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCk7CiAKLSAgICB3aGlsZSAodGV4dE5vZGUpIHsKICAgICAgICAgdmFyIHRleHQgPSB0ZXh0
Tm9kZS50ZXh0Q29udGVudDsKLSAgICAgICAgaWYgKGxlbmd0aCA8IHRleHQubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICB0ZXh0Tm9kZS50ZXh0Q29udGVudCA9IHRleHQuc3Vic3RyaW5nKGxlbmd0aCk7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHRleHROb2RlT2Zmc2V0ICsgcmVzdWx0
TGVuZ3RoIDwgdGV4dC5sZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIFNlbGVjdGlvbiBiZWxvbmdz
IHRvIGEgc2luZ2xlIHNwbGl0IG1vZGUuCisgICAgICAgICAgICB0ZXh0Tm9kZS50ZXh0Q29udGVu
dCA9IHRleHQuc3Vic3RyaW5nKHRleHROb2RlT2Zmc2V0ICsgcmVzdWx0TGVuZ3RoKTsKKyAgICAg
ICAgICAgIHRleHROb2RlLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhpZ2hsaWdodE5vZGUs
IHRleHROb2RlKTsKKyAgICAgICAgICAgIHZhciBwcmVmaXhOb2RlID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUodGV4dC5zdWJzdHJpbmcoMCwgdGV4dE5vZGVPZmZzZXQpKTsKKyAgICAgICAgICAg
IHRleHROb2RlLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHByZWZpeE5vZGUsIGhpZ2hsaWdo
dE5vZGUpOworCisgICAgICAgICAgICBoaWdobGlnaHROb2Rlcy5wdXNoKGhpZ2hsaWdodE5vZGUp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcGFyZW50
RWxlbWVudCA9IHRleHROb2RlLnBhcmVudEVsZW1lbnQ7CisgICAgICAgIHZhciBhbmNob3JFbGVt
ZW50ID0gdGV4dE5vZGUubmV4dFNpYmxpbmc7CisKKyAgICAgICAgbGVuZ3RoIC09IHRleHQubGVu
Z3RoIC0gdGV4dE5vZGVPZmZzZXQ7CisgICAgICAgIHRleHROb2RlLnRleHRDb250ZW50ID0gdGV4
dC5zdWJzdHJpbmcoMCwgdGV4dE5vZGVPZmZzZXQpOworCisgICAgICAgIHdoaWxlIChjdXJyZW50
U25hcHNob3RJdGVtIDwgc25hcHNob3RMZW5ndGgpIHsKKyAgICAgICAgICAgIHRleHROb2RlID0g
dGV4dE5vZGVTbmFwc2hvdC5zbmFwc2hvdEl0ZW0oY3VycmVudFNuYXBzaG90SXRlbSsrKTsKKyAg
ICAgICAgICAgIHNuYXBzaG90Tm9kZU9mZnNldCArPSB0ZXh0Tm9kZS5ub2RlVmFsdWUubGVuZ3Ro
OworICAgICAgICAgICAgdmFyIHRleHQgPSB0ZXh0Tm9kZS50ZXh0Q29udGVudDsKKyAgICAgICAg
ICAgIGlmIChsZW5ndGggPCB0ZXh0Lmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHRleHROb2Rl
LnRleHRDb250ZW50ID0gdGV4dC5zdWJzdHJpbmcobGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGVuZ3RoIC09IHRleHQubGVuZ3Ro
OworICAgICAgICAgICAgdGV4dE5vZGUudGV4dENvbnRlbnQgPSAiIjsKICAgICAgICAgfQogCi0g
ICAgICAgIGxlbmd0aCAtPSB0ZXh0Lmxlbmd0aDsKLSAgICAgICAgdGV4dE5vZGUudGV4dENvbnRl
bnQgPSAiIjsKLSAgICAgICAgdGV4dE5vZGUgPSB0ZXh0Tm9kZS50cmF2ZXJzZU5leHRUZXh0Tm9k
ZShlbGVtZW50KTsKKyAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoaGlnaGxpZ2h0
Tm9kZSwgYW5jaG9yRWxlbWVudCk7CisgICAgICAgIGhpZ2hsaWdodE5vZGVzLnB1c2goaGlnaGxp
Z2h0Tm9kZSk7CiAgICAgfQogCi0gICAgcGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoaGlnaGxp
Z2h0Tm9kZSwgYW5jaG9yRWxlbWVudCk7Ci0gICAgcmV0dXJuIGhpZ2hsaWdodE5vZGU7CisgICAg
cmV0dXJuIGhpZ2hsaWdodE5vZGVzOwogfQogCi1mdW5jdGlvbiBjcmVhdGVTZWFyY2hSZWdleChx
dWVyeSkKK2Z1bmN0aW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBleHRyYUZsYWdzKQogewog
ICAgIHZhciByZWdleCA9ICIiOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnkubGVuZ3Ro
OyArK2kpIHsKQEAgLTEwNzQsNyArMTExNCw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVNlYXJjaFJlZ2V4
KHF1ZXJ5KQogICAgICAgICAgICAgY2hhciA9ICJcXF0iOwogICAgICAgICByZWdleCArPSAiWyIg
KyBjaGFyICsgIl0iOwogICAgIH0KLSAgICByZXR1cm4gbmV3IFJlZ0V4cChyZWdleCwgImkiKTsK
KyAgICByZXR1cm4gbmV3IFJlZ0V4cChyZWdleCwgImkiICsgKGV4dHJhRmxhZ3MgfHwgIiIpKTsK
IH0KIAogZnVuY3Rpb24gb2ZmZXJGaWxlRm9yRG93bmxvYWQoY29udGVudHMpCg==
</data>
<flag name="review"
          id="76197"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>