<?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>201613</bug_id>
          
          <creation_ts>2019-09-09 14:03:34 -0700</creation_ts>
          <short_desc>[JSC] Use metadata table to iterate specific bytecode metadata instead of propertyAccessInstructions vector</short_desc>
          <delta_ts>2019-09-09 22:17:25 -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>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>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1569286</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 14:03:34 -0700</bug_when>
    <thetext>[JSC] Use metadata table to iterate specific bytecode metadata instead of propertyAccessInstructions vector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569288</commentid>
    <comment_count>1</comment_count>
      <attachid>378407</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 14:05:48 -0700</bug_when>
    <thetext>Created attachment 378407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569294</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 14:14:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55170668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569304</commentid>
    <comment_count>3</comment_count>
      <attachid>378407</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-09 14:26:32 -0700</bug_when>
    <thetext>Comment on attachment 378407
Patch

I like it.  The code is cleaner now.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569305</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 14:38:22 -0700</bug_when>
    <thetext>Committed r249668: &lt;https://trac.webkit.org/changeset/249668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569448</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 22:10:23 -0700</bug_when>
    <thetext>This is causing RAMification regression, and this is a bit pathological.
The problem is that LuaJSFight&apos;s list related tests. These tests are getting more memory right now. It is because sizeof(UnlinkedCodeBlock) is changed from 256 to 240.

When calculating sizeClass, we are manually adding sizeof(UnlinkedCodeBlock) to size class (256 previously). This is old code, and interestingly, this 256 size class works really well.

But now, added size-class becomes 240. And this difference causes memory increase in LuaJSFight list related tests.

Possible solution is adding 256 to size-class list directly, but I&apos;m not sure about whether we should do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569452</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-09 22:17:25 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #5)
&gt; This is causing RAMification regression, and this is a bit pathological.
&gt; The problem is that LuaJSFight&apos;s list related tests. These tests are getting
&gt; more memory right now. It is because sizeof(UnlinkedCodeBlock) is changed
&gt; from 256 to 240.
&gt; 
&gt; When calculating sizeClass, we are manually adding sizeof(UnlinkedCodeBlock)
&gt; to size class (256 previously). This is old code, and interestingly, this
&gt; 256 size class works really well.
&gt; 
&gt; But now, added size-class becomes 240. And this difference causes memory
&gt; increase in LuaJSFight list related tests.
&gt; 
&gt; Possible solution is adding 256 to size-class list directly, but I&apos;m not
&gt; sure about whether we should do.

https://bugs.webkit.org/show_bug.cgi?id=201631</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378407</attachid>
            <date>2019-09-09 14:05:48 -0700</date>
            <delta_ts>2019-09-09 14:26:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201613-20190909140547.patch</filename>
            <type>text/plain</type>
            <size>21739</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZWM5MTUzZGI3ZmEwNjM5MDdjMTU4ZTYwM2M5ZDE2N2I0ZWY3N2E5Li5hNTBiYTJiMzUyMzViYWY4
