<?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>215528</bug_id>
          
          <creation_ts>2020-08-14 17:40:43 -0700</creation_ts>
          <short_desc>[JSC] attribute-change transition should not pin Structure</short_desc>
          <delta_ts>2020-09-11 20:28:18 -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>ashvayka</cc>
    
    <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>1680541</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-14 17:40:43 -0700</bug_when>
    <thetext>[JSC] attribute-change transition should not pin Structure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680542</commentid>
    <comment_count>1</comment_count>
      <attachid>406637</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-14 17:41:00 -0700</bug_when>
    <thetext>Created attachment 406637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680545</commentid>
    <comment_count>2</comment_count>
      <attachid>406639</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-14 17:51:08 -0700</bug_when>
    <thetext>Created attachment 406639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680571</commentid>
    <comment_count>3</comment_count>
      <attachid>406648</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-14 19:20:01 -0700</bug_when>
    <thetext>Created attachment 406648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680573</commentid>
    <comment_count>4</comment_count>
      <attachid>406649</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-14 19:23:18 -0700</bug_when>
    <thetext>Created attachment 406649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680574</commentid>
    <comment_count>5</comment_count>
      <attachid>406649</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-14 19:35:59 -0700</bug_when>
    <thetext>Comment on attachment 406649
Patch

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

&gt; Source/JavaScriptCore/runtime/Structure.cpp:492
&gt; +    if (structure-&gt;hasBeenDictionary())

maybe just an explanation why this is the way  it is and why it&apos;s not profitable to do the other thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680579</commentid>
    <comment_count>6</comment_count>
      <attachid>406653</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-14 20:23:48 -0700</bug_when>
    <thetext>Created attachment 406653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682083</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-21 17:41:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/67591477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687885</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-11 20:28:18 -0700</bug_when>
    <thetext>Committed r266969: &lt;https://trac.webkit.org/changeset/266969&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406637</attachid>
            <date>2020-08-14 17:41:00 -0700</date>
            <delta_ts>2020-08-14 17:51:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215528-20200814174059.patch</filename>
            <type>text/plain</type>
            <size>29646</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NTIyNDhjOGI5ZDI0NTJjYzQ3NTMzZGRiYWI1MGY1ZWYwZGNmMjYxLi5hNGRkZTYyMTEwMzBlMGU3
YTYwM2ZiZmU0ZWRjYjY2YTZmYjBjNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMC0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIGF0dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBz
aG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVB1dFN0cnVjdHVyZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eVRhYmxlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3Ry
dWN0dXJlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJv
cGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFu
Z2VUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
bm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YXR0
cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZv
ckVhY2hQcm9wZXJ0eUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YXR0
cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAg
ICAgIChKU0M6OkpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlv
bkxpc3QpOgorCiAyMDIwLTA4LTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KIAogICAgICAgICBDYWNoZSBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmlu
ZGV4IDFjMjA4OTcwN2ZmMGEwYWQxZDNjOWYwZWFjMzVhMmM1M2E0N2YwYjkuLjkxNDg3MjU4OTZk
MDY5MTM2ZDE2NDNmYThjNGUyMGY0ZDU2NmM1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3Jh
dGNoR1BSKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgp
LT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVs
ZXRpb24pOwogICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKICAgICAgICAg
QVNTRVJUKCF2YWx1ZVJlZ3MudXNlcyhiYXNlR1BSKSk7CiAgICAgICAgIEFTU0VSVCghdmFsdWVS
ZWdzLnVzZXMoc2NyYXRjaEdQUikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCA4NTIwMGQ1ZGFmMWRlZThlOTBmZTgxNDFkYmIxY2NiZDliNTMzN2VlLi4x
ZDliMzVlYzU5OWIzMjBlNzlhM2I4NTA1ZDg1NTUxZWM3OGYzOTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOwog
ICAgICAgICB3cml0ZShKU0NlbGxfaW5kZXhpbmdUeXBlKTsKIAotICAgICAgICBpZiAobm9kZS0+
dHJhbnNpdGlvbigpLT5uZXh0LT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpIHsKKyAg
ICAgICAgaWYgKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+dHJhbnNpdGlvbktpbmQoKSA9PSBU
cmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbikgewogICAgICAgICAgICAgLy8gV2UgdXNl
IHRoaXMgImRlbGV0ZSBmZW5jZSIgdG8gbW9kZWwgdGhlIHByb3BlciBhbGlhc2luZyBvZiBmdXR1
cmUgc3RvcmVzLgogICAgICAgICAgICAgLy8gQm90aCBpbiBERkcgYW5kIHdoZW4gd2UgbG93ZXIg
dG8gQjMsIHdlIG1vZGVsIGFsaWFzaW5nIG9mIHByb3BlcnRpZXMgYnkKICAgICAgICAgICAgIC8v
IHByb3BlcnR5ICBuYW1lLiBJbiBhIHdvcmxkIHdpdGhvdXQgZGVsZXRlLCB0aGF0IGFsc28gbW9k
ZWxzIHtiYXNlLCBwcm9wZXJ0eU9mZnNldH0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZTc4OTJhYzZjMjBlOTY3NThiNDMzM2RkNmY1M2M1
NWRmYmUyY2FhMS4uNDFiOWU3ZGJmNTc3NWZkNGQwZTI1ODJkZDRkZTU3MTFlZDNjZmNhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzgx
Niw3ICszODE2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBMVmFsdWUgY2Vs
bCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7IAogCi0gICAgICAgIGF1dG8mIGhlYXAgPSBt
X25vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigp
ID8gbV9oZWFwcy5KU0NlbGxIZWFkZXJBbmROYW1lZFByb3BlcnRpZXMgOiBtX2hlYXBzLkpTQ2Vs
bF9zdHJ1Y3R1cmVJRDsKKyAgICAgICAgYXV0byYgaGVhcCA9IG1fbm9kZS0+dHJhbnNpdGlvbigp
LT5uZXh0LT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0
aW9uID8gbV9oZWFwcy5KU0NlbGxIZWFkZXJBbmROYW1lZFByb3BlcnRpZXMgOiBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmVJRDsKICAgICAgICAgVHlwZWRQb2ludGVyIHBvaW50ZXIgeyBoZWFwLCBt
X291dC5hZGRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQub2Zmc2V0KCkpIH07
CiAKICAgICAgICAgbV9vdXQuc3RvcmUzMigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCmluZGV4IDZhYTI2MDZhYTlkYjVjYmI5ZDY3MjgzMjlhOTFlY2FhNGZmNDQzMTguLjJlYmIx
M2FmZGE0MGUxNjQwYzNiZDkzMTgyYWYyYzU1Y2FkNThmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcApAQCAtODMxLDcgKzgzMSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICBB
U1NFUlQobmV3T2Zmc2V0ID09IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpID09IG9sZFN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkp
OworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQoKSA9PSBU
cmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CiAgICAgICAgICAgICBBU1NFUlQobmV3
U3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0
KG5ld09mZnNldCkpOwogICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURl
bGV0ZSh2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCwgb2xkU3RydWN0dXJl
LCBuZXdTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKaW5kZXggMjJjZDQyYmI1ZjAzYWFjYTU1ZjY4MDVjMGI1ZDNjZDE2MTlkNjViMC4uNjU5
NTA3ZTRhMTgyMTc5NTM5YmY3MmMzMmQ2YzNlZjIzMWVmYjIyMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC00MzgsMjAgKzQzOCwzMyBAQCBQcm9w
ZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlUYWJsZShWTSYgdm0sIGJv
b2wgc2V0UHJvcGVydHlUYWJsZQogICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwog
ICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlv
blRyYW5zaXRpb24oKSkgeworICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+dHJhbnNpdGlvbktp
bmQoKSkgeworICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOiB7
CisgICAgICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5KHN0cnVjdHVyZS0+bV90cmFuc2l0
aW9uUHJvcGVydHlOYW1lLmdldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZzZXQoKSwgc3Ry
dWN0dXJlLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgYXV0
byBuZXh0T2Zmc2V0ID0gdGFibGUtPm5leHRPZmZzZXQoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0
eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobmV4dE9mZnNldCwgbmV4dE9mZnNldCA9
PSBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZzZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRhYmxlLT5hZGQodm0sIGVudHJ5KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuZmlyc3QuZmlyc3QtPm9mZnNldCA9PSBuZXh0T2Zmc2V0KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVs
ZXRpb246IHsKICAgICAgICAgICAgIGF1dG8gaXRlbSA9IHRhYmxlLT5maW5kKHN0cnVjdHVyZS0+
bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKTsKICAgICAgICAgICAgIEFTU0VSVChpdGVt
LmZpcnN0KTsKICAgICAgICAgICAgIHRhYmxlLT5yZW1vdmUodm0sIGl0ZW0pOwogICAgICAgICAg
ICAgdGFibGUtPmFkZERlbGV0ZWRPZmZzZXQoc3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCkp
OwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZTogewor
ICAgICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSB0YWJsZS0+Z2V0KHN0cnVjdHVy
ZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGVudHJ5LT5h
dHRyaWJ1dGVzID0gc3RydWN0dXJlLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCk7Cisg
ICAgICAgICAgICBBU1NFUlQoZW50cnktPm9mZnNldCA9PSBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25P
ZmZzZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc1Byb3BlcnR5QWRkaXRpb25U
cmFuc2l0aW9uKCkpOwotICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5KHN0cnVjdHVyZS0+
bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZz
ZXQoKSwgc3RydWN0dXJlLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCkpOwotICAgICAg
ICBhdXRvIG5leHRPZmZzZXQgPSB0YWJsZS0+bmV4dE9mZnNldChzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG5leHRPZmZzZXQsIG5leHRPZmZzZXQg
PT0gc3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9
IHRhYmxlLT5hZGQodm0sIGVudHJ5KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5zZWNvbmQpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmZpcnN0
LmZpcnN0LT5vZmZzZXQgPT0gbmV4dE9mZnNldCk7CiAgICAgfQogICAgIAogICAgIGNoZWNrT2Zm
c2V0Q29uc2lzdGVuY3koCkBAIC00NzQsNiArNDg3LDExIEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUq
IHN0CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQo
c3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAorICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CisK
KyAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVj
dHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHVpZCwgYXR0cmlidXRlcywgVHJhbnNpdGlvbktp
bmQ6OlByb3BlcnR5QWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGlu
ZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5z
aXRpb25PZmZzZXQoKTsKQEAgLTUyMyw4ICs1NDEsNyBAQCBib29sIFN0cnVjdHVyZTo6aG9sZXNN
dXN0Rm9yd2FyZFRvUHJvdG90eXBlKFZNJiB2bSwgSlNPYmplY3QqIGJhc2UpIGNvbnN0CiAKIFN0
cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoCi0gICAgICAg
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlID0gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKICAgICBp
ZiAobmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01ODUs
NyArNjAyLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5VHJhbnNpdGlv
bihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm8KICAgICB0cmFuc2l0aW9uLT5zZXRQ
cm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZyhmYWxzZSk7CiAKICAgICBjaGVj
a09mZnNldCh0cmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGlu
ZUNhcGFjaXR5KCkpOwotICAgIHsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25h
cnkoKSkgewogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVy
ZS0+bV9sb2NrLCB2bS5oZWFwKTsKICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJs
ZS5hZGQodm0sIHRyYW5zaXRpb24pOwogICAgIH0KQEAgLTU5NiwxMiArNjEzLDEyIEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwotICAgIGlmIChuZXdTdHJ1Y3R1cmUpCi0g
ICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Ci0KLSAgICByZXR1cm4gcmVtb3ZlTmV3UHJvcGVy
dHlUcmFuc2l0aW9uKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNl
dCwgZGVmZXJyZWQpOworICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKKyAg
ICAgICAgaWYgKG5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7
CisgICAgfQorICAgIHJldHVybiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKIH0KIAogU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUlt
cGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCkBAIC02MTAsNiArNjI3LDEw
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmpl
Y3QoKSk7CiAKICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OworCisgICAgaWYgKHN0cnVjdHVy
ZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBp
ZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlv
blRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5k
OjpQcm9wZXJ0eURlbGV0aW9uKSkgewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1Ry
YW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVD
YXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0
aW9uT2Zmc2V0KCk7CkBAIC02NzgsNyArNjk5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJl
bW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLAog
ICAgIHRyYW5zaXRpb24tPnNldFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5n
KGZhbHNlKTsKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQo
KSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgeworICAgIGlmICghc3RydWN0
dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICBzdHJ1Y3R1
cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CiAgICAgfQpAQCAtNzA0
LDczICs3MjUsNzggQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5z
aXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlMKICAgICByZXR1cm4gdHJhbnNp
dGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRp
b24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqIGRlZmVycmVkKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5n
ZVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYg
b2Zmc2V0KQogewotICAgIGF1dG8gc2V0RW50cnlBdHRyaWJ1dGVzID0gWyZdKFN0cnVjdHVyZSog
c3RydWN0dXJlKSB7Ci0gICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gc3RydWN0dXJl
LT5lbnN1cmVQcm9wZXJ0eVRhYmxlKHZtKS0+Z2V0KHByb3BlcnR5TmFtZS51aWQoKSk7Ci0gICAg
ICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgICAgIGVudHJ5LT5hdHRyaWJ1dGVzID0gYXR0cmlidXRl
czsKLSAgICB9OworICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7CisgICAg
QVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisKKyAgICBvZmZzZXQgPSBpbnZhbGlkT2Zm
c2V0OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24g
PSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldCh1aWQsIGF0dHJpYnV0ZXMsIFRyYW5z
aXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZSkpIHsKKyAgICAgICAgdmFsaWRhdGVP
ZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5nVHJh
bnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIG9mZnNldCA9IGV4aXN0aW5nVHJh
bnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOworICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFu
c2l0aW9uOworICAgIH0KIAotICAgIGF1dG8gc2V0U3RydWN0dXJlRmxhZ3MgPSBbJl0oU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpCi0gICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9u
bHlQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKQotICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRJc1F1aWNrUHJvcGVydHlB
Y2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24oZmFsc2UpOwotICAgIH07CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0
aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnRGaXJlKiBkZWZlcnJlZCkKK3sKICAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxl
RGljdGlvbmFyeSgpKSB7Ci0gICAgICAgIHNldEVudHJ5QXR0cmlidXRlcyhzdHJ1Y3R1cmUpOwot
ICAgICAgICBzZXRTdHJ1Y3R1cmVGbGFncyhzdHJ1Y3R1cmUpOworICAgICAgICBzdHJ1Y3R1cmUt
PmF0dHJpYnV0ZUNoYW5nZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIFtdKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0
LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAgc3RydWN0dXJlLT5jaGVja09mZnNldENv
bnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CiAgICAgfQogCisgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIGlmICghc3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGlu
Z1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5h
bWUudWlkKCksIGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNo
YW5nZSkpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsK
KyAgICAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gYXR0cmlidXRlQ2hh
bmdlVHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUu
dWlkKCksIGF0dHJpYnV0ZXMsIG9mZnNldCkpIHsKICAgICAgICAgICAgIHZhbGlkYXRlT2Zmc2V0
KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRp
b24tPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgZXhpc3RpbmdUcmFuc2l0aW9uLT5j
aGVja09mZnNldENvbnNpc3RlbmN5KCk7CiAgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFu
c2l0aW9uOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5z
aXRpb25Db3VudEhhc092ZXJmbG93ZWQoKSkgewotICAgICAgICAgICAgQVNTRVJUKCFpc0NvcHlP
bldyaXRlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkpKTsKLSAgICAgICAgICAgIFN0cnVjdHVy
ZSogdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlLCBkZWZlcnJlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IHRyYW5z
aXRpb24pOwotICAgICAgICAgICAgc2V0RW50cnlBdHRyaWJ1dGVzKHRyYW5zaXRpb24pOwotICAg
ICAgICAgICAgc2V0U3RydWN0dXJlRmxhZ3ModHJhbnNpdGlvbik7Ci0gICAgICAgICAgICByZXR1
cm4gdHJhbnNpdGlvbjsKLSAgICAgICAgfQorICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25D
b3VudEhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICBBU1NFUlQoIWlzQ29weU9uV3JpdGUoc3Ry
dWN0dXJlLT5pbmRleGluZ01vZGUoKSkpOworICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24g
PSB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgZGVmZXJy
ZWQpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IHRyYW5zaXRpb24pOworICAgICAgICB0
cmFuc2l0aW9uLT5hdHRyaWJ1dGVDaGFuZ2Uodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CisgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KIAorICAgIC8vIEV2ZW4gaWYgdGhl
IGN1cnJlbnQgc3RydWN0dXJlIGlzIGRpY3Rpb25hcnksIHdlIHNob3VsZCBwZXJmb3JtIHRyYW5z
aXRpb24gc2luY2UgdGhpcyBjaGFuZ2VzIGF0dHJpYnV0ZXMgb2YgZXhpc3RpbmcgcHJvcGVydGll
cyB0byBrZWVwCisgICAgLy8gc3RydWN0dXJlIHN0aWxsIGNhY2hlYWJsZS4KICAgICBTdHJ1Y3R1
cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUodm0sIHN0cnVjdHVyZSk7CisgICAgdHJhbnNpdGlvbi0+
bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwodm0sIHRyYW5zaXRpb24sIHN0cnVj
dHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CiAKICAgICB7CiAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodHJhbnNpdGlvbi0+bV9sb2NrKTsKICAgICAgICAgdHJh
bnNpdGlvbi0+c2V0UHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcodHJ1ZSk7
CiAgICAgfQogCi0gICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9w
ZXJ0eVRhYmxlRm9yUGlubmluZyh2bSk7Ci0gICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkpCi0gICAgICAgIHRyYW5zaXRpb24tPnBpbihob2xkTG9jayh0cmFuc2l0aW9uLT5tX2xvY2sp
LCB2bSwgdGFibGUpOwotICAgIGVsc2UKLSAgICAgICAgdHJhbnNpdGlvbi0+cGluRm9yQ2FjaGlu
Zyhob2xkTG9jayh0cmFuc2l0aW9uLT5tX2xvY2spLCB2bSwgdGFibGUpOworICAgIHRyYW5zaXRp
b24tPm1fYmxvYi5zZXRJbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KHN0cnVjdHVyZS0+aW5k
ZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgpICYgfkNvcHlPbldyaXRlKTsKICAgICB0cmFuc2l0
aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAg
dHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsK
ICAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uS2luZChUcmFuc2l0aW9uS2luZDo6UHJvcGVy
dHlBdHRyaWJ1dGVDaGFuZ2UpOworICAgIHRyYW5zaXRpb24tPnNldFByb3BlcnR5VGFibGUodm0s
IHN0cnVjdHVyZS0+dGFrZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQodm0pKTsKICAgICB0
cmFuc2l0aW9uLT5zZXRNYXhPZmZzZXQodm0sIHN0cnVjdHVyZS0+bWF4T2Zmc2V0KCkpOwogCi0g
ICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSB0YWJsZS0+Z2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7Ci0gICAgQVNTRVJUKGVudHJ5KTsKLSAgICBlbnRyeS0+YXR0cmlidXRlcyA9IGF0dHJpYnV0
ZXM7Ci0gICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvbk9mZnNldCh2bSwgZW50cnktPm9mZnNl
dCk7Ci0gICAgc2V0U3RydWN0dXJlRmxhZ3ModHJhbnNpdGlvbik7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+YXR0cmlidXRlQ2hhbmdlKHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25PZmZzZXQodm0sIG9m
ZnNldCk7CiAKKyAgICAvLyBOb3cgdGhhdCBldmVyeXRoaW5nIGlzIGZpbmUgd2l0aCB0aGUgbmV3
IHN0cnVjdHVyZSdzIGJvb2trZWVwaW5nLCB0aGUgR0MgaXMgZnJlZSB0byBibG93IHRoZQorICAg
IC8vIHRhYmxlIGF3YXkgaWYgaXQgd2FudHMuIFdlIGNhbiBub3cgcmVidWlsZCBpdCBmaW5lLgog
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgdHJhbnNpdGlvbi0+c2V0UHJvdGVjdFBy
b3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcoZmFsc2UpOwogCiAgICAgY2hlY2tPZmZzZXQo
dHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0
eSgpKTsKLSAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBpZiAoIXN0
cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkgewogICAgICAgICBHQ1NhZmVDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrLCB2bS5oZWFwKTsKICAgICAgICAgc3Ry
dWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRyYW5zaXRpb24pOwogICAgIH0KQEAg
LTg0MSwxMCArODY3LDEyIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5z
aXRpb25TbG93KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRyCiAgICAgSW5kZXhpbmdU
eXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkgPSBuZXdJbmRleGluZ1R5cGUoc3RydWN0
dXJlLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCksIHRyYW5zaXRpb25LaW5kKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbjsKLSAgICBpZiAoIXN0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkgJiYgKGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90
cmFuc2l0aW9uVGFibGUuZ2V0KG51bGxwdHIsIDAsIHRyYW5zaXRpb25LaW5kKSkpIHsKLSAgICAg
ICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbktpbmQoKSA9PSB0cmFuc2l0
aW9uS2luZCk7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24tPmluZGV4aW5nTW9k
ZUluY2x1ZGluZ0hpc3RvcnkoKSA9PSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KTsKLSAg
ICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVy
ZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KG51bGxwdHIsIDAsIHRyYW5zaXRpb25LaW5kKSkgewor
ICAgICAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbktpbmQoKSA9
PSB0cmFuc2l0aW9uS2luZCk7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9u
LT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkgPT0gaW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeSk7CisgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworICAgICAg
ICB9CiAgICAgfQogICAgIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKQEAgLTg4NCw3
ICs5MTIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uU2xv
dyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUcgogICAgICAgICAmJiAhdHJhbnNpdGlv
bi0+cHJvcGVydHlUYWJsZU9yTnVsbCgpLT5pc0VtcHR5KCkpCiAgICAgICAgIHRyYW5zaXRpb24t
PnNldEhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8odHJ1
ZSk7CiAgICAgCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBpZiAo
c3RydWN0dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIFByb3BlcnR5VGFibGUq
IHRhYmxlID0gdHJhbnNpdGlvbi0+ZW5zdXJlUHJvcGVydHlUYWJsZSh2bSk7CiAgICAgICAgIHRy
YW5zaXRpb24tPnBpbihob2xkTG9jayh0cmFuc2l0aW9uLT5tX2xvY2spLCB2bSwgdGFibGUpOwog
ICAgIH0gZWxzZSB7CkBAIC0xMTcwLDYgKzExOTgsMTUgQEAgUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpyZW1vdmUoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIH0pOwog
fQogCitQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZShWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0
dXJuIGF0dHJpYnV0ZUNoYW5nZTxTaG91bGRQaW46Ok5vPigKKyAgICAgICAgdm0sIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywKKyAgICAgICAgW3RoaXMsICZ2bV0gKGNvbnN0IEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCBuZXdNYXhPZmZz
ZXQpIHsKKyAgICAgICAgICAgIHNldE1heE9mZnNldCh2bSwgbmV3TWF4T2Zmc2V0KTsKKyAgICAg
ICAgfSk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVy
ZShWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSkKIHsKICAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IGVuc3VyZVByb3BlcnR5VGFi
bGVJZk5vdEVtcHR5KHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKaW5kZXggYTAwNDAxMGFiNGVhMzU3YzgyNGI1N2U4ZTU2NTEwN2NmNjFmZjQxNC4uODAyY2I0
YTM5M2JhM2QxNmQzMDk5MWFlZjRiOTQxYzRkMmFiMGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTE5OCw2ICsxOTgsNyBAQCBjbGFzcyBTdHJ1Y3R1
cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0
dXJlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFu
c2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VU
cmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYs
IFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9
IG51bGxwdHIpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5
VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIHNlYWxUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CkBAIC0yMjIsNiArMjIz
LDggQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgUHJvcGVy
dHlPZmZzZXQgYWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgRnVuYyYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihWTSYsIFByb3BlcnR5TmFtZSwgY29uc3QgRnVuYyYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmM+CisgICAgUHJvcGVydHlPZmZzZXQgYXR0cmlidXRlQ2hhbmdlV2l0aG91dFRyYW5zaXRp
b24oVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMmKTsK
ICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNWYWx1ZSBwcm90
b3R5cGUpOwogICAgICAgICAKICAgICBib29sIGlzRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJu
IGRpY3Rpb25hcnlLaW5kKCkgIT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9CkBAIC03MTUsOSArNzE4
LDYgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGlj
X2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzIDw9IHNpemVv
ZihUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKSAqIDgpOwogICAgIHN0YXRpY19hc3NlcnQo
c19iaXRXaWR0aE9mVHJhbnNpdGlvbktpbmQgPD0gc2l6ZW9mKFRyYW5zaXRpb25LaW5kKSAqIDgp
OwogCi0gICAgYm9vbCBpc1Byb3BlcnR5QWRkaXRpb25UcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gdHJhbnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBZGRpdGlvbjsg
fQotICAgIGJvb2wgaXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb247IH0K
LQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBA
IC03NDUsNiArNzQ1LDkgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgdGVtcGxhdGU8U2hvdWxkUGluLCB0eXBlbmFtZSBGdW5jPgogICAgIFByb3BlcnR5T2Zm
c2V0IHJlbW92ZShWTSYsIFByb3BlcnR5TmFtZSwgY29uc3QgRnVuYyYpOwogICAgIFByb3BlcnR5
T2Zmc2V0IHJlbW92ZShWTSYsIFByb3BlcnR5TmFtZSk7CisgICAgdGVtcGxhdGU8U2hvdWxkUGlu
LCB0eXBlbmFtZSBGdW5jPgorICAgIFByb3BlcnR5T2Zmc2V0IGF0dHJpYnV0ZUNoYW5nZShWTSYs
IFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgRnVuYyYpOworICAgIFBy
b3BlcnR5T2Zmc2V0IGF0dHJpYnV0ZUNoYW5nZShWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcyk7CiAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGFmN2Qx
YWRlYWJjODljZWFkYjNmYzZhZjQ3YTFhYjhiNzJlMjE3YmEuLjk2ZmY2ZjhmNDI2NDM1MGRmZTdh
OTRkZTk2NGJkNDQxZmI3ODc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTE3Niw4ICsxNzYsMTYgQEAgdm9pZCBTdHJ1Y3R1
cmU6OmZvckVhY2hQcm9wZXJ0eUNvbmN1cnJlbnRseShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
CiAgICAgICAgIHNlZW5Qcm9wZXJ0aWVzLmFkZChzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3Bl
cnR5TmFtZS5nZXQoKSk7CiAKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0
aW9uVHJhbnNpdGlvbigpKQorICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+dHJhbnNpdGlvbktp
bmQoKSkgeworICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOgor
ICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZToKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURl
bGV0aW9uOgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFmdW5jdG9yKFByb3BlcnR5TWFwRW50cnkoc3RydWN0dXJlLT5tX3Ry
YW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNldCgp
LCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSkpKSB7CiAgICAgICAg
ICAgICBpZiAodGFibGUpCkBAIC01MjEsNiArNTI5LDQ5IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNl
dCBTdHJ1Y3R1cmU6OnJlbW92ZShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNv
bnN0CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAordGVtcGxhdGU8U3RydWN0dXJlOjpTaG91bGRQ
aW4gc2hvdWxkUGluLCB0eXBlbmFtZSBGdW5jPgoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVj
dHVyZTo6YXR0cmlidXRlQ2hhbmdlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgY29uc3QgRnVuYyYgZnVuYykKK3sKKyAgICBQcm9wZXJ0eVRh
YmxlKiB0YWJsZSA9IGVuc3VyZVByb3BlcnR5VGFibGUodm0pOworCisgICAgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2ssIHZtLmhlYXApOworCisgICAgc3dpdGNoIChzaG91
bGRQaW4pIHsKKyAgICBjYXNlIFNob3VsZFBpbjo6WWVzOgorICAgICAgICBwaW4obG9ja2VyLCB2
bSwgdGFibGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNob3VsZFBpbjo6Tm86CisgICAg
ICAgIHNldFByb3BlcnR5VGFibGUodm0sIHRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgQVNTRVJUKEpTQzo6aXNWYWxpZE9mZnNldChnZXQodm0sIHByb3BlcnR5TmFtZSkpKTsK
KworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9
IHRhYmxlLT5nZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAg
ICByZXR1cm4gaW52YWxpZE9mZnNldDsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGVu
dHJ5LT5vZmZzZXQ7CisKKyAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkKKyAgICAgICAgc2V0SXNRdWlja1Byb3BlcnR5QWNjZXNzQWxsb3dlZEZvckVudW1l
cmF0aW9uKGZhbHNlKTsKKyAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSkKKyAgICAgICAgc2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKKworICAg
IGVudHJ5LT5hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKKworICAgIFByb3BlcnR5T2Zmc2V0IG5l
d01heE9mZnNldCA9IG1heE9mZnNldCgpOworCisgICAgZnVuYyhsb2NrZXIsIG9mZnNldCwgbmV3
TWF4T2Zmc2V0KTsKKworICAgIEFTU0VSVChtYXhPZmZzZXQoKSA9PSBuZXdNYXhPZmZzZXQpOwor
ICAgIEFTU0VSVChKU0M6OmlzVmFsaWRPZmZzZXQoZ2V0KHZtLCBwcm9wZXJ0eU5hbWUpKSk7CisK
KyAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBGdW5jJiBmdW5jKQogewpAQCAtNTM3LDYgKzU4
OCwxMiBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgUHJvcGVydAogICAgIHJldHVybiByZW1vdmU8U2hvdWxk
UGluOjpZZXM+KHZtLCBwcm9wZXJ0eU5hbWUsIGZ1bmMpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jPgoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdl
V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBjb25zdCBGdW5jJiBmdW5jKQoreworICAgIHJldHVybiBhdHRyaWJ1
dGVDaGFuZ2U8U2hvdWxkUGluOjpZZXM+KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGZ1
bmMpOworfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQgU3RydWN0dXJlOjpzZXRQcm90b3R5cGVXaXRo
b3V0VHJhbnNpdGlvbihWTSYgdm0sIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIEFTU0VSVChp
c1ZhbGlkUHJvdG90eXBlKHByb3RvdHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCmluZGV4IDUzN2JjYzYwMmM5ODQ2ODE3YWE3MDk1OWYzN2IxYmIxOWQ4
ZTg2NTUuLjQ5OWE4N2U1MTQzNjhiMGQ0YzE2ZTUwNWNkZDhjZWQ1YjEyNWM1OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTMwMjQsNyArMzAyNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNEb2xsYXJWTUhlbHBlcjo6ZnVuY3Rp
b25HZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
c3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKLSAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwg
SlNWYWx1ZShzdHJ1Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSkpOworICAg
ICAgICByZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihzdHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5MzJhNDgxOTRmMWZiMzdiM2Q3MjNjZDUy
ZDZjNTRjNjQ0YWEzNGIuLjUyNzBiY2I4YWU0YjI1MGJkZTVhMTNlNjkxMTkzMzBkYjI2MTUxYTMg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjAtMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lA
c2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBhdHRyaWJ1dGUtY2hhbmdlIHRyYW5zaXRp
b24gc2hvdWxkIG5vdCBwaW4gU3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9jaGFuZ2UtYXR0cmlidXRlLXN0cnVjdHVyZS10
cmFuc2l0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNkLmxl
dC5kYXRhLnZtLmdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0LmxldC5yZXN1bHQucmV0dXJuLnJl
c3VsdC5raW5kKToKKyAgICAgICAgKHNkKToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5n
aWZ5LnNkKToKKyAgICAgICAgKGxhc3RTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChzaG91bGRCZS5K
U09OLnN0cmluZ2lmeS5PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKwogMjAyMC0w
OC0xMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAg
Q2FjaGUgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKCkKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hdHRyaWJ1dGUtc3RydWN0dXJlLXRyYW5zaXRpb24uanMg
Yi9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXR0cmlidXRlLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUwOGY5NDgwOWU0Y2NmOGRhZTI5MzY5MGJkYjUyOWQ0MDFhZmQ0ZGYKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXR0cmlidXRlLXN0cnVjdHVy
ZS10cmFuc2l0aW9uLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2JqZWN0ID0g
eworICAgIHRlc3QwMDE6IDQyCit9OworCitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAi
dGVzdDAwMSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pOworCitmdW5jdGlvbiBzZChvYmop
IHsKKyAgICBsZXQgZGF0YSA9ICR2bS5nZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdChvYmopCisg
ICAgbGV0IHJlc3VsdCA9IFtdCisKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiByZXN1
bHQKKworICAgIGZ1bmN0aW9uIGtpbmQoa2luZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoa2lu
ZCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1cm4gImFkZGVkIgorICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gImRlbGV0ZWQiCisgICAgICAgIGNhc2UgMzoK
KyAgICAgICAgICAgIHJldHVybiAiYXR0cmlidXRlIgorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGgvNTsgKytpKSB7CisgICAgICAgIHJlc3VsdC5wdXNoKHsg
b2Zmc2V0OiBkYXRhW2kqNSsxXSwgbWF4OiBkYXRhW2kqNSsyXSwgcHJvcGVydHk6IGRhdGFbaSo1
KzNdLCB0eXBlOiBraW5kKGRhdGFbaSo1KzRdKSB9KQorICAgIH0KKworICAgIHJldHVybiByZXN1
bHQKK30KKworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2Qob2JqZWN0KSksIGBbeyJvZmZzZXQi
Oi0xLCJtYXgiOi0xLCJwcm9wZXJ0eSI6bnVsbCwidHlwZSI6InVua25vd24ifSx7Im9mZnNldCI6
MCwibWF4IjowLCJwcm9wZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoiYWRkZWQifSx7Im9mZnNldCI6
MCwibWF4IjowLCJwcm9wZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoiYXR0cmlidXRlIn1dYCk7CisK
K2RlbGV0ZSBvYmplY3QudGVzdDAwMTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KHNkKG9iamVj
dCkpLCBgW3sib2Zmc2V0IjotMSwibWF4IjotMSwicHJvcGVydHkiOm51bGwsInR5cGUiOiJ1bmtu
b3duIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0ZXN0MDAxIiwidHlwZSI6ImFk
ZGVkIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0ZXN0MDAxIiwidHlwZSI6ImF0
dHJpYnV0ZSJ9LHsib2Zmc2V0IjowLCJtYXgiOjAsInByb3BlcnR5IjoidGVzdDAwMSIsInR5cGUi
OiJkZWxldGVkIn1dYCk7CisKK2Z1bmN0aW9uIGxhc3RTdHJ1Y3R1cmVJRCgpCit7CisgICAgdmFy
IG9iamVjdCA9IHsKKyAgICAgICAgdGVzdDAwMTogNDIKKyAgICB9OworICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShvYmplY3QsICJ0ZXN0MDAxIiwgeworICAgICAgICB3cml0YWJsZTogZmFsc2UK
KyAgICB9KTsKKyAgICB2YXIgbGlzdCA9ICR2bS5nZXRTdHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdChv
YmplY3QpOworICAgIHJldHVybiBsaXN0W2xpc3QubGVuZ3RoIC0gNV07Cit9CisKK3ZhciBzdHJ1
Y3R1cmVJRCA9IGxhc3RTdHJ1Y3R1cmVJRCgpOworc2hvdWxkQmUoc3RydWN0dXJlSUQsIGxhc3RT
dHJ1Y3R1cmVJRCgpKTsgLy8gVHJhbnNpdGlvbiBpcyB0cmFjZWQuCisKK3ZhciBvYmplY3QgPSB7
CisgICAgdGVzdDAwMTogNDIKK307CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAidGVz
dDAwMSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pOworLy8gTWFrZSBpdCBEaWN0aW9uYXJ5
LgorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpCisgICAgb2JqZWN0WyJ0ZXN0IiArIGld
ID0gaTsKK3Nob3VsZEJlKG9iamVjdC50ZXN0MDAxLCA0Mik7CitzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgInRlc3QwMDEiKSks
IGB7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1
cmFibGUiOnRydWV9YCk7CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAidGVzdDAwMSIs
IHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgInRlc3QwMDEiKSksIGB7InZh
bHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpmYWxzZSwiY29uZmlndXJhYmxl
Ijp0cnVlfWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2Qob2JqZWN0KSksIGBbeyJvZmZz
ZXQiOi0xLCJtYXgiOjEwOTgsInByb3BlcnR5IjpudWxsLCJ0eXBlIjoidW5rbm93biJ9LHsib2Zm
c2V0IjowLCJtYXgiOjEwOTgsInByb3BlcnR5IjoidGVzdDAwMSIsInR5cGUiOiJhdHRyaWJ1dGUi
fV1gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406639</attachid>
            <date>2020-08-14 17:51:08 -0700</date>
            <delta_ts>2020-08-14 19:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215528-20200814175107.patch</filename>
            <type>text/plain</type>
            <size>29672</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NTIyNDhjOGI5ZDI0NTJjYzQ3NTMzZGRiYWI1MGY1ZWYwZGNmMjYxLi5hNGRkZTYyMTEwMzBlMGU3
