<?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>69106</bug_id>
          
          <creation_ts>2011-09-29 14:45:32 -0700</creation_ts>
          <short_desc>Universal attribute selectors disable style sharing</short_desc>
          <delta_ts>2012-06-06 15:12:44 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>475687</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-29 14:45:32 -0700</bug_when>
    <thetext>Selectors of type [foo=&quot;bar&quot;] will end up marking every element style with the affectedByUncommonAttributeSelectors bit, rendering style sharing inoperative. This happens on http://www.whatwg.org/specs/web-apps/current-work/ for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475688</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-29 14:46:30 -0700</bug_when>
    <thetext>affectedByAttributeSelectors bit I mean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475703</commentid>
    <comment_count>2</comment_count>
      <attachid>109209</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-29 15:00:45 -0700</bug_when>
    <thetext>Created attachment 109209
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475705</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-29 15:01:18 -0700</bug_when>
    <thetext>This speeds up style matching and applying ~15% on full HTML5 spec (=~0.7s). Sharing percentage goes from 0% to ~30%. Increased sharing should also save a substantial amount of memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475708</commentid>
    <comment_count>4</comment_count>
      <attachid>109209</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-09-29 15:04:22 -0700</bug_when>
    <thetext>Comment on attachment 109209
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475727</commentid>
    <comment_count>5</comment_count>
      <attachid>109209</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 15:51:17 -0700</bug_when>
    <thetext>Comment on attachment 109209
patch

Attachment 109209 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9901202