YTc3YzM2ZjRjNDUxZTMzMjE3OGU2NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxOS0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFVzZSBtZXRhZGF0YSB0YWJsZSB0byBpdGVyYXRlIHNwZWNpZmlj
IGJ5dGVjb2RlIG1ldGFkYXRhIGluc3RlYWQgb2YgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMg
dmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDE2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBkbyBub3QgbmVlZCB0byBtYWludGFpbiBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucyB2ZWN0
b3IgdG8gYWNjZXNzIG1ldGFkYXRhIHRpZWQgdG8gYSBzcGVjaWZpYyBieXRlY29kZSBvcGNvZGUK
KyAgICAgICAgc2luY2Ugd2UgaGF2ZSBNZXRhZGF0YVRhYmxlOjpmb3JFYWNoPE9wPiBmZWF0dXJl
LiBUaGlzIHJlbW92ZXMgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgZW50aXJlbHksIGFuZCBm
aXhlcyB0aGUKKyAgICAgICAgaXNzdWUgdGhhdCBgb3BfY3JlYXRlX3Byb21pc2VgIG1pc3NlZCBw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucyByZWdpc3RyYXRpb24gKGEgbmFtZSAicHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMiIGlzCisgICAgICAgIG1pc2xlYWRpbmcsIGl0IGlzIGxpa2UgImlu
c3RydWN0aW9ucy1yZXF1aXJlcy1sbGludC1maW5hbGl6ZSIpLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcm9wYWdhdGVUcmFu
c2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNh
Y2hlcyk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjph
ZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6Om51bWJlck9mUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UmVzb2x2ZVNjb3BlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRGcm9tU2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRv
U2NvcGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5j
cHA6CisgICAgICAgIChKU0M6OkNhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tUeXBlPjo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ29kZUJsb2NrPENvZGVCbG9ja1R5cGU+Ojpl
bmNvZGUpOgorCiAyMDE5LTA5LTA5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0pTQ10gUHJvbWlzZSByZXNvbHZlL3JlamVjdCBmdW5jdGlvbnMgc2hvdWxk
IGJlIGNyZWF0ZWQgbW9yZSBlZmZpY2llbnRseQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAyOTQzYjJiMTAwM2M1ZjhmMWEzMGNlNTY1MjY4NGQ0
NDM2ZTc4ZWEzLi45NjJkNGQyYjE4MjYxODI0MDUzZGNiNTQ1YTNmYThmZGU2NzJkMWM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTA4OCwy
NCArMTA4OCwxOSBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgU2xvdFZpc2l0b3ImIHZpcwogICAgIFZNJiB2bSA9ICptX3Zt
OwogCiAgICAgaWYgKGppdFR5cGUoKSA9PSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rKSB7Ci0g
ICAgICAgIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiYgcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3VubGlua2VkQ29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnMoKTsKLSAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9uU3Ry
ZWFtID0gaW5zdHJ1Y3Rpb25zKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvblN0cmVhbS5hdChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uc1tpXSk7Ci0gICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24tPmlzPE9wUHV0QnlJZD4oKSkg
ewotICAgICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
QnlJZD4oKS5tZXRhZGF0YSh0aGlzKTsKKyAgICAgICAgaWYgKG1fbWV0YWRhdGEpIHsKKyAgICAg
ICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX29sZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBpZiAo
IW9sZFN0cnVjdHVyZUlEIHx8ICFuZXdTdHJ1Y3R1cmVJRCkKLSAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9CiAgICAgICAgICAgICAgICAgICAgIHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPQogICAgICAgICAgICAgICAgICAgICB2bS5oZWFwLnN0cnVj
dHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOwogICAgICAgICAgICAgICAgIGlmICh2
bS5oZWFwLmlzTWFya2VkKG9sZFN0cnVjdHVyZSkpCiAgICAgICAgICAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWQobmV3U3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMjA2LDEzMCArMTIwMSwxMDQgQEAgdm9pZCBDb2RlQmxvY2s6OmRldGVybWluZUxpdmVu
ZXNzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXNpdG8KIHZvaWQg
Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIHsKICAgICBWTSYgdm0gPSAq
bV92bTsKLSAgICBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4mIHByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25zID0gbV91bmxpbmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zKCk7CiAKLSAgICBhdXRvIGhhbmRsZUdldFB1dEZyb21TY29wZSA9IFsmXSAoYXV0
byYgbWV0YWRhdGEpIHsKLSAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvID0gbWV0YWRhdGEu
bV9nZXRQdXRJbmZvOwotICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IEds
b2JhbFZhciB8fCBnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyAKLSAgICAgICAgICAgIHx8IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9
PSBMb2NhbENsb3N1cmVWYXIgfHwgZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IEdsb2JhbExl
eGljYWxWYXIgfHwgZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4mIHN0cnVjdHVyZSA9IG1ldGFkYXRhLm1fc3RydWN0dXJl
OwotICAgICAgICBpZiAoIXN0cnVjdHVyZSB8fCB2bS5oZWFwLmlzTWFya2VkKHN0cnVjdHVyZS5n
ZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
T1NSKCkpCi0gICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgc2NvcGUgYWNjZXNzIHdpdGgg
c3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgc3RydWN0dXJlLmNs
ZWFyKCk7Ci0gICAgfTsKKyAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQxOAorICAgICAgICAv
LyBXZSBuZWVkIHRvIGFkZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9o
b2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2NvcGUgcmVzb2x1dGlv
bi4KIAotICAgIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJiBpbnN0cnVjdGlvblN0cmVhbSA9IGlu
c3RydWN0aW9ucygpOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBwcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8gY3VySW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvblN0cmVhbS5hdChwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXSk7Ci0gICAgICAgIHN3aXRjaCAoY3VySW5zdHJ1Y3Rpb24tPm9wY29kZUlE
KCkpIHsKLSAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKLSAgICAgICAgICAgIGF1dG8mIG1l
dGFkYXRhID0gY3VySW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YSh0aGlzKTsK
KyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdl
dEJ5SWRNb2RlOjpEZWZhdWx0KQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAg
ICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgcHJvcGVy
dHkgYWNjZXNzLlxuIik7CiAgICAgICAgICAgICBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUobWV0YWRhdGEpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfZGly
ZWN0OiB7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxP
cEdldEJ5SWREaXJlY3Q+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgIH0pOworCisgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8T3BHZXRCeUlkRGlyZWN0PihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
c3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAu
aXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKSkp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
RigiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzLlxuIik7CiAgICAgICAgICAgICBtZXRh
ZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0g
MDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOiB7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5hczxP
cFB1dEJ5SWQ+KCkubWV0YWRhdGEodGhpcyk7CisgICAgICAgIH0pOworCisgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BQdXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fb2xkU3RydWN0dXJl
SUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
bmV3U3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBtZXRh
ZGF0YS5tX3N0cnVjdHVyZUNoYWluLmdldCgpOwogICAgICAgICAgICAgaWYgKCghb2xkU3RydWN0
dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
b2xkU3RydWN0dXJlSUQpKSkKICAgICAgICAgICAgICAgICAmJiAoIW5ld1N0cnVjdHVyZUlEIHx8
IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVj
dHVyZUlEKSkpCiAgICAgICAgICAgICAgICAgJiYgKCFjaGFpbiB8fCB2bS5oZWFwLmlzTWFya2Vk
KGNoYWluKSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgcHV0IHRyYW5zaXRpb24uXG4iKTsKICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fb2xkU3RydWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEu
bV9vZmZzZXQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRCA9IDA7
CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUNoYWluLmNsZWFyKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQxOAotICAgICAgICAvLyBXZSBuZWVkIHRvIGFk
ZCBvcHRpbWl6YXRpb25zIGZvciBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2Rl
Y2xfaW5fZXZhbCB0byBkbyBsaW5rIHRpbWUgc2NvcGUgcmVzb2x1dGlvbi4KLSAgICAgICAgY2Fz
ZSBvcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbDoKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKLSAgICAgICAgICAgIGF1
dG8mIG1ldGFkYXRhID0gY3VySW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKHRo
aXMpOworICAgICAgICB9KTsKKworICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wVG9UaGlz
PihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CiAgICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFi
bGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQotICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgdG9fdGhpcyB3
aXRoIHN0cnVjdHVyZSAlcC5cbiIsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fdG9UaGlzU3RhdHVzID0gbWVyZ2UobWV0YWRhdGEubV90b1RoaXNTdGF0dXMsIFRvVGhp
c0NsZWFyZWRCeUdDKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfY3JlYXRlX3RoaXM6IHsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VySW5z
dHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlVGhpcz4oKS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAg
IGF1dG8mIGNhY2hlV3JpdGVCYXJyaWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7Ci0gICAg
ICAgICAgICBpZiAoIWNhY2hlV3JpdGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFs
aWRhdGVkR2V0KCkgPT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBKU0NlbGwqIGNhY2hlZEZ1bmN0aW9uID0g
Y2FjaGVXcml0ZUJhcnJpZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAodm0uaGVhcC5pc01hcmtl
ZChjYWNoZWRGdW5jdGlvbikpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBp
ZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVh
cmluZyBMTEludCBjcmVhdGVfdGhpcyB3aXRoIGNhY2hlZCBjYWxsZWUgJXAuXG4iLCBjYWNoZWRG
dW5jdGlvbik7Ci0gICAgICAgICAgICBjYWNoZVdyaXRlQmFycmllci5jbGVhcigpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9jcmVhdGVfcHJvbWlzZTog
ewotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BDcmVh
dGVQcm9taXNlPigpLm1ldGFkYXRhKHRoaXMpOworICAgICAgICB9KTsKKworICAgICAgICBhdXRv
IGhhbmRsZUNyZWF0ZUJ5dGVjb2RlID0gWyZdIChhdXRvJiBtZXRhZGF0YSwgQVNDSUlMaXRlcmFs
IG5hbWUpIHsKICAgICAgICAgICAgIGF1dG8mIGNhY2hlV3JpdGVCYXJyaWVyID0gbWV0YWRhdGEu
bV9jYWNoZWRDYWxsZWU7CiAgICAgICAgICAgICBpZiAoIWNhY2hlV3JpdGVCYXJyaWVyIHx8IGNh
Y2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVkR2V0KCkgPT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVD
YWxsZWVPYmplY3RzKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgSlNDZWxsKiBjYWNoZWRGdW5jdGlvbiA9IGNhY2hlV3JpdGVC
YXJyaWVyLmdldCgpOwogICAgICAgICAgICAgaWYgKHZtLmhlYXAuaXNNYXJrZWQoY2FjaGVkRnVu
Y3Rpb24pKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQg
Y3JlYXRlX3Byb21pc2Ugd2l0aCBjYWNoZWQgY2FsbGVlICVwLlxuIiwgY2FjaGVkRnVuY3Rpb24p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSwgIkNsZWFyaW5nIExMSW50ICIsIG5hbWUsICIgd2l0aCBjYWNoZWQg
Y2FsbGVlICIsIFJhd1BvaW50ZXIoY2FjaGVkRnVuY3Rpb24pLCAiLiIpOwogICAgICAgICAgICAg
Y2FjaGVXcml0ZUJhcnJpZXIuY2xlYXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogeworICAgICAgICB9OworCisgICAgICAg
IG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDcmVhdGVUaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CisgICAgICAgICAgICBoYW5kbGVDcmVhdGVCeXRlY29kZShtZXRhZGF0YSwgIm9wX2NyZWF0ZV90
aGlzIl9zKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BDcmVh
dGVQcm9taXNlPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBoYW5kbGVDcmVh
dGVCeXRlY29kZShtZXRhZGF0YSwgIm9wX2NyZWF0ZV9wcm9taXNlIl9zKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFJlc29sdmVTY29wZT4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewogICAgICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgaXNuJ3Qgc3RyaWN0
bHkgbmVjZXNzYXJ5LiBBbnkgc3ltYm9sIHRhYmxlcyB0aGF0IHRoaXMgd2lsbCByZWZlciB0bwog
ICAgICAgICAgICAgLy8gYXJlIGZvciBvdXRlciBmdW5jdGlvbnMsIGFuZCB3ZSByZWZlciB0byB0
aG9zZSBmdW5jdGlvbnMgc3Ryb25nbHksIGFuZCB0aGV5IHJlZmVyCiAgICAgICAgICAgICAvLyB0
byB0aGUgc3ltYm9sIHRhYmxlIHN0cm9uZ2x5LiBCdXQgaXQncyBuaWNlIHRvIGJlIG9uIHRoZSBz
YWZlIHNpZGUuCi0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1ckluc3RydWN0aW9uLT5h
czxPcFJlc29sdmVTY29wZT4oKS5tZXRhZGF0YSh0aGlzKTsKICAgICAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8U3ltYm9sVGFibGU+JiBzeW1ib2xUYWJsZSA9IG1ldGFkYXRhLm1fc3ltYm9sVGFi
bGU7CiAgICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxlIHx8IHZtLmhlYXAuaXNNYXJrZWQoc3lt
Ym9sVGFibGUuZ2V0KCkpKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIGRlYWQgc3ltYm9sVGFibGUgJXAuXG4iLCBzeW1i
b2xUYWJsZS5nZXQoKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS5jbGVhcigpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZToK
LSAgICAgICAgICAgIGhhbmRsZUdldFB1dEZyb21TY29wZShjdXJJbnN0cnVjdGlvbi0+YXM8T3BH
ZXRGcm9tU2NvcGU+KCkubWV0YWRhdGEodGhpcykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgotICAgICAgICAgICAgaGFuZGxlR2V0UHV0RnJvbVNj
b3BlKGN1ckluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCkubWV0YWRhdGEodGhpcykpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGN1ckluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwotICAgICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQob3Bjb2RlSUQsIGZhbHNlLCAiVW5oYW5kbGVkIG9wY29k
ZSBpbiBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5LCAlcyglZCkgYXQgYmMgJXUi
LCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sIG9wY29kZUlELCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uc1tpXSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBoYW5kbGVH
ZXRQdXRGcm9tU2NvcGUgPSBbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBHZXRQ
dXRJbmZvIGdldFB1dEluZm8gPSBtZXRhZGF0YS5tX2dldFB1dEluZm87CisgICAgICAgICAgICBp
ZiAoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IEdsb2JhbFZhciB8fCBnZXRQdXRJbmZvLnJl
c29sdmVUeXBlKCkgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcworICAgICAgICAg
ICAgICAgIHx8IGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSA9PSBMb2NhbENsb3N1cmVWYXIgfHwg
Z2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IEdsb2JhbExleGljYWxWYXIgfHwgZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8
U3RydWN0dXJlPiYgc3RydWN0dXJlID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmU7CisgICAgICAgICAg
ICBpZiAoIXN0cnVjdHVyZSB8fCB2bS5oZWFwLmlzTWFya2VkKHN0cnVjdHVyZS5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgc2NvcGUgYWNjZXNzIHdp
dGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIHN0cnVj
dHVyZS5jbGVhcigpOworICAgICAgICB9OworCisgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8
T3BHZXRGcm9tU2NvcGU+KGhhbmRsZUdldFB1dEZyb21TY29wZSk7CisgICAgICAgIG1fbWV0YWRh
dGEtPmZvckVhY2g8T3BQdXRUb1Njb3BlPihoYW5kbGVHZXRQdXRGcm9tU2NvcGUpOwogICAgIH0K
IAogICAgIC8vIFdlIGNhbid0IGp1c3QgcmVtb3ZlIGFsbCB0aGUgc2V0cyB3aGVuIHdlIGNsZWFy
IHRoZSBjYWNoZXMgc2luY2Ugd2UgbWlnaHQgaGF2ZSBjcmVhdGVkIGEgd2F0Y2hwb2ludCBzZXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDJkNDliNTViNDBlMGRjNDgxYWQ1ZjAxMjY0NDgzNDU3NDQ2YmIyNWQuLjEx
NjMxNjFhZGFmMTliOTNlYWYwZmMzNTg5ZWY2ZTdiYmI0ODQ1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMzYz
LDkgKzM2Myw2IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5
dGVjb2RlUmV3cml0ZXImIHJld3JpdGVyLCBJbnN0cnVjdGlvCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBy
ZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNldChtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldKTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXpl
KCk7ICsraSkKICAgICAgICAgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9
IHJld3JpdGVyLmFkanVzdEFic29sdXRlT2Zmc2V0KG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1
Y3Rpb25PZmZzZXQpOwogCkBAIC0zODIsNyArMzc5LDYgQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9j
azo6c2hyaW5rVG9GaXQoKQogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7
CiAgICAgCiAgICAgbV9qdW1wVGFyZ2V0cy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2lkZW50aWZpZXJzLnNocmlu
a1RvRml0KCk7CiAgICAgbV9jb25zdGFudFJlZ2lzdGVycy5zaHJpbmtUb0ZpdCgpOwogICAgIG1f
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uLnNocmlua1RvRml0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4
IDY3Mzc4ZTEyNThlZDhlYzNhNmU2MDA4NTgxYTkwZjYxNDFlOGIzMzAuLjVkYTlhMmZiODM4NWEz
ODQ2N2U3MWU1MjFiZDg0ZWRkNzA2N2YwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0yNzcsMTQgKzI3Nyw2IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHRoaXNSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGhpc1JlZ2lzdGVyOyB9CiAgICAg
VmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlUmVn
aXN0ZXI7IH0KIAotICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihJbnN0cnVj
dGlvblN0cmVhbTo6T2Zmc2V0IHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCi0gICAgewotICAg
ICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKTsKLSAgICB9Ci0KLSAgICBzaXplX3QgbnVtYmVyT2ZQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMu
c2l6ZSgpOyB9Ci0gICAgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+JiBw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnM7IH0KLQogICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVEYXRhLmdldCgpOyB9CiAKICAgICBpbnQgbGluZU51bWJlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTQ1OSw5ICs0NTEsNiBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIERGRzo6RXhpdFByb2ZpbGUg
bV9leGl0UHJvZmlsZTsKICNlbmRpZgogCi0KLSAgICBWZWN0b3I8SW5zdHJ1Y3Rpb25TdHJlYW06
Ok9mZnNldD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKLQogICAgIC8vIENvbnN0YW50
IFBvb2xzCiAgICAgVmVjdG9yPElkZW50aWZpZXI+IG1faWRlbnRpZmllcnM7CiAgICAgVmVjdG9y
PFdyaXRlQmFycmllcjxVbmtub3duPj4gbV9jb25zdGFudFJlZ2lzdGVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggZWE3YTRhYzQ2MDg3NGY4OWYwOWZjNTY5NDBhNDFiMGIxNjExMjYxNy4uNjg4MzU0
NTYzMGUzZWJlY2ZjNTIwMDRjNTAwZmIyYjcyNGNhNDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTI0OTYsNyArMjQ5Niw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
b2x2ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmCiAgICAgICAgIAogICAg
ICAgICBkc3QgPSB0ZW1wRGVzdGluYXRpb24oZHN0KTsKICAgICAgICAgT3BSZXNvbHZlU2NvcGU6
OmVtaXQodGhpcywga2lsbChkc3QpLCBzY29wZVJlZ2lzdGVyKCksIGFkZENvbnN0YW50KHZhcmlh
YmxlLmlkZW50KCkpLCByZXNvbHZlVHlwZSgpLCBsb2NhbFNjb3BlRGVwdGgoKSk7Ci0gICAgICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKG1fbGFzdEluc3RydWN0
aW9uLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIGRzdDsKICAgICB9CiAgICAgCkBAIC0yNTI1
LDcgKzI1MjQsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyb21T
Y29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjbwogICAgICAgICAgICAgR2V0UHV0
SW5mbyhyZXNvbHZlTW9kZSwgdmFyaWFibGUub2Zmc2V0KCkuaXNTY29wZSgpID8gTG9jYWxDbG9z
dXJlVmFyIDogcmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbiksCiAgICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGgoKSwKICAgICAgICAgICAgIHZhcmlh
YmxlLm9mZnNldCgpLmlzU2NvcGUoKSA/IHZhcmlhYmxlLm9mZnNldCgpLnNjb3BlT2Zmc2V0KCku
b2Zmc2V0KCkgOiAwKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb24obV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gZHN0
OwogICAgIH0gfQogICAgIApAQCAtMjU1OCw3ICsyNTU2LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJp
YWJsZSYKICAgICAgICAgICAgIHN5bWJvbFRhYmxlT3JTY29wZURlcHRoID0gU3ltYm9sVGFibGVP
clNjb3BlRGVwdGg6OnNjb3BlRGVwdGgobG9jYWxTY29wZURlcHRoKCkpOwogICAgICAgICB9CiAg
ICAgICAgIE9wUHV0VG9TY29wZTo6ZW1pdCh0aGlzLCBzY29wZSwgYWRkQ29uc3RhbnQodmFyaWFi
bGUuaWRlbnQoKSksIHZhbHVlLCBnZXRQdXRJbmZvLCBzeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwg
ISFvZmZzZXQgPyBvZmZzZXQub2Zmc2V0KCkgOiAwKTsKLSAgICAgICAgbV9jb2RlQmxvY2stPmFk
ZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24obV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwog
ICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfSB9CiAgICAgCkBAIC0yNjA5LDcgKzI2MDYsNiBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjbwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNl
SW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdp
dGggZ2V0X2J5X3ZhbC4iKTsKIAogICAgIE9wR2V0QnlJZDo6ZW1pdCh0aGlzLCBraWxsKGRzdCks
IGJhc2UsIGFkZENvbnN0YW50KHByb3BlcnR5KSk7Ci0gICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24obV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKQEAgLTI2MjYsNyArMjYyMiw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRl
eGVkIHByb3BlcnRpZXMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCBnZXRfYnlfdmFsX2RpcmVjdC4i
KTsKIAogICAgIE9wR2V0QnlJZERpcmVjdDo6ZW1pdCh0aGlzLCBraWxsKGRzdCksIGJhc2UsIGFk
ZENvbnN0YW50KHByb3BlcnR5KSk7Ci0gICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24obV9sYXN0SW5zdHJ1Y3Rpb24ub2Zmc2V0KCkpOwogICAgIHJldHVybiBkc3Q7
CiB9CiAKQEAgLTI2MzksOCArMjYzNCw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwCiAgICAg
bV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZSwgcHJvcGVydHlJbmRleCk7CiAK
ICAgICBPcFB1dEJ5SWQ6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwgdmFsdWUsIFB1
dEJ5SWROb25lKTsgLy8gaXMgbm90IGRpcmVjdAotICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKG1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpKTsKLQogICAgIHJl
dHVybiB2YWx1ZTsKIH0KIApAQCAtMjY2NSw3ICsyNjU4LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWYKIAogICAgIFB1dEJ5SWRGbGFncyB0eXBlID0gKHB1dFR5cGUgPT0gUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCB8fCBwcm9wZXJ0eSAhPSBtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90bykgPyBQdXRCeUlkSXNEaXJlY3QgOiBQdXRCeUlkTm9uZTsKICAgICBPcFB1dEJ5SWQ6
OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHlJbmRleCwgdmFsdWUsIHR5cGUpOwotICAgIG1fY29k
ZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKG1fbGFzdEluc3RydWN0aW9uLm9m
ZnNldCgpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI4NTEsOCArMjg0Myw2IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyhSZWdpc3RlcklEKiBk
c3QpCiB7CiAgICAgT3BDcmVhdGVUaGlzOjplbWl0KHRoaXMsIGRzdCwgZHN0LCAwKTsKICAgICBt
X3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIuY3JlYXRlVGhpcyhkc3QsIG1fbGFzdEluc3RydWN0aW9u
KTsKLQotICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKG1fbGFz
dEluc3RydWN0aW9uLm9mZnNldCgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC01MTM0LDcg
KzUxMjQsNiBAQCB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OnJlY29yZCgpCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkKIHsKICAgICBPcFRvVGhpczo6ZW1pdCh0aGlz
LCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOwotICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uKG1fbGFzdEluc3RydWN0aW9uLm9mZnNldCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5jcHAKaW5kZXggM2VlMTY2MDA2NzhjNDhmOTYwMmJjMmI3MGU3YjE5MzcwMTQxODBiYy4uNjAz
NWE0OTA5MjZjNGFlNWZjMzMyN2FmZmVkZjQyNzZiOTNmMDY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTgzOCw3ICsxODM4LDYgQEAg
Y2xhc3MgQ2FjaGVkQ29kZUJsb2NrIDogcHVibGljIENhY2hlZE9iamVjdDxDb2RlQmxvY2tUeXBl
PiB7CiAKICAgICBDYWNoZWRQdHI8Q2FjaGVkSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rp
b25zOwogICAgIENhY2hlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBU
YXJnZXRzOwotICAgIENhY2hlZFZlY3RvcjxJbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX3By
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgIENhY2hlZFZlY3RvcjxDYWNoZWRKU1ZhbHVl
PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwogICAgIENhY2hlZFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb24+IG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOwogICAgIENhY2hl
ZFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvPiBtX2V4cHJlc3Npb25JbmZvOwpAQCAtMjA0Myw3
ICsyMDQyLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxDb2RlQmxvY2tU
eXBlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFVubGkKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBMaW5rVGltZUNvbnN0YW50Q291bnQ7IGktLTspCiAgICAgICAgIGNvZGVCbG9jay5tX2xpbmtU
aW1lQ29uc3RhbnRzW2ldID0gbV9saW5rVGltZUNvbnN0YW50c1tpXTsKIAotICAgIG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnMuZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9jay5tX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zKTsKICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLmRlY29kZShkZWNv
ZGVyLCBjb2RlQmxvY2subV9jb25zdGFudFJlZ2lzdGVycywgJmNvZGVCbG9jayk7CiAgICAgbV9j
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24uZGVjb2RlKGRlY29kZXIsIGNvZGVCbG9j
ay5tX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAgICAgbV9leHByZXNzaW9u
SW5mby5kZWNvZGUoZGVjb2RlciwgY29kZUJsb2NrLm1fZXhwcmVzc2lvbkluZm8pOwpAQCAtMjIx
OSw3ICsyMjE3LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIENhY2hlZENvZGVCbG9jazxDb2RlQmxv
Y2tUeXBlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnMKICAgICBtX3NvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5tX3NvdXJjZVVSTERpcmVj
dGl2ZS5pbXBsKCkpOwogCiAgICAgbV9pbnN0cnVjdGlvbnMuZW5jb2RlKGVuY29kZXIsIGNvZGVC
bG9jay5tX2luc3RydWN0aW9ucy5nZXQoKSk7Ci0gICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnMpOwogICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuZW5jb2RlKGVuY29kZXIsIGNvZGVCbG9jay5t
X2NvbnN0YW50UmVnaXN0ZXJzKTsKICAgICBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbi5lbmNvZGUoZW5jb2RlciwgY29kZUJsb2NrLm1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uKTsKICAgICBtX2V4cHJlc3Npb25JbmZvLmVuY29kZShlbmNvZGVyLCBjb2RlQmxv
Y2subV9leHByZXNzaW9uSW5mbyk7Cg==
</data>
<flag name="review"
          id="394026"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>