YTYwM2ZiZmU0ZWRjYjY2YTZmYjBjNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMC0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIGF0dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBz
aG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAgIChKU0M6
OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVB1dFN0cnVjdHVyZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAo
SlNDOjp0cnlDYWNoZURlbGV0ZUJ5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eVRhYmxlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3Ry
dWN0dXJlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24p
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0
aW5nU3RydWN0dXJlSW1wbCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJv
cGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFu
Z2VUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
bm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YXR0
cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmZv
ckVhY2hQcm9wZXJ0eUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YXR0
cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAg
ICAgIChKU0M6OkpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlv
bkxpc3QpOgorCiAyMDIwLTA4LTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWls
LmNvbT4KIAogICAgICAgICBDYWNoZSBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmlu
ZGV4IDFjMjA4OTcwN2ZmMGEwYWQxZDNjOWYwZWFjMzVhMmM1M2E0N2YwYjkuLjkxNDg3MjU4OTZk
MDY5MTM2ZDE2NDNmYThjNGUyMGY0ZDU2NmM1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTE5NTEsNyArMTk1MSw3IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOwogICAgICAgICBhbGxvY2F0b3IubG9jayhzY3Jh
dGNoR1BSKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKLSAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgp
LT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpOworICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVs
ZXRpb24pOwogICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKICAgICAgICAg
QVNTRVJUKCF2YWx1ZVJlZ3MudXNlcyhiYXNlR1BSKSk7CiAgICAgICAgIEFTU0VSVCghdmFsdWVS
ZWdzLnVzZXMoc2NyYXRjaEdQUikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCA4NTIwMGQ1ZGFmMWRlZThlOTBmZTgxNDFkYmIxY2NiZDliNTMzN2VlLi4x
ZDliMzVlYzU5OWIzMjBlNzlhM2I4NTA1ZDg1NTUxZWM3OGYzOTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOwog
ICAgICAgICB3cml0ZShKU0NlbGxfaW5kZXhpbmdUeXBlKTsKIAotICAgICAgICBpZiAobm9kZS0+
dHJhbnNpdGlvbigpLT5uZXh0LT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpIHsKKyAg
ICAgICAgaWYgKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+dHJhbnNpdGlvbktpbmQoKSA9PSBU
cmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbikgewogICAgICAgICAgICAgLy8gV2UgdXNl
IHRoaXMgImRlbGV0ZSBmZW5jZSIgdG8gbW9kZWwgdGhlIHByb3BlciBhbGlhc2luZyBvZiBmdXR1
cmUgc3RvcmVzLgogICAgICAgICAgICAgLy8gQm90aCBpbiBERkcgYW5kIHdoZW4gd2UgbG93ZXIg
dG8gQjMsIHdlIG1vZGVsIGFsaWFzaW5nIG9mIHByb3BlcnRpZXMgYnkKICAgICAgICAgICAgIC8v
IHByb3BlcnR5ICBuYW1lLiBJbiBhIHdvcmxkIHdpdGhvdXQgZGVsZXRlLCB0aGF0IGFsc28gbW9k
ZWxzIHtiYXNlLCBwcm9wZXJ0eU9mZnNldH0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggZTc4OTJhYzZjMjBlOTY3NThiNDMzM2RkNmY1M2M1
NWRmYmUyY2FhMS4uNDFiOWU3ZGJmNTc3NWZkNGQwZTI1ODJkZDRkZTU3MTFlZDNjZmNhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzgx
Niw3ICszODE2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBMVmFsdWUgY2Vs
bCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7IAogCi0gICAgICAgIGF1dG8mIGhlYXAgPSBt
X25vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigp
ID8gbV9oZWFwcy5KU0NlbGxIZWFkZXJBbmROYW1lZFByb3BlcnRpZXMgOiBtX2hlYXBzLkpTQ2Vs
bF9zdHJ1Y3R1cmVJRDsKKyAgICAgICAgYXV0byYgaGVhcCA9IG1fbm9kZS0+dHJhbnNpdGlvbigp
LT5uZXh0LT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0
aW9uID8gbV9oZWFwcy5KU0NlbGxIZWFkZXJBbmROYW1lZFByb3BlcnRpZXMgOiBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmVJRDsKICAgICAgICAgVHlwZWRQb2ludGVyIHBvaW50ZXIgeyBoZWFwLCBt
X291dC5hZGRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQub2Zmc2V0KCkpIH07
CiAKICAgICAgICAgbV9vdXQuc3RvcmUzMigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCmluZGV4IDZhYTI2MDZhYTlkYjVjYmI5ZDY3MjgzMjlhOTFlY2FhNGZmNDQzMTguLjJlYmIx
M2FmZGE0MGUxNjQwYzNiZDkzMTgyYWYyYzU1Y2FkNThmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcApAQCAtODMxLDcgKzgzMSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZURlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVC
bG9jCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgICAgICBB
U1NFUlQobmV3T2Zmc2V0ID09IHNsb3QuY2FjaGVkT2Zmc2V0KCkpOwogICAgICAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCgpID09IG9sZFN0cnVjdHVyZSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkp
OworICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQoKSA9PSBU
cmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CiAgICAgICAgICAgICBBU1NFUlQobmV3
U3RydWN0dXJlLT5pc09iamVjdCgpKTsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0
KG5ld09mZnNldCkpOwogICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZURl
bGV0ZSh2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIG5ld09mZnNldCwgb2xkU3RydWN0dXJl
LCBuZXdTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKaW5kZXggMjJjZDQyYmI1ZjAzYWFjYTU1ZjY4MDVjMGI1ZDNjZDE2MTlkNjViMC4uMDU4
NzRkNzc2MmI4MjNmMDQ4OTA0YTIyMmI0YzJkNzAwZGMxMzdiZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC00MzgsMjAgKzQzOCwzMyBAQCBQcm9w
ZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlUYWJsZShWTSYgdm0sIGJv
b2wgc2V0UHJvcGVydHlUYWJsZQogICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwog
ICAgICAgICBpZiAoIXN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlv
blRyYW5zaXRpb24oKSkgeworICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+dHJhbnNpdGlvbktp
bmQoKSkgeworICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOiB7
CisgICAgICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5KHN0cnVjdHVyZS0+bV90cmFuc2l0
aW9uUHJvcGVydHlOYW1lLmdldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZzZXQoKSwgc3Ry
dWN0dXJlLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgYXV0
byBuZXh0T2Zmc2V0ID0gdGFibGUtPm5leHRPZmZzZXQoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0
eSgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobmV4dE9mZnNldCwgbmV4dE9mZnNldCA9
PSBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZzZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IHRhYmxlLT5hZGQodm0sIGVudHJ5KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuZmlyc3QuZmlyc3QtPm9mZnNldCA9PSBuZXh0T2Zmc2V0KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVs
ZXRpb246IHsKICAgICAgICAgICAgIGF1dG8gaXRlbSA9IHRhYmxlLT5maW5kKHN0cnVjdHVyZS0+
bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKTsKICAgICAgICAgICAgIEFTU0VSVChpdGVt
LmZpcnN0KTsKICAgICAgICAgICAgIHRhYmxlLT5yZW1vdmUodm0sIGl0ZW0pOwogICAgICAgICAg
ICAgdGFibGUtPmFkZERlbGV0ZWRPZmZzZXQoc3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCkp
OwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZTogewor
ICAgICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSB0YWJsZS0+Z2V0KHN0cnVjdHVy
ZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGVudHJ5LT5h
dHRyaWJ1dGVzID0gc3RydWN0dXJlLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCk7Cisg
ICAgICAgICAgICBBU1NFUlQoZW50cnktPm9mZnNldCA9PSBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25P
ZmZzZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc1Byb3BlcnR5QWRkaXRpb25U
cmFuc2l0aW9uKCkpOwotICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5KHN0cnVjdHVyZS0+
bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZz
ZXQoKSwgc3RydWN0dXJlLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCkpOwotICAgICAg
ICBhdXRvIG5leHRPZmZzZXQgPSB0YWJsZS0+bmV4dE9mZnNldChzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKG5leHRPZmZzZXQsIG5leHRPZmZzZXQg
PT0gc3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCkpOwotICAgICAgICBhdXRvIHJlc3VsdCA9
IHRhYmxlLT5hZGQodm0sIGVudHJ5KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5zZWNvbmQpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmZpcnN0
LmZpcnN0LT5vZmZzZXQgPT0gbmV4dE9mZnNldCk7CiAgICAgfQogICAgIAogICAgIGNoZWNrT2Zm
c2V0Q29uc2lzdGVuY3koCkBAIC00NzQsNiArNDg3LDExIEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUq
IHN0CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQo
c3RydWN0dXJlLT5pc09iamVjdCgpKTsKIAorICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CisK
KyAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVj
dHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KHVpZCwgYXR0cmlidXRlcywgVHJhbnNpdGlvbktp
bmQ6OlByb3BlcnR5QWRkaXRpb24pKSB7CiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGlu
ZUNhcGFjaXR5KCkpOwogICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5z
aXRpb25PZmZzZXQoKTsKQEAgLTUyMyw4ICs1NDEsNyBAQCBib29sIFN0cnVjdHVyZTo6aG9sZXNN
dXN0Rm9yd2FyZFRvUHJvdG90eXBlKFZNJiB2bSwgSlNPYmplY3QqIGJhc2UpIGNvbnN0CiAKIFN0
cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoCi0gICAgICAg
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOworICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlID0gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKICAgICBp
ZiAobmV3U3RydWN0dXJlKQogICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwogCkBAIC01ODUs
NyArNjAyLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5VHJhbnNpdGlv
bihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm8KICAgICB0cmFuc2l0aW9uLT5zZXRQ
cm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZyhmYWxzZSk7CiAKICAgICBjaGVj
a09mZnNldCh0cmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGlu
ZUNhcGFjaXR5KCkpOwotICAgIHsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25h
cnkoKSkgewogICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVy
ZS0+bV9sb2NrLCB2bS5oZWFwKTsKICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJs
ZS5hZGQodm0sIHRyYW5zaXRpb24pOwogICAgIH0KQEAgLTU5NiwxMiArNjEzLDEyIEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvCiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewotICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlKHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpOwotICAgIGlmIChuZXdTdHJ1Y3R1cmUpCi0g
ICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7Ci0KLSAgICByZXR1cm4gcmVtb3ZlTmV3UHJvcGVy
dHlUcmFuc2l0aW9uKAotICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNl
dCwgZGVmZXJyZWQpOworICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKKyAg
ICAgICAgaWYgKG5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7
CisgICAgfQorICAgIHJldHVybiByZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKIH0KIAogU3RydWN0dXJlKiBT
dHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUlt
cGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCkBAIC02MTAsNiArNjI3LDEw
IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmpl
Y3QoKSk7CiAKICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OworCisgICAgaWYgKHN0cnVjdHVy
ZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBp
ZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlv
blRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5k
OjpQcm9wZXJ0eURlbGV0aW9uKSkgewogICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1Ry
YW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVD
YXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0gZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0
aW9uT2Zmc2V0KCk7CkBAIC02NzgsNyArNjk5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnJl
bW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLAog
ICAgIHRyYW5zaXRpb24tPnNldFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5n
KGZhbHNlKTsKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQo
KSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgeworICAgIGlmICghc3RydWN0
dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICBzdHJ1Y3R1
cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CiAgICAgfQpAQCAtNzA0
LDczICs3MjUsNzggQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5z
aXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlMKICAgICByZXR1cm4gdHJhbnNp
dGlvbjsKIH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRp
b24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludEZpcmUqIGRlZmVycmVkKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5n
ZVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNl
dCYgb2Zmc2V0KQogewotICAgIGF1dG8gc2V0RW50cnlBdHRyaWJ1dGVzID0gWyZdKFN0cnVjdHVy
ZSogc3RydWN0dXJlKSB7Ci0gICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gc3RydWN0
dXJlLT5lbnN1cmVQcm9wZXJ0eVRhYmxlKHZtKS0+Z2V0KHByb3BlcnR5TmFtZS51aWQoKSk7Ci0g
ICAgICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgICAgIGVudHJ5LT5hdHRyaWJ1dGVzID0gYXR0cmli
dXRlczsKLSAgICB9OworICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7Cisg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CisKKyAgICBvZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRp
b24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCks
IGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZSkpIHsK
KyAgICAgICAgdmFsaWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zm
c2V0KCksIGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIG9m
ZnNldCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOworICAgICAgICBy
ZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworICAgIH0KIAotICAgIGF1dG8gc2V0U3RydWN0dXJl
RmxhZ3MgPSBbJl0oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpCi0gICAgICAgICAgICBzdHJ1Y3R1cmUt
PnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKQotICAgICAgICAgICAgc3RydWN0dXJlLT5z
ZXRJc1F1aWNrUHJvcGVydHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24oZmFsc2UpOwotICAg
IH07CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CiAKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphdHRy
aWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK3sKICAgICBpZiAoc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgIHNldEVudHJ5QXR0cmli
dXRlcyhzdHJ1Y3R1cmUpOwotICAgICAgICBzZXRTdHJ1Y3R1cmVGbGFncyhzdHJ1Y3R1cmUpOwor
ICAgICAgICBzdHJ1Y3R1cmUtPmF0dHJpYnV0ZUNoYW5nZVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIFtdKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tl
ciYsIFByb3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCkgeyB9KTsKICAgICAgICAgc3RydWN0
dXJlLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7
CiAgICAgfQogCisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5
KCkpOwogICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICBpZiAo
U3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRh
YmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kOjpQ
cm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZSkpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gaW52YWxpZE9mZnNldDsKKyAgICAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0
aW9uID0gYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCkpIHsKICAgICAgICAgICAgIHZh
bGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlz
dGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgZXhpc3RpbmdU
cmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiAgICAgICAgICAgICByZXR1cm4g
ZXhpc3RpbmdUcmFuc2l0aW9uOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIGlmIChzdHJ1
Y3R1cmUtPnRyYW5zaXRpb25Db3VudEhhc092ZXJmbG93ZWQoKSkgewotICAgICAgICAgICAgQVNT
RVJUKCFpc0NvcHlPbldyaXRlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkpKTsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNp
dGlvbih2bSwgc3RydWN0dXJlLCBkZWZlcnJlZCk7Ci0gICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlICE9IHRyYW5zaXRpb24pOwotICAgICAgICAgICAgc2V0RW50cnlBdHRyaWJ1dGVzKHRyYW5z
aXRpb24pOwotICAgICAgICAgICAgc2V0U3RydWN0dXJlRmxhZ3ModHJhbnNpdGlvbik7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKLSAgICAgICAgfQorICAgIGlmIChzdHJ1Y3R1cmUt
PnRyYW5zaXRpb25Db3VudEhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICBBU1NFUlQoIWlzQ29w
eU9uV3JpdGUoc3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpOworICAgICAgICBTdHJ1Y3R1cmUq
IHRyYW5zaXRpb24gPSB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgZGVmZXJyZWQpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlICE9IHRyYW5zaXRpb24p
OworICAgICAgICB0cmFuc2l0aW9uLT5hdHRyaWJ1dGVDaGFuZ2Uodm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KIAorICAgIC8v
IEV2ZW4gaWYgdGhlIGN1cnJlbnQgc3RydWN0dXJlIGlzIGRpY3Rpb25hcnksIHdlIHNob3VsZCBw
ZXJmb3JtIHRyYW5zaXRpb24gc2luY2UgdGhpcyBjaGFuZ2VzIGF0dHJpYnV0ZXMgb2YgZXhpc3Rp
bmcgcHJvcGVydGllcyB0byBrZWVwCisgICAgLy8gc3RydWN0dXJlIHN0aWxsIGNhY2hlYWJsZS4K
ICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUodm0sIHN0cnVjdHVyZSk7CisgICAg
dHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwodm0sIHRyYW5z
aXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CiAKICAgICB7
CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodHJhbnNpdGlvbi0+bV9sb2NrKTsK
ICAgICAgICAgdHJhbnNpdGlvbi0+c2V0UHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRp
b25pbmcodHJ1ZSk7CiAgICAgfQogCi0gICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSBzdHJ1Y3R1
cmUtPmNvcHlQcm9wZXJ0eVRhYmxlRm9yUGlubmluZyh2bSk7Ci0gICAgaWYgKHN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIHRyYW5zaXRpb24tPnBpbihob2xkTG9jayh0cmFuc2l0
aW9uLT5tX2xvY2spLCB2bSwgdGFibGUpOwotICAgIGVsc2UKLSAgICAgICAgdHJhbnNpdGlvbi0+
cGluRm9yQ2FjaGluZyhob2xkTG9jayh0cmFuc2l0aW9uLT5tX2xvY2spLCB2bSwgdGFibGUpOwor
ICAgIHRyYW5zaXRpb24tPm1fYmxvYi5zZXRJbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KHN0
cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgpICYgfkNvcHlPbldyaXRlKTsK
ICAgICB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUu
dWlkKCk7CiAgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcyhh
dHRyaWJ1dGVzKTsKICAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uS2luZChUcmFuc2l0aW9u
S2luZDo6UHJvcGVydHlBdHRyaWJ1dGVDaGFuZ2UpOworICAgIHRyYW5zaXRpb24tPnNldFByb3Bl
cnR5VGFibGUodm0sIHN0cnVjdHVyZS0+dGFrZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQo
dm0pKTsKICAgICB0cmFuc2l0aW9uLT5zZXRNYXhPZmZzZXQodm0sIHN0cnVjdHVyZS0+bWF4T2Zm
c2V0KCkpOwogCi0gICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSB0YWJsZS0+Z2V0KHByb3Bl
cnR5TmFtZS51aWQoKSk7Ci0gICAgQVNTRVJUKGVudHJ5KTsKLSAgICBlbnRyeS0+YXR0cmlidXRl
cyA9IGF0dHJpYnV0ZXM7Ci0gICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvbk9mZnNldCh2bSwg
ZW50cnktPm9mZnNldCk7Ci0gICAgc2V0U3RydWN0dXJlRmxhZ3ModHJhbnNpdGlvbik7CisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+YXR0cmlidXRlQ2hhbmdlKHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25P
ZmZzZXQodm0sIG9mZnNldCk7CiAKKyAgICAvLyBOb3cgdGhhdCBldmVyeXRoaW5nIGlzIGZpbmUg
d2l0aCB0aGUgbmV3IHN0cnVjdHVyZSdzIGJvb2trZWVwaW5nLCB0aGUgR0MgaXMgZnJlZSB0byBi
bG93IHRoZQorICAgIC8vIHRhYmxlIGF3YXkgaWYgaXQgd2FudHMuIFdlIGNhbiBub3cgcmVidWls
ZCBpdCBmaW5lLgogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgdHJhbnNpdGlvbi0+
c2V0UHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcoZmFsc2UpOwogCiAgICAg
Y2hlY2tPZmZzZXQodHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCB0cmFuc2l0aW9uLT5p
bmxpbmVDYXBhY2l0eSgpKTsKLSAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsK
KyAgICBpZiAoIXN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkgewogICAgICAgICBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrLCB2bS5oZWFwKTsK
ICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRyYW5zaXRpb24p
OwogICAgIH0KQEAgLTg0MCwxMSArODY2LDEyIEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpub25Q
cm9wZXJ0eVRyYW5zaXRpb25TbG93KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRyCiB7
CiAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkgPSBuZXdJbmRl
eGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCksIHRyYW5z
aXRpb25LaW5kKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbjsKLSAg
ICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgKGV4aXN0aW5nVHJhbnNpdGlvbiA9
IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KG51bGxwdHIsIDAsIHRyYW5zaXRpb25L
aW5kKSkpIHsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbktp
bmQoKSA9PSB0cmFuc2l0aW9uS2luZCk7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRp
b24tPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSA9PSBpbmRleGluZ01vZGVJbmNsdWRp
bmdIaXN0b3J5KTsKLSAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAgICBpZiAo
IXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgaWYgKFN0cnVjdHVyZSogZXhp
c3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQobnVsbHB0
ciwgMCwgdHJhbnNpdGlvbktpbmQpKSB7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFu
c2l0aW9uLT50cmFuc2l0aW9uS2luZCgpID09IHRyYW5zaXRpb25LaW5kKTsKKyAgICAgICAgICAg
IEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24tPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnko
KSA9PSBpbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KTsKKyAgICAgICAgICAgIHJldHVybiBl
eGlzdGluZ1RyYW5zaXRpb247CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwpAQCAtODg0LDcgKzkxMSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
Ojpub25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFRyCiAgICAgICAgICYmICF0cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlT3JOdWxsKCktPmlzRW1w
dHkoKSkKICAgICAgICAgdHJhbnNpdGlvbi0+c2V0SGFzUmVhZE9ubHlPckdldHRlclNldHRlclBy
b3BlcnRpZXNFeGNsdWRpbmdQcm90byh0cnVlKTsKICAgICAKLSAgICBpZiAoc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSkgeworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkp
IHsKICAgICAgICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSB0cmFuc2l0aW9uLT5lbnN1cmVQcm9w
ZXJ0eVRhYmxlKHZtKTsKICAgICAgICAgdHJhbnNpdGlvbi0+cGluKGhvbGRMb2NrKHRyYW5zaXRp
b24tPm1fbG9jayksIHZtLCB0YWJsZSk7CiAgICAgfSBlbHNlIHsKQEAgLTExNzAsNiArMTE5Nywx
NSBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiAgICAgfSk7CiB9CiAKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
YXR0cmlidXRlQ2hhbmdlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gYXR0cmlidXRlQ2hhbmdlPFNob3VsZFBpbjo6
Tm8+KAorICAgICAgICB2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLAorICAgICAgICBbdGhp
cywgJnZtXSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQs
IFByb3BlcnR5T2Zmc2V0IG5ld01heE9mZnNldCkgeworICAgICAgICAgICAgc2V0TWF4T2Zmc2V0
KHZtLCBuZXdNYXhPZmZzZXQpOworICAgICAgICB9KTsKK30KKwogdm9pZCBTdHJ1Y3R1cmU6Omdl
dFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIFByb3BlcnR5VGFibGUq
IHRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZUlmTm90RW1wdHkodm0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBhMDA0MDEwYWI0ZWEzNTdjODI0YjU3
ZThlNTY1MTA3Y2Y2MWZmNDE0Li44MDJjYjRhMzkzYmEzZDE2ZDMwOTkxYWVmNGI5NDFjNGQyYWIw
ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTk4
LDYgKzE5OCw3IEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0
cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zm
c2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihW
TSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldh
dGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0
cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZz
ZXQmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVm
ZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqKTsKQEAgLTIyMiw2ICsyMjMsOCBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBGdW5j
Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBQcm9wZXJ0eU9mZnNldCByZW1v
dmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBjb25zdCBGdW5j
Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBQcm9wZXJ0eU9mZnNldCBhdHRy
aWJ1dGVDaGFuZ2VXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgY29uc3QgRnVuYyYpOwogICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRy
YW5zaXRpb24oVk0mLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgIGJvb2wgaXNE
aWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gZGljdGlvbmFyeUtpbmQoKSAhPSBOb25lRGljdGlv
bmFyeUtpbmQ7IH0KQEAgLTcxNSw5ICs3MTgsNiBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRpb25Q
cm9wZXJ0eUF0dHJpYnV0ZXMgPD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMp
ICogOCk7CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uS2luZCA8PSBz
aXplb2YoVHJhbnNpdGlvbktpbmQpICogOCk7CiAKLSAgICBib29sIGlzUHJvcGVydHlBZGRpdGlv
blRyYW5zaXRpb24oKSBjb25zdCB7IHJldHVybiB0cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRp
b25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOyB9Ci0gICAgYm9vbCBpc1Byb3BlcnR5RGVsZXRpb25U
cmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJhbnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9u
S2luZDo6UHJvcGVydHlEZWxldGlvbjsgfQotCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKQEAgLTc0NSw2ICs3NDUsOSBAQCBjbGFzcyBTdHJ1Y3R1
cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0ZW1wbGF0ZTxTaG91bGRQaW4sIHR5cGVu
YW1lIEZ1bmM+CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFZNJiwgUHJvcGVydHlOYW1lLCBj
b25zdCBGdW5jJik7CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFZNJiwgUHJvcGVydHlOYW1l
KTsKKyAgICB0ZW1wbGF0ZTxTaG91bGRQaW4sIHR5cGVuYW1lIEZ1bmM+CisgICAgUHJvcGVydHlP
ZmZzZXQgYXR0cmlidXRlQ2hhbmdlKFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBjb25zdCBGdW5jJik7CisgICAgUHJvcGVydHlPZmZzZXQgYXR0cmlidXRlQ2hhbmdlKFZN
JiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIHZvaWQgY2hlY2tD
b25zaXN0ZW5jeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKaW5kZXggYWY3ZDFhZGVhYmM4OWNlYWRiM2ZjNmFmNDdhMWFiOGI3MmUy
MTdiYS4uOTZmZjZmOGY0MjY0MzUwZGZlN2E5NGRlOTY0YmQ0NDFmYjc4NzQyMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMTc2
LDggKzE3NiwxNiBAQCB2b2lkIFN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5
KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAKICAgICAgICAgc2VlblByb3BlcnRpZXMuYWRkKHN0
cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKTsKIAotICAgICAgICBpZiAo
c3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpCisgICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CisgICAgICAgIGNhc2UgVHJhbnNpdGlv
bktpbmQ6OlByb3BlcnR5QWRkaXRpb246CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlBy
b3BlcnR5QXR0cmlidXRlQ2hhbmdlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb246CiAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZ1bmN0b3IoUHJvcGVy
dHlNYXBFbnRyeShzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSwgc3Ry
dWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvblByb3BlcnR5
QXR0cmlidXRlcygpKSkpIHsKICAgICAgICAgICAgIGlmICh0YWJsZSkKQEAgLTUyMSw2ICs1Mjks
NDkgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCit0
ZW1wbGF0ZTxTdHJ1Y3R1cmU6OlNob3VsZFBpbiBzaG91bGRQaW4sIHR5cGVuYW1lIEZ1bmM+Citp
bmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2UoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBGdW5j
JiBmdW5jKQoreworICAgIFByb3BlcnR5VGFibGUqIHRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJs
ZSh2bSk7CisKKyAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywgdm0u
aGVhcCk7CisKKyAgICBzd2l0Y2ggKHNob3VsZFBpbikgeworICAgIGNhc2UgU2hvdWxkUGluOjpZ
ZXM6CisgICAgICAgIHBpbihsb2NrZXIsIHZtLCB0YWJsZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2hvdWxkUGluOjpObzoKKyAgICAgICAgc2V0UHJvcGVydHlUYWJsZSh2bSwgdGFibGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoSlNDOjppc1ZhbGlkT2Zmc2V0
KGdldCh2bSwgcHJvcGVydHlOYW1lKSkpOworCisgICAgY2hlY2tDb25zaXN0ZW5jeSgpOworICAg
IFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gdGFibGUtPmdldChwcm9wZXJ0eU5hbWUudWlkKCkp
OworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZW50cnktPm9mZnNldDsKKworICAgIGlmIChhdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKQorICAgICAgICBzZXRJc1F1aWNrUHJv
cGVydHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24oZmFsc2UpOworICAgIGlmIChhdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQorICAgICAgICBzZXRDb250YWluc1Jl
YWRPbmx5UHJvcGVydGllcygpOworCisgICAgZW50cnktPmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVz
OworCisgICAgUHJvcGVydHlPZmZzZXQgbmV3TWF4T2Zmc2V0ID0gbWF4T2Zmc2V0KCk7CisKKyAg
ICBmdW5jKGxvY2tlciwgb2Zmc2V0LCBuZXdNYXhPZmZzZXQpOworCisgICAgQVNTRVJUKG1heE9m
ZnNldCgpID09IG5ld01heE9mZnNldCk7CisgICAgQVNTRVJUKEpTQzo6aXNWYWxpZE9mZnNldChn
ZXQodm0sIHByb3BlcnR5TmFtZSkpKTsKKworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICBy
ZXR1cm4gb2Zmc2V0OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW5saW5lIFByb3Bl
cnR5T2Zmc2V0IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0s
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1
bmMmIGZ1bmMpCiB7CkBAIC01MzcsNiArNTg4LDEyIEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9wZXJ0
CiAgICAgcmV0dXJuIHJlbW92ZTxTaG91bGRQaW46Olllcz4odm0sIHByb3BlcnR5TmFtZSwgZnVu
Yyk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CitpbmxpbmUgUHJvcGVydHlPZmZzZXQg
U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMmIGZ1
bmMpCit7CisgICAgcmV0dXJuIGF0dHJpYnV0ZUNoYW5nZTxTaG91bGRQaW46Olllcz4odm0sIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZnVuYyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBT
dHJ1Y3R1cmU6OnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNWYWx1ZSBw
cm90b3R5cGUpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWRQcm90b3R5cGUocHJvdG90eXBlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggNTM3YmNjNjAy
Yzk4NDY4MTdhYTcwOTU5ZjM3YjFiYjE5ZDhlODY1NS4uNDk5YTg3ZTUxNDM2OGIwZDRjMTZlNTA1
Y2RkOGNlZDViMTI1YzU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcApAQCAtMzAyNCw3ICszMDI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXMKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwganNOdWxs
KCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICBy
ZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKHN0cnVjdHVyZS0+aXNQcm9wZXJ0eURl
bGV0aW9uVHJhbnNpdGlvbigpKSk7CisgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3Qs
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQo
KSkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZjkzMmE0ODE5NGYxZmIzN2IzZDcyM2NkNTJkNmM1NGM2NDRhYTM0Yi4uNTI3MGJjYjhhZTRiMjUw
YmRlNWExM2U2OTExOTMzMGRiMjYxNTFhMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOC0xNCAgWXVz
dWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0Nd
IGF0dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBzaG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTUyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2No
YW5nZS1hdHRyaWJ1dGUtc3RydWN0dXJlLXRyYW5zaXRpb24uanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAoc2QubGV0LmRhdGEudm0uZ2V0U3RydWN0dXJlVHJhbnNpdGlv
bkxpc3QubGV0LnJlc3VsdC5yZXR1cm4ucmVzdWx0LmtpbmQpOgorICAgICAgICAoc2QpOgorICAg
ICAgICAoc2hvdWxkQmUuSlNPTi5zdHJpbmdpZnkuc2QpOgorICAgICAgICAobGFzdFN0cnVjdHVy
ZUlEKToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5Lk9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorCiAyMDIwLTA4LTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBDYWNoZSBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5n
ZVRyYW5zaXRpb24oKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2hhbmdlLWF0dHJpYnV0
ZS1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hdHRyaWJ1
dGUtc3RydWN0dXJlLXRyYW5zaXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA4Zjk0ODA5ZTRjY2Y4ZGFl
MjkzNjkwYmRiNTI5ZDQwMWFmZDRkZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2NoYW5nZS1hdHRyaWJ1dGUtc3RydWN0dXJlLXRyYW5zaXRpb24uanMKQEAgLTAsMCArMSw3NyBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK3ZhciBvYmplY3QgPSB7CisgICAgdGVzdDAwMTogNDIKK307CisKK09iamVj
dC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJ0ZXN0MDAxIiwgeworICAgIHdyaXRhYmxlOiBmYWxz
ZQorfSk7CisKK2Z1bmN0aW9uIHNkKG9iaikgeworICAgIGxldCBkYXRhID0gJHZtLmdldFN0cnVj
dHVyZVRyYW5zaXRpb25MaXN0KG9iaikKKyAgICBsZXQgcmVzdWx0ID0gW10KKworICAgIGlmICgh
ZGF0YSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZnVuY3Rpb24ga2luZChraW5kKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAg
ICAgIHJldHVybiAiYWRkZWQiCisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJldHVybiAi
ZGVsZXRlZCIKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgcmV0dXJuICJhdHRyaWJ1dGUi
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gInVua25vd24iOworICAgICAg
ICB9CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aC81OyArK2kp
IHsKKyAgICAgICAgcmVzdWx0LnB1c2goeyBvZmZzZXQ6IGRhdGFbaSo1KzFdLCBtYXg6IGRhdGFb
aSo1KzJdLCBwcm9wZXJ0eTogZGF0YVtpKjUrM10sIHR5cGU6IGtpbmQoZGF0YVtpKjUrNF0pIH0p
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdAorfQorCitzaG91bGRCZShKU09OLnN0cmluZ2lm
eShzZChvYmplY3QpKSwgYFt7Im9mZnNldCI6LTEsIm1heCI6LTEsInByb3BlcnR5IjpudWxsLCJ0
eXBlIjoidW5rbm93biJ9LHsib2Zmc2V0IjowLCJtYXgiOjAsInByb3BlcnR5IjoidGVzdDAwMSIs
InR5cGUiOiJhZGRlZCJ9LHsib2Zmc2V0IjowLCJtYXgiOjAsInByb3BlcnR5IjoidGVzdDAwMSIs
InR5cGUiOiJhdHRyaWJ1dGUifV1gKTsKKworZGVsZXRlIG9iamVjdC50ZXN0MDAxOworc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoc2Qob2JqZWN0KSksIGBbeyJvZmZzZXQiOi0xLCJtYXgiOi0xLCJw
cm9wZXJ0eSI6bnVsbCwidHlwZSI6InVua25vd24ifSx7Im9mZnNldCI6MCwibWF4IjowLCJwcm9w
ZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoiYWRkZWQifSx7Im9mZnNldCI6MCwibWF4IjowLCJwcm9w
ZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoiYXR0cmlidXRlIn0seyJvZmZzZXQiOjAsIm1heCI6MCwi
cHJvcGVydHkiOiJ0ZXN0MDAxIiwidHlwZSI6ImRlbGV0ZWQifV1gKTsKKworZnVuY3Rpb24gbGFz
dFN0cnVjdHVyZUlEKCkKK3sKKyAgICB2YXIgb2JqZWN0ID0geworICAgICAgICB0ZXN0MDAxOiA0
MgorICAgIH07CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgInRlc3QwMDEiLCB7
CisgICAgICAgIHdyaXRhYmxlOiBmYWxzZQorICAgIH0pOworICAgIHZhciBsaXN0ID0gJHZtLmdl
dFN0cnVjdHVyZVRyYW5zaXRpb25MaXN0KG9iamVjdCk7CisgICAgcmV0dXJuIGxpc3RbbGlzdC5s
ZW5ndGggLSA1XTsKK30KKwordmFyIHN0cnVjdHVyZUlEID0gbGFzdFN0cnVjdHVyZUlEKCk7Citz
aG91bGRCZShzdHJ1Y3R1cmVJRCwgbGFzdFN0cnVjdHVyZUlEKCkpOyAvLyBUcmFuc2l0aW9uIGlz
IHRyYWNlZC4KKwordmFyIG9iamVjdCA9IHsKKyAgICB0ZXN0MDAxOiA0MgorfTsKK09iamVjdC5k
ZWZpbmVQcm9wZXJ0eShvYmplY3QsICJ0ZXN0MDAxIiwgeworICAgIHdyaXRhYmxlOiBmYWxzZQor
fSk7CisvLyBNYWtlIGl0IERpY3Rpb25hcnkuCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsr
aSkKKyAgICBvYmplY3RbInRlc3QiICsgaV0gPSBpOworc2hvdWxkQmUob2JqZWN0LnRlc3QwMDEs
IDQyKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Iob2JqZWN0LCAidGVzdDAwMSIpKSwgYHsidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2Us
ImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJsZSI6dHJ1ZX1gKTsKK09iamVjdC5kZWZpbmVQ
cm9wZXJ0eShvYmplY3QsICJ0ZXN0MDAxIiwgeworICAgIGVudW1lcmFibGU6IGZhbHNlCit9KTsK
K3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
b2JqZWN0LCAidGVzdDAwMSIpKSwgYHsidmFsdWUiOjQyLCJ3cml0YWJsZSI6ZmFsc2UsImVudW1l
cmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOnRydWV9YCk7CitzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShzZChvYmplY3QpKSwgYFt7Im9mZnNldCI6LTEsIm1heCI6MTA5OCwicHJvcGVydHkiOm51
bGwsInR5cGUiOiJ1bmtub3duIn0seyJvZmZzZXQiOjAsIm1heCI6MTA5OCwicHJvcGVydHkiOiJ0
ZXN0MDAxIiwidHlwZSI6ImF0dHJpYnV0ZSJ9XWApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406648</attachid>
            <date>2020-08-14 19:20:01 -0700</date>
            <delta_ts>2020-08-14 19:23:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215528-20200814192000.patch</filename>
            <type>text/plain</type>
            <size>29949</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWM1N2ZkMmFkNjQyODViYjA1NGZlNmM4YTY2MzRiOTVmZjI0ZTU2Li40NjA3NTU1MWVjNjM4MjMx
