<?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>205774</bug_id>
          
          <creation_ts>2020-01-04 19:08:19 -0800</creation_ts>
          <short_desc>[WebCore] Shrink sizeof(RuleFeature)</short_desc>
          <delta_ts>2020-01-06 11:00:32 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1602810</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-04 19:08:19 -0800</bug_when>
    <thetext>[WebCore] Shrink sizeof(RuleFeature)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602811</commentid>
    <comment_count>1</comment_count>
      <attachid>386779</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-04 19:11:59 -0800</bug_when>
    <thetext>Created attachment 386779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602812</commentid>
    <comment_count>2</comment_count>
      <attachid>386779</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-04 19:15:22 -0800</bug_when>
    <thetext>Comment on attachment 386779
Patch

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

&gt; Source/WebCore/style/RuleFeature.h:42
&gt;  struct RuleFeature {

I&apos;m still thinking about further reduction of size.
1. matchElement is used in some specific places. Most of RuleFeature does not have this.
2. selectorListIndex is only used for CSSJIT. I think we could remove it, move it to other place, or recalculate it.
3. We could use PackedRefPtr&lt;const StyleRule&gt;, which is 6 byte.
If we do that, we could make RuleFeature,

struct RuleFeature {
    PackedRefPtr&lt;const StyleRule&gt; styleRule;
    uint16_t selectorIndex;
}; 

Then, sizeof(RuleFeature) is 8 bytes. For now, I postpone this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602894</commentid>
    <comment_count>3</comment_count>
      <attachid>386779</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-01-05 14:55:53 -0800</bug_when>
    <thetext>Comment on attachment 386779
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        We noticed that Vector&lt;RuleFeature&gt; is frequently allocated and kept. While sizeof(RuleFeature) is 32,

What sort of memory usage did you see here in the worst cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603142</commentid>
    <comment_count>4</comment_count>
      <attachid>386779</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-06 10:56:11 -0800</bug_when>
    <thetext>Comment on attachment 386779
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        We noticed that Vector&lt;RuleFeature&gt; is frequently allocated and kept. While sizeof(RuleFeature) is 32,
&gt; 
&gt; What sort of memory usage did you see here in the worst cases?

In Gmail, it is using 100KB + 56KB + ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603147</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-06 10:59:43 -0800</bug_when>
    <thetext>Committed r254065: &lt;https://trac.webkit.org/changeset/254065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603148</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-06 11:00:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/58347222&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386779</attachid>
            <date>2020-01-04 19:11:59 -0800</date>
            <delta_ts>2020-01-05 14:42:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205774-20200104191159.patch</filename>
            <type>text/plain</type>
            <size>8910</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFhM2VlMTA1Yzc5ZmEz
ZDRhMTMyMWIyODMwOWEyMmU2N2Q4M2NjYS4uNzhhMTFjNDkyYTc0ZGYzMjMwMjRmOWFiZmNhOTQw
Nzc3ZDQ0ZmVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTAxLTA0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdIFNocmlu
ayBzaXplb2YoUnVsZUZlYXR1cmUpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU3NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSBub3RpY2VkIHRoYXQgVmVjdG9yPFJ1bGVGZWF0dXJlPiBpcyBmcmVx
dWVudGx5IGFsbG9jYXRlZCBhbmQga2VwdC4gV2hpbGUgc2l6ZW9mKFJ1bGVGZWF0dXJlKSBpcyAz
MiwKKworICAgICAgICAxLiBSdWxlRmVhdHVyZTo6aW52YWxpZGF0aW9uU2VsZWN0b3IgaXMgbnVs
bHB0ciBiYXNpY2FsbHkuIEl0IGlzIHVzZWQgb25seSBmb3Igc29tZSBzcGVjaWZpYyBjYXNlcy4K
KyAgICAgICAgMi4gUnVsZUZlYXR1cmU6OnNlbGVjdG9ySW5kZXggYW5kIFJ1bGVGZWF0dXJlOjpz
ZWxlY3Rvckxpc3RJbmRleCBpcyBgdW5zaWduZWRgLiBCdXQgdGhleSBuZXZlciBleGNlZWQgYHVp
bnQxNl90YCBzaW5jZQorICAgICAgICAgICBib3RoIHZhbHVlcyBhcmUgZGVyaXZlZCBmcm9tIFJ1
bGVEYXRhOjptX3NlbGVjdG9ySW5kZXggYW5kIFJ1bGVEYXRhOjptX3NlbGVjdG9yTGlzdEluZGV4
IGFuZCBib3RoIGFyZSBgdWludDE2X3RgIHNpemUuCisgICAgICAgIDMuIE9wdGlvbmFsPE1hdGNo
RWxlbWVudD4gdGFrZXMgOCBieXRlcyBzaW5jZSBzaXplb2YoTWF0Y2hFbGVtZW50KSBpcyA0LiBC
dXQgd2UgY2FuIG1ha2UgaXQgMSBieXRlLgorCisgICAgICAgIEdpdmVuIHRoZSBhYm92ZSBvYnNl
cnZhdGlvbnMsIHRoaXMgcGF0Y2ggaW50cm9kdWNlZCBSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRp
b25TZWxlY3Rvciwgd2hpY2ggaXMgUnVsZUZlYXR1cmUgKyBpbnZhbGlkYXRpb25TZWxlY3Rvci4K
KyAgICAgICAgQW5kIGtlZXAgdXNpbmcgUnVsZUZlYXR1cmUgaWYgaW52YWxpZGF0aW9uU2VsZWN0
b3IgaXMgdW5uZWNlc3NhcnkuIEJ5IGFwcGx5aW5nICgyKSBhbmQgKDMpJ3Mgb3B0aW1pemF0aW9u
cywgd2UgY2FuIG5vdyBtYWtlCisgICAgICAgIHNpemVvZihSdWxlRmVhdHVyZSkgMTYsIDUwJSBy
ZWR1Y3Rpb24uCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogc3R5
bGUvUnVsZURhdGEuaDoKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UnVsZUZlYXR1cmU6OlJ1bGVGZWF0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6YWRkKToKKyAgICAgICAgKiBzdHlsZS9S
dWxlRmVhdHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlV2l0aElu
dmFsaWRhdGlvblNlbGVjdG9yOjpSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rvcik6
CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyk6CisKIDIwMjAtMDEtMDQgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGlPUyBTaW11bGF0b3IgdG8gQU5HTEUgYmFja2VuZCBmb3IgV2ViR0wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRGF0YS5oCmluZGV4IGJlZjA3ZjFjYzlhNTA1MjQ1YWVjZDA5MGIzOTA0ZjJlZjRlYTA2MDcu
LmM4MzM0MjQ4M2IzMGVmOWEwZjAxY2RkYjJiMjJhNzJlMjMyMTM2MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
UnVsZURhdGEuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBSdWxlRGF0YSB7CiAKIHByaXZhdGU6
CiAgICAgUmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4gbV9zdHlsZVJ1bGU7CisgICAgLy8gS2VlcCBp
biBzeW5jIHdpdGggUnVsZUZlYXR1cmUncyBzZWxlY3RvckluZGV4IGFuZCBzZWxlY3Rvckxpc3RJ
bmRleCBzaXplLgogICAgIHVuc2lnbmVkIG1fc2VsZWN0b3JJbmRleCA6IDE2OwogICAgIHVuc2ln
bmVkIG1fc2VsZWN0b3JMaXN0SW5kZXggOiAxNjsKICAgICAvLyBUaGlzIG51bWJlciB3YXMgcGlj
a2VkIGZhaXJseSBhcmJpdHJhcmlseS4gV2UgY2FuIHByb2JhYmx5IGxvd2VyIGl0IGlmIHdlIG5l
ZWQgdG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKaW5kZXggOTM2ZTZiYjg4Mjhi
NzQ2NDg2NTVkMTA2YzNhMWMxMzlhNThmYTIwZC4uN2RmZmRhZWMwYjZlNjIzMTllYjRmMDA1YTg2
ODI5ZGFmNDgzOWRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmNwcApAQCAtNTUs
MTMgKzU1LDE0IEBAIHN0YXRpYyBib29sIGlzU2libGluZ09yU3ViamVjdChNYXRjaEVsZW1lbnQg
bWF0Y2hFbGVtZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUnVsZUZlYXR1cmU6OlJ1bGVG
ZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSwgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBt
YXRjaEVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvcikKK1J1
bGVGZWF0dXJlOjpSdWxlRmVhdHVyZShjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIE9wdGlvbmFs
PE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50KQogICAgIDogc3R5bGVSdWxlKCZydWxlRGF0YS5z
dHlsZVJ1bGUoKSkKICAgICAsIHNlbGVjdG9ySW5kZXgocnVsZURhdGEuc2VsZWN0b3JJbmRleCgp
KQogICAgICwgc2VsZWN0b3JMaXN0SW5kZXgocnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSkK
ICAgICAsIG1hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpCi0gICAgLCBpbnZhbGlkYXRpb25TZWxl
Y3RvcihpbnZhbGlkYXRpb25TZWxlY3RvcikKIHsKKyAgICBBU1NFUlQoc2VsZWN0b3JJbmRleCA9
PSBydWxlRGF0YS5zZWxlY3RvckluZGV4KCkpOworICAgIEFTU0VSVChzZWxlY3Rvckxpc3RJbmRl
eCA9PSBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpKTsKIH0KIAogTWF0Y2hFbGVtZW50IFJ1
bGVGZWF0dXJlU2V0Ojpjb21wdXRlTmV4dE1hdGNoRWxlbWVudChNYXRjaEVsZW1lbnQgbWF0Y2hF
bGVtZW50LCBDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIHJlbGF0aW9uKQpAQCAtMTkzLDcgKzE5
NCw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0
YSYgcnVsZURhdGEpCiAgICAgICAgIGF1dG8qIHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRjaC5m
aXJzdDsKICAgICAgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNlY29u
ZDsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5s
b2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBbXSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9y
Pj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoeyBydWxlRGF0YSwgbWF0
Y2hFbGVtZW50LCBzZWxlY3RvciB9KTsKICAgICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRj
aEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQo
c2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCkpOwpAQCAtMjE4LDcgKzIxOSw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBS
dWxlRmVhdHVyZVNldCYgb3RoZXIpCiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90
aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVuc3VyZShrZXlW
YWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8
UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1
bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4oKTsKICAgICAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAg
IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9z
dC5iZWdpbigpLCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUnVsZUZlYXR1cmUuaAppbmRleCAzNzc2Yjc4OWI3ZGI0OTBhYzk3YzBlOTlhNDQ1MzZi
ZTNmYTc0YzAzLi5jYzY3ZjNmYjAxMmNmZDZmM2MxMjI4YTkxZDYyNjllOGFlZTM4MzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJlLmgKQEAgLTM2LDE2ICszNiwyNSBAQCBuYW1lc3BhY2Ug
U3R5bGUgewogCiBjbGFzcyBSdWxlRGF0YTsKIAotZW51bSBjbGFzcyBNYXRjaEVsZW1lbnQgeyBT
dWJqZWN0LCBQYXJlbnQsIEFuY2VzdG9yLCBEaXJlY3RTaWJsaW5nLCBJbmRpcmVjdFNpYmxpbmcs
IEFueVNpYmxpbmcsIFBhcmVudFNpYmxpbmcsIEFuY2VzdG9yU2libGluZywgSG9zdCB9OworZW51
bSBjbGFzcyBNYXRjaEVsZW1lbnQgOiB1aW50OF90IHsgU3ViamVjdCwgUGFyZW50LCBBbmNlc3Rv
ciwgRGlyZWN0U2libGluZywgSW5kaXJlY3RTaWJsaW5nLCBBbnlTaWJsaW5nLCBQYXJlbnRTaWJs
aW5nLCBBbmNlc3RvclNpYmxpbmcsIEhvc3QgfTsKIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXRjaEVs
ZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNYXRjaEVsZW1lbnQ6Okhvc3QpICsg
MTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlIHsKLSAgICBSdWxlRmVhdHVyZShjb25zdCBSdWxlRGF0
YSYsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBXVEY6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVj
dG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpOworICAgIFJ1bGVGZWF0dXJlKGNv
bnN0IFJ1bGVEYXRhJiwgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiA9IFdURjo6bnVsbG9wdCk7CiAK
ICAgICBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPiBzdHlsZVJ1bGU7Ci0gICAgdW5zaWduZWQgc2Vs
ZWN0b3JJbmRleDsKLSAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleDsKKyAgICB1aW50MTZf
dCBzZWxlY3RvckluZGV4OyAvLyBLZWVwIGluIHN5bmMgd2l0aCBSdWxlRGF0YSdzIHNlbGVjdG9y
SW5kZXggc2l6ZS4KKyAgICB1aW50MTZfdCBzZWxlY3Rvckxpc3RJbmRleDsgLy8gS2VlcCBpbiBz
eW5jIHdpdGggUnVsZURhdGEncyBzZWxlY3Rvckxpc3RJbmRleCBzaXplLgogICAgIE9wdGlvbmFs
PE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50IHsgfTsKK307CitzdGF0aWNfYXNzZXJ0KHNpemVv
ZihSdWxlRmVhdHVyZSkgPD0gMTYsICJSdWxlRmVhdHVyZSBpcyBhIGZycXVlbnRseSBhbG9jYXRl
ZCBvYmplY3QuIEtlZXAgaXQgc21hbGwuIik7CisKK3N0cnVjdCBSdWxlRmVhdHVyZVdpdGhJbnZh
bGlkYXRpb25TZWxlY3RvciA6IHB1YmxpYyBSdWxlRmVhdHVyZSB7CisgICAgUnVsZUZlYXR1cmVX
aXRoSW52YWxpZGF0aW9uU2VsZWN0b3IoY29uc3QgUnVsZURhdGEmIGRhdGEsIE9wdGlvbmFsPE1h
dGNoRWxlbWVudD4gbWF0Y2hFbGVtZW50ID0gV1RGOjpudWxsb3B0LCBjb25zdCBDU1NTZWxlY3Rv
ciogaW52YWxpZGF0aW9uU2VsZWN0b3IgPSBudWxscHRyKQorICAgICAgICA6IFJ1bGVGZWF0dXJl
KGRhdGEsIFdURk1vdmUobWF0Y2hFbGVtZW50KSkKKyAgICAgICAgLCBpbnZhbGlkYXRpb25TZWxl
Y3RvcihpbnZhbGlkYXRpb25TZWxlY3RvcikKKyAgICB7IH0KKwogICAgIGNvbnN0IENTU1NlbGVj
dG9yKiBpbnZhbGlkYXRpb25TZWxlY3RvciB7IG51bGxwdHIgfTsKIH07CiAKQEAgLTY1LDcgKzc0
LDcgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICBWZWN0b3I8UnVsZUZlYXR1cmU+IHVu
Y29tbW9uQXR0cmlidXRlUnVsZXM7CiAgICAgCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+IGNsYXNzUnVsZXM7Ci0gICAgSGFzaE1h
cDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+IGF0dHJp
YnV0ZVJ1bGVzOworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rvcj4+PiBhdHRyaWJ1dGVSdWxlczsK
ICAgICBIYXNoU2V0PEF0b21TdHJpbmc+IGNsYXNzZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hT
ZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCmluZGV4IGU4YmIyOWM0ZDhiZGJmZTcxMjlk
NzFkNjU5M2Y5MWYxNzFiNmYzYjEuLmUzMTNkMDIyOWE2MDg3NzRhNWNlMGMwMWMzYTIwYTI3NzM3
ZjM2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApA
QCAtMjAxLDcgKzIwMSw4IEBAIHZvaWQgU2NvcGVSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzKCkg
Y29uc3QKICAgICBtX2ZlYXR1cmVzLnNocmlua1RvRml0KCk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8
SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0
b21TdHJpbmcmIGtleSwgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4mIHJ1bGVTZXRNYXAsIGNvbnN0IEhhc2hNYXA8QXRvbVN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZT4+PiYgcnVsZUZlYXR1cmVz
KQordGVtcGxhdGU8dHlwZW5hbWUgUnVsZUZlYXR1cmVUeXBlPgorc3RhdGljIFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0
cmluZyYga2V5LCBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52
YWxpZGF0aW9uUnVsZVNldD4+PiYgcnVsZVNldE1hcCwgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlVHlwZT4+PiYgcnVsZUZlYXR1cmVz
KQogewogICAgIHJldHVybiBydWxlU2V0TWFwLmVuc3VyZShrZXksIFsmXSAoKSAtPiBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PiB7CiAgICAgICAgIGF1dG8qIGZl
YXR1cmVzID0gcnVsZUZlYXR1cmVzLmdldChrZXkpOwpAQCAtMjE2LDggKzIxNywxMCBAQCBzdGF0
aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAgaWYgKCFydWxlU2V0KQogICAgICAgICAg
ICAgICAgIHJ1bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHJ1bGVTZXQt
PmFkZFJ1bGUoKmZlYXR1cmUuc3R5bGVSdWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1
cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwotICAgICAgICAgICAgaWYgKGZlYXR1cmUuaW52YWxpZGF0
aW9uU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVth
cnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CisgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxSdWxlRmVhdHVyZVR5cGUsIFJ1bGVGZWF0
dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPjo6dmFsdWUpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKKyAgICAgICAgICAgICAgICAgICAgaW52
YWxpZGF0aW9uU2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlk
YXRpb25TZWxlY3Rvcik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYXV0byBp
bnZhbGlkYXRpb25SdWxlU2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVT
ZXQ+PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hFbGVtZW50QXJy
YXkuc2l6ZSgpOyArK2kpIHsK
</data>
<flag name="review"
          id="402541"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>