<?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>211669</bug_id>
          
          <creation_ts>2020-05-09 12:37:03 -0700</creation_ts>
          <short_desc>Add iterator checking to ListHashSet</short_desc>
          <delta_ts>2020-05-18 10:16:22 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211733</see_also>
          <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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1650944</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-09 12:37:03 -0700</bug_when>
    <thetext>Add iterator checking to ListHashSet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650945</commentid>
    <comment_count>1</comment_count>
      <attachid>398934</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-09 12:39:33 -0700</bug_when>
    <thetext>Created attachment 398934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650951</commentid>
    <comment_count>2</comment_count>
      <attachid>398934</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2020-05-09 13:07:03 -0700</bug_when>
    <thetext>Comment on attachment 398934
Patch

Is WeakPtr thread safe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650961</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-09 13:48:26 -0700</bug_when>
    <thetext>(In reply to Anders Carlsson from comment #2)
&gt; Is WeakPtr thread safe?

It uses ThreadSafeRefCounted, so I think yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650969</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-09 15:29:55 -0700</bug_when>
    <thetext>Committed r261440: &lt;https://trac.webkit.org/changeset/261440&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398934.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650970</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-09 15:30:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/63057348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650973</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-09 15:47:11 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; (In reply to Anders Carlsson from comment #2)
&gt; &gt; Is WeakPtr thread safe?
&gt; 
&gt; It uses ThreadSafeRefCounted, so I think yes.

WeakPtr&lt;T&gt;::get returns weird results in multi-threaded environment. This is slightly different from `std::weak_ptr&lt;T&gt;::lock()`.
So, in general, it is not encouraged that we use WeakPtr&lt;T&gt; in multi-threading use because it does not work as expected.
However, in this use case, it is OK.

1. T inherits CanMakeWeakPtr&lt;T&gt; and ThreadSafeRefCounted&lt;T&gt;.
2. In thread A, we create Ref&lt;T&gt;.
3. In thread A, we create WeakPtr&lt;T&gt; from Ref&lt;T&gt;
4. We pass WeakPtr&lt;T&gt; to another thread B.
5. B thread is attempting to call WeakPtr&lt;T&gt;::get().
6. At the same time, in thread A, we start destroying Ref&lt;T&gt;.
7. Before (6) calls WeakPtrImpl::clear(), (5) gets a non nullptr T*.
8. Just after (5) gets non nullptr T*, (7) destroys Ref&lt;T&gt; completely.

WeakPtr&lt;T&gt;::get can return a non-nullptr even if the obtained T* is half-destroyed right now.
So, it is possible that we could miss some cases that T* is already destroyed while WeakPtr&lt;T&gt;::get returns non-nullptr.
But since this is for assertion, false-negative is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651371</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-05-11 12:07:22 -0700</bug_when>
    <thetext>Reverted r261440 for reason:

Caused 6 TestWTF.WTF failures

Committed r261486: &lt;https://trac.webkit.org/changeset/261486&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651600</commentid>
    <comment_count>8</comment_count>
      <attachid>399092</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-11 20:24:45 -0700</bug_when>
    <thetext>Created attachment 399092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651601</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-11 20:25:10 -0700</bug_when>
    <thetext>This new patch fixes the TestWTF.WTF failures. Would appreciate review since more has changed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651636</commentid>
    <comment_count>10</comment_count>
      <attachid>399100</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-11 23:04:33 -0700</bug_when>
    <thetext>Created attachment 399100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653650</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-18 10:16:20 -0700</bug_when>
    <thetext>Committed r261818: &lt;https://trac.webkit.org/changeset/261818&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399100.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398934</attachid>
            <date>2020-05-09 12:39:33 -0700</date>
            <delta_ts>2020-05-11 20:24:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211669-20200509123930.patch</filename>
            <type>text/plain</type>
            <size>4318</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVmMWNlNDVhNWQ2NGU5ZGVkOWZiYjM1
NWNjOTA2M2NhY2U5OGE3OGUuLmZmMjQzMzBiNTM2ODE2YWE5NGExOTc2NGUyOGNlMDdkNTRiZTA5
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDUtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpdGVyYXRvciBjaGVja2luZyB0byBMaXN0SGFzaFNl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFzaFNl
dCBhbmQgSGFzaE1hcCBoYXZlIGl0ZXJhdG9yIGNoZWNraW5nIGluIGRlYnVnIGJ1aWxkcy4KKyAg
ICAgICAgQWRkIHNpbWlsYXIgY2hlY2tpbmcgdG8gTGlzdEhhc2hTZXQsIGNvbnRyb2xsZWQgYnkg
dGhlIHNhbWUKKyAgICAgICAgbWFjcm8sIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMuIFVzZSBX
ZWFrUHRyIHRvIG1ha2UgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIHNpbXBsZS4KKworICAg
ICAgICAqIHd0Zi9MaXN0SGFzaFNldC5oOiBNYWtlIExpc3RIYXNoU2V0IGFuZCBMaXN0SGFzaFNl
dE5vZGUgZGVyaXZlCisgICAgICAgIGZyb20gQ2FuTWFrZVdlYWtQdHIuIEFkZCBtX3dlYWtTZXQg
YW5kIG1fd2Vha1Bvc2l0aW9uIG1lbWJlcnMgdG8KKyAgICAgICAgTGlzdEhhc2hTZXRDb25zdEl0
ZXJhdG9yLCBhbmQgYXNzZXJ0IHRoZWlyIHZhbHVlcyBhdCB0aGUgYXBwcm9wcmlhdGUKKyAgICAg
ICAgdGltZXMgc28gd2Ugd2lsbCBnZXQgYSBicmVha3BvaW50IG9yIGNyYXNoLgorCiAyMDIwLTA1
LTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJlYW1saW5l
IE1hcmt1cEFjY3VtdWxhdG9yIHRvIGltcHJvdmUgZWZmaWNpZW5jeSBhIGJpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNo
U2V0LmgKaW5kZXggOGJjZGI3MWVhZTVkYzk4MzQzMmRkZDgwNmYwZWU4MzE0ZGE4MWY5My4uNmE5
YTlkYmI0NzM5MTAzMzlmYjhkODc3NGY3NTIyMjRmMTI1MjY3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvTGlzdEhhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5o
CkBAIC0yMyw2ICsyMywxMCBAQAogCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAorI2lmIENI
RUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXVEYgewogCiAvLyBMaXN0SGFzaFNldDogSnVzdCBsaWtlIEhhc2hTZXQs
IHRoaXMgY2xhc3MgcHJvdmlkZXMgYSBTZXQKQEAgLTQ1LDcgKzQ5LDExIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFZhbHVlQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlOwogdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnM7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yOwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1
bHRIYXNoPFZhbHVlQXJnPjo6SGFzaD4gY2xhc3MgTGlzdEhhc2hTZXQgZmluYWwgewordGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0
SGFzaDxWYWx1ZUFyZz46Okhhc2g+IGNsYXNzIExpc3RIYXNoU2V0IGZpbmFsCisjaWYgQ0hFQ0tf
SEFTSFRBQkxFX0lURVJBVE9SUworICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPExpc3RIYXNo
U2V0PFZhbHVlQXJnLCBIYXNoQXJnPj4KKyNlbmRpZgorewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHJpdmF0ZToKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4g
Tm9kZTsKQEAgLTE2NCwxMSArMTcyLDE0IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV90YWlsIHsg
bnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmc+IHN0cnVjdCBMaXN0
SGFzaFNldE5vZGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgTGlzdEhhc2hTZXROb2RlKFQmJiB2YWx1ZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlCisjaWYgQ0hF
Q0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgIDogQ2FuTWFrZVdlYWtQdHI8TGlzdEhhc2hTZXRO
b2RlPFZhbHVlQXJnPj4KKyNlbmRpZgoreworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpc3RIYXNoU2V0Tm9kZShUJiYgdmFs
dWUpCiAgICAgICAgIDogbV92YWx1ZShzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKQogICAgIHsKICAg
ICB9CkBAIC0yNDcsNiArMjU4LDEwIEBAIHByaXZhdGU6CiAgICAgTGlzdEhhc2hTZXRDb25zdEl0
ZXJhdG9yKGNvbnN0IExpc3RIYXNoU2V0VHlwZSogc2V0LCBOb2RlKiBwb3NpdGlvbikKICAgICAg
ICAgOiBtX3NldChzZXQpCiAgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyNpZiBDSEVD
S19IQVNIVEFCTEVfSVRFUkFUT1JTCisgICAgICAgICwgbV93ZWFrU2V0KG1ha2VXZWFrUHRyKHNl
dCkpCisgICAgICAgICwgbV93ZWFrUG9zaXRpb24obWFrZVdlYWtQdHIocG9zaXRpb24pKQorI2Vu
ZGlmCiAgICAgewogICAgIH0KIApAQCAtMjYzLDYgKzI3OCw5IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QKICAgICB7CisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lU
RVJBVE9SUworICAgICAgICBBU1NFUlQobV93ZWFrUG9zaXRpb24pOworI2VuZGlmCiAgICAgICAg
IHJldHVybiBzdGQ6OmFkZHJlc3NvZihtX3Bvc2l0aW9uLT5tX3ZhbHVlKTsKICAgICB9CiAKQEAg
LTI3MSw4ICsyODksMTQgQEAgcHVibGljOgogCiAgICAgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9y
KysoKQogICAgIHsKKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisgICAgICAgIEFTU0VS
VChtX3dlYWtQb3NpdGlvbik7CisjZW5kaWYKICAgICAgICAgQVNTRVJUKG1fcG9zaXRpb24pOwog
ICAgICAgICBtX3Bvc2l0aW9uID0gbV9wb3NpdGlvbi0+bV9uZXh0OworI2lmIENIRUNLX0hBU0hU
QUJMRV9JVEVSQVRPUlMKKyAgICAgICAgbV93ZWFrUG9zaXRpb24gPSBtYWtlV2Vha1B0cihtX3Bv
c2l0aW9uKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCkBAIC0yODAs
MTEgKzMwNCwxOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3ItLSgp
CiAgICAgeworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgQVNTRVJUKG1f
d2Vha1NldCk7CisgICAgICAgIG1fd2Vha1Bvc2l0aW9uLmdldCgpOworI2VuZGlmCiAgICAgICAg
IEFTU0VSVChtX3Bvc2l0aW9uICE9IG1fc2V0LT5tX2hlYWQpOwogICAgICAgICBpZiAoIW1fcG9z
aXRpb24pCiAgICAgICAgICAgICBtX3Bvc2l0aW9uID0gbV9zZXQtPm1fdGFpbDsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9wb3NpdGlvbiA9IG1fcG9zaXRpb24tPm1fcHJldjsKKyNpZiBD
SEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisgICAgICAgIG1fd2Vha1Bvc2l0aW9uID0gbWFrZVdl
YWtQdHIobV9wb3NpdGlvbik7CisjZW5kaWYKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IApAQCAtMzAzLDggKzMzNCwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE5vZGUqIG5vZGUo
KSB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKLSAgICBjb25zdCBMaXN0SGFzaFNldFR5cGUqIG1f
c2V0OwotICAgIE5vZGUqIG1fcG9zaXRpb247CisgICAgY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBt
X3NldCB7IG51bGxwdHIgfTsKKyAgICBOb2RlKiBtX3Bvc2l0aW9uIHsgbnVsbHB0ciB9OworI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICBXZWFrUHRyPGNvbnN0IExpc3RIYXNoU2V0
VHlwZT4gbV93ZWFrU2V0OworICAgIFdlYWtQdHI8Tm9kZT4gbV93ZWFrUG9zaXRpb247CisjZW5k
aWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hGdW5jdGlvbnM+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399092</attachid>
            <date>2020-05-11 20:24:45 -0700</date>
            <delta_ts>2020-05-11 23:04:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211669-20200511202443.patch</filename>
            <type>text/plain</type>
            <size>23174</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0OGFkMmQwODgyODA1MWVkYzJkMGRm
Mzg1NGYwYTAwNDMwZjUwNjcuLjI1NjVlNzI0MDU5YTZmYmFiMWVkOTIyZjZmNDU5N2QzY2Q5ZDZm
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpdGVyYXRvciBjaGVja2luZyB0byBMaXN0SGFzaFNl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFzaFNl
dCBhbmQgSGFzaE1hcCBoYXZlIGl0ZXJhdG9yIGNoZWNraW5nIGluIGRlYnVnIGJ1aWxkcy4KKyAg
ICAgICAgQWRkIHNpbWlsYXIgY2hlY2tpbmcgdG8gTGlzdEhhc2hTZXQsIGNvbnRyb2xsZWQgYnkg
dGhlIHNhbWUKKyAgICAgICAgbWFjcm8sIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMuIFVzZSBX
ZWFrUHRyIHRvIG1ha2UgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIHNpbXBsZS4KKworICAg
ICAgICAqIHd0Zi9Gb3J3YXJkLmg6IFVwZGF0ZSB0byBhZGQgYSBzZWNvbmQgcGFyYW1ldGVyIHRv
IFdlYWtQdHIuCisgICAgICAgIEFsc28gcmVhcnJhbmdlZCBhbmQgdHdlYWtlZCB0aGUgZmlsZSBh
IGJ1Zy4KKworICAgICAgICAqIHd0Zi9MaXN0SGFzaFNldC5oOiBNYWtlIExpc3RIYXNoU2V0IGFu
ZCBMaXN0SGFzaFNldE5vZGUgZGVyaXZlCisgICAgICAgIGZyb20gQ2FuTWFrZVdlYWtQdHIuIEFk
ZCBtX3dlYWtTZXQgYW5kIG1fd2Vha1Bvc2l0aW9uIG1lbWJlcnMgdG8KKyAgICAgICAgTGlzdEhh
c2hTZXRDb25zdEl0ZXJhdG9yLCBhbmQgYXNzZXJ0IHRoZWlyIHZhbHVlcyBhdCB0aGUgYXBwcm9w
cmlhdGUKKyAgICAgICAgdGltZXMgc28gd2Ugd2lsbCBnZXQgYSBicmVha3BvaW50IG9yIGNyYXNo
LgorCisgICAgICAgICogd3RmL1dlYWtIYXNoU2V0Lmg6IFVwZGF0ZWQgdG8gYWRkIGEgQ291bnRl
ciBhcmd1bWVudCBmb3IgdGVzdGluZy4KKworICAgICAgICAqIHd0Zi9XZWFrUHRyLmg6IFJlbW92
ZWQgdGhlIERJRF9DUkVBVEVfV0VBS19QVFJfSU1QTCBhbmQKKyAgICAgICAgV0lMTF9ERVNUUk9Z
X1dFQUtfUFRSX0lNUEwgbWFjcm9zLCB3aGljaCBkaWRuJ3QgcmVhbGx5IHdvcmsgYmVjYXVzZQor
ICAgICAgICB1c2luZyB0aGVtIHZpb2xhdGVkIHRoZSBDKysgb25lLWRlZmluaXRpb24gcnVsZS4g
UmVwbGFjZWQgd2l0aAorICAgICAgICBhIENvdW50ZXIgYXJndW1lbnQsIHdoaWNoIGRlZmF1bHRz
IHRvIEVtcHR5Q291bnRlciwgd2hpY2ggaXMgaW5saW5lcworICAgICAgICB0aGF0IGRvIG5vdGhp
bmcuIFRoaXMgcmVxdWlyZWQgc29tZSB1cGRhdGVzIHRvIHRoZSBjbGFzc2VzIGFuZAorICAgICAg
ICBmdW5jdGlvbnMgdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBhIHNlY29uZCBhcmd1bWVudC4KKwog
MjAyMC0wNS0xMSAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAg
ICAgICAgW2JtYWxsb2NdW1dURl0gQWRkIGNvbXB1dGluZyBtZW1vcnkgc2l6ZSBpbXBsZW1lbnRh
dGlvbiBmb3IgRnJlZUJTRApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIv
U291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGY3NmNhNDNjMmIzZWYzYjA0NzJiODJjNTMx
OGU1YWM5OGNiNDU1NjguLjc2Y2ViZDM0NWYzNzlmOTY4OGYxMDkwNWFhYTk1ZTQyMDE3YzhlODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNDcsNDggKzQ3LDQ2IEBAIGNsYXNzIFVuaXF1ZWRTdHJpbmdJbXBsOwogY2xhc3Mg
VVJMOwogY2xhc3MgV2FsbFRpbWU7CiAKK3N0cnVjdCBBbnlUaHJlYWRzQWNjZXNzVHJhaXRzOwor
c3RydWN0IEVtcHR5Q291bnRlcjsKIHN0cnVjdCBGYXN0TWFsbG9jOworc3RydWN0IE1haW5UaHJl
YWRBY2Nlc3NUcmFpdHM7CisKICNpZiBFTkFCTEUoTUFMTE9DX0hFQVBfQlJFQUtET1dOKQogc3Ry
dWN0IFZlY3Rvck1hbGxvYzsKICNlbHNlCiB1c2luZyBWZWN0b3JNYWxsb2MgPSBGYXN0TWFsbG9j
OwogI2VuZGlmCiAKLXN0cnVjdCBBbnlUaHJlYWRzQWNjZXNzVHJhaXRzOwotc3RydWN0IE1haW5U
aHJlYWRBY2Nlc3NUcmFpdHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IER1bWJQdHJUcmFp
dHM7CisKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBDb21wbGV0aW9uSGFuZGxlcjsKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEdW1iUHRyVHJhaXRzOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IER1bWJWYWx1ZVRyYWl0czsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGdW5j
dGlvbjsKIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IEFueVRocmVhZHNBY2Nlc3NUcmFp
dHM+IGNsYXNzIExhenlOZXZlckRlc3Ryb3llZDsKIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFt
ZSA9IEFueVRocmVhZHNBY2Nlc3NUcmFpdHM+IGNsYXNzIE5ldmVyRGVzdHJveWVkOwogdGVtcGxh
dGU8dHlwZW5hbWU+IGNsYXNzIE9wdGlvblNldDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBP
cHRpb25hbDsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhY2tlZDsKK3RlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBQYWNrZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgPSBhbGln
bm9mKFQpPiBjbGFzcyBQYWNrZWRBbGlnbmVkUHRyOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSBEdW1iUHRyVHJhaXRzPFQ+PiBjbGFzcyBSZWY7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IER1bWJQdHJUcmFpdHM8VD4+IGNsYXNzIFJlZlB0cjsKIHRlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUg
PSB2b2lkPiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFVuaXF1ZVJlZjsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYWtQdHI7Cit0ZW1w
bGF0ZTx0eXBlbmFtZT4gY2xhc3MgVW5pcXVlUmVmOwordGVtcGxhdGU8dHlwZW5hbWUuLi4+IGNs
YXNzIFZhcmlhbnQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgc2l6ZV90ID0gMCwgdHlwZW5hbWUgPSBD
cmFzaE9uT3ZlcmZsb3csIHNpemVfdCA9IDE2LCB0eXBlbmFtZSBNYWxsb2MgPSBWZWN0b3JNYWxs
b2M+IGNsYXNzIFZlY3RvcjsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IEVtcHR5Q291
bnRlcj4gY2xhc3MgV2Vha1B0cjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEZWZhdWx0
SGFzaCB7IHVzaW5nIEhhc2ggPSB2b2lkOyB9OwotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBI
YXNoVHJhaXRzOwotCit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IER1bWJWYWx1ZVRyYWl0czsK
IHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRW51bVRyYWl0czsKIHRlbXBsYXRlPHR5cGVuYW1l
IEUsIEUuLi4+IHN0cnVjdCBFbnVtVmFsdWVzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBI
YXNoVHJhaXRzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZS4uLj4gY2xhc3MgVmFyaWFudDsKLXRlbXBs
YXRlPHR5cGVuYW1lLCBzaXplX3QgPSAwLCB0eXBlbmFtZSA9IENyYXNoT25PdmVyZmxvdywgc2l6
ZV90ID0gMTYsIHR5cGVuYW1lIE1hbGxvYyA9IFZlY3Rvck1hbGxvYz4gY2xhc3MgVmVjdG9yOwog
dGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8
VmFsdWU+OjpIYXNoLCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8VmFsdWU+PiBjbGFzcyBIYXNoQ291
bnRlZFNldDsKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0
eXBlbmFtZSA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPEtleUFyZz46Okhhc2gsIHR5cGVuYW1lID0g
SGFzaFRyYWl0czxLZXlBcmc+LCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8TWFwcGVkQXJnPj4gY2xh
c3MgSGFzaE1hcDsKIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSA9IHR5cGVu
YW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaCwgdHlwZW5hbWUgPSBIYXNoVHJhaXRzPFZh
bHVlQXJnPj4gY2xhc3MgSGFzaFNldDsKIAotdGVtcGxhdGU8c2l6ZV90LCB0eXBlbmFtZT4gc3Ry
dWN0IHZhcmlhbnRfYWx0ZXJuYXRpdmU7Ci10ZW1wbGF0ZTxwdHJkaWZmX3QsIHR5cGVuYW1lLi4u
PiBzdHJ1Y3QgX19pbmRleGVkX3R5cGU7Ci10ZW1wbGF0ZTxwdHJkaWZmX3QgX0luZGV4LCB0eXBl
bmFtZS4uLiBfVHlwZXM+IGNvbnN0ZXhwciB0eXBlbmFtZSBfX2luZGV4ZWRfdHlwZTxfSW5kZXgs
IF9UeXBlcy4uLj46Ol9fdHlwZSBjb25zdCYgZ2V0KFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYp
OwotCiB9CiAKIG5hbWVzcGFjZSBzdGQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTGlz
dEhhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKaW5kZXggOGJjZGI3MWVh
ZTVkYzk4MzQzMmRkZDgwNmYwZWU4MzE0ZGE4MWY5My4uNTgyOTJkMTIyMDM3MzU5NWUxYjRhYzg2
ZTE5ZWRjZjJkMDhiZmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCkBAIC0yMyw2ICsyMywxMCBAQAog
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRP
UlMKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewog
CiAvLyBMaXN0SGFzaFNldDogSnVzdCBsaWtlIEhhc2hTZXQsIHRoaXMgY2xhc3MgcHJvdmlkZXMg
YSBTZXQKQEAgLTQ1LDcgKzQ5LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnPiBzdHJ1
Y3QgTGlzdEhhc2hTZXROb2RlOwogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEFyZz4gc3RydWN0IExp
c3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnM7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBz
dHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
ZywgdHlwZW5hbWUgSGFzaEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFz
aD4gY2xhc3MgTGlzdEhhc2hTZXQgZmluYWwgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcs
IHR5cGVuYW1lIEhhc2hBcmcgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2g+
IGNsYXNzIExpc3RIYXNoU2V0IGZpbmFsCisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwor
ICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJn
PiwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbjo6RWFnZXI+CisjZW5kaWYKK3sKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNl
dE5vZGU8VmFsdWVBcmc+IE5vZGU7CkBAIC0xNjQsMTEgKzE3MiwxNCBAQCBwcml2YXRlOgogICAg
IE5vZGUqIG1fdGFpbCB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
QXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIExpc3RIYXNoU2V0Tm9k
ZShUJiYgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNo
U2V0Tm9kZQorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICA6IENhbk1ha2VXZWFr
UHRyPExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4sIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRp
b246OkVhZ2VyPgorI2VuZGlmCit7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGlzdEhhc2hTZXROb2RlKFQmJiB2YWx1ZSkK
ICAgICAgICAgOiBtX3ZhbHVlKHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpCiAgICAgewogICAgIH0K
QEAgLTI0Nyw2ICsyNTgsMTAgQEAgcHJpdmF0ZToKICAgICBMaXN0SGFzaFNldENvbnN0SXRlcmF0
b3IoY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBzZXQsIE5vZGUqIHBvc2l0aW9uKQogICAgICAgICA6
IG1fc2V0KHNldCkKICAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorI2lmIENIRUNLX0hB
U0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgLCBtX3dlYWtTZXQobWFrZVdlYWtQdHIoc2V0KSkK
KyAgICAgICAgLCBtX3dlYWtQb3NpdGlvbihtYWtlV2Vha1B0cihwb3NpdGlvbikpCisjZW5kaWYK
ICAgICB7CiAgICAgfQogCkBAIC0yNjMsNiArMjc4LDkgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
VmFsdWVUeXBlKiBnZXQoKSBjb25zdAogICAgIHsKKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTCisgICAgICAgIEFTU0VSVChtX3dlYWtQb3NpdGlvbik7CisjZW5kaWYKICAgICAgICAgcmV0
dXJuIHN0ZDo6YWRkcmVzc29mKG1fcG9zaXRpb24tPm1fdmFsdWUpOwogICAgIH0KIApAQCAtMjcx
LDggKzI4OSwxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3IrKygp
CiAgICAgeworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgQVNTRVJUKG1f
d2Vha1Bvc2l0aW9uKTsKKyNlbmRpZgogICAgICAgICBBU1NFUlQobV9wb3NpdGlvbik7CiAgICAg
ICAgIG1fcG9zaXRpb24gPSBtX3Bvc2l0aW9uLT5tX25leHQ7CisjaWYgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUworICAgICAgICBtX3dlYWtQb3NpdGlvbiA9IG1ha2VXZWFrUHRyKG1fcG9zaXRp
b24pOworI2VuZGlmCiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKQEAgLTI4MCwxMSAr
MzA0LDE4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkKICAg
ICB7CisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICBBU1NFUlQobV93ZWFr
U2V0KTsKKyAgICAgICAgbV93ZWFrUG9zaXRpb24uZ2V0KCk7CisjZW5kaWYKICAgICAgICAgQVNT
RVJUKG1fcG9zaXRpb24gIT0gbV9zZXQtPm1faGVhZCk7CiAgICAgICAgIGlmICghbV9wb3NpdGlv
bikKICAgICAgICAgICAgIG1fcG9zaXRpb24gPSBtX3NldC0+bV90YWlsOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBtX3Bvc2l0aW9uID0gbV9wb3NpdGlvbi0+bV9wcmV2OworI2lmIENIRUNL
X0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgbV93ZWFrUG9zaXRpb24gPSBtYWtlV2Vha1B0
cihtX3Bvc2l0aW9uKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCkBA
IC0zMDMsOCArMzM0LDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTm9kZSogbm9kZSgpIHsg
cmV0dXJuIG1fcG9zaXRpb247IH0KIAotICAgIGNvbnN0IExpc3RIYXNoU2V0VHlwZSogbV9zZXQ7
Ci0gICAgTm9kZSogbV9wb3NpdGlvbjsKKyAgICBjb25zdCBMaXN0SGFzaFNldFR5cGUqIG1fc2V0
IHsgbnVsbHB0ciB9OworICAgIE5vZGUqIG1fcG9zaXRpb24geyBudWxscHRyIH07CisjaWYgQ0hF
Q0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgIFdlYWtQdHI8Y29uc3QgTGlzdEhhc2hTZXRUeXBl
PiBtX3dlYWtTZXQ7CisgICAgV2Vha1B0cjxOb2RlPiBtX3dlYWtQb3NpdGlvbjsKKyNlbmRpZgog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCmlu
ZGV4IDExN2M4OWZjYjQ3ODUwNjBmNGI1YjI4NDExMzM5NTIyOTY4ODhjMDguLjNkMmE4M2YxZjEx
MjA1ODk1Y2Q0ODI3MDYyZjYyOWI5NmYzZGU5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1dlYWtIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDI0ICsyNywyMyBAQAogCiAjaW5jbHVkZSA8d3RmL0FsZ29yaXRobXMuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hU
cmFpdHM8UmVmPFdlYWtQdHJJbXBsPj4gOiBSZWZIYXNoVHJhaXRzPFdlYWtQdHJJbXBsPiB7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBDb3VudGVyPiBzdHJ1Y3QgSGFzaFRyYWl0czxSZWY8V2Vha1B0cklt
cGw8Q291bnRlcj4+PiA6IFJlZkhhc2hUcmFpdHM8V2Vha1B0ckltcGw8Q291bnRlcj4+IHsKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNSZWxlYXNlZFdlYWtWYWx1ZUZ1bmN0aW9uID0g
dHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBpc1JlbGVhc2VkV2Vha1ZhbHVlKGNvbnN0IFJlZjxXZWFr
UHRySW1wbD4mIHZhbHVlKQorICAgIHN0YXRpYyBib29sIGlzUmVsZWFzZWRXZWFrVmFsdWUoY29u
c3QgUmVmPFdlYWtQdHJJbXBsPENvdW50ZXI+PiYgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gIXZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgJiYgIXZhbHVlLmlzSGFzaFRhYmxl
RW1wdHlWYWx1ZSgpICYmICF2YWx1ZS5nZXQoKTsKICAgICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXIgPSBFbXB0eUNv
dW50ZXI+CiBjbGFzcyBXZWFrSGFzaFNldCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZjxXZWFrUHRySW1wbD4+IFdl
YWtQdHJJbXBsU2V0OworICAgIHR5cGVkZWYgSGFzaFNldDxSZWY8V2Vha1B0ckltcGw8Q291bnRl
cj4+PiBXZWFrUHRySW1wbFNldDsKICAgICB0eXBlZGVmIHR5cGVuYW1lIFdlYWtQdHJJbXBsU2V0
OjpBZGRSZXN1bHQgQWRkUmVzdWx0OwogCiAgICAgY2xhc3MgV2Vha0hhc2hTZXRDb25zdEl0ZXJh
dG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgVCwg
c3RkOjpwdHJkaWZmX3QsIGNvbnN0IFQqLCBjb25zdCBUJj4gewpAQCAtODUsNyArODQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBl
bmFtZT4gZnJpZW5kIGNsYXNzIFdlYWtIYXNoU2V0OworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgV2Vha0hhc2hTZXQ7CiAKICAgICAgICAgdHlwZW5h
bWUgV2Vha1B0ckltcGxTZXQ6OmNvbnN0X2l0ZXJhdG9yIG1fcG9zaXRpb247CiAgICAgICAgIHR5
cGVuYW1lIFdlYWtQdHJJbXBsU2V0Ojpjb25zdF9pdGVyYXRvciBtX2VuZFBvc2l0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvV2Vha1B0ci5oIGIvU291cmNlL1dURi93dGYvV2Vha1B0
ci5oCmluZGV4IDU1NGFkMTA3YjY1YWZmNGExZWYwYmU4ZDgzMmM2ZTViZTBiNzQ0NjguLmE4YjEx
YWI5NzU1NjJhNTc5MzM2YTE0ZWQyZGQyY2RhMmE0N2Y1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1dlYWtQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKQEAgLTEsNiAr
MSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE3IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
MjcgKzI2LDE5IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0j
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotLy8gVGVzdGluZyBpbnRlcmZhY2UgZm9yIFRl
c3RXZWJLaXRBUEkKLSNpZm5kZWYgRElEX0NSRUFURV9XRUFLX1BUUl9JTVBMCi0jZGVmaW5lIERJ
RF9DUkVBVEVfV0VBS19QVFJfSU1QTChwKQotI2VuZGlmCi0jaWZuZGVmIFdJTExfREVTVFJPWV9X
RUFLX1BUUl9JTVBMCi0jZGVmaW5lIFdJTExfREVTVFJPWV9XRUFLX1BUUl9JTVBMKHApCi0jZW5k
aWYKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gY2xhc3MgV2Vha0hhc2hTZXQ7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IGNsYXNzIFdlYWtQdHJGYWN0b3J5OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgV2Vha0hhc2hTZXQ7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
V2Vha1B0cjsKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBXZWFrUHRyRmFjdG9yeTsKK3N0cnVj
dCBFbXB0eUNvdW50ZXIgeworICAgIHN0YXRpYyB2b2lkIGluY3JlbWVudCgpIHsgfQorICAgIHN0
YXRpYyB2b2lkIGRlY3JlbWVudCgpIHsgfQorfTsKIAotY2xhc3MgV2Vha1B0ckltcGwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1B0ckltcGw+IHsKK3RlbXBsYXRlPHR5cGVuYW1l
IENvdW50ZXIgPSBFbXB0eUNvdW50ZXI+IGNsYXNzIFdlYWtQdHJJbXBsIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFdlYWtQdHJJbXBsPENvdW50ZXI+PiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoV2Vha1B0ckltcGwpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtNTcsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB+V2Vha1B0ckltcGwoKQogICAg
IHsKLSAgICAgICAgV0lMTF9ERVNUUk9ZX1dFQUtfUFRSX0lNUEwobV9wdHIpOworICAgICAgICBD
b3VudGVyOjpkZWNyZW1lbnQoKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0
eXBlbmFtZSBUOjpXZWFrVmFsdWVUeXBlKiBnZXQoKQpAQCAtNzksNyArNzEsNyBAQCBwcml2YXRl
OgogICAgICAgICAsIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkp
CiAjZW5kaWYKICAgICB7Ci0gICAgICAgIERJRF9DUkVBVEVfV0VBS19QVFJfSU1QTChwdHIpOwor
ICAgICAgICBDb3VudGVyOjppbmNyZW1lbnQoKTsKICAgICB9CiAKICAgICB2b2lkKiBtX3B0cjsK
QEAgLTg4LDI4ICs4MCwyNyBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotY2xhc3MgV2Vha1B0ciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
b3VudGVyPiBjbGFzcyBXZWFrUHRyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWFrUHRyKCkgeyB9CiAgICAgV2Vha1B0cihzdGQ6Om51bGxwdHJfdCkgeyB9
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gV2Vha1B0cihjb25zdCBXZWFrUHRyPFU+Jik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gV2Vha1B0cihXZWFrUHRyPFU+JiYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFdlYWtQdHIoY29uc3QgV2Vha1B0cjxVLCBDb3VudGVyPiYpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWtQdHIoV2Vha1B0cjxVLCBDb3VudGVyPiYmKTsKIAog
ICAgIFQqIGdldCgpIGNvbnN0CiAgICAgewogICAgICAgICAvLyBGSVhNRTogT3VyIEdDIHRocmVh
ZHMgY3VycmVudGx5IG5lZWQgdG8gZ2V0IG9wYXF1ZSBwb2ludGVycyBmcm9tIFdlYWtQdHJzIGFu
ZCBoYXZlIHRvIGJlIHNwZWNpYWwtY2FzZWQuCiAgICAgICAgIEFTU0VSVCghbV9pbXBsIHx8IFRo
cmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IG1faW1wbC0+d2FzQ29uc3RydWN0ZWRPbk1haW5UaHJl
YWQoKSA9PSBpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIHJldHVybiBtX2ltcGwgPyBzdGF0aWNf
Y2FzdDxUKj4obV9pbXBsLT5nZXQ8VD4oKSkgOiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9p
bXBsID8gc3RhdGljX2Nhc3Q8VCo+KG1faW1wbC0+dGVtcGxhdGUgZ2V0PFQ+KCkpIDogbnVsbHB0
cjsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwg
fHwgISptX2ltcGw7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsICYmICptX2ltcGw7IH0KIAogICAgIFdlYWtQdHImIG9wZXJhdG9yPShzdGQ6Om51
bGxwdHJfdCkgeyBtX2ltcGwgPSBudWxscHRyOyByZXR1cm4gKnRoaXM7IH0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBXZWFrUHRyJiBvcGVyYXRvcj0oY29uc3QgV2Vha1B0cjxVPiYpOwotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWtQdHImIG9wZXJhdG9yPShXZWFrUHRyPFU+JiYpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWtQdHImIG9wZXJhdG9yPShjb25zdCBXZWFrUHRy
PFUsIENvdW50ZXI+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gV2Vha1B0ciYgb3BlcmF0
b3I9KFdlYWtQdHI8VSwgQ291bnRlcj4mJik7CiAKICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QK
ICAgICB7CkBAIC0xMjYsMjEgKzExNywyNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpIHsg
bV9pbXBsID0gbnVsbHB0cjsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYWtQdHIoUmVm
PFdlYWtQdHJJbXBsPiYmIHJlZikgOiBtX2ltcGwoV1RGTW92ZShyZWYpKSB7IH0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFdlYWtIYXNoU2V0OwotICAgIHRlbXBsYXRlPHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgV2Vha1B0cjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJp
ZW5kIGNsYXNzIFdlYWtQdHJGYWN0b3J5OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVu
ZCBXZWFrUHRyPFU+IG1ha2VXZWFrUHRyKFUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlw
ZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFrUHRyOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFdlYWtQdHJGYWN0b3J5OworCisgICAgZXhwbGljaXQgV2Vh
a1B0cihSZWY8V2Vha1B0ckltcGw8Q291bnRlcj4+JiYgcmVmKQorICAgICAgICA6IG1faW1wbChX
VEZNb3ZlKHJlZikpCisgICAgeworICAgIH0KIAotICAgIFJlZlB0cjxXZWFrUHRySW1wbD4gbV9p
bXBsOworICAgIFJlZlB0cjxXZWFrUHRySW1wbDxDb3VudGVyPj4gbV9pbXBsOwogfTsKIAogLy8g
Tm90ZTogeW91IHByb2JhYmx5IHdhbnQgdG8gaW5oZXJpdCBmcm9tIENhbk1ha2VXZWFrUHRyIHJh
dGhlciB0aGFuIHVzZSB0aGlzIGRpcmVjdGx5LgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNz
IFdlYWtQdHJGYWN0b3J5IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWFrUHRyRmFjdG9y
eTxUPik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVyID0gRW1wdHlDb3Vu
dGVyPiBjbGFzcyBXZWFrUHRyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vh
a1B0ckZhY3RvcnkpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAg
IHVzaW5nIENvdW50ZXJUeXBlID0gQ291bnRlcjsKKwogICAgIFdlYWtQdHJGYWN0b3J5KCkKICNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICA6IG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQo
aXNNYWluVGhyZWFkKCkpCkBAIC0xNjEsMjMgKzE1NiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgQVNTRVJUKG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQg
PT0gaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBtX2ltcGwgPSBXZWFrUHRySW1wbDo6Y3JlYXRl
KGNvbnN0X2Nhc3Q8VCo+KCZvYmplY3QpKTsKLSAgICB9Ci0KLSAgICBXZWFrUHRyPFQ+IGNyZWF0
ZVdlYWtQdHIoVCYgb2JqZWN0KSBjb25zdAotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUlmTmVl
ZGVkKG9iamVjdCk7Ci0KLSAgICAgICAgQVNTRVJUKCZvYmplY3QgPT0gbV9pbXBsLT5nZXQ8VD4o
KSk7Ci0gICAgICAgIHJldHVybiBXZWFrUHRyPFQ+KG1ha2VSZWYoKm1faW1wbCkpOworICAgICAg
ICBtX2ltcGwgPSBXZWFrUHRySW1wbDxDb3VudGVyPjo6Y3JlYXRlKGNvbnN0X2Nhc3Q8VCo+KCZv
YmplY3QpKTsKICAgICB9CiAKLSAgICBXZWFrUHRyPGNvbnN0IFQ+IGNyZWF0ZVdlYWtQdHIoY29u
c3QgVCYgb2JqZWN0KSBjb25zdAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFdlYWtQdHI8VSwg
Q291bnRlcj4gY3JlYXRlV2Vha1B0cihVJiBvYmplY3QpIGNvbnN0CiAgICAgewogICAgICAgICBp
bml0aWFsaXplSWZOZWVkZWQob2JqZWN0KTsKIAotICAgICAgICBBU1NFUlQoJm9iamVjdCA9PSBt
X2ltcGwtPmdldDxUPigpKTsKLSAgICAgICAgcmV0dXJuIFdlYWtQdHI8VD4obWFrZVJlZigqbV9p
bXBsKSk7CisgICAgICAgIEFTU0VSVCgmb2JqZWN0ID09IG1faW1wbC0+dGVtcGxhdGUgZ2V0PFQ+
KCkpOworICAgICAgICByZXR1cm4gV2Vha1B0cjxVLCBDb3VudGVyPihtYWtlUmVmKCptX2ltcGwp
KTsKICAgICB9CiAKICAgICB2b2lkIHJldm9rZUFsbCgpCkBAIC0xOTAsOSArMTc3LDkgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNs
YXNzIFdlYWtIYXNoU2V0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5k
IGNsYXNzIFdlYWtIYXNoU2V0OwogCi0gICAgbXV0YWJsZSBSZWZQdHI8V2Vha1B0ckltcGw+IG1f
aW1wbDsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWFrUHRySW1wbDxDb3VudGVyPj4gbV9pbXBsOwog
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX3dhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFk
OwogI2VuZGlmCkBAIC0yMDIsMTIgKzE4OSwxMiBAQCBwcml2YXRlOgogLy8gaW5pdGlhbGl6YXRp
b24gaXMgaG93ZXZlciB1c2VmdWwgaWYgeW91IHBsYW4gdG8gY2FsbCBtYWtlV2Vha1B0cigpIGZy
b20gb3RoZXIgdGhyZWFkcy4KIGVudW0gY2xhc3MgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlv
biB7IExhenksIEVhZ2VyIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIFdlYWtQdHJGYWN0b3J5
SW5pdGlhbGl6YXRpb24gaW5pdGlhbGl6YXRpb25Nb2RlID0gV2Vha1B0ckZhY3RvcnlJbml0aWFs
aXphdGlvbjo6TGF6eT4gY2xhc3MgQ2FuTWFrZVdlYWtQdHIgewordGVtcGxhdGU8dHlwZW5hbWUg
VCwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlvbiBpbml0aWFsaXphdGlvbk1vZGUgPSBXZWFr
UHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpMYXp5LCB0eXBlbmFtZSBDb3VudGVyID0gRW1wdHlD
b3VudGVyPiBjbGFzcyBDYW5NYWtlV2Vha1B0ciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV2Vha1Zh
bHVlVHlwZSA9IFQ7CiAKLSAgICBjb25zdCBXZWFrUHRyRmFjdG9yeTxUPiYgd2Vha1B0ckZhY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5OyB9Ci0gICAgV2Vha1B0ckZhY3Rv
cnk8VD4mIHdlYWtQdHJGYWN0b3J5KCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeTsgfQorICAg
IGNvbnN0IFdlYWtQdHJGYWN0b3J5PFQsIENvdW50ZXI+JiB3ZWFrUHRyRmFjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2Vha1B0ckZhY3Rvcnk7IH0KKyAgICBXZWFrUHRyRmFjdG9yeTxULCBDb3Vu
dGVyPiYgd2Vha1B0ckZhY3RvcnkoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5OyB9CiAKIHBy
b3RlY3RlZDoKICAgICBDYW5NYWtlV2Vha1B0cigpCkBAIC0yMTcsNzUgKzIwNCw3NSBAQCBwcm90
ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFdlYWtQdHJGYWN0b3J5PFQ+IG1fd2Vha1B0
ckZhY3Rvcnk7CisgICAgV2Vha1B0ckZhY3Rvcnk8VCwgQ291bnRlcj4gbV93ZWFrUHRyRmFjdG9y
eTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBXZWFrUHRy
SW1wbCogd2Vha19wdHJfaW1wbF9jYXN0KFdlYWtQdHJJbXBsKiBpbXBsKQordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgQ291bnRlcj4gaW5saW5lIFdlYWtQdHJJbXBs
PENvdW50ZXI+KiB3ZWFrX3B0cl9pbXBsX2Nhc3QoV2Vha1B0ckltcGw8Q291bnRlcj4qIGltcGwp
CiB7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6V2Vha1ZhbHVl
VHlwZSwgdHlwZW5hbWUgVTo6V2Vha1ZhbHVlVHlwZT46OnZhbHVlLCAiSW52YWxpZCB3ZWFrIHBv
aW50ZXIgY2FzdCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lX3Y8dHlwZW5hbWUg
VDo6V2Vha1ZhbHVlVHlwZSwgdHlwZW5hbWUgVTo6V2Vha1ZhbHVlVHlwZT4sICJJbnZhbGlkIHdl
YWsgcG9pbnRlciBjYXN0Iik7CiAgICAgcmV0dXJuIGltcGw7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBXZWFrUHRyPFQ+OjpXZWFrUHRyKGNv
bnN0IFdlYWtQdHI8VT4mIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3VudGVy
PiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgV2Vha1B0cjxULCBDb3VudGVyPjo6V2Vha1B0
cihjb25zdCBXZWFrUHRyPFUsIENvdW50ZXI+JiBvKQogICAgIDogbV9pbXBsKHdlYWtfcHRyX2lt
cGxfY2FzdDxULCBVPihvLm1faW1wbC5nZXQoKSkpCiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBXZWFrUHRyPFQ+OjpXZWFrUHRyKFdlYWtQ
dHI8VT4mJiBvKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ291bnRlcj4gdGVtcGxh
dGU8dHlwZW5hbWUgVT4gaW5saW5lIFdlYWtQdHI8VCwgQ291bnRlcj46OldlYWtQdHIoV2Vha1B0
cjxVLCBDb3VudGVyPiYmIG8pCiAgICAgOiBtX2ltcGwoYWRvcHRSZWYod2Vha19wdHJfaW1wbF9j
YXN0PFQsIFU+KG8ubV9pbXBsLmxlYWtSZWYoKSkpKQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgV2Vha1B0cjxUPiYgV2Vha1B0cjxUPjo6
b3BlcmF0b3I9KGNvbnN0IFdlYWtQdHI8VT4mIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBDb3VudGVyPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgV2Vha1B0cjxULCBDb3Vu
dGVyPiYgV2Vha1B0cjxULCBDb3VudGVyPjo6b3BlcmF0b3I9KGNvbnN0IFdlYWtQdHI8VSwgQ291
bnRlcj4mIG8pCiB7CiAgICAgbV9pbXBsID0gd2Vha19wdHJfaW1wbF9jYXN0PFQsIFU+KG8ubV9p
bXBsLmdldCgpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBXZWFrUHRyPFQ+JiBXZWFrUHRyPFQ+OjpvcGVy
YXRvcj0oV2Vha1B0cjxVPiYmIG8pCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb3Vu
dGVyPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgV2Vha1B0cjxULCBDb3VudGVyPiYgV2Vh
a1B0cjxULCBDb3VudGVyPjo6b3BlcmF0b3I9KFdlYWtQdHI8VSwgQ291bnRlcj4mJiBvKQogewog
ICAgIG1faW1wbCA9IGFkb3B0UmVmKHdlYWtfcHRyX2ltcGxfY2FzdDxULCBVPihvLm1faW1wbC5s
ZWFrUmVmKCkpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBXZWFrUHRyPFQ+IG1ha2VXZWFrUHRyKFQmIG9iamVjdCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBhdXRvIG1ha2VXZWFrUHRyKFQmIG9iamVjdCkKIHsKLSAgICByZXR1cm4g
eyBvYmplY3Qud2Vha1B0ckZhY3RvcnkoKS5jcmVhdGVXZWFrUHRyKG9iamVjdCkgfTsKKyAgICBy
ZXR1cm4gb2JqZWN0LndlYWtQdHJGYWN0b3J5KCkudGVtcGxhdGUgY3JlYXRlV2Vha1B0cjxUPihv
YmplY3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha1B0cjxUPiBtYWtl
V2Vha1B0cihUKiBwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYXV0byBtYWtlV2Vh
a1B0cihUKiBwdHIpIC0+IGRlY2x0eXBlKG1ha2VXZWFrUHRyKCpwdHIpKQogewogICAgIGlmICgh
cHRyKQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiBtYWtlV2Vha1B0cigqcHRyKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBXZWFrUHRyPFQ+JiBhLCBjb25zdCBXZWFrUHRyPFU+JiBiKQordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgQ291bnRlcj4gaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBXZWFrUHRyPFQsIENvdW50ZXI+JiBhLCBjb25zdCBXZWFrUHRyPFUsIENv
dW50ZXI+JiBiKQogewogICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
V2Vha1B0cjxUPiYgYSwgVSogYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIENvdW50ZXI+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2Vha1B0cjxULCBD
b3VudGVyPiYgYSwgVSogYikKIHsKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEs
IGNvbnN0IFdlYWtQdHI8VT4mIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBDb3VudGVyPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFdlYWtQ
dHI8VSwgQ291bnRlcj4mIGIpCiB7CiAgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBXZWFrUHRyPFQ+JiBhLCBjb25zdCBXZWFrUHRyPFU+JiBiKQordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgQ291bnRlcj4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBXZWFrUHRyPFQsIENvdW50ZXI+JiBhLCBjb25zdCBXZWFrUHRyPFUsIENvdW50ZXI+JiBi
KQogewogICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vha1B0cjxU
PiYgYSwgVSogYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIENv
dW50ZXI+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vha1B0cjxULCBDb3VudGVyPiYg
YSwgVSogYikKIHsKICAgICByZXR1cm4gYS5nZXQoKSAhPSBiOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFdl
YWtQdHI8VT4mIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBD
b3VudGVyPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFdlYWtQdHI8VSwgQ291
bnRlcj4mIGIpCiB7CiAgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMjk0YWUxMWY4ZjRhYTRjODk1
YjNhMjJmOTYzMzQyYzdhYWY5NWM0Li5iNjM0YTVkNDE0ZGU2MTIxOGQ3ODJkNTg3YWI1YWFhNDMw
MjdiYjdjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBpdGVyYXRvciBjaGVja2luZyB0byBMaXN0SGFzaFNldAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcDogUmVtb3ZlZCB1c2Ugb2YgdGhlIERJRF9DUkVBVEVf
V0VBS19QVFJfSU1QTAorICAgICAgICBhbmQgV0lMTF9ERVNUUk9ZX1dFQUtfUFRSX0lNUEwsIHdo
aWNoIGRpZG4ndCB3b3JrIGNvbnNpc3RlbnRseSBiZWNhdXNlIG9mIHRoZQorICAgICAgICBvbmUt
ZGVmaW5pdGlvbiBydWxlLiBJbnN0ZWFkLCB0aGlzIGZpbGUgcGFyYW1ldGVyaXplcyB0aGUgV2Vh
a1B0ciBmYW1pbHkgb2YKKyAgICAgICAgY2xhc3MgdGVtcGxhdGVzIHdpdGggYSBjb3VudGVyIGNs
YXNzLiBUbyBhdm9pZCBoYXZpbmcgdG8gcmV3cml0ZSB0ZXN0IGNvZGUsIHVzZWQKKyAgICAgICAg
YWxpYXMgdGVtcGxhdGVzIHRvIGluc2VydCB0aGVzZSBjbGFzcyB0ZW1wbGF0ZSBpbnRvIHRoZSBU
ZXN0V2ViS2l0QVBJIG5hbWVzcGFjZSwKKyAgICAgICAgaGlkaW5nIHRoZSBjbGFzcyB0ZW1wbGF0
ZXMgZnJvbSB0aGUgV1RGIG5hbWVzcGFjZS4KKwogMjAyMC0wNS0xMSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIF0gc2Nyb2xsaW5nY29v
cmRpbmF0b3IvbWFjL2xhdGNoaW5nL3Njcm9sbGluZy1zZWxlY3Qtc2hvdWxkLW5vdC1sYXRjaC1t
YWluZnJhbWUuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTIyMGM3NDRjMjNhZjU3ZWJmYWM5NDVlMGUxNTU2MTli
MmYzNzdlNC4uMmZkZDkzYTRmODg2NjIzMmNkZDlhN2Q1YzRhNGZlNjEyZDVlOTY3YyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTI1LDIzICsyNSwyMyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLXN0YXRpYyB1bnNpZ25lZCBzX2Jhc2VXZWFrUmVm
ZXJlbmNlcyA9IDA7Ci0KLSNkZWZpbmUgRElEX0NSRUFURV9XRUFLX1BUUl9JTVBMKHApIGRvIHsg
XAotICAgICsrc19iYXNlV2Vha1JlZmVyZW5jZXM7IFwKLX0gd2hpbGUgKDApOwotCi0jZGVmaW5l
IFdJTExfREVTVFJPWV9XRUFLX1BUUl9JTVBMKHApIGRvIHsgXAotICAgIC0tc19iYXNlV2Vha1Jl
ZmVyZW5jZXM7IFwKLX0gd2hpbGUgKDApOwotCiAjaW5jbHVkZSAiVGVzdC5oIgotI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCitzdGF0aWMgdW5z
aWduZWQgc19iYXNlV2Vha1JlZmVyZW5jZXMgPSAwOworCitzdHJ1Y3QgV2Vha1B0ckNvdW50ZXIg
eworICAgIHN0YXRpYyB2b2lkIGluY3JlbWVudCgpIHsgKytzX2Jhc2VXZWFrUmVmZXJlbmNlczsg
fQorICAgIHN0YXRpYyB2b2lkIGRlY3JlbWVudCgpIHsgLS1zX2Jhc2VXZWFrUmVmZXJlbmNlczsg
fQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgQ2FuTWFrZVdlYWtQdHIgPSBXVEY6
OkNhbk1ha2VXZWFrUHRyPFQsIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkxhenksIFdl
YWtQdHJDb3VudGVyPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIFdlYWtIYXNoU2V0ID0g
V1RGOjpXZWFrSGFzaFNldDxULCBXZWFrUHRyQ291bnRlcj47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiB1c2luZyBXZWFrUHRyID0gV1RGOjpXZWFrUHRyPFQsIFdlYWtQdHJDb3VudGVyPjsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHVzaW5nIFdlYWtQdHJGYWN0b3J5ID0gV1RGOjpXZWFrUHRyRmFjdG9y
eTxULCBXZWFrUHRyQ291bnRlcj47CisKIHN0cnVjdCBJbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8SW50PiB7CiAgICAgSW50KGludCBpKSA6IG1faShpKSB7IH0KICAgICBvcGVyYXRvciBpbnQo
KSBjb25zdCB7IHJldHVybiBtX2k7IH0KQEAgLTc0LDEwICs3NCw2IEBAIHB1YmxpYzoKICAgICB9
CiB9OwogCi19Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQogVEVTVChXVEZfV2Vha1B0
ciwgQmFzaWMpCiB7CiAgICAgSW50IGR1bW15KDUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399100</attachid>
            <date>2020-05-11 23:04:33 -0700</date>
            <delta_ts>2020-05-18 10:16:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211669-20200511230431.patch</filename>
            <type>text/plain</type>
            <size>24557</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YzgxNzg0ZTgwZjgwZGMzOWE3ODg5
ZGQ3MTc5Y2JkOGY3ZjI1NGIuLjBjNGM1NzYyNTYzYTI1MTE2YzdiNDQzNjA5OGI2MWI4YWNhZWQ2
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpdGVyYXRvciBjaGVja2luZyB0byBMaXN0SGFzaFNl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjY5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFzaFNl
dCBhbmQgSGFzaE1hcCBoYXZlIGl0ZXJhdG9yIGNoZWNraW5nIGluIGRlYnVnIGJ1aWxkcy4KKyAg
ICAgICAgQWRkIHNpbWlsYXIgY2hlY2tpbmcgdG8gTGlzdEhhc2hTZXQsIGNvbnRyb2xsZWQgYnkg
dGhlIHNhbWUKKyAgICAgICAgbWFjcm8sIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMuIFVzZSBX
ZWFrUHRyIHRvIG1ha2UgdGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIHNpbXBsZS4KKworICAg
ICAgICAqIHd0Zi9Gb3J3YXJkLmg6IFVwZGF0ZSB0byBhZGQgYSBzZWNvbmQgcGFyYW1ldGVyIHRv
IFdlYWtQdHIuCisgICAgICAgIEFsc28gcmVhcnJhbmdlZCBhbmQgdHdlYWtlZCB0aGUgZmlsZSBh
IGJ1Zy4KKworICAgICAgICAqIHd0Zi9MaXN0SGFzaFNldC5oOiBNYWtlIExpc3RIYXNoU2V0IGFu
ZCBMaXN0SGFzaFNldE5vZGUgZGVyaXZlCisgICAgICAgIGZyb20gQ2FuTWFrZVdlYWtQdHIuIEFk
ZCBtX3dlYWtTZXQgYW5kIG1fd2Vha1Bvc2l0aW9uIG1lbWJlcnMgdG8KKyAgICAgICAgTGlzdEhh
c2hTZXRDb25zdEl0ZXJhdG9yLCBhbmQgYXNzZXJ0IHRoZWlyIHZhbHVlcyBhdCB0aGUgYXBwcm9w
cmlhdGUKKyAgICAgICAgdGltZXMgc28gd2Ugd2lsbCBnZXQgYSBicmVha3BvaW50IG9yIGNyYXNo
LgorCisgICAgICAgICogd3RmL1dlYWtIYXNoU2V0Lmg6IFVwZGF0ZWQgdG8gYWRkIGEgQ291bnRl
ciBhcmd1bWVudCBmb3IgdGVzdGluZy4KKworICAgICAgICAqIHd0Zi9XZWFrUHRyLmg6IFJlbW92
ZWQgdGhlIERJRF9DUkVBVEVfV0VBS19QVFJfSU1QTCBhbmQKKyAgICAgICAgV0lMTF9ERVNUUk9Z
X1dFQUtfUFRSX0lNUEwgbWFjcm9zLCB3aGljaCBkaWRuJ3QgcmVhbGx5IHdvcmsgYmVjYXVzZQor
ICAgICAgICB1c2luZyB0aGVtIHZpb2xhdGVkIHRoZSBDKysgb25lLWRlZmluaXRpb24gcnVsZS4g
UmVwbGFjZWQgd2l0aAorICAgICAgICBhIENvdW50ZXIgYXJndW1lbnQsIHdoaWNoIGRlZmF1bHRz
IHRvIEVtcHR5Q291bnRlciwgd2hpY2ggaXMgaW5saW5lcworICAgICAgICB0aGF0IGRvIG5vdGhp
bmcuIFRoaXMgcmVxdWlyZWQgc29tZSB1cGRhdGVzIHRvIHRoZSBjbGFzc2VzIGFuZAorICAgICAg
ICBmdW5jdGlvbnMgdG8gbWFrZSB0aGVtIHdvcmsgd2l0aCBhIHNlY29uZCBhcmd1bWVudC4KKwog
MjAyMC0wNS0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IHByb2JsZW1zIGNhdWdodCBieSByZXBsYWNpbmcgV1RGOjpPcHRpb25hbCB3aXRoIHN0ZDo6b3B0
aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAzYjNiMTNhMzAyN2Y4YWI3NTNjMjgxYTZjY2RjYTM5NjMwNTIx
MjE1Li44N2M2NjRkY2JiMjQ2NTRmNTNmZjhjNmY0MWNkZmQ5ZDk0OTJmM2RlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBpdGVyYXRvciBjaGVja2luZyB0byBMaXN0SGFzaFNldAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL2lvcy9D
b250ZW50Q2hhbmdlT2JzZXJ2ZXIuaDogQWRkZWQgYW4gaW5jbHVkZSBvZiBFbGVtZW50LmgsIG5l
ZWRlZCB0byBjYWxsCisgICAgICAgIG1ha2VXZWFrUHRyIGluIGFuIGlubGluZSBmdW5jdGlvbi4g
VGhpcyBpcyBkdWUgdG8gYSBjaGFuZ2UgaW4gdGhlIHdheSBtYWtlV2Vha1B0cgorICAgICAgICBu
b3cgY2hlY2tzIHRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudC4gSXQncyBwb3NzaWJsZSB3ZSBjb3Vs
ZCByZWZpbmUgaXQgZnVydGhlciB0bworICAgICAgICByZWxheCB0aGlzIHJlcXVpcmVtZW50LCBi
dXQgaXQgc2VlbXMgT0sgdG8gaW5jbHVkZSBFbGVtZW50LmggaGVyZS4KKwogMjAyMC0wNS0xMSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHByb2JsZW1zIGNh
dWdodCBieSByZXBsYWNpbmcgV1RGOjpPcHRpb25hbCB3aXRoIHN0ZDo6b3B0aW9uYWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQu
aAppbmRleCBmNzZjYTQzYzJiM2VmM2IwNDcyYjgyYzUzMThlNWFjOThjYjQ1NTY4Li43NmNlYmQz
NDVmMzc5Zjk2ODhmMTA5MDVhYWE5NWU0MjAxN2M4ZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDQ4ICs0Nyw0NiBA
QCBjbGFzcyBVbmlxdWVkU3RyaW5nSW1wbDsKIGNsYXNzIFVSTDsKIGNsYXNzIFdhbGxUaW1lOwog
CitzdHJ1Y3QgQW55VGhyZWFkc0FjY2Vzc1RyYWl0czsKK3N0cnVjdCBFbXB0eUNvdW50ZXI7CiBz
dHJ1Y3QgRmFzdE1hbGxvYzsKK3N0cnVjdCBNYWluVGhyZWFkQWNjZXNzVHJhaXRzOworCiAjaWYg
RU5BQkxFKE1BTExPQ19IRUFQX0JSRUFLRE9XTikKIHN0cnVjdCBWZWN0b3JNYWxsb2M7CiAjZWxz
ZQogdXNpbmcgVmVjdG9yTWFsbG9jID0gRmFzdE1hbGxvYzsKICNlbmRpZgogCi1zdHJ1Y3QgQW55
VGhyZWFkc0FjY2Vzc1RyYWl0czsKLXN0cnVjdCBNYWluVGhyZWFkQWNjZXNzVHJhaXRzOwordGVt
cGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEdW1iUHRyVHJhaXRzOworCiB0ZW1wbGF0ZTx0eXBlbmFt
ZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RHVtYlB0clRyYWl0czsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEdW1iVmFsdWVUcmFp
dHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRnVuY3Rpb247CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSwgdHlwZW5hbWUgPSBBbnlUaHJlYWRzQWNjZXNzVHJhaXRzPiBjbGFzcyBMYXp5TmV2ZXJEZXN0
cm95ZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBBbnlUaHJlYWRzQWNjZXNzVHJh
aXRzPiBjbGFzcyBOZXZlckRlc3Ryb3llZDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBPcHRp
b25TZXQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgT3B0aW9uYWw7Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBQYWNrZWQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUGFja2VkOwog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90ID0gYWxpZ25vZihUKT4gY2xhc3MgUGFja2VkQWxp
Z25lZFB0cjsKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gRHVtYlB0clRyYWl0czxU
Pj4gY2xhc3MgUmVmOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBEdW1iUHRyVHJh
aXRzPFQ+PiBjbGFzcyBSZWZQdHI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3RyaW5nQnVm
ZmVyOwogdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gY2xhc3MgU3RyaW5nVHlw
ZUFkYXB0ZXI7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVbmlxdWVSZWY7Ci10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBXZWFrUHRyOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFVu
aXF1ZVJlZjsKK3RlbXBsYXRlPHR5cGVuYW1lLi4uPiBjbGFzcyBWYXJpYW50OwordGVtcGxhdGU8
dHlwZW5hbWUsIHNpemVfdCA9IDAsIHR5cGVuYW1lID0gQ3Jhc2hPbk92ZXJmbG93LCBzaXplX3Qg
PSAxNiwgdHlwZW5hbWUgTWFsbG9jID0gVmVjdG9yTWFsbG9jPiBjbGFzcyBWZWN0b3I7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBFbXB0eUNvdW50ZXI+IGNsYXNzIFdlYWtQdHI7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdEhhc2ggeyB1c2luZyBIYXNoID0gdm9p
ZDsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSGFzaFRyYWl0czsKLQordGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBEdW1iVmFsdWVUcmFpdHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEVudW1UcmFpdHM7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBFLi4uPiBzdHJ1Y3QgRW51bVZh
bHVlczsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSGFzaFRyYWl0czsKIAotdGVtcGxhdGU8
dHlwZW5hbWUuLi4+IGNsYXNzIFZhcmlhbnQ7Ci10ZW1wbGF0ZTx0eXBlbmFtZSwgc2l6ZV90ID0g
MCwgdHlwZW5hbWUgPSBDcmFzaE9uT3ZlcmZsb3csIHNpemVfdCA9IDE2LCB0eXBlbmFtZSBNYWxs
b2MgPSBWZWN0b3JNYWxsb2M+IGNsYXNzIFZlY3RvcjsKIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlPjo6SGFzaCwgdHlwZW5hbWUg
PSBIYXNoVHJhaXRzPFZhbHVlPj4gY2xhc3MgSGFzaENvdW50ZWRTZXQ7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgPSB0eXBlbmFtZSBEZWZh
dWx0SGFzaDxLZXlBcmc+OjpIYXNoLCB0eXBlbmFtZSA9IEhhc2hUcmFpdHM8S2V5QXJnPiwgdHlw
ZW5hbWUgPSBIYXNoVHJhaXRzPE1hcHBlZEFyZz4+IGNsYXNzIEhhc2hNYXA7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgPSB0eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFy
Zz46Okhhc2gsIHR5cGVuYW1lID0gSGFzaFRyYWl0czxWYWx1ZUFyZz4+IGNsYXNzIEhhc2hTZXQ7
CiAKLXRlbXBsYXRlPHNpemVfdCwgdHlwZW5hbWU+IHN0cnVjdCB2YXJpYW50X2FsdGVybmF0aXZl
OwotdGVtcGxhdGU8cHRyZGlmZl90LCB0eXBlbmFtZS4uLj4gc3RydWN0IF9faW5kZXhlZF90eXBl
OwotdGVtcGxhdGU8cHRyZGlmZl90IF9JbmRleCwgdHlwZW5hbWUuLi4gX1R5cGVzPiBjb25zdGV4
cHIgdHlwZW5hbWUgX19pbmRleGVkX3R5cGU8X0luZGV4LCBfVHlwZXMuLi4+OjpfX3R5cGUgY29u
c3QmIGdldChWYXJpYW50PF9UeXBlcy4uLj4gY29uc3QmKTsKLQogfQogCiBuYW1lc3BhY2Ugc3Rk
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggYi9Tb3VyY2UvV1RG
L3d0Zi9MaXN0SGFzaFNldC5oCmluZGV4IDhiY2RiNzFlYWU1ZGM5ODM0MzJkZGQ4MDZmMGVlODMx
NGRhODFmOTMuLjU4MjkyZDEyMjAzNzM1OTVlMWI0YWM4NmUxOWVkY2YyZDA4YmZiNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYv
TGlzdEhhc2hTZXQuaApAQCAtMjMsNiArMjMsMTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAKKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogLy8gTGlzdEhhc2hTZXQ6IEp1c3Qg
bGlrZSBIYXNoU2V0LCB0aGlzIGNsYXNzIHByb3ZpZGVzIGEgU2V0CkBAIC00NSw3ICs0OSwxMSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZTsKIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGVIYXNoRnVuY3Rp
b25zOwogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYXNoU2V0VHJhbnNs
YXRvcjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmcgPSB0
eXBlbmFtZSBEZWZhdWx0SGFzaDxWYWx1ZUFyZz46Okhhc2g+IGNsYXNzIExpc3RIYXNoU2V0IGZp
bmFsIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlw
ZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoPiBjbGFzcyBMaXN0SGFzaFNldCBmaW5h
bAorI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz4sIFdlYWtQdHJGYWN0b3J5SW5pdGlh
bGl6YXRpb246OkVhZ2VyPgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwcml2YXRlOgogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBOb2RlOwpA
QCAtMTY0LDExICsxNzIsMTQgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBtX3RhaWwgeyBudWxscHRy
IH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNoU2V0
Tm9kZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBMaXN0SGFzaFNldE5vZGUoVCYmIHZhbHVlKQordGVtcGxhdGU8
dHlwZW5hbWUgVmFsdWVBcmc+IHN0cnVjdCBMaXN0SGFzaFNldE5vZGUKKyNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTCisgICAgOiBDYW5NYWtlV2Vha1B0cjxMaXN0SGFzaFNldE5vZGU8VmFs
dWVBcmc+LCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpFYWdlcj4KKyNlbmRpZgorewor
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IExpc3RIYXNoU2V0Tm9kZShUJiYgdmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShzdGQ6
OmZvcndhcmQ8VD4odmFsdWUpKQogICAgIHsKICAgICB9CkBAIC0yNDcsNiArMjU4LDEwIEBAIHBy
aXZhdGU6CiAgICAgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNoU2V0VHlw
ZSogc2V0LCBOb2RlKiBwb3NpdGlvbikKICAgICAgICAgOiBtX3NldChzZXQpCiAgICAgICAgICwg
bV9wb3NpdGlvbihwb3NpdGlvbikKKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisgICAg
ICAgICwgbV93ZWFrU2V0KG1ha2VXZWFrUHRyKHNldCkpCisgICAgICAgICwgbV93ZWFrUG9zaXRp
b24obWFrZVdlYWtQdHIocG9zaXRpb24pKQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAtMjYz
LDYgKzI3OCw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZhbHVlVHlwZSogZ2V0KCkgY29uc3QK
ICAgICB7CisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICBBU1NFUlQobV93
ZWFrUG9zaXRpb24pOworI2VuZGlmCiAgICAgICAgIHJldHVybiBzdGQ6OmFkZHJlc3NvZihtX3Bv
c2l0aW9uLT5tX3ZhbHVlKTsKICAgICB9CiAKQEAgLTI3MSw4ICsyODksMTQgQEAgcHVibGljOgog
CiAgICAgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgIHsKKyNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTCisgICAgICAgIEFTU0VSVChtX3dlYWtQb3NpdGlvbik7CisjZW5kaWYK
ICAgICAgICAgQVNTRVJUKG1fcG9zaXRpb24pOwogICAgICAgICBtX3Bvc2l0aW9uID0gbV9wb3Np
dGlvbi0+bV9uZXh0OworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgbV93
ZWFrUG9zaXRpb24gPSBtYWtlV2Vha1B0cihtX3Bvc2l0aW9uKTsKKyNlbmRpZgogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQogCkBAIC0yODAsMTEgKzMwNCwxOCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3ItLSgpCiAgICAgeworI2lmIENIRUNLX0hBU0hUQUJM
RV9JVEVSQVRPUlMKKyAgICAgICAgQVNTRVJUKG1fd2Vha1NldCk7CisgICAgICAgIG1fd2Vha1Bv
c2l0aW9uLmdldCgpOworI2VuZGlmCiAgICAgICAgIEFTU0VSVChtX3Bvc2l0aW9uICE9IG1fc2V0
LT5tX2hlYWQpOwogICAgICAgICBpZiAoIW1fcG9zaXRpb24pCiAgICAgICAgICAgICBtX3Bvc2l0
aW9uID0gbV9zZXQtPm1fdGFpbDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wb3NpdGlv
biA9IG1fcG9zaXRpb24tPm1fcHJldjsKKyNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCisg
ICAgICAgIG1fd2Vha1Bvc2l0aW9uID0gbWFrZVdlYWtQdHIobV9wb3NpdGlvbik7CisjZW5kaWYK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApAQCAtMzAzLDggKzMzNCwxMiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIE5vZGUqIG5vZGUoKSB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAK
LSAgICBjb25zdCBMaXN0SGFzaFNldFR5cGUqIG1fc2V0OwotICAgIE5vZGUqIG1fcG9zaXRpb247
CisgICAgY29uc3QgTGlzdEhhc2hTZXRUeXBlKiBtX3NldCB7IG51bGxwdHIgfTsKKyAgICBOb2Rl
KiBtX3Bvc2l0aW9uIHsgbnVsbHB0ciB9OworI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMK
KyAgICBXZWFrUHRyPGNvbnN0IExpc3RIYXNoU2V0VHlwZT4gbV93ZWFrU2V0OworICAgIFdlYWtQ
dHI8Tm9kZT4gbV93ZWFrUG9zaXRpb247CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5o
IGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAppbmRleCAxMTdjODlmY2I0Nzg1MDYwZjRi
NWIyODQxMTMzOTUyMjk2ODg4YzA4Li4zZDJhODNmMWYxMTIwNTg5NWNkNDgyNzA2MmY2MjliOTZm
M2RlOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywyNCArMjcsMjMgQEAKIAogI2luY2x1
ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRl
IDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFJlZjxXZWFrUHRySW1wbD4+
IDogUmVmSGFzaFRyYWl0czxXZWFrUHRySW1wbD4gewordGVtcGxhdGU8dHlwZW5hbWUgQ291bnRl
cj4gc3RydWN0IEhhc2hUcmFpdHM8UmVmPFdlYWtQdHJJbXBsPENvdW50ZXI+Pj4gOiBSZWZIYXNo
VHJhaXRzPFdlYWtQdHJJbXBsPENvdW50ZXI+PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGhhc0lzUmVsZWFzZWRXZWFrVmFsdWVGdW5jdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wg
aXNSZWxlYXNlZFdlYWtWYWx1ZShjb25zdCBSZWY8V2Vha1B0ckltcGw+JiB2YWx1ZSkKKyAgICBz
dGF0aWMgYm9vbCBpc1JlbGVhc2VkV2Vha1ZhbHVlKGNvbnN0IFJlZjxXZWFrUHRySW1wbDxDb3Vu
dGVyPj4mIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuICF2YWx1ZS5pc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpICYmICF2YWx1ZS5pc0hhc2hUYWJsZUVtcHR5VmFsdWUoKSAmJiAhdmFsdWUu
Z2V0KCk7CiAgICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDb3VudGVyID0gRW1wdHlDb3VudGVyPgogY2xhc3MgV2Vha0hhc2hT
ZXQgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHR5
cGVkZWYgSGFzaFNldDxSZWY8V2Vha1B0ckltcGw+PiBXZWFrUHRySW1wbFNldDsKKyAgICB0eXBl
ZGVmIEhhc2hTZXQ8UmVmPFdlYWtQdHJJbXBsPENvdW50ZXI+Pj4gV2Vha1B0ckltcGxTZXQ7CiAg
ICAgdHlwZWRlZiB0eXBlbmFtZSBXZWFrUHRySW1wbFNldDo6QWRkUmVzdWx0IEFkZFJlc3VsdDsK
IAogICAgIGNsYXNzIFdlYWtIYXNoU2V0Q29uc3RJdGVyYXRvciA6IHB1YmxpYyBzdGQ6Oml0ZXJh
dG9yPHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIFQsIHN0ZDo6cHRyZGlmZl90LCBjb25zdCBU
KiwgY29uc3QgVCY+IHsKQEAgLTg1LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFr
SGFzaFNldDsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNs
YXNzIFdlYWtIYXNoU2V0OwogCiAgICAgICAgIHR5cGVuYW1lIFdlYWtQdHJJbXBsU2V0Ojpjb25z
dF9pdGVyYXRvciBtX3Bvc2l0aW9uOwogICAgICAgICB0eXBlbmFtZSBXZWFrUHRySW1wbFNldDo6
Y29uc3RfaXRlcmF0b3IgbV9lbmRQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1dlYWtQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAppbmRleCA1NTRhZDEwN2I2NWFm
ZjRhMWVmMGJlOGQ4MzJjNmU1YmUwYjc0NDY4Li5hOGIxMWFiOTc1NTYyYTU3OTMzNmExNGVkMmRk
MmNkYTJhNDdmNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKKysrIGIv
U291cmNlL1dURi93dGYvV2Vha1B0ci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDI3ICsyNiwxOSBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CiAKLS8vIFRlc3RpbmcgaW50ZXJmYWNlIGZvciBUZXN0V2ViS2l0QVBJCi0jaWZuZGVmIERJ
RF9DUkVBVEVfV0VBS19QVFJfSU1QTAotI2RlZmluZSBESURfQ1JFQVRFX1dFQUtfUFRSX0lNUEwo
cCkKLSNlbmRpZgotI2lmbmRlZiBXSUxMX0RFU1RST1lfV0VBS19QVFJfSU1QTAotI2RlZmluZSBX
SUxMX0RFU1RST1lfV0VBS19QVFJfSU1QTChwKQotI2VuZGlmCit0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWU+IGNsYXNzIFdlYWtIYXNoU2V0OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1l
PiBjbGFzcyBXZWFrUHRyRmFjdG9yeTsKIAotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFdlYWtI
YXNoU2V0OwotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFdlYWtQdHI7Ci10ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgV2Vha1B0ckZhY3Rvcnk7CitzdHJ1Y3QgRW1wdHlDb3VudGVyIHsKKyAgICBz
dGF0aWMgdm9pZCBpbmNyZW1lbnQoKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWNyZW1lbnQoKSB7
IH0KK307CiAKLWNsYXNzIFdlYWtQdHJJbXBsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFdlYWtQdHJJbXBsPiB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb3VudGVyID0gRW1wdHlDb3VudGVy
PiBjbGFzcyBXZWFrUHRySW1wbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWFrUHRy
SW1wbDxDb3VudGVyPj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtQdHJJbXBsKTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTU3LDcgKzQ5LDcgQEAg
cHVibGljOgogCiAgICAgfldlYWtQdHJJbXBsKCkKICAgICB7Ci0gICAgICAgIFdJTExfREVTVFJP
WV9XRUFLX1BUUl9JTVBMKG1fcHRyKTsKKyAgICAgICAgQ291bnRlcjo6ZGVjcmVtZW50KCk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgVDo6V2Vha1ZhbHVlVHlw
ZSogZ2V0KCkKQEAgLTc5LDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3dhc0NvbnN0
cnVjdGVkT25NYWluVGhyZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlmCiAgICAgewotICAgICAg
ICBESURfQ1JFQVRFX1dFQUtfUFRSX0lNUEwocHRyKTsKKyAgICAgICAgQ291bnRlcjo6aW5jcmVt
ZW50KCk7CiAgICAgfQogCiAgICAgdm9pZCogbV9wdHI7CkBAIC04OCwyOCArODAsMjcgQEAgcHJp
dmF0ZToKICNlbmRpZgogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIFdlYWtQdHIg
ewordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ291bnRlcj4gY2xhc3MgV2Vha1B0ciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vha1B0cigpIHsg
fQogICAgIFdlYWtQdHIoc3RkOjpudWxscHRyX3QpIHsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IFdlYWtQdHIoY29uc3QgV2Vha1B0cjxVPiYpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IFdlYWtQdHIoV2Vha1B0cjxVPiYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBXZWFrUHRy
KGNvbnN0IFdlYWtQdHI8VSwgQ291bnRlcj4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBX
ZWFrUHRyKFdlYWtQdHI8VSwgQ291bnRlcj4mJik7CiAKICAgICBUKiBnZXQoKSBjb25zdAogICAg
IHsKICAgICAgICAgLy8gRklYTUU6IE91ciBHQyB0aHJlYWRzIGN1cnJlbnRseSBuZWVkIHRvIGdl
dCBvcGFxdWUgcG9pbnRlcnMgZnJvbSBXZWFrUHRycyBhbmQgaGF2ZSB0byBiZSBzcGVjaWFsLWNh
c2VkLgogICAgICAgICBBU1NFUlQoIW1faW1wbCB8fCBUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8
fCBtX2ltcGwtPndhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkKCkgPT0gaXNNYWluVGhyZWFkKCkp
OwotICAgICAgICByZXR1cm4gbV9pbXBsID8gc3RhdGljX2Nhc3Q8VCo+KG1faW1wbC0+Z2V0PFQ+
KCkpIDogbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1faW1wbCA/IHN0YXRpY19jYXN0PFQqPiht
X2ltcGwtPnRlbXBsYXRlIGdldDxUPigpKSA6IG51bGxwdHI7CiAgICAgfQogCiAgICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsIHx8ICEqbV9pbXBsOyB9CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiAqbV9pbXBsOyB9
CiAKICAgICBXZWFrUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpIHsgbV9pbXBsID0gbnVs
bHB0cjsgcmV0dXJuICp0aGlzOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gV2Vha1B0ciYg
b3BlcmF0b3I9KGNvbnN0IFdlYWtQdHI8VT4mKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBX
ZWFrUHRyJiBvcGVyYXRvcj0oV2Vha1B0cjxVPiYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBXZWFrUHRyJiBvcGVyYXRvcj0oY29uc3QgV2Vha1B0cjxVLCBDb3VudGVyPiYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IFdlYWtQdHImIG9wZXJhdG9yPShXZWFrUHRyPFUsIENvdW50ZXI+
JiYpOwogCiAgICAgVCogb3BlcmF0b3ItPigpIGNvbnN0CiAgICAgewpAQCAtMTI2LDIxICsxMTcs
MjUgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKSB7IG1faW1wbCA9IG51bGxwdHI7IH0KIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWFrUHRyKFJlZjxXZWFrUHRySW1wbD4mJiByZWYpIDog
bV9pbXBsKFdURk1vdmUocmVmKSkgeyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBj
bGFzcyBXZWFrSGFzaFNldDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFdl
YWtQdHI7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFrUHRyRmFjdG9y
eTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgV2Vha1B0cjxVPiBtYWtlV2Vha1B0
cihVJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgV2Vh
a0hhc2hTZXQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3Mg
V2Vha1B0cjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBX
ZWFrUHRyRmFjdG9yeTsKKworICAgIGV4cGxpY2l0IFdlYWtQdHIoUmVmPFdlYWtQdHJJbXBsPENv
dW50ZXI+PiYmIHJlZikKKyAgICAgICAgOiBtX2ltcGwoV1RGTW92ZShyZWYpKQorICAgIHsKKyAg
ICB9CiAKLSAgICBSZWZQdHI8V2Vha1B0ckltcGw+IG1faW1wbDsKKyAgICBSZWZQdHI8V2Vha1B0
ckltcGw8Q291bnRlcj4+IG1faW1wbDsKIH07CiAKIC8vIE5vdGU6IHlvdSBwcm9iYWJseSB3YW50
IHRvIGluaGVyaXQgZnJvbSBDYW5NYWtlV2Vha1B0ciByYXRoZXIgdGhhbiB1c2UgdGhpcyBkaXJl
Y3RseS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBXZWFrUHRyRmFjdG9yeSB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vha1B0ckZhY3Rvcnk8VD4pOwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQ291bnRlciA9IEVtcHR5Q291bnRlcj4gY2xhc3MgV2Vha1B0ckZhY3Rv
cnkgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtQdHJGYWN0b3J5KTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICB1c2luZyBDb3VudGVyVHlwZSA9IENv
dW50ZXI7CisKICAgICBXZWFrUHRyRmFjdG9yeSgpCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgOiBtX3dhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkKGlzTWFpblRocmVhZCgpKQpAQCAtMTYx
LDIzICsxNTYsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFT
U0VSVChtX3dhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkID09IGlzTWFpblRocmVhZCgpKTsKLSAg
ICAgICAgbV9pbXBsID0gV2Vha1B0ckltcGw6OmNyZWF0ZShjb25zdF9jYXN0PFQqPigmb2JqZWN0
KSk7Ci0gICAgfQotCi0gICAgV2Vha1B0cjxUPiBjcmVhdGVXZWFrUHRyKFQmIG9iamVjdCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVJZk5lZWRlZChvYmplY3QpOwotCi0gICAgICAg
IEFTU0VSVCgmb2JqZWN0ID09IG1faW1wbC0+Z2V0PFQ+KCkpOwotICAgICAgICByZXR1cm4gV2Vh
a1B0cjxUPihtYWtlUmVmKCptX2ltcGwpKTsKKyAgICAgICAgbV9pbXBsID0gV2Vha1B0ckltcGw8
Q291bnRlcj46OmNyZWF0ZShjb25zdF9jYXN0PFQqPigmb2JqZWN0KSk7CiAgICAgfQogCi0gICAg
V2Vha1B0cjxjb25zdCBUPiBjcmVhdGVXZWFrUHRyKGNvbnN0IFQmIG9iamVjdCkgY29uc3QKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBXZWFrUHRyPFUsIENvdW50ZXI+IGNyZWF0ZVdlYWtQdHIo
VSYgb2JqZWN0KSBjb25zdAogICAgIHsKICAgICAgICAgaW5pdGlhbGl6ZUlmTmVlZGVkKG9iamVj
dCk7CiAKLSAgICAgICAgQVNTRVJUKCZvYmplY3QgPT0gbV9pbXBsLT5nZXQ8VD4oKSk7Ci0gICAg
ICAgIHJldHVybiBXZWFrUHRyPFQ+KG1ha2VSZWYoKm1faW1wbCkpOworICAgICAgICBBU1NFUlQo
Jm9iamVjdCA9PSBtX2ltcGwtPnRlbXBsYXRlIGdldDxUPigpKTsKKyAgICAgICAgcmV0dXJuIFdl
YWtQdHI8VSwgQ291bnRlcj4obWFrZVJlZigqbV9pbXBsKSk7CiAgICAgfQogCiAgICAgdm9pZCBy
ZXZva2VBbGwoKQpAQCAtMTkwLDkgKzE3Nyw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKIAot
ICAgIG11dGFibGUgUmVmUHRyPFdlYWtQdHJJbXBsPiBtX2ltcGw7CisgICAgbXV0YWJsZSBSZWZQ
dHI8V2Vha1B0ckltcGw8Q291bnRlcj4+IG1faW1wbDsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZDsKICNlbmRpZgpAQCAtMjAyLDEyICsx
ODksMTIgQEAgcHJpdmF0ZToKIC8vIGluaXRpYWxpemF0aW9uIGlzIGhvd2V2ZXIgdXNlZnVsIGlm
IHlvdSBwbGFuIHRvIGNhbGwgbWFrZVdlYWtQdHIoKSBmcm9tIG90aGVyIHRocmVhZHMuCiBlbnVt
IGNsYXNzIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb24geyBMYXp5LCBFYWdlciB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uIGluaXRpYWxp
emF0aW9uTW9kZSA9IFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246Okxhenk+IGNsYXNzIENh
bk1ha2VXZWFrUHRyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIFdlYWtQdHJGYWN0b3J5SW5pdGlh
bGl6YXRpb24gaW5pdGlhbGl6YXRpb25Nb2RlID0gV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlv
bjo6TGF6eSwgdHlwZW5hbWUgQ291bnRlciA9IEVtcHR5Q291bnRlcj4gY2xhc3MgQ2FuTWFrZVdl
YWtQdHIgewogcHVibGljOgogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBUOwogCi0gICAgY29u
c3QgV2Vha1B0ckZhY3Rvcnk8VD4mIHdlYWtQdHJGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV93
ZWFrUHRyRmFjdG9yeTsgfQotICAgIFdlYWtQdHJGYWN0b3J5PFQ+JiB3ZWFrUHRyRmFjdG9yeSgp
IHsgcmV0dXJuIG1fd2Vha1B0ckZhY3Rvcnk7IH0KKyAgICBjb25zdCBXZWFrUHRyRmFjdG9yeTxU
LCBDb3VudGVyPiYgd2Vha1B0ckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYWtQdHJGYWN0
b3J5OyB9CisgICAgV2Vha1B0ckZhY3Rvcnk8VCwgQ291bnRlcj4mIHdlYWtQdHJGYWN0b3J5KCkg
eyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FuTWFrZVdl
YWtQdHIoKQpAQCAtMjE3LDc1ICsyMDQsNzUgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBXZWFrUHRyRmFjdG9yeTxUPiBtX3dlYWtQdHJGYWN0b3J5OworICAgIFdlYWtQdHJG
YWN0b3J5PFQsIENvdW50ZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiB9OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgV2Vha1B0ckltcGwqIHdlYWtfcHRyX2ltcGxfY2Fz
dChXZWFrUHRySW1wbCogaW1wbCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIENvdW50ZXI+IGlubGluZSBXZWFrUHRySW1wbDxDb3VudGVyPiogd2Vha19wdHJfaW1w
bF9jYXN0KFdlYWtQdHJJbXBsPENvdW50ZXI+KiBpbXBsKQogewotICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc19zYW1lPHR5cGVuYW1lIFQ6OldlYWtWYWx1ZVR5cGUsIHR5cGVuYW1lIFU6OldlYWtW
YWx1ZVR5cGU+Ojp2YWx1ZSwgIkludmFsaWQgd2VhayBwb2ludGVyIGNhc3QiKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIFQ6OldlYWtWYWx1ZVR5cGUsIHR5cGVu
YW1lIFU6OldlYWtWYWx1ZVR5cGU+LCAiSW52YWxpZCB3ZWFrIHBvaW50ZXIgY2FzdCIpOwogICAg
IHJldHVybiBpbXBsOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBpbmxpbmUgV2Vha1B0cjxUPjo6V2Vha1B0cihjb25zdCBXZWFrUHRyPFU+JiBvKQordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ291bnRlcj4gdGVtcGxhdGU8dHlwZW5hbWUgVT4g
aW5saW5lIFdlYWtQdHI8VCwgQ291bnRlcj46OldlYWtQdHIoY29uc3QgV2Vha1B0cjxVLCBDb3Vu
dGVyPiYgbykKICAgICA6IG1faW1wbCh3ZWFrX3B0cl9pbXBsX2Nhc3Q8VCwgVT4oby5tX2ltcGwu
Z2V0KCkpKQogewogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBpbmxpbmUgV2Vha1B0cjxUPjo6V2Vha1B0cihXZWFrUHRyPFU+JiYgbykKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIENvdW50ZXI+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBX
ZWFrUHRyPFQsIENvdW50ZXI+OjpXZWFrUHRyKFdlYWtQdHI8VSwgQ291bnRlcj4mJiBvKQogICAg
IDogbV9pbXBsKGFkb3B0UmVmKHdlYWtfcHRyX2ltcGxfY2FzdDxULCBVPihvLm1faW1wbC5sZWFr
UmVmKCkpKSkKIHsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUg
VT4gaW5saW5lIFdlYWtQdHI8VD4mIFdlYWtQdHI8VD46Om9wZXJhdG9yPShjb25zdCBXZWFrUHRy
PFU+JiBvKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ291bnRlcj4gdGVtcGxhdGU8
dHlwZW5hbWUgVT4gaW5saW5lIFdlYWtQdHI8VCwgQ291bnRlcj4mIFdlYWtQdHI8VCwgQ291bnRl
cj46Om9wZXJhdG9yPShjb25zdCBXZWFrUHRyPFUsIENvdW50ZXI+JiBvKQogewogICAgIG1faW1w
bCA9IHdlYWtfcHRyX2ltcGxfY2FzdDxULCBVPihvLm1faW1wbC5nZXQoKSk7CiAgICAgcmV0dXJu
ICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBp
bmxpbmUgV2Vha1B0cjxUPiYgV2Vha1B0cjxUPjo6b3BlcmF0b3I9KFdlYWtQdHI8VT4mJiBvKQor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ291bnRlcj4gdGVtcGxhdGU8dHlwZW5hbWUg
VT4gaW5saW5lIFdlYWtQdHI8VCwgQ291bnRlcj4mIFdlYWtQdHI8VCwgQ291bnRlcj46Om9wZXJh
dG9yPShXZWFrUHRyPFUsIENvdW50ZXI+JiYgbykKIHsKICAgICBtX2ltcGwgPSBhZG9wdFJlZih3
ZWFrX3B0cl9pbXBsX2Nhc3Q8VCwgVT4oby5tX2ltcGwubGVha1JlZigpKSk7CiAgICAgcmV0dXJu
ICp0aGlzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2Vha1B0cjxUPiBtYWtl
V2Vha1B0cihUJiBvYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYXV0byBtYWtl
V2Vha1B0cihUJiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIHsgb2JqZWN0LndlYWtQdHJGYWN0b3J5
KCkuY3JlYXRlV2Vha1B0cihvYmplY3QpIH07CisgICAgcmV0dXJuIG9iamVjdC53ZWFrUHRyRmFj
dG9yeSgpLnRlbXBsYXRlIGNyZWF0ZVdlYWtQdHI8VD4ob2JqZWN0KTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFdlYWtQdHI8VD4gbWFrZVdlYWtQdHIoVCogcHRyKQordGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIGF1dG8gbWFrZVdlYWtQdHIoVCogcHRyKSAtPiBkZWNsdHlw
ZShtYWtlV2Vha1B0cigqcHRyKSkKIHsKICAgICBpZiAoIXB0cikKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICByZXR1cm4gbWFrZVdlYWtQdHIoKnB0cik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2Vha1B0cjxUPiYg
YSwgY29uc3QgV2Vha1B0cjxVPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIENvdW50ZXI+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2Vha1B0cjxU
LCBDb3VudGVyPiYgYSwgY29uc3QgV2Vha1B0cjxVLCBDb3VudGVyPiYgYikKIHsKICAgICByZXR1
cm4gYS5nZXQoKSA9PSBiLmdldCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWtQdHI8VD4mIGEsIFUqIGIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBDb3VudGVyPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYWtQdHI8VCwgQ291bnRlcj4mIGEsIFUqIGIpCiB7CiAg
ICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBXZWFrUHRyPFU+JiBiKQor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgQ291bnRlcj4gaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBXZWFrUHRyPFUsIENvdW50ZXI+JiBiKQogewog
ICAgIHJldHVybiBhID09IGIuZ2V0KCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vha1B0cjxUPiYgYSwgY29uc3Qg
V2Vha1B0cjxVPiYgYikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IENvdW50ZXI+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vha1B0cjxULCBDb3VudGVy
PiYgYSwgY29uc3QgV2Vha1B0cjxVLCBDb3VudGVyPiYgYikKIHsKICAgICByZXR1cm4gYS5nZXQo
KSAhPSBiLmdldCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYWtQdHI8VD4mIGEsIFUqIGIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBDb3VudGVyPiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFdlYWtQdHI8VCwgQ291bnRlcj4mIGEsIFUqIGIpCiB7CiAgICAgcmV0dXJu
IGEuZ2V0KCkgIT0gYjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBXZWFrUHRyPFU+JiBiKQordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgQ291bnRlcj4gaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShUKiBhLCBjb25zdCBXZWFrUHRyPFUsIENvdW50ZXI+JiBiKQogewogICAgIHJldHVy
biBhICE9IGIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9D
b250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRD
aGFuZ2VPYnNlcnZlci5oCmluZGV4IGRjNmY2YTllMzI2ZDhlNDdmZTFlOWNiNjEzNzY3YTc1MTgy
NDdmY2IuLjU5ZGEwZjQxMmYzMTFhZmE1YzYxNGFiNzBlZTZkZDM2YTMzNDk5MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMjk0
YWUxMWY4ZjRhYTRjODk1YjNhMjJmOTYzMzQyYzdhYWY5NWM0Li5iNjM0YTVkNDE0ZGU2MTIxOGQ3
ODJkNTg3YWI1YWFhNDMwMjdiYjdjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTEgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpdGVyYXRvciBjaGVja2luZyB0byBM
aXN0SGFzaFNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjExNjY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcDogUmVtb3ZlZCB1c2Ugb2Yg
dGhlIERJRF9DUkVBVEVfV0VBS19QVFJfSU1QTAorICAgICAgICBhbmQgV0lMTF9ERVNUUk9ZX1dF
QUtfUFRSX0lNUEwsIHdoaWNoIGRpZG4ndCB3b3JrIGNvbnNpc3RlbnRseSBiZWNhdXNlIG9mIHRo
ZQorICAgICAgICBvbmUtZGVmaW5pdGlvbiBydWxlLiBJbnN0ZWFkLCB0aGlzIGZpbGUgcGFyYW1l
dGVyaXplcyB0aGUgV2Vha1B0ciBmYW1pbHkgb2YKKyAgICAgICAgY2xhc3MgdGVtcGxhdGVzIHdp
dGggYSBjb3VudGVyIGNsYXNzLiBUbyBhdm9pZCBoYXZpbmcgdG8gcmV3cml0ZSB0ZXN0IGNvZGUs
IHVzZWQKKyAgICAgICAgYWxpYXMgdGVtcGxhdGVzIHRvIGluc2VydCB0aGVzZSBjbGFzcyB0ZW1w
bGF0ZSBpbnRvIHRoZSBUZXN0V2ViS2l0QVBJIG5hbWVzcGFjZSwKKyAgICAgICAgaGlkaW5nIHRo
ZSBjbGFzcyB0ZW1wbGF0ZXMgZnJvbSB0aGUgV1RGIG5hbWVzcGFjZS4KKwogMjAyMC0wNS0xMSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09T
IF0gc2Nyb2xsaW5nY29vcmRpbmF0b3IvbWFjL2xhdGNoaW5nL3Njcm9sbGluZy1zZWxlY3Qtc2hv
dWxkLW5vdC1sYXRjaC1tYWluZnJhbWUuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTIyMGM3NDRjMjNhZjU3ZWJm
YWM5NDVlMGUxNTU2MTliMmYzNzdlNC4uMmZkZDkzYTRmODg2NjIzMmNkZDlhN2Q1YzRhNGZlNjEy
ZDVlOTY3YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAg
LTI1LDIzICsyNSwyMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLXN0YXRpYyB1bnNpZ25l
ZCBzX2Jhc2VXZWFrUmVmZXJlbmNlcyA9IDA7Ci0KLSNkZWZpbmUgRElEX0NSRUFURV9XRUFLX1BU
Ul9JTVBMKHApIGRvIHsgXAotICAgICsrc19iYXNlV2Vha1JlZmVyZW5jZXM7IFwKLX0gd2hpbGUg
KDApOwotCi0jZGVmaW5lIFdJTExfREVTVFJPWV9XRUFLX1BUUl9JTVBMKHApIGRvIHsgXAotICAg
IC0tc19iYXNlV2Vha1JlZmVyZW5jZXM7IFwKLX0gd2hpbGUgKDApOwotCiAjaW5jbHVkZSAiVGVz
dC5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCitzdGF0aWMgdW5zaWduZWQgc19iYXNlV2Vha1JlZmVyZW5jZXMgPSAwOworCitzdHJ1Y3Qg
V2Vha1B0ckNvdW50ZXIgeworICAgIHN0YXRpYyB2b2lkIGluY3JlbWVudCgpIHsgKytzX2Jhc2VX
ZWFrUmVmZXJlbmNlczsgfQorICAgIHN0YXRpYyB2b2lkIGRlY3JlbWVudCgpIHsgLS1zX2Jhc2VX
ZWFrUmVmZXJlbmNlczsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgQ2FuTWFr
ZVdlYWtQdHIgPSBXVEY6OkNhbk1ha2VXZWFrUHRyPFQsIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6
YXRpb246OkxhenksIFdlYWtQdHJDb3VudGVyPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5n
IFdlYWtIYXNoU2V0ID0gV1RGOjpXZWFrSGFzaFNldDxULCBXZWFrUHRyQ291bnRlcj47Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBXZWFrUHRyID0gV1RGOjpXZWFrUHRyPFQsIFdlYWtQdHJD
b3VudGVyPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIFdlYWtQdHJGYWN0b3J5ID0gV1RG
OjpXZWFrUHRyRmFjdG9yeTxULCBXZWFrUHRyQ291bnRlcj47CisKIHN0cnVjdCBJbnQgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8SW50PiB7CiAgICAgSW50KGludCBpKSA6IG1faShpKSB7IH0KICAg
ICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiBtX2k7IH0KQEAgLTc0LDEwICs3NCw2IEBA
IHB1YmxpYzoKICAgICB9CiB9OwogCi19Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQog
VEVTVChXVEZfV2Vha1B0ciwgQmFzaWMpCiB7CiAgICAgSW50IGR1bW15KDUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>