NGZjMjFjZGM5OTUzNDBhMjRjZTFlODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAyMC0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIGF0dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBz
aG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nIHBpbiBpbiBhdHRyaWJ1dGUt
Y2hhbmdlIHRyYW5zaXRpb24uIFRvIGFjaGlldmUgdGhpcywgYXR0cmlidXRlLWNoYW5nZSB0cmFu
c2l0aW9uIGlzIG5vdyBmdWxseSBzdXBwb3J0ZWQKKyAgICAgICAgdHJhbnNpdGlvbiBjaGFpbiBp
biBmb3JFYWNoUHJvcGVydHlDb25jdXJyZW50bHkgZXRjLjogd2UgY2FuIHJldHJpZXZlIHByb3Bl
cnRpZXMgd2l0aCBjaGFuZ2VkIGF0dHJpYnV0ZXMgY29ycmVjdGx5IHZpYSB0cmF2ZXJzaW5nCisg
ICAgICAgIHRyYW5zaXRpb24gY2hhaW4uIEFuZCB3ZSBhbHNvIHN1cHBvcnQgYXR0cmlidXRlLWNo
YW5nZSB0cmFuc2l0aW9uIGluIG1hdGVyaWFsaXplUHJvcGVydHlUYWJsZSwgc28gd2UgZG8gbm90
IG5lZWQgdG8gcGluIHN0cnVjdHVyZS4KKworICAgICAgICBUaGUgZGVzaWduIGxhcmdlbHkgbWlt
aWNzIGV4aXN0aW5nIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbiBhbmQgYWRkUHJvcGVydHlUcmFu
c2l0aW9uLiBUaGlzIHBhdGNoIGFsc28gYWRkcyBgaGFzQmVlbkRpY3Rpb25hcnkoKWAKKyAgICAg
ICAgY2hlY2sgYmVmb3JlIGFkZGluZyBzdHJ1Y3R1cmUgdG8gdGhlIHRyYW5zaXRpb24gc28gdGhh
dCB3ZSBjYW4gYXZvaWQgYWRkaW5nIHVubmVjZXNzYXJ5IHN0cnVjdHVyZSBlbnRyeSB0byB0aGUg
dHJhbnNpdGlvbiB0YWJsZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVy
dHlUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkTmV3UHJvcGVy
dHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNp
dGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24pOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvblNsb3cpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpmb3JFYWNoUHJvcGVydHlDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YXR0
cmlidXRlQ2hhbmdlV2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFy
Vk0uY3BwOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0cnVj
dHVyZVRyYW5zaXRpb25MaXN0KToKKwogMjAyMC0wOC0xNCAgQ2FpbyBMaW1hICA8dGljYWlvbGlt
YUBnbWFpbC5jb20+CiAKICAgICAgICAgW0FSTXY3XVtKU0NdIENvbnNlcnZhdGl2ZSBHQyBpcyBu
b3QgY29uc2lkZXJpbmcgYHI3YCBhcyBhIHJvb3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCAxYzIwODk3MDdmZjBhMGFkMWQzYzlmMGVhYzM1
YTJjNTNhNDdmMGI5Li45MTQ4NzI1ODk2ZDA2OTEzNmQxNjQzZmE4YzRlMjBmNGQ1NjZjNTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0x
OTUxLDcgKzE5NTEsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5l
cmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKICAg
ICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigp
KTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT50cmFuc2l0aW9uS2luZCgpID09IFRy
YW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0aW9uKTsKICAgICAgICAgQVNTRVJUKGJhc2VHUFIg
IT0gc2NyYXRjaEdQUik7CiAgICAgICAgIEFTU0VSVCghdmFsdWVSZWdzLnVzZXMoYmFzZUdQUikp
OwogICAgICAgICBBU1NFUlQoIXZhbHVlUmVncy51c2VzKHNjcmF0Y2hHUFIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggODUyMDBkNWRhZjFkZWU4ZTkw
ZmU4MTQxZGJiMWNjYmQ5YjUzMzdlZS4uMWQ5YjM1ZWM1OTliMzIwZTc5YTNiODUwNWQ4NTU1MWVj
NzhmMzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTExNjMsNyArMTE2Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHdyaXRl
KEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKICAgICAgICAgd3JpdGUoSlNDZWxsX2luZGV4aW5nVHlw
ZSk7CiAKLSAgICAgICAgaWYgKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+aXNQcm9wZXJ0eURl
bGV0aW9uVHJhbnNpdGlvbigpKSB7CisgICAgICAgIGlmIChub2RlLT50cmFuc2l0aW9uKCktPm5l
eHQtPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24p
IHsKICAgICAgICAgICAgIC8vIFdlIHVzZSB0aGlzICJkZWxldGUgZmVuY2UiIHRvIG1vZGVsIHRo
ZSBwcm9wZXIgYWxpYXNpbmcgb2YgZnV0dXJlIHN0b3Jlcy4KICAgICAgICAgICAgIC8vIEJvdGgg
aW4gREZHIGFuZCB3aGVuIHdlIGxvd2VyIHRvIEIzLCB3ZSBtb2RlbCBhbGlhc2luZyBvZiBwcm9w
ZXJ0aWVzIGJ5CiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSAgbmFtZS4gSW4gYSB3b3JsZCB3aXRo
b3V0IGRlbGV0ZSwgdGhhdCBhbHNvIG1vZGVscyB7YmFzZSwgcHJvcGVydHlPZmZzZXR9LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDAxNGQx
ZmZkMTA1YmI4ZTJjMTIyMTU3ZWQzNjBkYTIyNmJhNjFlZWMuLmZlZmFlN2FlMDQyOWFkOWZlMDQx
NTkyNDk0NzJjMjM3NzY0ZDZkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTM4MTYsNyArMzgxNiw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOyAK
IAotICAgICAgICBhdXRvJiBoZWFwID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQtPmlzUHJv
cGVydHlEZWxldGlvblRyYW5zaXRpb24oKSA/IG1faGVhcHMuSlNDZWxsSGVhZGVyQW5kTmFtZWRQ
cm9wZXJ0aWVzIDogbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQ7CisgICAgICAgIGF1dG8mIGhl
YXAgPSBtX25vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC0+dHJhbnNpdGlvbktpbmQoKSA9PSBUcmFu
c2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbiA/IG1faGVhcHMuSlNDZWxsSGVhZGVyQW5kTmFt
ZWRQcm9wZXJ0aWVzIDogbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQ7CiAgICAgICAgIFR5cGVk
UG9pbnRlciBwb2ludGVyIHsgaGVhcCwgbV9vdXQuYWRkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZUlELm9mZnNldCgpKSB9OwogCiAgICAgICAgIG1fb3V0LnN0b3JlMzIoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA2YWEyNjA2YWE5ZGI1Y2JiOWQ2NzI4
MzI5YTkxZWNhYTRmZjQ0MzE4Li4yZWJiMTNhZmRhNDBlMTY0MGMzYmQ5MzE4MmFmMmM1NWNhZDU4
ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTgzMSw3ICs4MzEs
NyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVEZWxldGVCeShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvYwogICAgICAgICAgICAgICAgIHJldHVybiBHaXZl
VXBPbkNhY2hlOwogICAgICAgICAgICAgQVNTRVJUKG5ld09mZnNldCA9PSBzbG90LmNhY2hlZE9m
ZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSA9
PSBvbGRTdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNQcm9w
ZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1
cmUtPnRyYW5zaXRpb25LaW5kKCkgPT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24p
OwogICAgICAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAgICAgICAg
ICAgICBBU1NFUlQoaXNWYWxpZE9mZnNldChuZXdPZmZzZXQpKTsKICAgICAgICAgICAgIG5ld0Nh
c2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUodm0sIGNvZGVCbG9jaywgcHJvcGVydHlOYW1l
LCBuZXdPZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDIyY2Q0MmJiNWYwM2FhY2E1NWY2
ODA1YzBiNWQzY2QxNjE5ZDY1YjAuLmExMjkzNzQxYTFiYzY5MjRjZTI3NTBmY2E2ZDU4YzI1YTI1
OTYzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApA
QCAtNDM4LDIwICs0MzgsMzMgQEAgUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjptYXRlcmlhbGl6
ZVByb3BlcnR5VGFibGUoVk0mIHZtLCBib29sIHNldFByb3BlcnR5VGFibGUKICAgICAgICAgc3Ry
dWN0dXJlID0gc3RydWN0dXJlc1tpXTsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm1fdHJhbnNp
dGlvblByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpIHsKKyAgICAgICAgc3dpdGNo
IChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25LaW5kKCkpIHsKKyAgICAgICAgY2FzZSBUcmFuc2l0aW9u
S2luZDo6UHJvcGVydHlBZGRpdGlvbjogeworICAgICAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBl
bnRyeShzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSwgc3RydWN0dXJl
LT50cmFuc2l0aW9uT2Zmc2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvblByb3BlcnR5QXR0cmli
dXRlcygpKTsKKyAgICAgICAgICAgIGF1dG8gbmV4dE9mZnNldCA9IHRhYmxlLT5uZXh0T2Zmc2V0
KHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KG5leHRPZmZzZXQsIG5leHRPZmZzZXQgPT0gc3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCkp
OworICAgICAgICAgICAgYXV0byByZXN1bHQgPSB0YWJsZS0+YWRkKHZtLCBlbnRyeSk7CisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7CisgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmZpcnN0LmZpcnN0LT5vZmZzZXQgPT0gbmV4
dE9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRy
YW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0aW9uOiB7CiAgICAgICAgICAgICBhdXRvIGl0ZW0g
PSB0YWJsZS0+ZmluZChzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSk7
CiAgICAgICAgICAgICBBU1NFUlQoaXRlbS5maXJzdCk7CiAgICAgICAgICAgICB0YWJsZS0+cmVt
b3ZlKHZtLCBpdGVtKTsKICAgICAgICAgICAgIHRhYmxlLT5hZGREZWxldGVkT2Zmc2V0KHN0cnVj
dHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2l0aW9uS2luZDo6UHJv
cGVydHlBdHRyaWJ1dGVDaGFuZ2U6IHsKKyAgICAgICAgICAgIFByb3BlcnR5TWFwRW50cnkqIGVu
dHJ5ID0gdGFibGUtPmdldChzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQo
KSk7CisgICAgICAgICAgICBlbnRyeS0+YXR0cmlidXRlcyA9IHN0cnVjdHVyZS0+dHJhbnNpdGlv
blByb3BlcnR5QXR0cmlidXRlcygpOworICAgICAgICAgICAgQVNTRVJUKGVudHJ5LT5vZmZzZXQg
PT0gc3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+aXNQcm9wZXJ0eUFkZGl0aW9uVHJhbnNpdGlvbigpKTsKLSAgICAgICAgUHJvcGVydHlN
YXBFbnRyeSBlbnRyeShzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSwg
c3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvblByb3Bl
cnR5QXR0cmlidXRlcygpKTsKLSAgICAgICAgYXV0byBuZXh0T2Zmc2V0ID0gdGFibGUtPm5leHRP
ZmZzZXQoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChuZXh0T2Zmc2V0LCBuZXh0T2Zmc2V0ID09IHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNldCgp
KTsKLSAgICAgICAgYXV0byByZXN1bHQgPSB0YWJsZS0+YWRkKHZtLCBlbnRyeSk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuc2Vjb25kKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5maXJzdC5maXJzdC0+b2Zmc2V0ID09IG5leHRPZmZzZXQpOwog
ICAgIH0KICAgICAKICAgICBjaGVja09mZnNldENvbnNpc3RlbmN5KApAQCAtNDc0LDYgKzQ4Nywx
MSBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGlu
Z1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdAogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAKKyAgICBv
ZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OworCisgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rp
b25hcnkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBpZiAoU3RydWN0dXJlKiBl
eGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldCh1aWQs
IGF0dHJpYnV0ZXMsIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uKSkgewogICAgICAg
ICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKSwg
ZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgb2Zmc2V0ID0g
ZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCk7CkBAIC01MjMsOCArNTQxLDcg
QEAgYm9vbCBTdHJ1Y3R1cmU6OmhvbGVzTXVzdEZvcndhcmRUb1Byb3RvdHlwZShWTSYgdm0sIEpT
T2JqZWN0KiBiYXNlKSBjb25zdAogCiBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCiB7
Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlKAotICAgICAgICBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgb2Zmc2V0KTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIG9mZnNldCk7CiAgICAgaWYgKG5ld1N0cnVjdHVyZSkKICAgICAgICAgcmV0dXJu
IG5ld1N0cnVjdHVyZTsKIApAQCAtNTg1LDcgKzYwMiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJl
OjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UHJvCiAgICAgdHJhbnNpdGlvbi0+c2V0UHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRp
b25pbmcoZmFsc2UpOwogCiAgICAgY2hlY2tPZmZzZXQodHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9m
ZnNldCgpLCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKLSAgICB7CisgICAgaWYgKCFz
dHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgR0NTYWZlQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jaywgdm0uaGVhcCk7CiAgICAgICAgIHN0
cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKHZtLCB0cmFuc2l0aW9uKTsKICAgICB9CkBA
IC01OTYsMTIgKzYxMywxMiBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRkTmV3UHJvcGVydHlU
cmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBybwogCiBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBvZmZz
ZXQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkK
IHsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bkZyb21FeGlzdGluZ1N0cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsK
LSAgICBpZiAobmV3U3RydWN0dXJlKQotICAgICAgICByZXR1cm4gbmV3U3RydWN0dXJlOwotCi0g
ICAgcmV0dXJuIHJlbW92ZU5ld1Byb3BlcnR5VHJhbnNpdGlvbigKLSAgICAgICAgdm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsIGRlZmVycmVkKTsKKyAgICBpZiAoIXN0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCk7CisgICAgICAgIGlmIChuZXdTdHJ1Y3R1cmUpCisgICAgICAg
ICAgICByZXR1cm4gbmV3U3RydWN0dXJlOworICAgIH0KKyAgICByZXR1cm4gcmVtb3ZlTmV3UHJv
cGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBkZWZl
cnJlZCk7CiB9CiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYg
b2Zmc2V0KQpAQCAtNjEwLDYgKzYyNywxMCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cgogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCiAgICAgb2Zmc2V0ID0gaW52YWxpZE9m
ZnNldDsKKworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9u
ID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBh
dHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbikpIHsKICAgICAgICAg
dmFsaWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4
aXN0aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4
aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNjc4LDcgKzY5OSw3IEBA
IFN0cnVjdHVyZSogU3RydWN0dXJlOjpyZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICB0cmFuc2l0aW9uLT5zZXRQcm90ZWN0UHJvcGVy
dHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZyhmYWxzZSk7CiAKICAgICBjaGVja09mZnNldCh0cmFu
c2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkp
OwotICAgIHsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkgewogICAg
ICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrLCB2
bS5oZWFwKTsKICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRy
YW5zaXRpb24pOwogICAgIH0KQEAgLTcwNCw3MyArNzI1LDc4IEBAIFN0cnVjdHVyZSogU3RydWN0
dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTCiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJl
OjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVk
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK1N0cnVjdHVyZSog
U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBhdXRvIHNldEVudHJ5
QXR0cmlidXRlcyA9IFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewotICAgICAgICBQcm9wZXJ0
eU1hcEVudHJ5KiBlbnRyeSA9IHN0cnVjdHVyZS0+ZW5zdXJlUHJvcGVydHlUYWJsZSh2bSktPmdl
dChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAgICAgICBBU1NFUlQoZW50cnkpOwotICAgICAgICBl
bnRyeS0+YXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Ci0gICAgfTsKKyAgICBBU1NFUlQoIXN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkp
OworCisgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKKworICAgIGlmIChzdHJ1Y3R1cmUtPmhh
c0JlZW5EaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKFN0
cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJs
ZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJv
cGVydHlBdHRyaWJ1dGVDaGFuZ2UpKSB7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGlu
ZUNhcGFjaXR5KCkpOworICAgICAgICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5z
aXRpb25PZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAgICB9
CiAKLSAgICBhdXRvIHNldFN0cnVjdHVyZUZsYWdzID0gWyZdKFN0cnVjdHVyZSogc3RydWN0dXJl
KSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KQotICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygp
OwotICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkK
LSAgICAgICAgICAgIHN0cnVjdHVyZS0+c2V0SXNRdWlja1Byb3BlcnR5QWNjZXNzQWxsb3dlZEZv
ckVudW1lcmF0aW9uKGZhbHNlKTsKLSAgICB9OworICAgIHJldHVybiBudWxscHRyOworfQogCitT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVm
ZXJyZWQpCit7CiAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkg
ewotICAgICAgICBzZXRFbnRyeUF0dHJpYnV0ZXMoc3RydWN0dXJlKTsKLSAgICAgICAgc2V0U3Ry
dWN0dXJlRmxhZ3Moc3RydWN0dXJlKTsKKyAgICAgICAgc3RydWN0dXJlLT5hdHRyaWJ1dGVDaGFu
Z2VXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBbXShjb25z
dCBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXImLCBQcm9wZXJ0eU9mZnNldCwgUHJvcGVydHlPZmZz
ZXQpIHsgfSk7CiAgICAgICAgIHN0cnVjdHVyZS0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwog
ICAgICAgICByZXR1cm4gc3RydWN0dXJlOwogICAgIH0KIAorICAgIEFTU0VSVCghc3RydWN0dXJl
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpIHsKLSAgICAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0g
c3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRy
aWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBdHRyaWJ1dGVDaGFuZ2UpKSB7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGludmFsaWRPZmZzZXQ7CisgICAgICAgIGlmIChT
dHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBv
ZmZzZXQpKSB7CiAgICAgICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24t
PnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgp
KTsKICAgICAgICAgICAgIGV4aXN0aW5nVHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5j
eSgpOwogICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKICAgICAgICAgfQor
ICAgIH0KIAotICAgICAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9uQ291bnRIYXNPdmVyZmxv
d2VkKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghaXNDb3B5T25Xcml0ZShzdHJ1Y3R1cmUtPmlu
ZGV4aW5nTW9kZSgpKSk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSB0b1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgZGVmZXJyZWQpOwot
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKLSAgICAgICAgICAg
IHNldEVudHJ5QXR0cmlidXRlcyh0cmFuc2l0aW9uKTsKLSAgICAgICAgICAgIHNldFN0cnVjdHVy
ZUZsYWdzKHRyYW5zaXRpb24pOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247Ci0gICAg
ICAgIH0KKyAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9uQ291bnRIYXNPdmVyZmxvd2VkKCkp
IHsKKyAgICAgICAgQVNTRVJUKCFpc0NvcHlPbldyaXRlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2Rl
KCkpKTsKKyAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gdG9VbmNhY2hlYWJsZURpY3Rp
b25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIGRlZmVycmVkKTsKKyAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKKyAgICAgICAgdHJhbnNpdGlvbi0+YXR0cmlidXRl
Q2hhbmdlKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gdHJh
bnNpdGlvbjsKICAgICB9CiAKKyAgICAvLyBFdmVuIGlmIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBp
cyBkaWN0aW9uYXJ5LCB3ZSBzaG91bGQgcGVyZm9ybSB0cmFuc2l0aW9uIHNpbmNlIHRoaXMgY2hh
bmdlcyBhdHRyaWJ1dGVzIG9mIGV4aXN0aW5nIHByb3BlcnRpZXMgdG8ga2VlcAorICAgIC8vIHN0
cnVjdHVyZSBzdGlsbCBjYWNoZWFibGUuCiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3Jl
YXRlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hh
aW4uc2V0TWF5QmVOdWxsKHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4uZ2V0KCkpOwogCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKHRyYW5zaXRpb24tPm1fbG9jayk7CiAgICAgICAgIHRyYW5zaXRpb24tPnNldFByb3RlY3RQ
cm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5nKHRydWUpOwogICAgIH0KIAotICAgIFByb3Bl
cnR5VGFibGUqIHRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZUZvclBpbm5pbmco
dm0pOwotICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICB0cmFuc2l0
aW9uLT5waW4oaG9sZExvY2sodHJhbnNpdGlvbi0+bV9sb2NrKSwgdm0sIHRhYmxlKTsKLSAgICBl
bHNlCi0gICAgICAgIHRyYW5zaXRpb24tPnBpbkZvckNhY2hpbmcoaG9sZExvY2sodHJhbnNpdGlv
bi0+bV9sb2NrKSwgdm0sIHRhYmxlKTsKKyAgICB0cmFuc2l0aW9uLT5tX2Jsb2Iuc2V0SW5kZXhp
bmdNb2RlSW5jbHVkaW5nSGlzdG9yeShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnkoKSAmIH5Db3B5T25Xcml0ZSk7CiAgICAgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJv
cGVydHlOYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgIHRyYW5zaXRpb24tPnNldFRyYW5z
aXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgdHJhbnNpdGlvbi0+c2V0
VHJhbnNpdGlvbktpbmQoVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QXR0cmlidXRlQ2hhbmdlKTsK
KyAgICB0cmFuc2l0aW9uLT5zZXRQcm9wZXJ0eVRhYmxlKHZtLCBzdHJ1Y3R1cmUtPnRha2VQcm9w
ZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtKSk7CiAgICAgdHJhbnNpdGlvbi0+c2V0TWF4T2Zm
c2V0KHZtLCBzdHJ1Y3R1cmUtPm1heE9mZnNldCgpKTsKIAotICAgIFByb3BlcnR5TWFwRW50cnkq
IGVudHJ5ID0gdGFibGUtPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAgIEFTU0VSVChlbnRy
eSk7Ci0gICAgZW50cnktPmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwotICAgIHRyYW5zaXRpb24t
PnNldFRyYW5zaXRpb25PZmZzZXQodm0sIGVudHJ5LT5vZmZzZXQpOwotICAgIHNldFN0cnVjdHVy
ZUZsYWdzKHRyYW5zaXRpb24pOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHRyYW5zaXRp
b24tPmF0dHJpYnV0ZUNoYW5nZSh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICB0
cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uT2Zmc2V0KHZtLCBvZmZzZXQpOwogCisgICAgLy8gTm93
IHRoYXQgZXZlcnl0aGluZyBpcyBmaW5lIHdpdGggdGhlIG5ldyBzdHJ1Y3R1cmUncyBib29ra2Vl
cGluZywgdGhlIEdDIGlzIGZyZWUgdG8gYmxvdyB0aGUKKyAgICAvLyB0YWJsZSBhd2F5IGlmIGl0
IHdhbnRzLiBXZSBjYW4gbm93IHJlYnVpbGQgaXQgZmluZS4KICAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOwogICAgIHRyYW5zaXRpb24tPnNldFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFu
c2l0aW9uaW5nKGZhbHNlKTsKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPnRyYW5zaXRp
b25PZmZzZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0
aW9uYXJ5KCkpIHsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzdHJ1
Y3R1cmUtPm1fbG9jaywgdm0uaGVhcCk7CiAgICAgICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9u
VGFibGUuYWRkKHZtLCB0cmFuc2l0aW9uKTsKICAgICB9CkBAIC04NDAsMTEgKzg2NiwxMiBAQCBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyhWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBUcgogewogICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJ
bmNsdWRpbmdIaXN0b3J5ID0gbmV3SW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2Rl
SW5jbHVkaW5nSGlzdG9yeSgpLCB0cmFuc2l0aW9uS2luZCk7CiAgICAgCi0gICAgU3RydWN0dXJl
KiBleGlzdGluZ1RyYW5zaXRpb247Ci0gICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgp
ICYmIChleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdl
dChudWxscHRyLCAwLCB0cmFuc2l0aW9uS2luZCkpKSB7Ci0gICAgICAgIEFTU0VSVChleGlzdGlu
Z1RyYW5zaXRpb24tPnRyYW5zaXRpb25LaW5kKCkgPT0gdHJhbnNpdGlvbktpbmQpOwotICAgICAg
ICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5
KCkgPT0gaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSk7Ci0gICAgICAgIHJldHVybiBleGlz
dGluZ1RyYW5zaXRpb247CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Cisg
ICAgICAgIGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90
cmFuc2l0aW9uVGFibGUuZ2V0KG51bGxwdHIsIDAsIHRyYW5zaXRpb25LaW5kKSkgeworICAgICAg
ICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbktpbmQoKSA9PSB0cmFu
c2l0aW9uS2luZCk7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkgPT0gaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9y
eSk7CisgICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworICAgICAgICB9CiAg
ICAgfQogICAgIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKQEAgLTExNzAsNiArMTE5
NywxNSBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShWTSYgdm0sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgfSk7CiB9CiAKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVy
ZTo6YXR0cmlidXRlQ2hhbmdlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gYXR0cmlidXRlQ2hhbmdlPFNob3VsZFBp
bjo6Tm8+KAorICAgICAgICB2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLAorICAgICAgICBb
dGhpcywgJnZtXSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZz
ZXQsIFByb3BlcnR5T2Zmc2V0IG5ld01heE9mZnNldCkgeworICAgICAgICAgICAgc2V0TWF4T2Zm
c2V0KHZtLCBuZXdNYXhPZmZzZXQpOworICAgICAgICB9KTsKK30KKwogdm9pZCBTdHJ1Y3R1cmU6
OmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIFByb3BlcnR5VGFi
bGUqIHRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZUlmTm90RW1wdHkodm0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBhMDA0MDEwYWI0ZWEzNTdjODI0
YjU3ZThlNTY1MTA3Y2Y2MWZmNDE0Li44MDJjYjRhMzkzYmEzZDE2ZDMwOTkxYWVmNGI5NDFjNGQy
YWIwZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAt
MTk4LDYgKzE5OCw3IEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
T2Zmc2V0Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlv
bihWTSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlP
ZmZzZXQmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hl
YWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1
cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwg
RGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oVk0m
LCBTdHJ1Y3R1cmUqKTsKQEAgLTIyMiw2ICsyMjMsOCBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRU
cmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBG
dW5jJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBQcm9wZXJ0eU9mZnNldCBy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBjb25zdCBG
dW5jJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBQcm9wZXJ0eU9mZnNldCBh
dHRyaWJ1dGVDaGFuZ2VXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgY29uc3QgRnVuYyYpOwogICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91
dFRyYW5zaXRpb24oVk0mLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgIGJvb2wg
aXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gZGljdGlvbmFyeUtpbmQoKSAhPSBOb25lRGlj
dGlvbmFyeUtpbmQ7IH0KQEAgLTcxNSw5ICs3MTgsNiBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRp
b25Qcm9wZXJ0eUF0dHJpYnV0ZXMgPD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0
ZXMpICogOCk7CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uS2luZCA8
PSBzaXplb2YoVHJhbnNpdGlvbktpbmQpICogOCk7CiAKLSAgICBib29sIGlzUHJvcGVydHlBZGRp
dGlvblRyYW5zaXRpb24oKSBjb25zdCB7IHJldHVybiB0cmFuc2l0aW9uS2luZCgpID09IFRyYW5z
aXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOyB9Ci0gICAgYm9vbCBpc1Byb3BlcnR5RGVsZXRp
b25UcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJhbnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0
aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbjsgfQotCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKQEAgLTc0NSw2ICs3NDUsOSBAQCBjbGFzcyBTdHJ1
Y3R1cmUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0ZW1wbGF0ZTxTaG91bGRQaW4sIHR5
cGVuYW1lIEZ1bmM+CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFZNJiwgUHJvcGVydHlOYW1l
LCBjb25zdCBGdW5jJik7CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFZNJiwgUHJvcGVydHlO
YW1lKTsKKyAgICB0ZW1wbGF0ZTxTaG91bGRQaW4sIHR5cGVuYW1lIEZ1bmM+CisgICAgUHJvcGVy
dHlPZmZzZXQgYXR0cmlidXRlQ2hhbmdlKFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBjb25zdCBGdW5jJik7CisgICAgUHJvcGVydHlPZmZzZXQgYXR0cmlidXRlQ2hhbmdl
KFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggYWY3ZDFhZGVhYmM4OWNlYWRiM2ZjNmFmNDdhMWFiOGI3
MmUyMTdiYS4uOTZmZjZmOGY0MjY0MzUwZGZlN2E5NGRlOTY0YmQ0NDFmYjc4NzQyMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAt
MTc2LDggKzE3NiwxNiBAQCB2b2lkIFN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVu
dGx5KGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAKICAgICAgICAgc2VlblByb3BlcnRpZXMuYWRk
KHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKTsKIAotICAgICAgICBp
ZiAoc3RydWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpCisgICAgICAgIHN3
aXRjaCAoc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CisgICAgICAgIGNhc2UgVHJhbnNp
dGlvbktpbmQ6OlByb3BlcnR5QWRkaXRpb246CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6
OlByb3BlcnR5QXR0cmlidXRlQ2hhbmdlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb246CiAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZ1bmN0b3IoUHJv
cGVydHlNYXBFbnRyeShzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSwg
c3RydWN0dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvblByb3Bl
cnR5QXR0cmlidXRlcygpKSkpIHsKICAgICAgICAgICAgIGlmICh0YWJsZSkKQEAgLTUyMSw2ICs1
MjksNDkgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQog
Cit0ZW1wbGF0ZTxTdHJ1Y3R1cmU6OlNob3VsZFBpbiBzaG91bGRQaW4sIHR5cGVuYW1lIEZ1bmM+
CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2UoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBG
dW5jJiBmdW5jKQoreworICAgIFByb3BlcnR5VGFibGUqIHRhYmxlID0gZW5zdXJlUHJvcGVydHlU
YWJsZSh2bSk7CisKKyAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywg
dm0uaGVhcCk7CisKKyAgICBzd2l0Y2ggKHNob3VsZFBpbikgeworICAgIGNhc2UgU2hvdWxkUGlu
OjpZZXM6CisgICAgICAgIHBpbihsb2NrZXIsIHZtLCB0YWJsZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU2hvdWxkUGluOjpObzoKKyAgICAgICAgc2V0UHJvcGVydHlUYWJsZSh2bSwgdGFi
bGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoSlNDOjppc1ZhbGlkT2Zm
c2V0KGdldCh2bSwgcHJvcGVydHlOYW1lKSkpOworCisgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwor
ICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gdGFibGUtPmdldChwcm9wZXJ0eU5hbWUudWlk
KCkpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZW50cnktPm9mZnNldDsKKworICAgIGlmIChhdHRy
aWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKQorICAgICAgICBzZXRJc1F1aWNr
UHJvcGVydHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24oZmFsc2UpOworICAgIGlmIChhdHRy
aWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQorICAgICAgICBzZXRDb250YWlu
c1JlYWRPbmx5UHJvcGVydGllcygpOworCisgICAgZW50cnktPmF0dHJpYnV0ZXMgPSBhdHRyaWJ1
dGVzOworCisgICAgUHJvcGVydHlPZmZzZXQgbmV3TWF4T2Zmc2V0ID0gbWF4T2Zmc2V0KCk7CisK
KyAgICBmdW5jKGxvY2tlciwgb2Zmc2V0LCBuZXdNYXhPZmZzZXQpOworCisgICAgQVNTRVJUKG1h
eE9mZnNldCgpID09IG5ld01heE9mZnNldCk7CisgICAgQVNTRVJUKEpTQzo6aXNWYWxpZE9mZnNl
dChnZXQodm0sIHByb3BlcnR5TmFtZSkpKTsKKworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAg
ICByZXR1cm4gb2Zmc2V0OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW5saW5lIFBy
b3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0
IEZ1bmMmIGZ1bmMpCiB7CkBAIC01MzcsNiArNTg4LDEyIEBAIGlubGluZSBQcm9wZXJ0eU9mZnNl
dCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9w
ZXJ0CiAgICAgcmV0dXJuIHJlbW92ZTxTaG91bGRQaW46Olllcz4odm0sIHByb3BlcnR5TmFtZSwg
ZnVuYyk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CitpbmxpbmUgUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMm
IGZ1bmMpCit7CisgICAgcmV0dXJuIGF0dHJpYnV0ZUNoYW5nZTxTaG91bGRQaW46Olllcz4odm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZnVuYyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9p
ZCBTdHJ1Y3R1cmU6OnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNWYWx1
ZSBwcm90b3R5cGUpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWRQcm90b3R5cGUocHJvdG90eXBlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggNTM3YmNj
NjAyYzk4NDY4MTdhYTcwOTU5ZjM3YjFiYjE5ZDhlODY1NS4uNDk5YTg3ZTUxNDM2OGIwZDRjMTZl
NTA1Y2RkOGNlZDViMTI1YzU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcApAQCAtMzAyNCw3ICszMDI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXMK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwganNO
dWxsKCkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAg
ICByZXN1bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKHN0cnVjdHVyZS0+aXNQcm9wZXJ0
eURlbGV0aW9uVHJhbnNpdGlvbigpKSk7CisgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmpl
Y3QsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+dHJhbnNpdGlvbktp
bmQoKSkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZTcxNmFmNjExOGE0NjI4NzM2YmNhY2FjMTRhYTNmZjEyYmVlNGU1MS4uOGU4MzlhMzc5MWJj
MDU4ZDUyOTgyNTMwNmJiZDZmZjZkMjA3NTYxZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOC0xNCAg
WXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtK
U0NdIGF0dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBzaG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTUyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNz
L2NoYW5nZS1hdHRyaWJ1dGUtc3RydWN0dXJlLXRyYW5zaXRpb24uanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoc2QubGV0LmRhdGEudm0uZ2V0U3RydWN0dXJlVHJhbnNp
dGlvbkxpc3QubGV0LnJlc3VsdC5yZXR1cm4ucmVzdWx0LmtpbmQpOgorICAgICAgICAoc2QpOgor
ICAgICAgICAoc2hvdWxkQmUuSlNPTi5zdHJpbmdpZnkuc2QpOgorICAgICAgICAobGFzdFN0cnVj
dHVyZUlEKToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5Lk9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorCiAyMDIwLTA4LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9t
aWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzIHNob3Vs
ZG4ndCBtYXJrIEdldFN0YWNrIG5vZGVzIGRpcmVjdGx5IGFzIHZhbGlkIHBsYWNlcyBmb3IgcmVj
b3ZlcnkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hdHRyaWJ1dGUtc3RydWN0
dXJlLXRyYW5zaXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXR0cmlidXRlLXN0cnVj
dHVyZS10cmFuc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwOGY5NDgwOWU0Y2NmOGRhZTI5MzY5MGJk
YjUyOWQ0MDFhZmQ0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2Ut
YXR0cmlidXRlLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCit2YXIgb2JqZWN0ID0geworICAgIHRlc3QwMDE6IDQyCit9OworCitPYmplY3QuZGVmaW5l
UHJvcGVydHkob2JqZWN0LCAidGVzdDAwMSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pOwor
CitmdW5jdGlvbiBzZChvYmopIHsKKyAgICBsZXQgZGF0YSA9ICR2bS5nZXRTdHJ1Y3R1cmVUcmFu
c2l0aW9uTGlzdChvYmopCisgICAgbGV0IHJlc3VsdCA9IFtdCisKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGZ1bmN0aW9uIGtpbmQoa2luZCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1
cm4gImFkZGVkIgorICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gImRlbGV0ZWQi
CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHJldHVybiAiYXR0cmlidXRlIgorICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGgvNTsgKytpKSB7CisgICAg
ICAgIHJlc3VsdC5wdXNoKHsgb2Zmc2V0OiBkYXRhW2kqNSsxXSwgbWF4OiBkYXRhW2kqNSsyXSwg
cHJvcGVydHk6IGRhdGFbaSo1KzNdLCB0eXBlOiBraW5kKGRhdGFbaSo1KzRdKSB9KQorICAgIH0K
KworICAgIHJldHVybiByZXN1bHQKK30KKworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2Qob2Jq
ZWN0KSksIGBbeyJvZmZzZXQiOi0xLCJtYXgiOi0xLCJwcm9wZXJ0eSI6bnVsbCwidHlwZSI6InVu
a25vd24ifSx7Im9mZnNldCI6MCwibWF4IjowLCJwcm9wZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoi
YWRkZWQifSx7Im9mZnNldCI6MCwibWF4IjowLCJwcm9wZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoi
YXR0cmlidXRlIn1dYCk7CisKK2RlbGV0ZSBvYmplY3QudGVzdDAwMTsKK3Nob3VsZEJlKEpTT04u
c3RyaW5naWZ5KHNkKG9iamVjdCkpLCBgW3sib2Zmc2V0IjotMSwibWF4IjotMSwicHJvcGVydHki
Om51bGwsInR5cGUiOiJ1bmtub3duIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0
ZXN0MDAxIiwidHlwZSI6ImFkZGVkIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0
ZXN0MDAxIiwidHlwZSI6ImF0dHJpYnV0ZSJ9LHsib2Zmc2V0IjowLCJtYXgiOjAsInByb3BlcnR5
IjoidGVzdDAwMSIsInR5cGUiOiJkZWxldGVkIn1dYCk7CisKK2Z1bmN0aW9uIGxhc3RTdHJ1Y3R1
cmVJRCgpCit7CisgICAgdmFyIG9iamVjdCA9IHsKKyAgICAgICAgdGVzdDAwMTogNDIKKyAgICB9
OworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJ0ZXN0MDAxIiwgeworICAgICAg
ICB3cml0YWJsZTogZmFsc2UKKyAgICB9KTsKKyAgICB2YXIgbGlzdCA9ICR2bS5nZXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uTGlzdChvYmplY3QpOworICAgIHJldHVybiBsaXN0W2xpc3QubGVuZ3RoIC0g
NV07Cit9CisKK3ZhciBzdHJ1Y3R1cmVJRCA9IGxhc3RTdHJ1Y3R1cmVJRCgpOworc2hvdWxkQmUo
c3RydWN0dXJlSUQsIGxhc3RTdHJ1Y3R1cmVJRCgpKTsgLy8gVHJhbnNpdGlvbiBpcyB0cmFjZWQu
CisKK3ZhciBvYmplY3QgPSB7CisgICAgdGVzdDAwMTogNDIKK307CitPYmplY3QuZGVmaW5lUHJv
cGVydHkob2JqZWN0LCAidGVzdDAwMSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pOworLy8g
TWFrZSBpdCBEaWN0aW9uYXJ5LgorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpCisgICAg
b2JqZWN0WyJ0ZXN0IiArIGldID0gaTsKK3Nob3VsZEJlKG9iamVjdC50ZXN0MDAxLCA0Mik7Citz
aG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9i
amVjdCwgInRlc3QwMDEiKSksIGB7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJh
YmxlIjp0cnVlLCJjb25maWd1cmFibGUiOnRydWV9YCk7CitPYmplY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAidGVzdDAwMSIsIHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
InRlc3QwMDEiKSksIGB7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpm
YWxzZSwiY29uZmlndXJhYmxlIjp0cnVlfWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2Qo
b2JqZWN0KSksIGBbeyJvZmZzZXQiOi0xLCJtYXgiOjEwOTgsInByb3BlcnR5IjpudWxsLCJ0eXBl
IjoidW5rbm93biJ9LHsib2Zmc2V0IjowLCJtYXgiOjEwOTgsInByb3BlcnR5IjoidGVzdDAwMSIs
InR5cGUiOiJhdHRyaWJ1dGUifV1gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406649</attachid>
            <date>2020-08-14 19:23:18 -0700</date>
            <delta_ts>2020-08-14 19:35:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215528-20200814192317.patch</filename>
            <type>text/plain</type>
            <size>29031</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWM1N2ZkMmFkNjQyODViYjA1NGZlNmM4YTY2MzRiOTVmZjI0ZTU2Li41NDViYzhiOThkMmE0NzQw