New failing tests:
tables/mozilla/bugs/bug222846.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475949</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-09-30 00:07:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/96393 (with a fix to the crashing test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642865</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-06 15:12:44 -0700</bug_when>
    <thetext>This has caused bug 88196.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109209</attachid>
            <date>2011-09-29 15:00:45 -0700</date>
            <delta_ts>2011-09-29 15:51:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>attribute-sharing-5.patch</filename>
            <type>text/plain</type>
            <size>20547</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MzYwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDktMjkgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTEwNgorICAgICAgICBVbml2ZXJzYWwgYXR0cmlidXRlIHNl
bGVjdG9ycyBkaXNhYmxlIHN0eWxlIHNoYXJpbmcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZWxlY3RvcnMgb2YgdHlwZSBbZm9vPSJiYXIiXSBlbmRl
ZCB1cCBtYXJraW5nIGV2ZXJ5IGVsZW1lbnQgc3R5bGUgd2l0aCB0aGUgYWZmZWN0ZWRCeUF0dHJp
YnV0ZVNlbGVjdG9ycyBiaXQKKyAgICAgICAgcmVuZGVyaW5nIHN0eWxlIHNoYXJpbmcgaW5vcGVy
YXRpdmUuIFRoaXMgaGFwcGVucyBvbiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrLyBmb3IgZXhhbXBsZS4KKworICAgICAgICBJbnN0ZWFkIHdlIG5vdyBt
YXJrIHN0eWxlIHdpdGggYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzIGJpdCBv
bmx5IGlmIGFuIGF0dHJpYnV0ZSBzZWxlY3RvciBhY3R1YWxseSAKKyAgICAgICAgbWF0Y2hlcyB0
aGUgZWxlbWVudC4gQmVmb3JlIHNoYXJpbmcsIHdlIGFsc28gY2hlY2sgdGhlIGN1cnJlbnQgZWxl
bWVudCBhZ2FpbnN0IGNvbGxlY3RlZCBhdHRyaWJ1dGUgcnVsZXMuCisgICAgICAgIFdlIGNhbiBz
aGFyZSB0aGUgc3R5bGUgaWYgbmVpdGhlciBlbGVtZW50IHdhcyBhZmZlY3RlZC4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgc3BlZWRzIHVwIHN0eWxlIG1hdGNoaW5nIGFuZCBhcHBseWluZyB+MTUl
IG9uIGZ1bGwgSFRNTDUgc3BlYyAoPX4wLjdzKS4gU2hhcmluZyBwZXJjZW50YWdlIGdvZXMgZnJv
bSAwJSB0byB+MzAlLgorICAgICAgICBJbmNyZWFzZWQgc2hhcmluZyBzaG91bGQgYWxzbyBzYXZl
IGEgc3Vic3RhbnRpYWwgYW1vdW50IG9mIG1lbW9yeS4KKworICAgICAgICAqIGNzcy9DU1NTZWxl
Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzQXR0cmlidXRlU2VsZWN0
b3IpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVEYXRhOjpjb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGVjdFNwZWNpYWxSdWxlc0luRGVmYXVsdFN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OmFzc2VydE5vU2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoZXNSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpsb2NhdGVTaGFyZWRTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6c2VsZWN0b3JMaXN0Q29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ29tbW9uQXR0cmlidXRlU2VsZWN0b3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bGVEYXRhOjpSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0
RmVhdHVyZXNGcm9tU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEZlYXR1cmVz
RnJvbUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgICog
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5oZXJpdGVkRmxhZ3M6OmFmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyk6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0QWZmZWN0ZWRCeVVuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3JzKToKKwogMjAxMS0wOS0yOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZpeGVuYXRlIHRoZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiA5NTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1hdGNoZXNQc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAg
ICAgICAgIGJvb2wgaXNVbmtub3duUHNldWRvRWxlbWVudCgpIGNvbnN0OwogICAgICAgICBib29s
IGlzU2libGluZ1NlbGVjdG9yKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGVTZWxl
Y3RvcigpIGNvbnN0OwogCiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAKQEAgLTMyNiw3ICszMjcs
MjAgQEAgaW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzU2libGluZ1NlbGVjdAogICAgICAgICB8
fCB0eXBlID09IFBzZXVkb050aExhc3RDaGlsZAogICAgICAgICB8fCB0eXBlID09IFBzZXVkb050
aExhc3RPZlR5cGU7CiB9Ci0gICAgCisKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjppc0F0dHJp
YnV0ZVNlbGVjdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0F0dHJpYnV0ZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkV4YWN0
CisgICAgICAgIHx8IG1fbWF0Y2ggPT0gIENTU1NlbGVjdG9yOjpTZXQKKyAgICAgICAgfHwgbV9t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6TGlzdAorICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVj
dG9yOjpIeXBoZW4KKyAgICAgICAgfHwgbV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q29udGFpbgor
ICAgICAgICB8fCBtX21hdGNoID09IENTU1NlbGVjdG9yOjpCZWdpbgorICAgICAgICB8fCBtX21h
dGNoID09IENTU1NlbGVjdG9yOjpFbmQ7Cit9CisKIGlubGluZSB2b2lkIENTU1NlbGVjdG9yOjpz
ZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIE5lZWQgdG8gZG8g
cmVmIGNvdW50aW5nIG1hbnVhbGx5IGZvciB0aGUgdW5pb24uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NTk2NikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0Zhc3RDaGVja2FibGVTZWxlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faGFzRmFzdENoZWNrYWJsZVNlbGVjdG9yOyB9CiAgICAgYm9vbCBoYXNNdWx0
aXBhcnRTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTXVsdGlwYXJ0U2VsZWN0b3I7IH0K
ICAgICBib29sIGhhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNo
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSaWdodG1vc3RTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2Vk
T25SdWxlSGFzaDsgfQorICAgIGJvb2wgY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3I7IH0K
ICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWNpdHk7
IH0KICAgICAKICAgICAvLyBUcnkgdG8gYmFsYW5jZSBiZXR3ZWVuIG1lbW9yeSB1c2FnZSAodGhl
cmUgY2FuIGJlIGxvdHMgb2YgUnVsZURhdGEgb2JqZWN0cykgYW5kIGdvb2QgZmlsdGVyaW5nIHBl
cmZvcm1hbmNlLgpAQCAtMTk5LDEwICsyMDAsMTEgQEAgcHJpdmF0ZTogICAgCiAgICAgQ1NTU3R5
bGVSdWxlKiBtX3J1bGU7CiAgICAgQ1NTU2VsZWN0b3IqIG1fc2VsZWN0b3I7CiAgICAgdW5zaWdu
ZWQgbV9zcGVjaWZpY2l0eTsKLSAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uIDogMjk7CisgICAgdW5z
aWduZWQgbV9wb3NpdGlvbiA6IDI4OwogICAgIGJvb2wgbV9oYXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IgOiAxOwogICAgIGJvb2wgbV9oYXNNdWx0aXBhcnRTZWxlY3RvciA6IDE7CiAgICAgYm9vbCBt
X2hhc1JpZ2h0bW9zdFNlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoIDogMTsKKyAg
ICBib29sIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yIDogMTsKICAgICAvLyBV
c2UgcGxhaW4gYXJyYXkgaW5zdGVhZCBvZiBhIFZlY3RvciB0byBtaW5pbWl6ZSBtZW1vcnkgb3Zl
cmhlYWQuCiAgICAgdW5zaWduZWQgbV9kZXNjZW5kYW50U2VsZWN0b3JJZGVudGlmaWVySGFzaGVz
W21heGltdW1JZGVudGlmaWVyQ291bnRdOwogfTsKQEAgLTI1OCw2ICsyNjAsNyBAQCBzdGF0aWMg
UnVsZVNldCogZGVmYXVsdFZpZXdTb3VyY2VTdHlsZTsKIHN0YXRpYyBDU1NTdHlsZVNoZWV0KiBz
aW1wbGVEZWZhdWx0U3R5bGVTaGVldDsKICAgICAKIHN0YXRpYyBSdWxlU2V0KiBzaWJsaW5nUnVs
ZXNJbkRlZmF1bHRTdHlsZTsKK3N0YXRpYyBSdWxlU2V0KiB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVz
SW5EZWZhdWx0U3R5bGU7CiAKIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzX3N0eWxl
Tm90WWV0QXZhaWxhYmxlOwogCkBAIC0yNzEsMTMgKzI3NCwxNSBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgZWxlbWVudENhblVzZVNpbXBsZURlCiAgICAgcmV0dXJuIGUtPmhhc1RhZ05hbWUoaHRtbFRh
ZykgfHwgZS0+aGFzVGFnTmFtZShoZWFkVGFnKSB8fCBlLT5oYXNUYWdOYW1lKGJvZHlUYWcpIHx8
IGUtPmhhc1RhZ05hbWUoZGl2VGFnKSB8fCBlLT5oYXNUYWdOYW1lKHNwYW5UYWcpIHx8IGUtPmhh
c1RhZ05hbWUoYnJUYWcpIHx8IGUtPmhhc1RhZ05hbWUoYVRhZyk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBjb2xsZWN0U2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUoKQorc3RhdGljIGlubGlu
ZSB2b2lkIGNvbGxlY3RTcGVjaWFsUnVsZXNJbkRlZmF1bHRTdHlsZSgpCiB7CiAgICAgQ1NTU3R5
bGVTZWxlY3Rvcjo6RmVhdHVyZXMgZmVhdHVyZXM7CiAgICAgZGVmYXVsdFN0eWxlLT5jb2xsZWN0
RmVhdHVyZXMoZmVhdHVyZXMpOwogICAgIEFTU0VSVChmZWF0dXJlcy5pZHNJblJ1bGVzLmlzRW1w
dHkoKSk7CiAgICAgZGVsZXRlIHNpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlOworICAgIGRlbGV0
ZSB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzSW5EZWZhdWx0U3R5bGU7CiAgICAgc2libGluZ1J1bGVz
SW5EZWZhdWx0U3R5bGUgPSBmZWF0dXJlcy5zaWJsaW5nUnVsZXMubGVha1B0cigpOworICAgIHVu
Y29tbW9uQXR0cmlidXRlUnVsZXNJbkRlZmF1bHRTdHlsZSA9IGZlYXR1cmVzLnVuY29tbW9uQXR0
cmlidXRlUnVsZXMubGVha1B0cigpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0Tm9T
aWJsaW5nUnVsZXNJbkRlZmF1bHRTdHlsZSgpCkBAIC0yODUsNyArMjkwLDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGFzc2VydE5vU2libGluZ1J1bGVzSQogI2lmbmRlZiBOREVCVUcKICAgICBpZiAo
c2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb2xsZWN0
U2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUoKTsKKyAgICBjb2xsZWN0U3BlY2lhbFJ1bGVzSW5E
ZWZhdWx0U3R5bGUoKTsKICAgICBBU1NFUlQoIXNpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlKTsK
ICNlbmRpZgogfQpAQCAtNDExLDYgKzQxNiw4IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxl
U2VsZWN0b3IoRG9jdW0KICAgICAvLyBVc3VhbGx5IHRoZXJlIGFyZSBubyBzaWJsaW5nIHJ1bGVz
IGluIHRoZSBkZWZhdWx0IHN0eWxlIGJ1dCB0aGUgTWF0aE1MIHNoZWV0IGhhcyBzb21lLgogICAg
IGlmIChzaWJsaW5nUnVsZXNJbkRlZmF1bHRTdHlsZSkKICAgICAgICAgc2libGluZ1J1bGVzSW5E
ZWZhdWx0U3R5bGUtPmNvbGxlY3RGZWF0dXJlcyhtX2ZlYXR1cmVzKTsKKyAgICBpZiAodW5jb21t
b25BdHRyaWJ1dGVSdWxlc0luRGVmYXVsdFN0eWxlKQorICAgICAgICB1bmNvbW1vbkF0dHJpYnV0
ZVJ1bGVzSW5EZWZhdWx0U3R5bGUtPmNvbGxlY3RGZWF0dXJlcyhtX2ZlYXR1cmVzKTsKICAgICBt
X2F1dGhvclN0eWxlLT5jb2xsZWN0RmVhdHVyZXMobV9mZWF0dXJlcyk7CiAgICAgaWYgKG1fdXNl
clN0eWxlKQogICAgICAgICBtX3VzZXJTdHlsZS0+Y29sbGVjdEZlYXR1cmVzKG1fZmVhdHVyZXMp
OwpAQCAtNDE4LDYgKzQyNSw4IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3Io
RG9jdW0KICAgICBtX2F1dGhvclN0eWxlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGlmIChtX2ZlYXR1
cmVzLnNpYmxpbmdSdWxlcykKICAgICAgICAgbV9mZWF0dXJlcy5zaWJsaW5nUnVsZXMtPnNocmlu
a1RvRml0KCk7CisgICAgaWYgKG1fZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcykKKyAg
ICAgICAgbV9mZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwog
CiAgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpICYmIGRvY3VtZW50LT5yZW5kZXJlcigpLT5z
dHlsZSgpKQogICAgICAgICBkb2N1bWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zm9udCgpLnVw
ZGF0ZShmb250U2VsZWN0b3IoKSk7CkBAIC01NTksOCArNTY4LDExIEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWF0Y2hSdWxlcyhSdWxlU2UKICAgICAKICAgICAvLyBOb3cgdHJhbnNmZXIgdGhl
IHNldCBvZiBtYXRjaGVkIHJ1bGVzIG92ZXIgdG8gb3VyIGxpc3Qgb2YgZGVjbHMuCiAgICAgaWYg
KCFtX2NoZWNrZXIuaXNDb2xsZWN0aW5nUnVsZXNPbmx5KCkpIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbWF0Y2hlZFJ1bGVzLnNpemUoKTsgaSsrKQorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXRjaGVkUnVsZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChtX21hdGNoZWRSdWxlc1tpXS0+Y29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNl
bGVjdG9yKCkpCisgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0QWZmZWN0ZWRCeVVuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3JzKCk7CiAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24o
bV9tYXRjaGVkUnVsZXNbaV0tPnJ1bGUoKS0+ZGVjbGFyYXRpb24oKSk7CisgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9tYXRjaGVkUnVs
ZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgIGlmICghbV9ydWxlTGlzdCkKQEAgLTc0MCwx
MCArNzUyLDEwIEBAIE5vZGUqIENTU1N0eWxlU2VsZWN0b3I6OmxvY2F0ZUNvdXNpbkxpc3QKICAg
ICByZXR1cm4gMDsKIH0KIAotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaGVzU2libGluZ1J1
bGVzKCkKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hlc1J1bGVTZXQoUnVsZVNldCogcnVs
ZVNldCkKIHsKICAgICBpbnQgZmlyc3RTaWJsaW5nUnVsZSA9IC0xLCBsYXN0U2libGluZ1J1bGUg
PSAtMTsKLSAgICBtYXRjaFJ1bGVzKG1fZmVhdHVyZXMuc2libGluZ1J1bGVzLmdldCgpLCBmaXJz
dFNpYmxpbmdSdWxlLCBsYXN0U2libGluZ1J1bGUsIGZhbHNlKTsKKyAgICBtYXRjaFJ1bGVzKHJ1
bGVTZXQsIGZpcnN0U2libGluZ1J1bGUsIGxhc3RTaWJsaW5nUnVsZSwgZmFsc2UpOwogICAgIGlm
IChtX21hdGNoZWREZWNscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X21hdGNoZWREZWNscy5jbGVhcigpOwpAQCAtODI3LDcgKzgzOSw3IEBAIGJvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
IChlbGVtZW50LT5pc0xpbmsoKSAhPSBtX2VsZW1lbnQtPmlzTGluaygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHN0eWxlLT5hZmZlY3RlZEJ5QXR0cmlidXRlU2VsZWN0b3JzKCkp
CisgICAgaWYgKHN0eWxlLT5hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChlbGVtZW50LT5ob3ZlcmVkKCkgIT0gbV9l
bGVtZW50LT5ob3ZlcmVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkxMSw3ICs5MjMs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFyZW50U3R5bGVQcmV2ZW50c1NoCiAgICAgICAgIHx8
IHBhcmVudFN0eWxlLT5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpOwogfQogCi1B
TFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpsb2NhdGVTaGFyZWRT
dHlsZSgpCitSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6bG9jYXRlU2hhcmVkU3R5bGUo
KQogewogICAgIGlmICghbV9zdHlsZWRFbGVtZW50IHx8ICFtX3BhcmVudFN0eWxlKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTk0MSw3ICs5NTMsMTAgQEAgQUxXQVlTX0lOTElORSBSZW5kZXJTdHls
ZSogQ1NTU3R5bGVTZWxlYwogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIENhbid0IHNoYXJl
IGlmIHNpYmxpbmcgcnVsZXMgYXBwbHkuIFRoaXMgaXMgY2hlY2tlZCBhdCB0aGUgZW5kIGFzIGl0
IHNob3VsZCByYXJlbHkgZmFpbC4KLSAgICBpZiAobWF0Y2hlc1NpYmxpbmdSdWxlcygpKQorICAg
IGlmIChtYXRjaGVzUnVsZVNldChtX2ZlYXR1cmVzLnNpYmxpbmdSdWxlcy5nZXQoKSkpCisgICAg
ICAgIHJldHVybiAwOworICAgIC8vIENhbid0IHNoYXJlIGlmIGF0dHJpYnV0ZSBydWxlcyBhcHBs
eS4KKyAgICBpZiAobWF0Y2hlc1J1bGVTZXQobV9mZWF0dXJlcy51bmNvbW1vbkF0dHJpYnV0ZVJ1
bGVzLmdldCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gVHJhY2tpbmcgY2hpbGQgaW5k
ZXggcmVxdWlyZXMgdW5pcXVlIHN0eWxlIGZvciBlYWNoIG5vZGUuIFRoaXMgbWF5IGdldCBzZXQg
YnkgdGhlIHNpYmxpbmcgcnVsZSBtYXRjaCBhYm92ZS4KICAgICBpZiAocGFyZW50U3R5bGVQcmV2
ZW50c1NoYXJpbmcobV9wYXJlbnRTdHlsZSkpCkBAIC0xMTEyLDYgKzExMjcsNyBAQCBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgaWYgKHNpbXBsZURlZmF1bHRT
dHlsZVNoZWV0ICYmICFlbGVtZW50Q2FuVXNlU2ltcGxlRGVmYXVsdFN0eWxlKGUpKSB7CiAgICAg
ICAgIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCk7CiAgICAgICAgIGFzc2VydE5vU2libGluZ1J1bGVz
SW5EZWZhdWx0U3R5bGUoKTsKKyAgICAgICAgY29sbGVjdFNwZWNpYWxSdWxlc0luRGVmYXVsdFN0
eWxlKCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTExMjMsNiArMTEzOSw3IEBAIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgZGVmYXVsdFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdmdTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAg
ZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCBwcmludEV2YWwo
KSk7CiAgICAgICAgIGFzc2VydE5vU2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUoKTsKKyAgICAg
ICAgY29sbGVjdFNwZWNpYWxSdWxlc0luRGVmYXVsdFN0eWxlKCk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTExMzQsOCArMTE1MSw4IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2Vs
ZWN0b3IKICAgICAgICAgQ1NTU3R5bGVTaGVldCogbWF0aE1MU2hlZXQgPSBwYXJzZVVBU2hlZXQo
bWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1hdGhtbFVzZXJBZ2VudFN0eWxlU2hl
ZXQpKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtYXRoTUxTaGVl
dCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KG1hdGhNTFNoZWV0LCBwcmludEV2YWwoKSk7Ci0gICAgICAgIC8vIFRoZXJlIGFyZSBz
b21lIHNpYmxpbmcgcnVsZXMgaGVyZS4KLSAgICAgICAgY29sbGVjdFNpYmxpbmdSdWxlc0luRGVm
YXVsdFN0eWxlKCk7CisgICAgICAgIC8vIFRoZXJlIGFyZSBzb21lIHNpYmxpbmcgYW5kIHVuY29t
bW9uIGF0dHJpYnV0ZSBydWxlcyBoZXJlLgorICAgICAgICBjb2xsZWN0U3BlY2lhbFJ1bGVzSW5E
ZWZhdWx0U3R5bGUoKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTE0Nyw3ICsxMTY0LDcgQEAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAgICBDU1NTdHlsZVNo
ZWV0KiBtZWRpYUNvbnRyb2xzU2hlZXQgPSBwYXJzZVVBU2hlZXQobWVkaWFSdWxlcyk7CiAgICAg
ICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWVkaWFDb250cm9sc1NoZWV0LCBz
Y3JlZW5FdmFsKCkpOwogICAgICAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQobWVkaWFDb250cm9sc1NoZWV0LCBwcmludEV2YWwoKSk7Ci0gICAgICAgIGFzc2VydE5vU2li
bGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUoKTsKKyAgICAgICAgY29sbGVjdFNwZWNpYWxSdWxlc0lu
RGVmYXVsdFN0eWxlKCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTExNTksNiArMTE3Niw3IEBAIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgQ1NTU3R5bGVT
aGVldCogZnVsbHNjcmVlblNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CiAg
ICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBz
Y3JlZW5FdmFsKCkpOwogICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICAgICAgY29sbGVjdFNwZWNp
YWxSdWxlc0luRGVmYXVsdFN0eWxlKCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTE4MzgsNiArMTg1
Niw0NiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTZWxlY3Rvck1hdGNoaW5nSFRNCiAgICAgcmV0
dXJuIHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCB8fCBzZWxlY3Rvci0+bV9t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZWxl
Y3Rvckxpc3RDb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yKQoreworICAgIENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0ID0gc2Vs
ZWN0b3ItPnNlbGVjdG9yTGlzdCgpOworICAgIGlmICghc2VsZWN0b3JMaXN0KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgZm9yIChDU1NTZWxlY3Rvciogc3ViU2VsZWN0b3IgPSBzZWxlY3Rv
ckxpc3QtPmZpcnN0KCk7IHN1YlNlbGVjdG9yOyBzdWJTZWxlY3RvciA9IENTU1NlbGVjdG9yTGlz
dDo6bmV4dChzdWJTZWxlY3RvcikpIHsKKyAgICAgICAgaWYgKHN1YlNlbGVjdG9yLT5pc0F0dHJp
YnV0ZVNlbGVjdG9yKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDb21tb25BdHRyaWJ1dGVTZWxl
Y3RvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCit7CisgICAgLy8g
VGhlc2UgYXJlIGV4cGxpY2l0bHkgdGVzdGVkIGZvciBlcXVhbGl0eSBpbiBjYW5TaGFyZVN0eWxl
V2l0aEVsZW1lbnQuCisgICAgcmV0dXJuIGF0dHJpYnV0ZSA9PSB0eXBlQXR0ciB8fCBhdHRyaWJ1
dGUgPT0gcmVhZG9ubHlBdHRyOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgY29udGFpbnNVbmNv
bW1vbkF0dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK3sKKyAg
ICB3aGlsZSAoc2VsZWN0b3IpIHsKKyAgICAgICAgLy8gQWxsb3cgY2VydGFpbiBjb21tb24gYXR0
cmlidXRlcyAodXNlZCBpbiB0aGUgZGVmYXVsdCBzdHlsZSkgaW4gdGhlIHNlbGVjdG9ycyB0aGF0
IG1hdGNoIHRoZSBjdXJyZW50IGVsZW1lbnQuCisgICAgICAgIGlmIChzZWxlY3Rvci0+aXNBdHRy
aWJ1dGVTZWxlY3RvcigpICYmICFpc0NvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yQXR0cmlidXRlKHNl
bGVjdG9yLT5hdHRyaWJ1dGUoKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
aWYgKHNlbGVjdG9yTGlzdENvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcihzZWxlY3Rv
cikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxh
dGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7CisgICAgfTsKKworICAg
IGZvciAoc2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpOyBzZWxlY3Rvcjsgc2VsZWN0
b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7ICAgICAgICAgICAgCisgICAgICAgIGlmIChz
ZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGlmIChzZWxlY3Rvckxpc3RDb250YWluc1VuY29tbW9uQXR0cmlidXRlU2VsZWN0
b3Ioc2VsZWN0b3IpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwogUnVsZURhdGE6OlJ1bGVEYXRhKENTU1N0eWxlUnVsZSogcnVsZSwgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yLCB1bnNpZ25lZCBwb3NpdGlvbikKICAgICA6IG1fcnVsZShydWxl
KQogICAgICwgbV9zZWxlY3RvcihzZWxlY3RvcikKQEAgLTE4NDYsNiArMTkwNCw3IEBAIFJ1bGVE
YXRhOjpSdWxlRGF0YShDU1NTdHlsZVJ1bGUqIHJ1bGUsIEMKICAgICAsIG1faGFzRmFzdENoZWNr
YWJsZVNlbGVjdG9yKFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3Ioc2Vs
ZWN0b3IpKQogICAgICwgbV9oYXNNdWx0aXBhcnRTZWxlY3RvcihzZWxlY3Rvci0+dGFnSGlzdG9y
eSgpKQogICAgICwgbV9oYXNSaWdodG1vc3RTZWxlY3Rvck1hdGNoaW5nSFRNTEJhc2VkT25SdWxl
SGFzaChpc1NlbGVjdG9yTWF0Y2hpbmdIVE1MQmFzZWRPblJ1bGVIYXNoKHNlbGVjdG9yKSkKKyAg
ICAsIG1fY29udGFpbnNVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9yKFdlYkNvcmU6OmNvbnRhaW5z
VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcihzZWxlY3RvcikpCiB7CiAgICAgU2VsZWN0b3JDaGVj
a2VyOjpjb2xsZWN0SWRlbnRpZmllckhhc2hlcyhtX3NlbGVjdG9yLCBtX2Rlc2NlbmRhbnRTZWxl
Y3RvcklkZW50aWZpZXJIYXNoZXMsIG1heGltdW1JZGVudGlmaWVyQ291bnQpOwogfQpAQCAtMTk5
NSwyMSArMjA1NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tU2UK
IHsKICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkICYmICFzZWxl
Y3Rvci0+dmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgIGZlYXR1cmVzLmlkc0luUnVsZXMuYWRk
KHNlbGVjdG9yLT52YWx1ZSgpLmltcGwoKSk7Ci0gICAgaWYgKHNlbGVjdG9yLT5oYXNBdHRyaWJ1
dGUoKSkgewotICAgICAgICBzd2l0Y2ggKHNlbGVjdG9yLT5tX21hdGNoKSB7Ci0gICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTZXQ6Ci0g
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxpc3Q6Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
Okh5cGhlbjoKLSAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6Q29udGFpbjoKLSAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6QmVnaW46Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkVuZDoKLSAg
ICAgICAgICAgIGZlYXR1cmVzLmF0dHJzSW5SdWxlcy5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgp
LmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChzZWxlY3Rv
ci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKQorICAgICAgICBmZWF0dXJlcy5hdHRyc0luUnVsZXMu
YWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgIHN3aXRj
aCAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgewogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0ZpcnN0TGluZToKICAgICAgICAgZmVhdHVyZXMudXNlc0ZpcnN0TGluZVJ1bGVzID0gdHJ1ZTsK
QEAgLTIwMzMsNyArMjA3OSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RGZWF0dXJlc0Zyb21MaXN0
KENTU1MKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSA9IHJ1bGVzW2ldOwogICAgICAgICBib29sIGZvdW5k
U2libGluZ1NlbGVjdG9yID0gZmFsc2U7Ci0gICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yID0gcnVsZURhdGEuc2VsZWN0b3IoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2VsZWN0b3It
PnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHJ1
bGVEYXRhLnNlbGVjdG9yKCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0
b3J5KCkpIHsgICAgICAgICAgICAKICAgICAgICAgICAgIGNvbGxlY3RGZWF0dXJlc0Zyb21TZWxl
Y3RvcihmZWF0dXJlcywgc2VsZWN0b3IpOwogCiAgICAgICAgICAgICBpZiAoQ1NTU2VsZWN0b3JM
aXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci0+c2VsZWN0b3JMaXN0KCkpIHsKQEAgLTIwNTAs
NiArMjA5NiwxMSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tTGlzdChDU1NTCiAg
ICAgICAgICAgICAgICAgZmVhdHVyZXMuc2libGluZ1J1bGVzID0gYWRvcHRQdHIobmV3IFJ1bGVT
ZXQpOwogICAgICAgICAgICAgZmVhdHVyZXMuc2libGluZ1J1bGVzLT5hZGRSdWxlKHJ1bGVEYXRh
LnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3IoKSk7ICAgCiAgICAgICAgIH0KKyAgICAgICAgaWYg
KHJ1bGVEYXRhLmNvbnRhaW5zVW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcigpKSB7CisgICAgICAg
ICAgICBpZiAoIWZlYXR1cmVzLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpCisgICAgICAgICAgICAg
ICAgZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcyA9IGFkb3B0UHRyKG5ldyBSdWxlU2V0
KTsKKyAgICAgICAgICAgIGZlYXR1cmVzLnVuY29tbW9uQXR0cmlidXRlUnVsZXMtPmFkZFJ1bGUo
cnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvcigpKTsgCisgICAgICAgIH0KICAgICB9
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24g
OTU5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRGb3JTdHls
ZVJlc29sdmUoRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IDAsIFBzZXVkb0lk
ID0gTk9QU0VVRE8pOwogICAgIHZvaWQgaW5pdEVsZW1lbnQoRWxlbWVudCopOwogICAgIFJlbmRl
clN0eWxlKiBsb2NhdGVTaGFyZWRTdHlsZSgpOwotICAgIGJvb2wgbWF0Y2hlc1NpYmxpbmdSdWxl
cygpOworICAgIGJvb2wgbWF0Y2hlc1J1bGVTZXQoUnVsZVNldCopOwogICAgIE5vZGUqIGxvY2F0
ZUNvdXNpbkxpc3QoRWxlbWVudCogcGFyZW50LCB1bnNpZ25lZCYgdmlzaXRlZE5vZGVDb3VudCkg
Y29uc3Q7CiAgICAgTm9kZSogZmluZFNpYmxpbmdGb3JTdHlsZVNoYXJpbmcoTm9kZSosIHVuc2ln
bmVkJiBjb3VudCkgY29uc3Q7CiAgICAgYm9vbCBjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoTm9k
ZSopIGNvbnN0OwpAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4gaWRzSW5SdWxlczsKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4gYXR0cnNJblJ1bGVzOwogICAgICAgICBPd25QdHI8UnVsZVNldD4gc2libGluZ1J1
bGVzOworICAgICAgICBPd25QdHI8UnVsZVNldD4gdW5jb21tb25BdHRyaWJ1dGVSdWxlczsKICAg
ICAgICAgYm9vbCB1c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAgICAgIGJvb2wgdXNlc0JlZm9yZUFm
dGVyUnVsZXM7CiAgICAgICAgIGJvb2wgdXNlc0xpbmtSdWxlczsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiA5NTk2NikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODYsMTAgKzY4
Niw2IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKEMKICAgICAgICAg
CiAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHIgPSBzZWwtPmF0dHJpYnV0ZSgpOwog
ICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgY2FzZSB3ZXJlIGVsZW1lbnRT
dHlsZSBpcyAwLgotICAgICAgICBpZiAoZWxlbWVudFN0eWxlICYmICghZS0+aXNTdHlsZWRFbGVt
ZW50KCkgfHwgKCFzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZSktPmlzTWFwcGVkQXR0cmli
dXRlKGF0dHIpICYmIGF0dHIgIT0gdHlwZUF0dHIgJiYgYXR0ciAhPSByZWFkb25seUF0dHIpKSkK
LSAgICAgICAgICAgIGVsZW1lbnRTdHlsZS0+c2V0QWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9y
cygpOyAvLyBTcGVjaWFsLWNhc2UgdGhlICJ0eXBlIiBhbmQgInJlYWRvbmx5IiBhdHRyaWJ1dGVz
IHNvIGlucHV0IGZvcm0gY29udHJvbHMgY2FuIHNoYXJlIHN0eWxlLgotICAgICAgICAKICAgICAg
ICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZS0+YXR0cmlidXRlcyh0cnVlKTsKICAgICAg
ICAgaWYgKCFhdHRyaWJ1dGVzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lv
biA5NTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gUmVuZGVyU3R5bGU6OmNsbwogfQogCiBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpSZW5k
ZXJTdHlsZSgpCi0gICAgOiBtX2FmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMoZmFsc2UpCisg
ICAgOiBtX2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVjdG9ycyhmYWxzZSkKICAgICAs
IG1fdW5pcXVlKGZhbHNlKQogICAgICwgbV9hZmZlY3RlZEJ5RW1wdHkoZmFsc2UpCiAgICAgLCBt
X2VtcHR5U3RhdGUoZmFsc2UpCkBAIC05OCw3ICs5OCw3IEBAIEFMV0FZU19JTkxJTkUgUmVuZGVy
U3R5bGU6OlJlbmRlclN0eWxlKCkKIH0KIAogQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZTo6UmVu
ZGVyU3R5bGUoYm9vbCkKLSAgICA6IG1fYWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9ycyhmYWxz
ZSkKKyAgICA6IG1fYWZmZWN0ZWRCeVVuY29tbW9uQXR0cmlidXRlU2VsZWN0b3JzKGZhbHNlKQog
ICAgICwgbV91bmlxdWUoZmFsc2UpCiAgICAgLCBtX2FmZmVjdGVkQnlFbXB0eShmYWxzZSkKICAg
ICAsIG1fZW1wdHlTdGF0ZShmYWxzZSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBBTFdBWVNfSU5MSU5F
IFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShiCiAKIEFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGU6
OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBvKQogICAgIDogUmVmQ291bnRlZDxSZW5k
ZXJTdHlsZT4oKQotICAgICwgbV9hZmZlY3RlZEJ5QXR0cmlidXRlU2VsZWN0b3JzKGZhbHNlKQor
ICAgICwgbV9hZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoZmFsc2UpCiAgICAg
LCBtX3VuaXF1ZShmYWxzZSkKICAgICAsIG1fYWZmZWN0ZWRCeUVtcHR5KGZhbHNlKQogICAgICwg
bV9lbXB0eVN0YXRlKGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDk1OTM3KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGJpdGZpZWxkIGlzIDMyLWJp
dHMgbG9uZywgd2hpY2ggb3B0aW1pemVzIHBhZGRpbmcgd2l0aCB0aGUKICAgICAvLyBpbnQgcmVm
Q291bnQgaW4gdGhlIGJhc2UgY2xhc3MuIEJld2FyZSB3aGVuIGFkZGluZyBtb3JlIGJpdHMuCi0g
ICAgYm9vbCBtX2FmZmVjdGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMgOiAxOworICAgIGJvb2wgbV9h
ZmZlY3RlZEJ5VW5jb21tb25BdHRyaWJ1dGVTZWxlY3RvcnMgOiAxOwogICAgIGJvb2wgbV91bmlx
dWUgOiAxOwogCiAgICAgLy8gQml0cyBmb3IgZHluYW1pYyBjaGlsZCBtYXRjaGluZy4KQEAgLTEy
OTAsOCArMTI5MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdyaXRpbmdNb2RlKFdyaXRpbmdN
b2RlIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUgPSB2OyB9CiAKICAgICAvLyBU
byB0ZWxsIGlmIHRoaXMgc3R5bGUgbWF0Y2hlZCBhdHRyaWJ1dGUgc2VsZWN0b3JzLiBUaGlzIG1h
a2VzIGl0IGltcG9zc2libGUgdG8gc2hhcmUuCi0gICAgYm9vbCBhZmZlY3RlZEJ5QXR0cmlidXRl
U2VsZWN0b3JzKCkgY29uc3QgeyByZXR1cm4gbV9hZmZlY3RlZEJ5QXR0cmlidXRlU2VsZWN0b3Jz
OyB9Ci0gICAgdm9pZCBzZXRBZmZlY3RlZEJ5QXR0cmlidXRlU2VsZWN0b3JzKCkgeyBtX2FmZmVj
dGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMgPSB0cnVlOyB9CisgICAgYm9vbCBhZmZlY3RlZEJ5VW5j
b21tb25BdHRyaWJ1dGVTZWxlY3RvcnMoKSBjb25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlVbmNv
bW1vbkF0dHJpYnV0ZVNlbGVjdG9yczsgfQorICAgIHZvaWQgc2V0QWZmZWN0ZWRCeVVuY29tbW9u
QXR0cmlidXRlU2VsZWN0b3JzKCkgeyBtX2FmZmVjdGVkQnlVbmNvbW1vbkF0dHJpYnV0ZVNlbGVj
dG9ycyA9IHRydWU7IH0KIAogICAgIGJvb2wgYWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMo
KSBjb25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlEaXJlY3RBZGphY2VudFJ1bGVzOyB9CiAgICAg
dm9pZCBzZXRBZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIHsgbV9hZmZlY3RlZEJ5RGly
ZWN0QWRqYWNlbnRSdWxlcyA9IHRydWU7IH0K
</data>
<flag name="review"
          id="106400"
          type_id="1"
          status="+"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="106406"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>