ZDBiOWZkOTI4NjQxYjM1NzFkYTNhZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMC0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIGF0dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBz
aG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nIHBpbiBpbiBhdHRyaWJ1dGUt
Y2hhbmdlIHRyYW5zaXRpb24uIFRvIGFjaGlldmUgdGhpcywgYXR0cmlidXRlLWNoYW5nZSB0cmFu
c2l0aW9uIGlzIG5vdyBmdWxseSBzdXBwb3J0ZWQKKyAgICAgICAgdHJhbnNpdGlvbiBjaGFpbiBp
biBmb3JFYWNoUHJvcGVydHlDb25jdXJyZW50bHkgZXRjLjogd2UgY2FuIHJldHJpZXZlIHByb3Bl
cnRpZXMgd2l0aCBjaGFuZ2VkIGF0dHJpYnV0ZXMgY29ycmVjdGx5IHZpYSB0cmF2ZXJzaW5nCisg
ICAgICAgIHRyYW5zaXRpb24gY2hhaW4uIEFuZCB3ZSBhbHNvIHN1cHBvcnQgYXR0cmlidXRlLWNo
YW5nZSB0cmFuc2l0aW9uIGluIG1hdGVyaWFsaXplUHJvcGVydHlUYWJsZSwgc28gd2UgZG8gbm90
IG5lZWQgdG8gcGluIHN0cnVjdHVyZS4KKworICAgICAgICBUaGUgZGVzaWduIGxhcmdlbHkgbWlt
aWNzIGV4aXN0aW5nIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbiBhbmQgYWRkUHJvcGVydHlUcmFu
c2l0aW9uLiBUaGlzIHBhdGNoIGFsc28gYWRkcyBgaGFzQmVlbkRpY3Rpb25hcnkoKWAKKyAgICAg
ICAgY2hlY2sgYmVmb3JlIGFkZGluZyBzdHJ1Y3R1cmUgdG8gdGhlIHRyYW5zaXRpb24gc28gdGhh
dCB3ZSBjYW4gYXZvaWQgYWRkaW5nIHVubmVjZXNzYXJ5IHN0cnVjdHVyZSBlbnRyeSB0byB0aGUg
dHJhbnNpdGlvbiB0YWJsZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVy
dHlUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkTmV3UHJvcGVy
dHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpyZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmF0dHJpYnV0ZUNoYW5nZVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiB0b29scy9KU0Rv
bGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6ZnVuY3Rpb25HZXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCk6CisKIDIwMjAtMDgtMTQgIENhaW8gTGltYSAgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtBUk12N11bSlNDXSBDb25zZXJ2YXRpdmUgR0Mg
aXMgbm90IGNvbnNpZGVyaW5nIGByN2AgYXMgYSByb290CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMWMyMDg5NzA3ZmYwYTBhZDFkM2M5ZjBl
YWMzNWEyYzUzYTQ3ZjBiOS4uOTE0ODcyNTg5NmQwNjkxMzZkMTY0M2ZhOGM0ZTIwZjRkNTY2YzUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApA
QCAtMTk1MSw3ICsxOTUxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwot
ICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRp
b24oKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CiAgICAgICAgIEFTU0VSVChiYXNl
R1BSICE9IHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoIXZhbHVlUmVncy51c2VzKGJhc2VH
UFIpKTsKICAgICAgICAgQVNTRVJUKCF2YWx1ZVJlZ3MudXNlcyhzY3JhdGNoR1BSKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg1MjAwZDVkYWYxZGVl
OGU5MGZlODE0MWRiYjFjY2JkOWI1MzM3ZWUuLjFkOWIzNWVjNTk5YjMyMGU3OWEzYjg1MDVkODU1
NTFlYzc4ZjM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB3
cml0ZShKU0NlbGxfdHlwZUluZm9GbGFncyk7CiAgICAgICAgIHdyaXRlKEpTQ2VsbF9pbmRleGlu
Z1R5cGUpOwogCi0gICAgICAgIGlmIChub2RlLT50cmFuc2l0aW9uKCktPm5leHQtPmlzUHJvcGVy
dHlEZWxldGlvblRyYW5zaXRpb24oKSkgeworICAgICAgICBpZiAobm9kZS0+dHJhbnNpdGlvbigp
LT5uZXh0LT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0
aW9uKSB7CiAgICAgICAgICAgICAvLyBXZSB1c2UgdGhpcyAiZGVsZXRlIGZlbmNlIiB0byBtb2Rl
bCB0aGUgcHJvcGVyIGFsaWFzaW5nIG9mIGZ1dHVyZSBzdG9yZXMuCiAgICAgICAgICAgICAvLyBC
b3RoIGluIERGRyBhbmQgd2hlbiB3ZSBsb3dlciB0byBCMywgd2UgbW9kZWwgYWxpYXNpbmcgb2Yg
cHJvcGVydGllcyBieQogICAgICAgICAgICAgLy8gcHJvcGVydHkgIG5hbWUuIEluIGEgd29ybGQg
d2l0aG91dCBkZWxldGUsIHRoYXQgYWxzbyBtb2RlbHMge2Jhc2UsIHByb3BlcnR5T2Zmc2V0fS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAw
MTRkMWZmZDEwNWJiOGUyYzEyMjE1N2VkMzYwZGEyMjZiYTYxZWVjLi5mZWZhZTdhZTA0MjlhZDlm
ZTA0MTU5MjQ5NDcyYzIzNzc2NGQ2ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zODE2LDcgKzM4MTYsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsgCiAKLSAgICAgICAgYXV0byYgaGVhcCA9IG1fbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0LT5p
c1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkgPyBtX2hlYXBzLkpTQ2VsbEhlYWRlckFuZE5h
bWVkUHJvcGVydGllcyA6IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEOworICAgICAgICBhdXRv
JiBoZWFwID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQtPnRyYW5zaXRpb25LaW5kKCkgPT0g
VHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24gPyBtX2hlYXBzLkpTQ2VsbEhlYWRlckFu
ZE5hbWVkUHJvcGVydGllcyA6IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEOwogICAgICAgICBU
eXBlZFBvaW50ZXIgcG9pbnRlciB7IGhlYXAsIG1fb3V0LmFkZFB0cihjZWxsLCBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmVJRC5vZmZzZXQoKSkgfTsKIAogICAgICAgICBtX291dC5zdG9yZTMyKApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNmFhMjYwNmFhOWRiNWNiYjlk
NjcyODMyOWE5MWVjYWE0ZmY0NDMxOC4uMmViYjEzYWZkYTQwZTE2NDBjM2JkOTMxODJhZjJjNTVj
YWQ1OGYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC04MzEsNyAr
ODMxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0gc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2aW91c0lE
KCkgPT0gb2xkU3RydWN0dXJlKTsKLSAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlz
UHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0
aW9uKTsKICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAg
ICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQobmV3T2Zmc2V0KSk7CiAgICAgICAgICAgICBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5
TmFtZSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyMmNkNDJiYjVmMDNhYWNh
NTVmNjgwNWMwYjVkM2NkMTYxOWQ2NWIwLi45OTViNGM1YTc3ZDVhMzhhMWNmYmJiOWYzNWZiYzRh
NzY2N2E5YzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTQzOCwyMCArNDM4LDMzIEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgYm9vbCBzZXRQcm9wZXJ0eVRhYmxlCiAgICAgICAg
IHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CiAgICAgICAgIGlmICghc3RydWN0dXJlLT5tX3Ry
YW5zaXRpb25Qcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYg
KHN0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKSB7CisgICAgICAgIHN3
aXRjaCAoc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CisgICAgICAgIGNhc2UgVHJhbnNp
dGlvbktpbmQ6OlByb3BlcnR5QWRkaXRpb246IHsKKyAgICAgICAgICAgIFByb3BlcnR5TWFwRW50
cnkgZW50cnkoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0KCksIHN0cnVj
dHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Qcm9wZXJ0eUF0
dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICBhdXRvIG5leHRPZmZzZXQgPSB0YWJsZS0+bmV4dE9m
ZnNldChzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChuZXh0T2Zmc2V0LCBuZXh0T2Zmc2V0ID09IHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNl
dCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdGFibGUtPmFkZCh2bSwgZW50cnkpOwor
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOworICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5maXJzdC5maXJzdC0+b2Zmc2V0ID09
IG5leHRPZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbjogewogICAgICAgICAgICAgYXV0byBp
dGVtID0gdGFibGUtPmZpbmQoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0
KCkpOwogICAgICAgICAgICAgQVNTRVJUKGl0ZW0uZmlyc3QpOwogICAgICAgICAgICAgdGFibGUt
PnJlbW92ZSh2bSwgaXRlbSk7CiAgICAgICAgICAgICB0YWJsZS0+YWRkRGVsZXRlZE9mZnNldChz
dHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZzZXQoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6
OlByb3BlcnR5QXR0cmlidXRlQ2hhbmdlOiB7CisgICAgICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5
KiBlbnRyeSA9IHRhYmxlLT5nZXQoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUu
Z2V0KCkpOworICAgICAgICAgICAgZW50cnktPmF0dHJpYnV0ZXMgPSBzdHJ1Y3R1cmUtPnRyYW5z
aXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeS0+b2Zm
c2V0ID09IHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPmlzUHJvcGVydHlBZGRpdGlvblRyYW5zaXRpb24oKSk7Ci0gICAgICAgIFByb3Bl
cnR5TWFwRW50cnkgZW50cnkoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0
KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Q
cm9wZXJ0eUF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGF1dG8gbmV4dE9mZnNldCA9IHRhYmxlLT5u
ZXh0T2Zmc2V0KHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQobmV4dE9mZnNldCwgbmV4dE9mZnNldCA9PSBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZz
ZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGFibGUtPmFkZCh2bSwgZW50cnkpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuZmlyc3QuZmlyc3QtPm9mZnNldCA9PSBuZXh0T2Zmc2V0
KTsKICAgICB9CiAgICAgCiAgICAgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgKQEAgLTQ3NCw2ICs0
ODcsMTEgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3QKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCisg
ICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKKworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5E
aWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgaWYgKFN0cnVjdHVy
ZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQo
dWlkLCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBZGRpdGlvbikpIHsKICAg
ICAgICAgdmFsaWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0
KCksIGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNl
dCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNTIzLDggKzU0
MSw3IEBAIGJvb2wgU3RydWN0dXJlOjpob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUoVk0mIHZt
LCBKU09iamVjdCogYmFzZSkgY29uc3QKIAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
KQogewotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIG9mZnNldCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBhZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJl
dHVybiBuZXdTdHJ1Y3R1cmU7CiAKQEAgLTU4NSw3ICs2MDIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFBybwogICAgIHRyYW5zaXRpb24tPnNldFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFu
c2l0aW9uaW5nKGZhbHNlKTsKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPnRyYW5zaXRp
b25PZmZzZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgeworICAgIGlm
ICghc3RydWN0dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAg
ICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CiAgICAg
fQpAQCAtNjEwLDYgKzYyNywxMCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cgogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCiAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsK
KworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3Ry
dWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1
dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbikpIHsKICAgICAgICAgdmFsaWRh
dGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5n
VHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNjc4LDcgKzY5OSw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpyZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwKICAgICB0cmFuc2l0aW9uLT5zZXRQcm90ZWN0UHJvcGVydHlUYWJs
ZVdoaWxlVHJhbnNpdGlvbmluZyhmYWxzZSk7CiAKICAgICBjaGVja09mZnNldCh0cmFuc2l0aW9u
LT50cmFuc2l0aW9uT2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwotICAg
IHsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkgewogICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrLCB2bS5oZWFw
KTsKICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRyYW5zaXRp
b24pOwogICAgIH0KQEAgLTcwNCw3MyArNzI1LDc2IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpj
aGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphdHRy
aWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK1N0cnVjdHVyZSogU3RydWN0
dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBhdXRvIHNldEVudHJ5QXR0cmli
dXRlcyA9IFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewotICAgICAgICBQcm9wZXJ0eU1hcEVu
dHJ5KiBlbnRyeSA9IHN0cnVjdHVyZS0+ZW5zdXJlUHJvcGVydHlUYWJsZSh2bSktPmdldChwcm9w
ZXJ0eU5hbWUudWlkKCkpOwotICAgICAgICBBU1NFUlQoZW50cnkpOwotICAgICAgICBlbnRyeS0+
YXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Ci0gICAgfTsKKyAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCi0g
ICAgYXV0byBzZXRTdHJ1Y3R1cmVGbGFncyA9IFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewot
ICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKLSAg
ICAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKLSAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pCi0gICAg
ICAgICAgICBzdHJ1Y3R1cmUtPnNldElzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVt
ZXJhdGlvbihmYWxzZSk7Ci0gICAgfTsKKyAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwogCisg
ICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1
cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJpYnV0ZXMs
IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZSkpIHsKKyAgICAgICAgdmFs
aWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0
aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIG9mZnNldCA9IGV4aXN0
aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOworICAgICAgICByZXR1cm4gZXhpc3Rp
bmdUcmFuc2l0aW9uOworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCitTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogZGVmZXJyZWQp
Cit7CiAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewotICAg
ICAgICBzZXRFbnRyeUF0dHJpYnV0ZXMoc3RydWN0dXJlKTsKLSAgICAgICAgc2V0U3RydWN0dXJl
RmxhZ3Moc3RydWN0dXJlKTsKKyAgICAgICAgc3RydWN0dXJlLT5hdHRyaWJ1dGVDaGFuZ2VXaXRo
b3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBbXShjb25zdCBHQ1Nh
ZmVDb25jdXJyZW50SlNMb2NrZXImLCBQcm9wZXJ0eU9mZnNldCwgUHJvcGVydHlPZmZzZXQpIHsg
fSk7CiAgICAgICAgIHN0cnVjdHVyZS0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgICAg
ICByZXR1cm4gc3RydWN0dXJlOwogICAgIH0KIAotICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSkgewotICAgICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBz
dHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChwcm9wZXJ0eU5hbWUudWlkKCksIGF0dHJp
YnV0ZXMsIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZSkpIHsKLSAgICAg
ICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNl
dCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwotICAgICAgICAgICAg
ZXhpc3RpbmdUcmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOwotICAgICAgICB9CisgICAgQVNTRVJUKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOworICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IGludmFsaWRPZmZzZXQ7CisgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0
aW9uID0gYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCkpIHsKKyAgICAgICAgdmFsaWRh
dGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5n
VHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIGV4aXN0aW5nVHJhbnNpdGlv
bi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOworICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFu
c2l0aW9uOworICAgIH0KIAotICAgICAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9uQ291bnRI
YXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghaXNDb3B5T25Xcml0ZShzdHJ1
Y3R1cmUtPmluZGV4aW5nTW9kZSgpKSk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRp
b24gPSB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgZGVm
ZXJyZWQpOwotICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKLSAg
ICAgICAgICAgIHNldEVudHJ5QXR0cmlidXRlcyh0cmFuc2l0aW9uKTsKLSAgICAgICAgICAgIHNl
dFN0cnVjdHVyZUZsYWdzKHRyYW5zaXRpb24pOwotICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRp
b247Ci0gICAgICAgIH0KKyAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9uQ291bnRIYXNPdmVy
Zmxvd2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc0NvcHlPbldyaXRlKHN0cnVjdHVyZS0+aW5k
ZXhpbmdNb2RlKCkpKTsKKyAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gdG9VbmNhY2hl
YWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIGRlZmVycmVkKTsKKyAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKKyAgICAgICAgdHJhbnNpdGlvbi0+
YXR0cmlidXRlQ2hhbmdlKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgICAgICBy
ZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9CiAKKyAgICAvLyBFdmVuIGlmIHRoZSBjdXJyZW50IHN0
cnVjdHVyZSBpcyBkaWN0aW9uYXJ5LCB3ZSBzaG91bGQgcGVyZm9ybSB0cmFuc2l0aW9uIHNpbmNl
IHRoaXMgY2hhbmdlcyBhdHRyaWJ1dGVzIG9mIGV4aXN0aW5nIHByb3BlcnRpZXMgdG8ga2VlcAor
ICAgIC8vIHN0cnVjdHVyZSBzdGlsbCBjYWNoZWFibGUuCiAgICAgU3RydWN0dXJlKiB0cmFuc2l0
aW9uID0gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJv
dG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2Fj
aGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpOwogCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHRyYW5zaXRpb24tPm1fbG9jayk7CiAgICAgICAgIHRyYW5zaXRpb24tPnNl
dFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9uaW5nKHRydWUpOwogICAgIH0KIAot
ICAgIFByb3BlcnR5VGFibGUqIHRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZUZv
clBpbm5pbmcodm0pOwotICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAg
ICB0cmFuc2l0aW9uLT5waW4oaG9sZExvY2sodHJhbnNpdGlvbi0+bV9sb2NrKSwgdm0sIHRhYmxl
KTsKLSAgICBlbHNlCi0gICAgICAgIHRyYW5zaXRpb24tPnBpbkZvckNhY2hpbmcoaG9sZExvY2so
dHJhbnNpdGlvbi0+bV9sb2NrKSwgdm0sIHRhYmxlKTsKKyAgICB0cmFuc2l0aW9uLT5tX2Jsb2Iu
c2V0SW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZUlu
Y2x1ZGluZ0hpc3RvcnkoKSAmIH5Db3B5T25Xcml0ZSk7CiAgICAgdHJhbnNpdGlvbi0+bV90cmFu
c2l0aW9uUHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgIHRyYW5zaXRpb24t
PnNldFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgdHJhbnNp
dGlvbi0+c2V0VHJhbnNpdGlvbktpbmQoVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5QXR0cmlidXRl
Q2hhbmdlKTsKKyAgICB0cmFuc2l0aW9uLT5zZXRQcm9wZXJ0eVRhYmxlKHZtLCBzdHJ1Y3R1cmUt
PnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtKSk7CiAgICAgdHJhbnNpdGlvbi0+
c2V0TWF4T2Zmc2V0KHZtLCBzdHJ1Y3R1cmUtPm1heE9mZnNldCgpKTsKIAotICAgIFByb3BlcnR5
TWFwRW50cnkqIGVudHJ5ID0gdGFibGUtPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAgIEFT
U0VSVChlbnRyeSk7Ci0gICAgZW50cnktPmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwotICAgIHRy
YW5zaXRpb24tPnNldFRyYW5zaXRpb25PZmZzZXQodm0sIGVudHJ5LT5vZmZzZXQpOwotICAgIHNl
dFN0cnVjdHVyZUZsYWdzKHRyYW5zaXRpb24pOworICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPmF0
dHJpYnV0ZUNoYW5nZSh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICB0cmFuc2l0
aW9uLT5zZXRUcmFuc2l0aW9uT2Zmc2V0KHZtLCBvZmZzZXQpOwogCisgICAgLy8gTm93IHRoYXQg
ZXZlcnl0aGluZyBpcyBmaW5lIHdpdGggdGhlIG5ldyBzdHJ1Y3R1cmUncyBib29ra2VlcGluZywg
dGhlIEdDIGlzIGZyZWUgdG8gYmxvdyB0aGUKKyAgICAvLyB0YWJsZSBhd2F5IGlmIGl0IHdhbnRz
LiBXZSBjYW4gbm93IHJlYnVpbGQgaXQgZmluZS4KICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OwogICAgIHRyYW5zaXRpb24tPnNldFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFuc2l0aW9u
aW5nKGZhbHNlKTsKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZz
ZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgaWYgKCFzdHJ1Y3R1cmUt
PmlzRGljdGlvbmFyeSgpKSB7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5
KCkpIHsKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUt
Pm1fbG9jaywgdm0uaGVhcCk7CiAgICAgICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUu
YWRkKHZtLCB0cmFuc2l0aW9uKTsKICAgICB9CkBAIC04NDAsMTEgKzg2NCwxMiBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uU2xvdyhWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBUcgogewogICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ01vZGVJbmNsdWRp
bmdIaXN0b3J5ID0gbmV3SW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlSW5jbHVk
aW5nSGlzdG9yeSgpLCB0cmFuc2l0aW9uS2luZCk7CiAgICAgCi0gICAgU3RydWN0dXJlKiBleGlz
dGluZ1RyYW5zaXRpb247Ci0gICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIChl
eGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChudWxs
cHRyLCAwLCB0cmFuc2l0aW9uS2luZCkpKSB7Ci0gICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5z
aXRpb24tPnRyYW5zaXRpb25LaW5kKCkgPT0gdHJhbnNpdGlvbktpbmQpOwotICAgICAgICBBU1NF
UlQoZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkgPT0g
aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSk7Ci0gICAgICAgIHJldHVybiBleGlzdGluZ1Ry
YW5zaXRpb247CisgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAg
IGlmIChTdHJ1Y3R1cmUqIGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFuc2l0
aW9uVGFibGUuZ2V0KG51bGxwdHIsIDAsIHRyYW5zaXRpb25LaW5kKSkgeworICAgICAgICAgICAg
QVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbktpbmQoKSA9PSB0cmFuc2l0aW9u
S2luZCk7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmRleGluZ01v
ZGVJbmNsdWRpbmdIaXN0b3J5KCkgPT0gaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSk7Cisg
ICAgICAgICAgICByZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworICAgICAgICB9CiAgICAgfQog
ICAgIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKQEAgLTExNzAsNiArMTE5NSwxNSBA
QCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92ZShWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiAgICAgfSk7CiB9CiAKK1Byb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YXR0
cmlidXRlQ2hhbmdlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcykKK3sKKyAgICByZXR1cm4gYXR0cmlidXRlQ2hhbmdlPFNob3VsZFBpbjo6Tm8+
KAorICAgICAgICB2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLAorICAgICAgICBbdGhpcywg
JnZtXSAoY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFBy
b3BlcnR5T2Zmc2V0IG5ld01heE9mZnNldCkgeworICAgICAgICAgICAgc2V0TWF4T2Zmc2V0KHZt
LCBuZXdNYXhPZmZzZXQpOworICAgICAgICB9KTsKK30KKwogdm9pZCBTdHJ1Y3R1cmU6OmdldFBy
b3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIFByb3BlcnR5VGFibGUqIHRh
YmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZUlmTm90RW1wdHkodm0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBhMDA0MDEwYWI0ZWEzNTdjODI0YjU3ZThl
NTY1MTA3Y2Y2MWZmNDE0Li44MDJjYjRhMzkzYmEzZDE2ZDMwOTkxYWVmNGI5NDFjNGQyYWIwZDZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTk4LDYg
KzE5OCw3IEBAIGNsYXNzIFN0cnVjdHVyZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVj
dHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0
Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYs
IFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlLCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50RmlyZSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1
cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQm
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSog
dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgRGVmZXJy
ZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oVk0mLCBTdHJ1
Y3R1cmUqKTsKQEAgLTIyMiw2ICsyMjMsOCBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBQcm9wZXJ0eU9mZnNldCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBGdW5jJik7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICBQcm9wZXJ0eU9mZnNldCByZW1vdmVQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgUHJvcGVydHlOYW1lLCBjb25zdCBGdW5jJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICBQcm9wZXJ0eU9mZnNldCBhdHRyaWJ1
dGVDaGFuZ2VXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgY29uc3QgRnVuYyYpOwogICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91dFRyYW5z
aXRpb24oVk0mLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAgIAogICAgIGJvb2wgaXNEaWN0
aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gZGljdGlvbmFyeUtpbmQoKSAhPSBOb25lRGljdGlvbmFy
eUtpbmQ7IH0KQEAgLTcxNSw5ICs3MTgsNiBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNfYml0V2lkdGhPZlRyYW5zaXRpb25Qcm9w
ZXJ0eUF0dHJpYnV0ZXMgPD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMpICog
OCk7CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRoT2ZUcmFuc2l0aW9uS2luZCA8PSBzaXpl
b2YoVHJhbnNpdGlvbktpbmQpICogOCk7CiAKLSAgICBib29sIGlzUHJvcGVydHlBZGRpdGlvblRy
YW5zaXRpb24oKSBjb25zdCB7IHJldHVybiB0cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25L
aW5kOjpQcm9wZXJ0eUFkZGl0aW9uOyB9Ci0gICAgYm9vbCBpc1Byb3BlcnR5RGVsZXRpb25UcmFu
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJhbnNpdGlvbktpbmQoKSA9PSBUcmFuc2l0aW9uS2lu
ZDo6UHJvcGVydHlEZWxldGlvbjsgfQotCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKQEAgLTc0NSw2ICs3NDUsOSBAQCBjbGFzcyBTdHJ1Y3R1cmUg
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0ZW1wbGF0ZTxTaG91bGRQaW4sIHR5cGVuYW1l
IEZ1bmM+CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFZNJiwgUHJvcGVydHlOYW1lLCBjb25z
dCBGdW5jJik7CiAgICAgUHJvcGVydHlPZmZzZXQgcmVtb3ZlKFZNJiwgUHJvcGVydHlOYW1lKTsK
KyAgICB0ZW1wbGF0ZTxTaG91bGRQaW4sIHR5cGVuYW1lIEZ1bmM+CisgICAgUHJvcGVydHlPZmZz
ZXQgYXR0cmlidXRlQ2hhbmdlKFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBjb25zdCBGdW5jJik7CisgICAgUHJvcGVydHlPZmZzZXQgYXR0cmlidXRlQ2hhbmdlKFZNJiwg
UHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKIAogICAgIHZvaWQgY2hlY2tDb25z
aXN0ZW5jeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJbmxpbmVzLmgKaW5kZXggYWY3ZDFhZGVhYmM4OWNlYWRiM2ZjNmFmNDdhMWFiOGI3MmUyMTdi
YS4uOTZmZjZmOGY0MjY0MzUwZGZlN2E5NGRlOTY0YmQ0NDFmYjc4NzQyMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMTc2LDgg
KzE3NiwxNiBAQCB2b2lkIFN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAKICAgICAgICAgc2VlblByb3BlcnRpZXMuYWRkKHN0cnVj
dHVyZS0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpKTsKIAotICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkpCisgICAgICAgIHN3aXRjaCAo
c3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktp
bmQ6OlByb3BlcnR5QWRkaXRpb246CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6OlByb3Bl
cnR5QXR0cmlidXRlQ2hhbmdlOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJh
bnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb246CiAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWZ1bmN0b3IoUHJvcGVydHlN
YXBFbnRyeShzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSwgc3RydWN0
dXJlLT50cmFuc2l0aW9uT2Zmc2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvblByb3BlcnR5QXR0
cmlidXRlcygpKSkpIHsKICAgICAgICAgICAgIGlmICh0YWJsZSkKQEAgLTUyMSw2ICs1MjksNDkg
QEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6cmVtb3ZlKFZNJiB2bSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCit0ZW1w
bGF0ZTxTdHJ1Y3R1cmU6OlNob3VsZFBpbiBzaG91bGRQaW4sIHR5cGVuYW1lIEZ1bmM+Citpbmxp
bmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2UoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBjb25zdCBGdW5jJiBm
dW5jKQoreworICAgIFByb3BlcnR5VGFibGUqIHRhYmxlID0gZW5zdXJlUHJvcGVydHlUYWJsZSh2
bSk7CisKKyAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywgdm0uaGVh
cCk7CisKKyAgICBzd2l0Y2ggKHNob3VsZFBpbikgeworICAgIGNhc2UgU2hvdWxkUGluOjpZZXM6
CisgICAgICAgIHBpbihsb2NrZXIsIHZtLCB0YWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU2hvdWxkUGluOjpObzoKKyAgICAgICAgc2V0UHJvcGVydHlUYWJsZSh2bSwgdGFibGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoSlNDOjppc1ZhbGlkT2Zmc2V0KGdl
dCh2bSwgcHJvcGVydHlOYW1lKSkpOworCisgICAgY2hlY2tDb25zaXN0ZW5jeSgpOworICAgIFBy
b3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gdGFibGUtPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwor
ICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0ID0gZW50cnktPm9mZnNldDsKKworICAgIGlmIChhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKQorICAgICAgICBzZXRJc1F1aWNrUHJvcGVy
dHlBY2Nlc3NBbGxvd2VkRm9yRW51bWVyYXRpb24oZmFsc2UpOworICAgIGlmIChhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KQorICAgICAgICBzZXRDb250YWluc1JlYWRP
bmx5UHJvcGVydGllcygpOworCisgICAgZW50cnktPmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwor
CisgICAgUHJvcGVydHlPZmZzZXQgbmV3TWF4T2Zmc2V0ID0gbWF4T2Zmc2V0KCk7CisKKyAgICBm
dW5jKGxvY2tlciwgb2Zmc2V0LCBuZXdNYXhPZmZzZXQpOworCisgICAgQVNTRVJUKG1heE9mZnNl
dCgpID09IG5ld01heE9mZnNldCk7CisgICAgQVNTRVJUKEpTQzo6aXNWYWxpZE9mZnNldChnZXQo
dm0sIHByb3BlcnR5TmFtZSkpKTsKKworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICByZXR1
cm4gb2Zmc2V0OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogaW5saW5lIFByb3BlcnR5
T2Zmc2V0IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiB7CkBAIC01MzcsNiArNTg4LDEyIEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9wZXJ0CiAg
ICAgcmV0dXJuIHJlbW92ZTxTaG91bGRQaW46Olllcz4odm0sIHByb3BlcnR5TmFtZSwgZnVuYyk7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CitpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3Ry
dWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VXaXRob3V0VHJhbnNpdGlvbihWTSYgdm0sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMmIGZ1bmMp
Cit7CisgICAgcmV0dXJuIGF0dHJpYnV0ZUNoYW5nZTxTaG91bGRQaW46Olllcz4odm0sIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgZnVuYyk7Cit9CisKIEFMV0FZU19JTkxJTkUgdm9pZCBTdHJ1
Y3R1cmU6OnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKFZNJiB2bSwgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7CiAgICAgQVNTRVJUKGlzVmFsaWRQcm90b3R5cGUocHJvdG90eXBlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggNTM3YmNjNjAyYzk4
NDY4MTdhYTcwOTU5ZjM3YjFiYjE5ZDhlODY1NS4uNDk5YTg3ZTUxNDM2OGIwZDRjMTZlNTA1Y2Rk
OGNlZDViMTI1YzU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pT
RG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcApAQCAtMzAyNCw3ICszMDI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0cnVjdHVyZVRyYW5zaXRpb25MaXMKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwganNOdWxsKCkp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgICAgICByZXN1
bHQtPnB1c2goZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlKHN0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0
aW9uVHJhbnNpdGlvbigpKSk7CisgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxPYmplY3QsIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQoKSkp
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTcx
NmFmNjExOGE0NjI4NzM2YmNhY2FjMTRhYTNmZjEyYmVlNGU1MS4uOGU4MzlhMzc5MWJjMDU4ZDUy
OTgyNTMwNmJiZDZmZjZkMjA3NTYxZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOC0xNCAgWXVzdWtl
IFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIGF0
dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBzaG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTUyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2NoYW5n
ZS1hdHRyaWJ1dGUtc3RydWN0dXJlLXRyYW5zaXRpb24uanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkQmUpOgorICAgICAgICAoc2QubGV0LmRhdGEudm0uZ2V0U3RydWN0dXJlVHJhbnNpdGlvbkxp
c3QubGV0LnJlc3VsdC5yZXR1cm4ucmVzdWx0LmtpbmQpOgorICAgICAgICAoc2QpOgorICAgICAg
ICAoc2hvdWxkQmUuSlNPTi5zdHJpbmdpZnkuc2QpOgorICAgICAgICAobGFzdFN0cnVjdHVyZUlE
KToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5Lk9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IpOgorCiAyMDIwLTA4LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIE9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzIHNob3VsZG4ndCBt
YXJrIEdldFN0YWNrIG5vZGVzIGRpcmVjdGx5IGFzIHZhbGlkIHBsYWNlcyBmb3IgcmVjb3ZlcnkK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NoYW5nZS1hdHRyaWJ1dGUtc3RydWN0dXJlLXRy
YW5zaXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXR0cmlidXRlLXN0cnVjdHVyZS10
cmFuc2l0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwOGY5NDgwOWU0Y2NmOGRhZTI5MzY5MGJkYjUyOWQ0
MDFhZmQ0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXR0cmli
dXRlLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpzCkBAIC0wLDAgKzEsNzcgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2
YXIgb2JqZWN0ID0geworICAgIHRlc3QwMDE6IDQyCit9OworCitPYmplY3QuZGVmaW5lUHJvcGVy
dHkob2JqZWN0LCAidGVzdDAwMSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pOworCitmdW5j
dGlvbiBzZChvYmopIHsKKyAgICBsZXQgZGF0YSA9ICR2bS5nZXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
TGlzdChvYmopCisgICAgbGV0IHJlc3VsdCA9IFtdCisKKyAgICBpZiAoIWRhdGEpCisgICAgICAg
IHJldHVybiByZXN1bHQKKworICAgIGZ1bmN0aW9uIGtpbmQoa2luZCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1cm4gImFk
ZGVkIgorICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gImRlbGV0ZWQiCisgICAg
ICAgIGNhc2UgMzoKKyAgICAgICAgICAgIHJldHVybiAiYXR0cmlidXRlIgorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGgvNTsgKytpKSB7CisgICAgICAgIHJl
c3VsdC5wdXNoKHsgb2Zmc2V0OiBkYXRhW2kqNSsxXSwgbWF4OiBkYXRhW2kqNSsyXSwgcHJvcGVy
dHk6IGRhdGFbaSo1KzNdLCB0eXBlOiBraW5kKGRhdGFbaSo1KzRdKSB9KQorICAgIH0KKworICAg
IHJldHVybiByZXN1bHQKK30KKworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2Qob2JqZWN0KSks
IGBbeyJvZmZzZXQiOi0xLCJtYXgiOi0xLCJwcm9wZXJ0eSI6bnVsbCwidHlwZSI6InVua25vd24i
fSx7Im9mZnNldCI6MCwibWF4IjowLCJwcm9wZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoiYWRkZWQi
fSx7Im9mZnNldCI6MCwibWF4IjowLCJwcm9wZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoiYXR0cmli
dXRlIn1dYCk7CisKK2RlbGV0ZSBvYmplY3QudGVzdDAwMTsKK3Nob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHNkKG9iamVjdCkpLCBgW3sib2Zmc2V0IjotMSwibWF4IjotMSwicHJvcGVydHkiOm51bGws
InR5cGUiOiJ1bmtub3duIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0ZXN0MDAx
IiwidHlwZSI6ImFkZGVkIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0ZXN0MDAx
IiwidHlwZSI6ImF0dHJpYnV0ZSJ9LHsib2Zmc2V0IjowLCJtYXgiOjAsInByb3BlcnR5IjoidGVz
dDAwMSIsInR5cGUiOiJkZWxldGVkIn1dYCk7CisKK2Z1bmN0aW9uIGxhc3RTdHJ1Y3R1cmVJRCgp
Cit7CisgICAgdmFyIG9iamVjdCA9IHsKKyAgICAgICAgdGVzdDAwMTogNDIKKyAgICB9OworICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsICJ0ZXN0MDAxIiwgeworICAgICAgICB3cml0
YWJsZTogZmFsc2UKKyAgICB9KTsKKyAgICB2YXIgbGlzdCA9ICR2bS5nZXRTdHJ1Y3R1cmVUcmFu
c2l0aW9uTGlzdChvYmplY3QpOworICAgIHJldHVybiBsaXN0W2xpc3QubGVuZ3RoIC0gNV07Cit9
CisKK3ZhciBzdHJ1Y3R1cmVJRCA9IGxhc3RTdHJ1Y3R1cmVJRCgpOworc2hvdWxkQmUoc3RydWN0
dXJlSUQsIGxhc3RTdHJ1Y3R1cmVJRCgpKTsgLy8gVHJhbnNpdGlvbiBpcyB0cmFjZWQuCisKK3Zh
ciBvYmplY3QgPSB7CisgICAgdGVzdDAwMTogNDIKK307CitPYmplY3QuZGVmaW5lUHJvcGVydHko
b2JqZWN0LCAidGVzdDAwMSIsIHsKKyAgICB3cml0YWJsZTogZmFsc2UKK30pOworLy8gTWFrZSBp
dCBEaWN0aW9uYXJ5LgorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpCisgICAgb2JqZWN0
WyJ0ZXN0IiArIGldID0gaTsKK3Nob3VsZEJlKG9iamVjdC50ZXN0MDAxLCA0Mik7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwg
InRlc3QwMDEiKSksIGB7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjp0
cnVlLCJjb25maWd1cmFibGUiOnRydWV9YCk7CitPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0
LCAidGVzdDAwMSIsIHsKKyAgICBlbnVtZXJhYmxlOiBmYWxzZQorfSk7CitzaG91bGRCZShKU09O
LnN0cmluZ2lmeShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgInRlc3Qw
MDEiKSksIGB7InZhbHVlIjo0Miwid3JpdGFibGUiOmZhbHNlLCJlbnVtZXJhYmxlIjpmYWxzZSwi
Y29uZmlndXJhYmxlIjp0cnVlfWApOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoc2Qob2JqZWN0
KSksIGBbeyJvZmZzZXQiOi0xLCJtYXgiOjEwOTgsInByb3BlcnR5IjpudWxsLCJ0eXBlIjoidW5r
bm93biJ9LHsib2Zmc2V0IjowLCJtYXgiOjEwOTgsInByb3BlcnR5IjoidGVzdDAwMSIsInR5cGUi
OiJhdHRyaWJ1dGUifV1gKTsK
</data>
<flag name="review"
          id="422040"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406653</attachid>
            <date>2020-08-14 20:23:48 -0700</date>
            <delta_ts>2020-08-14 20:23:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215528-20200814202347.patch</filename>
            <type>text/plain</type>
            <size>28990</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWM1N2ZkMmFkNjQyODViYjA1NGZlNmM4YTY2MzRiOTVmZjI0ZTU2Li41NDViYzhiOThkMmE0NzQw
ZDBiOWZkOTI4NjQxYjM1NzFkYTNhZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAyMC0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIGF0dHJpYnV0ZS1jaGFuZ2UgdHJhbnNpdGlvbiBz
aG91bGQgbm90IHBpbiBTdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nIHBpbiBpbiBhdHRyaWJ1dGUt
Y2hhbmdlIHRyYW5zaXRpb24uIFRvIGFjaGlldmUgdGhpcywgYXR0cmlidXRlLWNoYW5nZSB0cmFu
c2l0aW9uIGlzIG5vdyBmdWxseSBzdXBwb3J0ZWQKKyAgICAgICAgdHJhbnNpdGlvbiBjaGFpbiBp
biBmb3JFYWNoUHJvcGVydHlDb25jdXJyZW50bHkgZXRjLjogd2UgY2FuIHJldHJpZXZlIHByb3Bl
cnRpZXMgd2l0aCBjaGFuZ2VkIGF0dHJpYnV0ZXMgY29ycmVjdGx5IHZpYSB0cmF2ZXJzaW5nCisg
ICAgICAgIHRyYW5zaXRpb24gY2hhaW4uIEFuZCB3ZSBhbHNvIHN1cHBvcnQgYXR0cmlidXRlLWNo
YW5nZSB0cmFuc2l0aW9uIGluIG1hdGVyaWFsaXplUHJvcGVydHlUYWJsZSwgc28gd2UgZG8gbm90
IG5lZWQgdG8gcGluIHN0cnVjdHVyZS4KKworICAgICAgICBUaGUgZGVzaWduIGxhcmdlbHkgbWlt
aWNzIGV4aXN0aW5nIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbiBhbmQgYWRkUHJvcGVydHlUcmFu
c2l0aW9uLiBUaGlzIHBhdGNoIGFsc28gYWRkcyBgaGFzQmVlbkRpY3Rpb25hcnkoKWAKKyAgICAg
ICAgY2hlY2sgYmVmb3JlIGFkZGluZyBzdHJ1Y3R1cmUgdG8gdGhlIHRyYW5zaXRpb24gc28gdGhh
dCB3ZSBjYW4gYXZvaWQgYWRkaW5nIHVubmVjZXNzYXJ5IHN0cnVjdHVyZSBlbnRyeSB0byB0aGUg
dHJhbnNpdGlvbiB0YWJsZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVEZWxldGVCeSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVy
dHlUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZUltcGwpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkTmV3UHJvcGVy
dHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpyZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6Zm9yRWFjaFByb3BlcnR5Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmF0dHJpYnV0ZUNoYW5nZVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiB0b29scy9KU0Rv
bGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6ZnVuY3Rpb25HZXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uTGlzdCk6CisKIDIwMjAtMDgtMTQgIENhaW8gTGltYSAgPHRpY2Fp
b2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtBUk12N11bSlNDXSBDb25zZXJ2YXRpdmUgR0Mg
aXMgbm90IGNvbnNpZGVyaW5nIGByN2AgYXMgYSByb290CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggMWMyMDg5NzA3ZmYwYTBhZDFkM2M5ZjBl
YWMzNWEyYzUzYTQ3ZjBiOS4uOTE0ODcyNTg5NmQwNjkxMzZkMTY0M2ZhOGM0ZTIwZjRkNTY2YzUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApA
QCAtMTk1MSw3ICsxOTUxLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7
CiAgICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwot
ICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRp
b24oKSk7CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbktpbmQoKSA9
PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbik7CiAgICAgICAgIEFTU0VSVChiYXNl
R1BSICE9IHNjcmF0Y2hHUFIpOwogICAgICAgICBBU1NFUlQoIXZhbHVlUmVncy51c2VzKGJhc2VH
UFIpKTsKICAgICAgICAgQVNTRVJUKCF2YWx1ZVJlZ3MudXNlcyhzY3JhdGNoR1BSKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDg1MjAwZDVkYWYxZGVl
OGU5MGZlODE0MWRiYjFjY2JkOWI1MzM3ZWUuLjFkOWIzNWVjNTk5YjMyMGU3OWEzYjg1MDVkODU1
NTFlYzc4ZjM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICB3
cml0ZShKU0NlbGxfdHlwZUluZm9GbGFncyk7CiAgICAgICAgIHdyaXRlKEpTQ2VsbF9pbmRleGlu
Z1R5cGUpOwogCi0gICAgICAgIGlmIChub2RlLT50cmFuc2l0aW9uKCktPm5leHQtPmlzUHJvcGVy
dHlEZWxldGlvblRyYW5zaXRpb24oKSkgeworICAgICAgICBpZiAobm9kZS0+dHJhbnNpdGlvbigp
LT5uZXh0LT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0
aW9uKSB7CiAgICAgICAgICAgICAvLyBXZSB1c2UgdGhpcyAiZGVsZXRlIGZlbmNlIiB0byBtb2Rl
bCB0aGUgcHJvcGVyIGFsaWFzaW5nIG9mIGZ1dHVyZSBzdG9yZXMuCiAgICAgICAgICAgICAvLyBC
b3RoIGluIERGRyBhbmQgd2hlbiB3ZSBsb3dlciB0byBCMywgd2UgbW9kZWwgYWxpYXNpbmcgb2Yg
cHJvcGVydGllcyBieQogICAgICAgICAgICAgLy8gcHJvcGVydHkgIG5hbWUuIEluIGEgd29ybGQg
d2l0aG91dCBkZWxldGUsIHRoYXQgYWxzbyBtb2RlbHMge2Jhc2UsIHByb3BlcnR5T2Zmc2V0fS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAw
MTRkMWZmZDEwNWJiOGUyYzEyMjE1N2VkMzYwZGEyMjZiYTYxZWVjLi5mZWZhZTdhZTA0MjlhZDlm
ZTA0MTU5MjQ5NDcyYzIzNzc2NGQ2ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zODE2LDcgKzM4MTYsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsgCiAKLSAgICAgICAgYXV0byYgaGVhcCA9IG1fbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0LT5p
c1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkgPyBtX2hlYXBzLkpTQ2VsbEhlYWRlckFuZE5h
bWVkUHJvcGVydGllcyA6IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEOworICAgICAgICBhdXRv
JiBoZWFwID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQtPnRyYW5zaXRpb25LaW5kKCkgPT0g
VHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb24gPyBtX2hlYXBzLkpTQ2VsbEhlYWRlckFu
ZE5hbWVkUHJvcGVydGllcyA6IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEOwogICAgICAgICBU
eXBlZFBvaW50ZXIgcG9pbnRlciB7IGhlYXAsIG1fb3V0LmFkZFB0cihjZWxsLCBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmVJRC5vZmZzZXQoKSkgfTsKIAogICAgICAgICBtX291dC5zdG9yZTMyKApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNmFhMjYwNmFhOWRiNWNiYjlk
NjcyODMyOWE5MWVjYWE0ZmY0NDMxOC4uMmViYjEzYWZkYTQwZTE2NDBjM2JkOTMxODJhZjJjNTVj
YWQ1OGYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC04MzEsNyAr
ODMxLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlRGVsZXRlQnkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2MKICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKICAgICAgICAgICAgIEFTU0VSVChuZXdPZmZzZXQgPT0gc2xvdC5jYWNo
ZWRPZmZzZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5wcmV2aW91c0lE
KCkgPT0gb2xkU3RydWN0dXJlKTsKLSAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlz
UHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlLT50cmFuc2l0aW9uS2luZCgpID09IFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0
aW9uKTsKICAgICAgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAg
ICAgICAgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQobmV3T2Zmc2V0KSk7CiAgICAgICAgICAgICBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5
TmFtZSwgbmV3T2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyMmNkNDJiYjVmMDNhYWNh
NTVmNjgwNWMwYjVkM2NkMTYxOWQ2NWIwLi5kNTFiY2NjZTFjNzFjMmU1MTRjM2Q1MTQwYTIyZjAx
M2Q5NzRhZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKQEAgLTQzOCwyMCArNDM4LDMzIEBAIFByb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgYm9vbCBzZXRQcm9wZXJ0eVRhYmxlCiAgICAgICAg
IHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07CiAgICAgICAgIGlmICghc3RydWN0dXJlLT5tX3Ry
YW5zaXRpb25Qcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYg
KHN0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKSB7CisgICAgICAgIHN3
aXRjaCAoc3RydWN0dXJlLT50cmFuc2l0aW9uS2luZCgpKSB7CisgICAgICAgIGNhc2UgVHJhbnNp
dGlvbktpbmQ6OlByb3BlcnR5QWRkaXRpb246IHsKKyAgICAgICAgICAgIFByb3BlcnR5TWFwRW50
cnkgZW50cnkoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0KCksIHN0cnVj
dHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Qcm9wZXJ0eUF0
dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICBhdXRvIG5leHRPZmZzZXQgPSB0YWJsZS0+bmV4dE9m
ZnNldChzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChuZXh0T2Zmc2V0LCBuZXh0T2Zmc2V0ID09IHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNl
dCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gdGFibGUtPmFkZCh2bSwgZW50cnkpOwor
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5zZWNvbmQpOworICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5maXJzdC5maXJzdC0+b2Zmc2V0ID09
IG5leHRPZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbjogewogICAgICAgICAgICAgYXV0byBp
dGVtID0gdGFibGUtPmZpbmQoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0
KCkpOwogICAgICAgICAgICAgQVNTRVJUKGl0ZW0uZmlyc3QpOwogICAgICAgICAgICAgdGFibGUt
PnJlbW92ZSh2bSwgaXRlbSk7CiAgICAgICAgICAgICB0YWJsZS0+YWRkRGVsZXRlZE9mZnNldChz
dHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZzZXQoKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNpdGlvbktpbmQ6
OlByb3BlcnR5QXR0cmlidXRlQ2hhbmdlOiB7CisgICAgICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5
KiBlbnRyeSA9IHRhYmxlLT5nZXQoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUu
Z2V0KCkpOworICAgICAgICAgICAgZW50cnktPmF0dHJpYnV0ZXMgPSBzdHJ1Y3R1cmUtPnRyYW5z
aXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIEFTU0VSVChlbnRyeS0+b2Zm
c2V0ID09IHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPmlzUHJvcGVydHlBZGRpdGlvblRyYW5zaXRpb24oKSk7Ci0gICAgICAgIFByb3Bl
cnR5TWFwRW50cnkgZW50cnkoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0
KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpLCBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Q
cm9wZXJ0eUF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGF1dG8gbmV4dE9mZnNldCA9IHRhYmxlLT5u
ZXh0T2Zmc2V0KHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQobmV4dE9mZnNldCwgbmV4dE9mZnNldCA9PSBzdHJ1Y3R1cmUtPnRyYW5zaXRpb25PZmZz
ZXQoKSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdGFibGUtPmFkZCh2bSwgZW50cnkpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LnNlY29uZCk7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuZmlyc3QuZmlyc3QtPm9mZnNldCA9PSBuZXh0T2Zmc2V0
KTsKICAgICB9CiAgICAgCiAgICAgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgKQEAgLTQ3NCw2ICs0
ODcsMTEgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhp
c3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3QKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCisg
ICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKKworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5E
aWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgaWYgKFN0cnVjdHVy
ZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQo
dWlkLCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBZGRpdGlvbikpIHsKICAg
ICAgICAgdmFsaWRhdGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0
KCksIGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNl
dCA9IGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNTIzLDggKzU0
MSw3IEBAIGJvb2wgU3RydWN0dXJlOjpob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUoVk0mIHZt
LCBKU09iamVjdCogYmFzZSkgY29uc3QKIAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
KQogewotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYWRkUHJvcGVydHlUcmFuc2l0aW9u
VG9FeGlzdGluZ1N0cnVjdHVyZSgKLSAgICAgICAgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIG9mZnNldCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBhZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwogICAgIGlmIChuZXdTdHJ1Y3R1cmUpCiAgICAgICAgIHJl
dHVybiBuZXdTdHJ1Y3R1cmU7CiAKQEAgLTU4NSw3ICs2MDIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFBybwogICAgIHRyYW5zaXRpb24tPnNldFByb3RlY3RQcm9wZXJ0eVRhYmxlV2hpbGVUcmFu
c2l0aW9uaW5nKGZhbHNlKTsKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPnRyYW5zaXRp
b25PZmZzZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7Ci0gICAgeworICAgIGlm
ICghc3RydWN0dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAg
ICBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CiAgICAg
fQpAQCAtNjEwLDYgKzYyNywxMCBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cgogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogCiAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsK
KworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uID0gc3Ry
dWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVpZCgpLCBhdHRyaWJ1
dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlEZWxldGlvbikpIHsKICAgICAgICAgdmFsaWRh
dGVPZmZzZXQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIGV4aXN0aW5n
VHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIG9mZnNldCA9IGV4aXN0aW5n
VHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpOwpAQCAtNjc4LDcgKzY5OSw3IEBAIFN0cnVj
dHVyZSogU3RydWN0dXJlOjpyZW1vdmVOZXdQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwKICAgICB0cmFuc2l0aW9uLT5zZXRQcm90ZWN0UHJvcGVydHlUYWJs
ZVdoaWxlVHJhbnNpdGlvbmluZyhmYWxzZSk7CiAKICAgICBjaGVja09mZnNldCh0cmFuc2l0aW9u
LT50cmFuc2l0aW9uT2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwotICAg
IHsKKyAgICBpZiAoIXN0cnVjdHVyZS0+aGFzQmVlbkRpY3Rpb25hcnkoKSkgewogICAgICAgICBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+bV9sb2NrLCB2bS5oZWFw
KTsKICAgICAgICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRyYW5zaXRp
b24pOwogICAgIH0KQEAgLTcwNCw3MyArNzI1LDc1IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpj
aGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
CiAgICAgcmV0dXJuIHRyYW5zaXRpb247CiB9CiAKLVN0cnVjdHVyZSogU3RydWN0dXJlOjphdHRy
aWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKK1N0cnVjdHVyZSogU3RydWN0
dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmli
dXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKIHsKLSAgICBhdXRvIHNldEVudHJ5QXR0cmli
dXRlcyA9IFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewotICAgICAgICBQcm9wZXJ0eU1hcEVu
dHJ5KiBlbnRyeSA9IHN0cnVjdHVyZS0+ZW5zdXJlUHJvcGVydHlUYWJsZSh2bSktPmdldChwcm9w
ZXJ0eU5hbWUudWlkKCkpOwotICAgICAgICBBU1NFUlQoZW50cnkpOwotICAgICAgICBlbnRyeS0+
YXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Ci0gICAgfTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5p
c09iamVjdCgpKTsKIAotICAgIGF1dG8gc2V0U3RydWN0dXJlRmxhZ3MgPSBbJl0oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpCi0gICAgICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQ
cm9wZXJ0aWVzKCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKQotICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRJc1F1aWNrUHJvcGVydHlBY2Nl
c3NBbGxvd2VkRm9yRW51bWVyYXRpb24oZmFsc2UpOwotICAgIH07CisgICAgb2Zmc2V0ID0gaW52
YWxpZE9mZnNldDsKKworICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgaWYgKFN0cnVjdHVyZSogZXhpc3RpbmdUcmFu
c2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlOYW1lLnVp
ZCgpLCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBdHRyaWJ1dGVDaGFuZ2Up
KSB7CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlv
bk9mZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOworICAgICAg
ICBvZmZzZXQgPSBleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25PZmZzZXQoKTsKKyAgICAg
ICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24o
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2lu
dEZpcmUqIGRlZmVycmVkKQorewogICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpIHsKLSAgICAgICAgc2V0RW50cnlBdHRyaWJ1dGVzKHN0cnVjdHVyZSk7Ci0gICAg
ICAgIHNldFN0cnVjdHVyZUZsYWdzKHN0cnVjdHVyZSk7CisgICAgICAgIHN0cnVjdHVyZS0+YXR0
cmlidXRlQ2hhbmdlV2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgW10oY29uc3QgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQsIFBy
b3BlcnR5T2Zmc2V0KSB7IH0pOwogICAgICAgICBzdHJ1Y3R1cmUtPmNoZWNrT2Zmc2V0Q29uc2lz
dGVuY3koKTsKICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgICB9CiAKLSAgICBpZiAoIXN0
cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3Rp
bmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQocHJvcGVydHlO
YW1lLnVpZCgpLCBhdHRyaWJ1dGVzLCBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBdHRyaWJ1dGVD
aGFuZ2UpKSB7Ci0gICAgICAgICAgICB2YWxpZGF0ZU9mZnNldChleGlzdGluZ1RyYW5zaXRpb24t
PnRyYW5zaXRpb25PZmZzZXQoKSwgZXhpc3RpbmdUcmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgp
KTsKLSAgICAgICAgICAgIGV4aXN0aW5nVHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5j
eSgpOwotICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKLSAgICAgICAgfQor
ICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OworICAgIGlmIChTdHJ1Y3R1cmUq
IGV4aXN0aW5nVHJhbnNpdGlvbiA9IGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpKSB7
CisgICAgICAgIHZhbGlkYXRlT2Zmc2V0KGV4aXN0aW5nVHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9m
ZnNldCgpLCBleGlzdGluZ1RyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBl
eGlzdGluZ1RyYW5zaXRpb24tPmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKKyAgICAgICAgcmV0
dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAgICB9CiAKLSAgICAgICAgaWYgKHN0cnVjdHVyZS0+
dHJhbnNpdGlvbkNvdW50SGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWlz
Q29weU9uV3JpdGUoc3RydWN0dXJlLT5pbmRleGluZ01vZGUoKSkpOwotICAgICAgICAgICAgU3Ry
dWN0dXJlKiB0cmFuc2l0aW9uID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUsIGRlZmVycmVkKTsKLSAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0g
dHJhbnNpdGlvbik7Ci0gICAgICAgICAgICBzZXRFbnRyeUF0dHJpYnV0ZXModHJhbnNpdGlvbik7
Ci0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmVGbGFncyh0cmFuc2l0aW9uKTsKLSAgICAgICAgICAg
IHJldHVybiB0cmFuc2l0aW9uOwotICAgICAgICB9CisgICAgaWYgKHN0cnVjdHVyZS0+dHJhbnNp
dGlvbkNvdW50SGFzT3ZlcmZsb3dlZCgpKSB7CisgICAgICAgIEFTU0VSVCghaXNDb3B5T25Xcml0
ZShzdHJ1Y3R1cmUtPmluZGV4aW5nTW9kZSgpKSk7CisgICAgICAgIFN0cnVjdHVyZSogdHJhbnNp
dGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBk
ZWZlcnJlZCk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7CisgICAg
ICAgIHRyYW5zaXRpb24tPmF0dHJpYnV0ZUNoYW5nZSh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQogCisgICAgLy8gRXZlbiBp
ZiB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgaXMgZGljdGlvbmFyeSwgd2Ugc2hvdWxkIHBlcmZvcm0g
dHJhbnNpdGlvbiBzaW5jZSB0aGlzIGNoYW5nZXMgYXR0cmlidXRlcyBvZiBleGlzdGluZyBwcm9w
ZXJ0aWVzIHRvIGtlZXAKKyAgICAvLyBzdHJ1Y3R1cmUgc3RpbGwgY2FjaGVhYmxlLgogICAgIFN0
cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICB0cmFuc2l0
aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLnNldE1heUJlTnVsbCh2bSwgdHJhbnNpdGlvbiwg
c3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKIAogICAgIHsKICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih0cmFuc2l0aW9uLT5tX2xvY2spOwogICAgICAg
ICB0cmFuc2l0aW9uLT5zZXRQcm90ZWN0UHJvcGVydHlUYWJsZVdoaWxlVHJhbnNpdGlvbmluZyh0
cnVlKTsKICAgICB9CiAKLSAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IHN0cnVjdHVyZS0+Y29w
eVByb3BlcnR5VGFibGVGb3JQaW5uaW5nKHZtKTsKLSAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSkKLSAgICAgICAgdHJhbnNpdGlvbi0+cGluKGhvbGRMb2NrKHRyYW5zaXRpb24tPm1f
bG9jayksIHZtLCB0YWJsZSk7Ci0gICAgZWxzZQotICAgICAgICB0cmFuc2l0aW9uLT5waW5Gb3JD
YWNoaW5nKGhvbGRMb2NrKHRyYW5zaXRpb24tPm1fbG9jayksIHZtLCB0YWJsZSk7CisgICAgdHJh
bnNpdGlvbi0+bV9ibG9iLnNldEluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnkoc3RydWN0dXJl
LT5pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5KCkgJiB+Q29weU9uV3JpdGUpOwogICAgIHRy
YW5zaXRpb24tPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZS51aWQoKTsK
ICAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIHRyYW5zaXRpb24tPnNldFRyYW5zaXRpb25LaW5kKFRyYW5zaXRpb25LaW5kOjpQ
cm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZSk7CisgICAgdHJhbnNpdGlvbi0+c2V0UHJvcGVydHlUYWJs
ZSh2bSwgc3RydWN0dXJlLT50YWtlUHJvcGVydHlUYWJsZU9yQ2xvbmVJZlBpbm5lZCh2bSkpOwog
ICAgIHRyYW5zaXRpb24tPnNldE1heE9mZnNldCh2bSwgc3RydWN0dXJlLT5tYXhPZmZzZXQoKSk7
CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5nZXQocHJvcGVydHlOYW1l
LnVpZCgpKTsKLSAgICBBU1NFUlQoZW50cnkpOwotICAgIGVudHJ5LT5hdHRyaWJ1dGVzID0gYXR0
cmlidXRlczsKLSAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uT2Zmc2V0KHZtLCBlbnRyeS0+
b2Zmc2V0KTsKLSAgICBzZXRTdHJ1Y3R1cmVGbGFncyh0cmFuc2l0aW9uKTsKKyAgICBvZmZzZXQg
PSB0cmFuc2l0aW9uLT5hdHRyaWJ1dGVDaGFuZ2Uodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cyk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvbk9mZnNldCh2bSwgb2Zmc2V0KTsKIAor
ICAgIC8vIE5vdyB0aGF0IGV2ZXJ5dGhpbmcgaXMgZmluZSB3aXRoIHRoZSBuZXcgc3RydWN0dXJl
J3MgYm9va2tlZXBpbmcsIHRoZSBHQyBpcyBmcmVlIHRvIGJsb3cgdGhlCisgICAgLy8gdGFibGUg
YXdheSBpZiBpdCB3YW50cy4gV2UgY2FuIG5vdyByZWJ1aWxkIGl0IGZpbmUuCiAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKICAgICB0cmFuc2l0aW9uLT5zZXRQcm90ZWN0UHJvcGVydHlUYWJs
ZVdoaWxlVHJhbnNpdGlvbmluZyhmYWxzZSk7CiAKICAgICBjaGVja09mZnNldCh0cmFuc2l0aW9u
LT50cmFuc2l0aW9uT2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5KCkpOwotICAg
IGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgIGlmICghc3RydWN0dXJlLT5o
YXNCZWVuRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoc3RydWN0dXJlLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICBzdHJ1Y3R1cmUtPm1f
dHJhbnNpdGlvblRhYmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CiAgICAgfQpAQCAtODQwLDExICs4
NjMsMTIgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvblNsb3co
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVHIKIHsKICAgICBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSA9IG5ld0luZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSwgdHJhbnNpdGlvbktpbmQpOwogICAgIAotICAg
IFN0cnVjdHVyZSogZXhpc3RpbmdUcmFuc2l0aW9uOwotICAgIGlmICghc3RydWN0dXJlLT5pc0Rp
Y3Rpb25hcnkoKSAmJiAoZXhpc3RpbmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRp
b25UYWJsZS5nZXQobnVsbHB0ciwgMCwgdHJhbnNpdGlvbktpbmQpKSkgewotICAgICAgICBBU1NF
UlQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uS2luZCgpID09IHRyYW5zaXRpb25LaW5k
KTsKLSAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5kZXhpbmdNb2RlSW5jbHVk
aW5nSGlzdG9yeSgpID09IGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpOwotICAgICAgICBy
ZXR1cm4gZXhpc3RpbmdUcmFuc2l0aW9uOworICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSkgeworICAgICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1
Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxlLmdldChudWxscHRyLCAwLCB0cmFuc2l0aW9uS2luZCkp
IHsKKyAgICAgICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24tPnRyYW5zaXRpb25LaW5k
KCkgPT0gdHJhbnNpdGlvbktpbmQpOworICAgICAgICAgICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNp
dGlvbi0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSgpID09IGluZGV4aW5nTW9kZUluY2x1
ZGluZ0hpc3RvcnkpOworICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKKyAg
ICAgICAgfQogICAgIH0KICAgICAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CkBAIC0x
MTcwLDYgKzExOTQsMTUgQEAgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmUoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIH0pOwogfQogCitQcm9wZXJ0eU9mZnNl
dCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit7CisgICAgcmV0dXJuIGF0dHJpYnV0ZUNoYW5n
ZTxTaG91bGRQaW46Ok5vPigKKyAgICAgICAgdm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywK
KyAgICAgICAgW3RoaXMsICZ2bV0gKGNvbnN0IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciYsIFBy
b3BlcnR5T2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCBuZXdNYXhPZmZzZXQpIHsKKyAgICAgICAgICAg
IHNldE1heE9mZnNldCh2bSwgbmV3TWF4T2Zmc2V0KTsKKyAgICAgICAgfSk7Cit9CisKIHZvaWQg
U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShWTSYgdm0sIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBQ
cm9wZXJ0eVRhYmxlKiB0YWJsZSA9IGVuc3VyZVByb3BlcnR5VGFibGVJZk5vdEVtcHR5KHZtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggYTAwNDAxMGFi
NGVhMzU3YzgyNGI1N2U4ZTU2NTEwN2NmNjFmZjQxNC4uODAyY2I0YTM5M2JhM2QxNmQzMDk5MWFl
ZjRiOTQxYzRkMmFiMGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKQEAgLTE5OCw2ICsxOTgsNyBAQCBjbGFzcyBTdHJ1Y3R1cmUgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBzdGF0aWMgU3RydWN0dXJlKiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25G
cm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlw
ZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSwgRGVmZXJyZWRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUmKTsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiwgU3RydWN0
dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBEZWZlcnJlZFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uVG9FeGlzdGlu
Z1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IFByb3BlcnR5T2Zmc2V0Jik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVy
ZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIERlZmVy
cmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOwogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0
cnVjdHVyZSosIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51
bGxwdHIpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIHNlYWxUcmFu
c2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CkBAIC0yMjIsNiArMjIzLDggQEAgY2xhc3MgU3RydWN0
dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgUHJvcGVydHlPZmZzZXQgYWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgY29uc3QgRnVuYyYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgUHJvcGVy
dHlPZmZzZXQgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihWTSYsIFByb3BlcnR5TmFt
ZSwgY29uc3QgRnVuYyYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgUHJvcGVy
dHlPZmZzZXQgYXR0cmlidXRlQ2hhbmdlV2l0aG91dFRyYW5zaXRpb24oVk0mLCBQcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGNvbnN0IEZ1bmMmKTsKICAgICB2b2lkIHNldFByb3Rv
dHlwZVdpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAgICAK
ICAgICBib29sIGlzRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIGRpY3Rpb25hcnlLaW5kKCkg
IT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9CkBAIC03MTUsOSArNzE4LDYgQEAgY2xhc3MgU3RydWN0
dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgc3RhdGljX2Fzc2VydChzX2JpdFdpZHRo
T2ZUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzIDw9IHNpemVvZihUcmFuc2l0aW9uUHJvcGVy
dHlBdHRyaWJ1dGVzKSAqIDgpOwogICAgIHN0YXRpY19hc3NlcnQoc19iaXRXaWR0aE9mVHJhbnNp
dGlvbktpbmQgPD0gc2l6ZW9mKFRyYW5zaXRpb25LaW5kKSAqIDgpOwogCi0gICAgYm9vbCBpc1By
b3BlcnR5QWRkaXRpb25UcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJhbnNpdGlvbktpbmQo
KSA9PSBUcmFuc2l0aW9uS2luZDo6UHJvcGVydHlBZGRpdGlvbjsgfQotICAgIGJvb2wgaXNQcm9w
ZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRyYW5zaXRpb25LaW5kKCkg
PT0gVHJhbnNpdGlvbktpbmQ6OlByb3BlcnR5RGVsZXRpb247IH0KLQogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC03NDUsNiArNzQ1LDkgQEAg
Y2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdGVtcGxhdGU8U2hv
dWxkUGluLCB0eXBlbmFtZSBGdW5jPgogICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZShWTSYsIFBy
b3BlcnR5TmFtZSwgY29uc3QgRnVuYyYpOwogICAgIFByb3BlcnR5T2Zmc2V0IHJlbW92ZShWTSYs
IFByb3BlcnR5TmFtZSk7CisgICAgdGVtcGxhdGU8U2hvdWxkUGluLCB0eXBlbmFtZSBGdW5jPgor
ICAgIFByb3BlcnR5T2Zmc2V0IGF0dHJpYnV0ZUNoYW5nZShWTSYsIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgY29uc3QgRnVuYyYpOworICAgIFByb3BlcnR5T2Zmc2V0IGF0dHJp
YnV0ZUNoYW5nZShWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAKICAg
ICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGFmN2QxYWRlYWJjODljZWFkYjNmYzZh
ZjQ3YTFhYjhiNzJlMjE3YmEuLjk2ZmY2ZjhmNDI2NDM1MGRmZTdhOTRkZTk2NGJkNDQxZmI3ODc0
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxp
bmVzLmgKQEAgLTE3Niw4ICsxNzYsMTYgQEAgdm9pZCBTdHJ1Y3R1cmU6OmZvckVhY2hQcm9wZXJ0
eUNvbmN1cnJlbnRseShjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogCiAgICAgICAgIHNlZW5Qcm9w
ZXJ0aWVzLmFkZChzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblByb3BlcnR5TmFtZS5nZXQoKSk7CiAK
LSAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKQor
ICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+dHJhbnNpdGlvbktpbmQoKSkgeworICAgICAgICBj
YXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eUFkZGl0aW9uOgorICAgICAgICBjYXNlIFRyYW5z
aXRpb25LaW5kOjpQcm9wZXJ0eUF0dHJpYnV0ZUNoYW5nZToKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFRyYW5zaXRpb25LaW5kOjpQcm9wZXJ0eURlbGV0aW9uOgogICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgaWYgKCFm
dW5jdG9yKFByb3BlcnR5TWFwRW50cnkoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5h
bWUuZ2V0KCksIHN0cnVjdHVyZS0+dHJhbnNpdGlvbk9mZnNldCgpLCBzdHJ1Y3R1cmUtPnRyYW5z
aXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSkpKSB7CiAgICAgICAgICAgICBpZiAodGFibGUpCkBA
IC01MjEsNiArNTI5LDQ5IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92
ZShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0CiAgICAgcmV0dXJuIG9m
ZnNldDsKIH0KIAordGVtcGxhdGU8U3RydWN0dXJlOjpTaG91bGRQaW4gc2hvdWxkUGluLCB0eXBl
bmFtZSBGdW5jPgoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hh
bmdlKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgY29uc3QgRnVuYyYgZnVuYykKK3sKKyAgICBQcm9wZXJ0eVRhYmxlKiB0YWJsZSA9IGVuc3Vy
ZVByb3BlcnR5VGFibGUodm0pOworCisgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2ssIHZtLmhlYXApOworCisgICAgc3dpdGNoIChzaG91bGRQaW4pIHsKKyAgICBjYXNl
IFNob3VsZFBpbjo6WWVzOgorICAgICAgICBwaW4obG9ja2VyLCB2bSwgdGFibGUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNob3VsZFBpbjo6Tm86CisgICAgICAgIHNldFByb3BlcnR5VGFi
bGUodm0sIHRhYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUKEpTQzo6
aXNWYWxpZE9mZnNldChnZXQodm0sIHByb3BlcnR5TmFtZSkpKTsKKworICAgIGNoZWNrQ29uc2lz
dGVuY3koKTsKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5nZXQocHJvcGVy
dHlOYW1lLnVpZCgpKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gaW52YWxpZE9m
ZnNldDsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IGVudHJ5LT5vZmZzZXQ7CisKKyAg
ICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkKKyAgICAgICAg
c2V0SXNRdWlja1Byb3BlcnR5QWNjZXNzQWxsb3dlZEZvckVudW1lcmF0aW9uKGZhbHNlKTsKKyAg
ICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkKKyAgICAgICAg
c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKKworICAgIGVudHJ5LT5hdHRyaWJ1dGVz
ID0gYXR0cmlidXRlczsKKworICAgIFByb3BlcnR5T2Zmc2V0IG5ld01heE9mZnNldCA9IG1heE9m
ZnNldCgpOworCisgICAgZnVuYyhsb2NrZXIsIG9mZnNldCwgbmV3TWF4T2Zmc2V0KTsKKworICAg
IEFTU0VSVChtYXhPZmZzZXQoKSA9PSBuZXdNYXhPZmZzZXQpOworICAgIEFTU0VSVChKU0M6Omlz
VmFsaWRPZmZzZXQoZ2V0KHZtLCBwcm9wZXJ0eU5hbWUpKSk7CisKKyAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
IGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBjb25zdCBGdW5jJiBmdW5jKQogewpAQCAtNTM3LDYgKzU4OCwxMiBAQCBpbmxpbmUgUHJv
cGVydHlPZmZzZXQgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKFZN
JiB2bSwgUHJvcGVydAogICAgIHJldHVybiByZW1vdmU8U2hvdWxkUGluOjpZZXM+KHZtLCBwcm9w
ZXJ0eU5hbWUsIGZ1bmMpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgoraW5saW5lIFBy
b3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlV2l0aG91dFRyYW5zaXRpb24o
Vk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBj
b25zdCBGdW5jJiBmdW5jKQoreworICAgIHJldHVybiBhdHRyaWJ1dGVDaGFuZ2U8U2hvdWxkUGlu
OjpZZXM+KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGZ1bmMpOworfQorCiBBTFdBWVNf
SU5MSU5FIHZvaWQgU3RydWN0dXJlOjpzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihWTSYg
dm0sIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIEFTU0VSVChpc1ZhbGlkUHJvdG90eXBlKHBy
b3RvdHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmlu
ZGV4IDUzN2JjYzYwMmM5ODQ2ODE3YWE3MDk1OWYzN2IxYmIxOWQ4ZTg2NTUuLjQ5OWE4N2U1MTQz
NjhiMGQ0YzE2ZTUwNWNkZDhjZWQ1YjEyNWM1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTMwMjQsNyArMzAyNCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNEb2xsYXJWTUhlbHBlcjo6ZnVuY3Rpb25HZXRTdHJ1Y3R1cmVUcmFu
c2l0aW9uTGlzCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdC0+cHVzaChnbG9iYWxP
YmplY3QsIGpzTnVsbCgpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKLSAgICAgICAgcmVzdWx0LT5wdXNoKGdsb2JhbE9iamVjdCwgSlNWYWx1ZShzdHJ1Y3R1cmUt
PmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSkpOworICAgICAgICByZXN1bHQtPnB1c2go
Z2xvYmFsT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihzdHJ1Y3R1cmUtPnRy
YW5zaXRpb25LaW5kKCkpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGU3MTZhZjYxMThhNDYyODczNmJjYWNhYzE0YWEzZmYxMmJlZTRlNTEuLjhl
ODM5YTM3OTFiYzA1OGQ1Mjk4MjUzMDZiYmQ2ZmY2ZDIwNzU2MWUgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjAtMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKwor
ICAgICAgICBbSlNDXSBhdHRyaWJ1dGUtY2hhbmdlIHRyYW5zaXRpb24gc2hvdWxkIG5vdCBwaW4g
U3RydWN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9jaGFuZ2UtYXR0cmlidXRlLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNkLmxldC5kYXRhLnZtLmdldFN0cnVj
dHVyZVRyYW5zaXRpb25MaXN0LmxldC5yZXN1bHQucmV0dXJuLnJlc3VsdC5raW5kKToKKyAgICAg
ICAgKHNkKToKKyAgICAgICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5LnNkKToKKyAgICAgICAg
KGxhc3RTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChzaG91bGRCZS5KU09OLnN0cmluZ2lmeS5PYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKwogMjAyMC0wOC0xMiAgS2VpdGggTWlsbGVy
ICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBPU1JBdmFpbGFiaWxpdHlBbmFs
eXNpcyBzaG91bGRuJ3QgbWFyayBHZXRTdGFjayBub2RlcyBkaXJlY3RseSBhcyB2YWxpZCBwbGFj
ZXMgZm9yIHJlY292ZXJ5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jaGFuZ2UtYXR0cmli
dXRlLXN0cnVjdHVyZS10cmFuc2l0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2hhbmdlLWF0dHJp
YnV0ZS1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDhmOTQ4MDllNGNjZjhk
YWUyOTM2OTBiZGI1MjlkNDAxYWZkNGRmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvY2hhbmdlLWF0dHJpYnV0ZS1zdHJ1Y3R1cmUtdHJhbnNpdGlvbi5qcwpAQCAtMCwwICsxLDc3
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKwordmFyIG9iamVjdCA9IHsKKyAgICB0ZXN0MDAxOiA0MgorfTsKKworT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgInRlc3QwMDEiLCB7CisgICAgd3JpdGFibGU6IGZh
bHNlCit9KTsKKworZnVuY3Rpb24gc2Qob2JqKSB7CisgICAgbGV0IGRhdGEgPSAkdm0uZ2V0U3Ry
dWN0dXJlVHJhbnNpdGlvbkxpc3Qob2JqKQorICAgIGxldCByZXN1bHQgPSBbXQorCisgICAgaWYg
KCFkYXRhKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBmdW5jdGlvbiBraW5kKGtpbmQp
CisgICAgeworICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAg
ICAgICAgcmV0dXJuICJhZGRlZCIKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgcmV0dXJu
ICJkZWxldGVkIgorICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXR1cm4gImF0dHJpYnV0
ZSIKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAidW5rbm93biI7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoLzU7ICsr
aSkgeworICAgICAgICByZXN1bHQucHVzaCh7IG9mZnNldDogZGF0YVtpKjUrMV0sIG1heDogZGF0
YVtpKjUrMl0sIHByb3BlcnR5OiBkYXRhW2kqNSszXSwgdHlwZToga2luZChkYXRhW2kqNSs0XSkg
fSkKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0Cit9CisKK3Nob3VsZEJlKEpTT04uc3RyaW5n
aWZ5KHNkKG9iamVjdCkpLCBgW3sib2Zmc2V0IjotMSwibWF4IjotMSwicHJvcGVydHkiOm51bGws
InR5cGUiOiJ1bmtub3duIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0ZXN0MDAx
IiwidHlwZSI6ImFkZGVkIn0seyJvZmZzZXQiOjAsIm1heCI6MCwicHJvcGVydHkiOiJ0ZXN0MDAx
IiwidHlwZSI6ImF0dHJpYnV0ZSJ9XWApOworCitkZWxldGUgb2JqZWN0LnRlc3QwMDE7CitzaG91
bGRCZShKU09OLnN0cmluZ2lmeShzZChvYmplY3QpKSwgYFt7Im9mZnNldCI6LTEsIm1heCI6LTEs
InByb3BlcnR5IjpudWxsLCJ0eXBlIjoidW5rbm93biJ9LHsib2Zmc2V0IjowLCJtYXgiOjAsInBy
b3BlcnR5IjoidGVzdDAwMSIsInR5cGUiOiJhZGRlZCJ9LHsib2Zmc2V0IjowLCJtYXgiOjAsInBy
b3BlcnR5IjoidGVzdDAwMSIsInR5cGUiOiJhdHRyaWJ1dGUifSx7Im9mZnNldCI6MCwibWF4Ijow
LCJwcm9wZXJ0eSI6InRlc3QwMDEiLCJ0eXBlIjoiZGVsZXRlZCJ9XWApOworCitmdW5jdGlvbiBs
YXN0U3RydWN0dXJlSUQoKQoreworICAgIHZhciBvYmplY3QgPSB7CisgICAgICAgIHRlc3QwMDE6
IDQyCisgICAgfTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAidGVzdDAwMSIs
IHsKKyAgICAgICAgd3JpdGFibGU6IGZhbHNlCisgICAgfSk7CisgICAgdmFyIGxpc3QgPSAkdm0u
Z2V0U3RydWN0dXJlVHJhbnNpdGlvbkxpc3Qob2JqZWN0KTsKKyAgICByZXR1cm4gbGlzdFtsaXN0
Lmxlbmd0aCAtIDVdOworfQorCit2YXIgc3RydWN0dXJlSUQgPSBsYXN0U3RydWN0dXJlSUQoKTsK
K3Nob3VsZEJlKHN0cnVjdHVyZUlELCBsYXN0U3RydWN0dXJlSUQoKSk7IC8vIFRyYW5zaXRpb24g
aXMgdHJhY2VkLgorCit2YXIgb2JqZWN0ID0geworICAgIHRlc3QwMDE6IDQyCit9OworT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iamVjdCwgInRlc3QwMDEiLCB7CisgICAgd3JpdGFibGU6IGZhbHNl
Cit9KTsKKy8vIE1ha2UgaXQgRGljdGlvbmFyeS4KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsg
KytpKQorICAgIG9iamVjdFsidGVzdCIgKyBpXSA9IGk7CitzaG91bGRCZShvYmplY3QudGVzdDAw
MSwgNDIpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihvYmplY3QsICJ0ZXN0MDAxIikpLCBgeyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjpmYWxz
ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmlndXJhYmxlIjp0cnVlfWApOworT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KG9iamVjdCwgInRlc3QwMDEiLCB7CisgICAgZW51bWVyYWJsZTogZmFsc2UKK30p
Oworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihvYmplY3QsICJ0ZXN0MDAxIikpLCBgeyJ2YWx1ZSI6NDIsIndyaXRhYmxlIjpmYWxzZSwiZW51
bWVyYWJsZSI6ZmFsc2UsImNvbmZpZ3VyYWJsZSI6dHJ1ZX1gKTsKK3Nob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KHNkKG9iamVjdCkpLCBgW3sib2Zmc2V0IjotMSwibWF4IjoxMDk4LCJwcm9wZXJ0eSI6
bnVsbCwidHlwZSI6InVua25vd24ifSx7Im9mZnNldCI6MCwibWF4IjoxMDk4LCJwcm9wZXJ0eSI6
InRlc3QwMDEiLCJ0eXBlIjoiYXR0cmlidXRlIn1dYCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>