<?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>202660</bug_id>
          
          <creation_ts>2019-10-07 16:55:07 -0700</creation_ts>
          <short_desc>Move SuspendedPage logic from WebProcessPool to new WebBackForwardCache class</short_desc>
          <delta_ts>2019-10-11 14:01:37 -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>WebKit2</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>
          
          <blocked>202293</blocked>
    
    <blocked>202865</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1577570</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 16:55:07 -0700</bug_when>
    <thetext>Move SuspendedPage logic from WebProcessPool to new WebBackForwardCache class. This is a step towards implementing back / forward cache handling in the UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577571</commentid>
    <comment_count>1</comment_count>
      <attachid>380372</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 16:58:16 -0700</bug_when>
    <thetext>Created attachment 380372
WIP Patch

TestWebKitAPI.ProcessSwap.ReuseSuspendedProcessLoadHTMLString is failing. Still needs some cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577816</commentid>
    <comment_count>2</comment_count>
      <attachid>380440</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-08 10:22:53 -0700</bug_when>
    <thetext>Created attachment 380440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577952</commentid>
    <comment_count>3</comment_count>
      <attachid>380465</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-08 14:36:55 -0700</bug_when>
    <thetext>Created attachment 380465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578804</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-10 13:00:05 -0700</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578843</commentid>
    <comment_count>5</comment_count>
      <attachid>380465</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-10 14:15:41 -0700</bug_when>
    <thetext>Comment on attachment 380465
Patch

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

&gt; Source/WebKit/UIProcess/SuspendedPageProxy.cpp:147
&gt; +void SuspendedPageProxy::setBackForwardListItem(WebBackForwardListItem* item)
&gt; +{
&gt; +    ASSERT(!m_backForwardListItem || !item);

Considering the assert it would be better to divide this into separate set/clear functions (where set takes a reference).

&gt; Source/WebKit/UIProcess/SuspendedPageProxy.cpp:149
&gt; +    if (m_backForwardListItem)
&gt; +        process().processPool().backForwardCache().unregisterItemWithCachedPage(*m_backForwardListItem);

The only call sites for setBackForwardListItem are in WebBackForwardListItem. Is it odd that registering WebBackForwardListItems is managed here instead of the call sites?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579106</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-11 08:27:14 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #5)
&gt; Comment on attachment 380465 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380465&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/SuspendedPageProxy.cpp:147
&gt; &gt; +void SuspendedPageProxy::setBackForwardListItem(WebBackForwardListItem* item)
&gt; &gt; +{
&gt; &gt; +    ASSERT(!m_backForwardListItem || !item);
&gt; 
&gt; Considering the assert it would be better to divide this into separate
&gt; set/clear functions (where set takes a reference).
&gt; 
&gt; &gt; Source/WebKit/UIProcess/SuspendedPageProxy.cpp:149
&gt; &gt; +    if (m_backForwardListItem)
&gt; &gt; +        process().processPool().backForwardCache().unregisterItemWithCachedPage(*m_backForwardListItem);
&gt; 
&gt; The only call sites for setBackForwardListItem are in
&gt; WebBackForwardListItem. Is it odd that registering WebBackForwardListItems
&gt; is managed here instead of the call sites?

Thanks Antti, very useful feedback. I&apos;ll make the suggested improvements before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579201</commentid>
    <comment_count>7</comment_count>
      <attachid>380778</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-11 13:08:03 -0700</bug_when>
    <thetext>Created attachment 380778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579202</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-11 13:10:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/56200933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579224</commentid>
    <comment_count>9</comment_count>
      <attachid>380778</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-11 13:40:54 -0700</bug_when>
    <thetext>Comment on attachment 380778
Patch

Clearing flags on attachment: 380778

Committed r251022: &lt;https://trac.webkit.org/changeset/251022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579225</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-11 13:40:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380372</attachid>
            <date>2019-10-07 16:58:16 -0700</date>
            <delta_ts>2019-10-08 10:22:52 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebBackForwardCache_wip.patch</filename>
            <type>text/plain</type>
            <size>32592</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5k
ZXggZGFmNGRhMjI3N2MuLjAwMzk3MWRlMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKIAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9E
ZWJ1Z1V0aWxpdGllcy5oPgpAQCAtNTQsNyArNTUsOCBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Ojp+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpCiAgICAgQVNTRVJUKGFsbEl0ZW1zKCkuZ2V0KG1f
aXRlbVN0YXRlLmlkZW50aWZpZXIpID09IHRoaXMpOwogICAgIGFsbEl0ZW1zKCkucmVtb3ZlKG1f
aXRlbVN0YXRlLmlkZW50aWZpZXIpOwogCi0gICAgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9j
ZXNzUG9vbCgpOworICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVk
UGFnZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRlbShudWxscHRyKTsKIH0KIAogSGFzaE1hcDxCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4mIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OmFsbEl0ZW1zKCkKQEAgLTE1OSwyNyArMTYxLDI3IEBAIGJvb2wgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzQ2xvbmUoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgb3RoZXIpCiAgICAgcmV0dXJuIGhhc1NhbWVGcmFtZXMobWFpbkZyYW1lU3RhdGUsIG90
aGVyTWFpbkZyYW1lU3RhdGUpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNl
dFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5KiBwYWdlKQordm9pZCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKIHsKLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlID09
IHBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQorICAgICAg
ICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tGb3J3YXJkTGlzdEl0ZW0obnVsbHB0cik7CiAKLSAg
ICByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVByb2Nlc3NQb29sKCk7Ci0gICAgbV9zdXNwZW5kZWRQ
YWdlID0gbWFrZVdlYWtQdHIocGFnZSk7CisgICAgbV9zdXNwZW5kZWRQYWdlID0gV1RGTW92ZShz
dXNwZW5kZWRQYWdlKTsKKworICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3Vz
cGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRlbSh0aGlzKTsKIH0KIAotU3VzcGVuZGVk
UGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzdXNwZW5kZWRQYWdlKCkgY29uc3QK
K3N0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OnRha2VTdXNwZW5kZWRQYWdlKCkKIHsKLSAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdl
dCgpOworICAgIGlmIChtX3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpLnVucmVnaXN0ZXJJdGVt
V2l0aENhY2hlZFBhZ2UoKnRoaXMpOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fc3VzcGVu
ZGVkUGFnZSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6cmVt
b3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpCitTdXNwZW5kZWRQYWdlUHJveHkqIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OnN1c3BlbmRlZFBhZ2UoKSBjb25zdAogewotICAgIGlmICgh
bV9zdXNwZW5kZWRQYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2Ut
PnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZVN1c3BlbmRlZFBhZ2UoKm1fc3VzcGVuZGVk
UGFnZSk7Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRlZFBhZ2UpOworICAgIHJldHVybiBtX3N1c3Bl
bmRlZFBhZ2UuZ2V0KCk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggNmQ2N2VjMGIyZWEuLmRkYzM4
NzcyZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oCkBAIC03Nyw4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBWaWV3U25hcHNob3QqIHNuYXBzaG90
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuc25hcHNob3QuZ2V0KCk7IH0KICAgICB2b2lk
IHNldFNuYXBzaG90KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25hcHNob3QpIHsgbV9pdGVtU3Rh
dGUuc25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2VuZGlmCi0gICAgdm9pZCBzZXRT
dXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSopOworICAgIHZvaWQgc2V0U3VzcGVuZGVk
UGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKICAgICBTdXNwZW5k
ZWRQYWdlUHJveHkqIHN1c3BlbmRlZFBhZ2UoKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgpOwogCiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ2dpbmdTdHJpbmcoKTsKQEAgLTg3LDEzICs4OCwxMSBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlJiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBy
ZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVByb2Nlc3NQb29sKCk7Ci0KICAgICBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7CiAgICAgVVJMIG1fcmVzb3VyY2VEaXJlY3RvcnlVUkw7
CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsKLSAgICBXZWFrUHRyPFN1c3Bl
bmRlZFBhZ2VQcm94eT4gbV9zdXNwZW5kZWRQYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJl
ZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDM3M2Q2NTVmMTBhLi4xZTYxZTIzYjExOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0y
NjAsNiArMjYwLDcgQEAgVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcAogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3Bw
CiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5jcHAKK1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcAogVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAK
IFVJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBjMmE5NTY2
MjM4Mi4uYjllMjkyNTQ2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJXS09i
amVjdC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0
ZURhdGFTdG9yZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAj
aW1wb3J0ICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NhY2hlLmgiCkBAIC01MjYsNyArNTI3LDcgQEAg
LSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQKIAogLSAoTlNVSW50ZWdlcilfbWF4aW11bVN1
c3BlbmRlZFBhZ2VDb3VudAogewotICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPm1heFN1c3BlbmRl
ZFBhZ2VDb3VudCgpOworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPmJhY2tGb3J3YXJkQ2FjaGUo
KS5tYXhTaXplKCk7CiB9CiAKIC0gKE5TVUludGVnZXIpX3Byb2Nlc3NDYWNoZUNhcGFjaXR5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCA3
OTI0ZTRlZjNkYy4uYWZhNTljNWVhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTEy
Myw2ICsxMjQsMTggQEAgU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkK
ICAgICB9KTsKIH0KIAordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OnNldEJhY2tGb3J3YXJkTGlz
dEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKK3sKKyAgICBBU1NFUlQoIW1fYmFj
a0ZvcndhcmRMaXN0SXRlbSB8fCAhaXRlbSk7CisgICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0SXRl
bSkKKyAgICAgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpLnVu
cmVnaXN0ZXJJdGVtV2l0aENhY2hlZFBhZ2UoKm1fYmFja0ZvcndhcmRMaXN0SXRlbSk7CisKKyAg
ICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBpdGVtOworCisgICAgaWYgKG1fYmFja0ZvcndhcmRM
aXN0SXRlbSkKKyAgICAgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNo
ZSgpLnJlZ2lzdGVySXRlbVdpdGhDYWNoZWRQYWdlKCptX2JhY2tGb3J3YXJkTGlzdEl0ZW0pOwor
fQorCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6d2FpdFVudGlsUmVhZHlUb1Vuc3VzcGVuZChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1c3BlbmRlZFBhZ2VQcm94eSopPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChtX3JlYWR5VG9VbnN1c3BlbmRIYW5kbGVyKQpAQCAtMjE2LDcg
KzIyOSwxMCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1
c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogdm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OnN1c3BlbnNpb25UaW1lZE91dCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vz
c1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1lZE91dCgp
IGRlc3Ryb3lpbmcgdGhlIHN1c3BlbmRlZCBwYWdlIGJlY2F1c2UgaXQgZmFpbGVkIHRvIHN1c3Bl
bmQgaW4gdGltZSIsIHRoaXMpOwotICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVT
dXNwZW5kZWRQYWdlKCp0aGlzKTsgLy8gV2lsbCBkZXN0cm95IHx0aGlzfC4KKyAgICBpZiAobV9i
YWNrRm9yd2FyZExpc3RJdGVtKSB7CisgICAgICAgIEFTU0VSVChtX2JhY2tGb3J3YXJkTGlzdEl0
ZW0tPnN1c3BlbmRlZFBhZ2UoKSA9PSB0aGlzKTsKKyAgICAgICAgbV9iYWNrRm9yd2FyZExpc3RJ
dGVtLT5zZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8Lgor
ICAgIH0KIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggMWFjM2Q4ODE1MWIuLjQ0OWEyZWEw
OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApA
QCAtNTEsNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkg
eyByZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1haW5GcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVJRDsgfQogCisgICAgdm9p
ZCBzZXRCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBiYWNrRm9yd2FyZExpc3RJdGVtKCkgeyByZXR1cm4gbV9i
YWNrRm9yd2FyZExpc3RJdGVtOyB9CisKICAgICBib29sIHBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygp
IGNvbnN0OwogCiAgICAgdm9pZCB3YWl0VW50aWxSZWFkeVRvVW5zdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+JiYpOwpAQCAtNzcsNiArODAsNyBAQCBw
cml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsK
KyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0geyBudWxs
cHRyIH07CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fbWFpbkZyYW1lSUQ7CiAgICAg
Ym9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKICAgICBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9zaG91bGREZWxheUNsb3NpbmdVbnRp
bEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyBTaG91bGREZWxheUNsb3NpbmdV
bnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNjU5MzcxYTI2NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC0wLDAg
KzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkJhY2tGb3J3YXJkQ2FjaGUuaCIKKworI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgor
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkJhY2tGb3J3YXJkQ2FjaGU6OldlYkJhY2tGb3J3YXJkQ2FjaGUoKSA9IGRlZmF1bHQ7
CisKK1dlYkJhY2tGb3J3YXJkQ2FjaGU6On5XZWJCYWNrRm9yd2FyZENhY2hlKCkgPSBkZWZhdWx0
OworCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnNldE1heFNpemUodW5zaWduZWQgbWF4U2l6
ZSkKK3sKKyAgICBtX21heFNpemUgPSBtYXhTaXplOworCisgICAgd2hpbGUgKG1faXRlbXNXaXRo
Q2FjaGVkUGFnZS5zaXplKCkgPiBtYXhTaXplKQorICAgICAgICBtX2l0ZW1zV2l0aENhY2hlZFBh
Z2UuZmlyc3QoKS0+c2V0U3VzcGVuZGVkUGFnZShudWxscHRyKTsKK30KKworUmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4gV2ViQmFja0ZvcndhcmRDYWNoZTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFn
ZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3sK
KyAgICBmb3IgKGF1dG8qIGl0ZW0gOiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UpIHsKKyAgICAgICAg
aWYgKGl0ZW0tPnN1c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpLnJlZ2lzdHJhYmxlRG9tYWluKCkg
PT0gcmVnaXN0cmFibGVEb21haW4gJiYgJml0ZW0tPnN1c3BlbmRlZFBhZ2UoKS0+cHJvY2Vzcygp
LndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlKQorICAgICAgICAgICAgcmV0dXJuICZp
dGVtLT5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVnaXN0ZXJJdGVtV2l0aENhY2hl
ZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBBU1NFUlQobV9tYXhT
aXplKTsKKworICAgIGlmIChtX2l0ZW1zV2l0aENhY2hlZFBhZ2Uuc2l6ZSgpID49IG1fbWF4U2l6
ZSkKKyAgICAgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLmZpcnN0KCktPnNldFN1c3BlbmRlZFBh
Z2UobnVsbHB0cik7CisgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5zaXplKCkgPCBt
X21heFNpemUpOworICAgIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5hZGQoJml0ZW0pOworfQorCit2
b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnVucmVnaXN0ZXJJdGVtV2l0aENhY2hlZFBhZ2UoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBBU1NFUlQobV9pdGVtc1dpdGhDYWNo
ZWRQYWdlLmNvbnRhaW5zKCZpdGVtKSk7CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92
ZSgmaXRlbSk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXJFbnRyaWVzRm9y
UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCit7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJCYWNrRm9y
d2FyZExpc3RJdGVtPj4gaXRlbXNUb1JlbW92ZTsKKyAgICBmb3IgKGF1dG8qIGl0ZW0gOiBtX2l0
ZW1zV2l0aENhY2hlZFBhZ2UpIHsKKyAgICAgICAgaWYgKGl0ZW0tPnBhZ2VJRCgpID09IHBhZ2Uu
aWRlbnRpZmllcigpKQorICAgICAgICAgICAgaXRlbXNUb1JlbW92ZS5hcHBlbmQoaXRlbSk7Cisg
ICAgfQorICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zVG9SZW1vdmUpCisgICAgICAgIGl0ZW0t
PnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNo
ZTo6Y2xlYXJFbnRyaWVzRm9yUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gaXRlbXNUb1JlbW92ZTsK
KyAgICBmb3IgKGF1dG8qIGl0ZW0gOiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UpIHsKKyAgICAgICAg
aWYgKCZpdGVtLT5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSA9PSBwcm9jZXNzKQorICAgICAg
ICAgICAgaXRlbXNUb1JlbW92ZS5hcHBlbmQoaXRlbSk7CisgICAgfQorICAgIGZvciAoYXV0byYg
aXRlbSA6IGl0ZW1zVG9SZW1vdmUpCisgICAgICAgIGl0ZW0tPnNldFN1c3BlbmRlZFBhZ2UobnVs
bHB0cik7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXIoQWxsb3dQcm9jZXNz
Q2FjaGluZyBhbGxvd1Byb2Nlc3NDYWNoaW5nKQoreworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlBy
b2Nlc3NQcm94eT4+IHByb2Nlc3NlczsKKyAgICBmb3IgKGF1dG8qIGl0ZW0gOiBtX2l0ZW1zV2l0
aENhY2hlZFBhZ2UpIHsKKyAgICAgICAgcHJvY2Vzc2VzLmFkZCgmaXRlbS0+c3VzcGVuZGVkUGFn
ZSgpLT5wcm9jZXNzKCkpOworICAgICAgICBpdGVtLT5zZXRTdXNwZW5kZWRQYWdlKG51bGxwdHIp
OworICAgIH0KKworICAgIEFTU0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuaXNFbXB0eSgpKTsK
KworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+
bWF5YmVTaHV0RG93bihhbGxvd1Byb2Nlc3NDYWNoaW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRDYWNoZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MDAyY2ZmM2NkMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2Fj
aGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKK2NsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOworZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5n
OworCitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBXZWJCYWNrRm9yd2FyZENhY2hlKCk7CisgICAgfldlYkJhY2tG
b3J3YXJkQ2FjaGUoKTsKKworICAgIHZvaWQgc2V0TWF4U2l6ZSh1bnNpZ25lZCk7CisgICAgdW5z
aWduZWQgbWF4U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U2l6ZTsgfQorCisgICAgdm9pZCBy
ZWdpc3Rlckl0ZW1XaXRoQ2FjaGVkUGFnZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CisgICAg
dm9pZCB1bnJlZ2lzdGVySXRlbVdpdGhDYWNoZWRQYWdlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KTsKKworICAgIHZvaWQgY2xlYXIoQWxsb3dQcm9jZXNzQ2FjaGluZyk7CisgICAgdm9pZCBjbGVh
ckVudHJpZXNGb3JQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOworICAgIHZvaWQgY2xlYXJFbnRy
aWVzRm9yUGFnZShXZWJQYWdlUHJveHkmKTsKKworICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiwgV2ViUGFnZVByb3h5JiwgV2Vic2l0ZURhdGFTdG9yZSYpOworCitwcml2YXRl
OgorICAgIHVuc2lnbmVkIG1fbWF4U2l6ZSB7IDAgfTsKKyAgICBMaXN0SGFzaFNldDxXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKj4gbV9pdGVtc1dpdGhDYWNoZWRQYWdlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAwNDE4MmI5OGNhMi4uODA1NzQzOTRhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtOTIsNiArOTIsNyBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgog
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKQEAgLTc1MCw2ICs3
NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFBybwogCiBib29sIFdlYlBhZ2VQcm94eTo6c3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9zaW5n
VW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKIHsKKyAgICBtX3N1c3Bl
bmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogICAgIG1fbGFzdFN1c3Bl
bmRlZFBhZ2UgPSBudWxscHRyOwogCiAgICAgaWYgKCFtYWluRnJhbWVJRCkKQEAgLTc5MCwxNCAr
NzkyLDIxIEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxl
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgaWYgKHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzKQogICAg
ICAgICBzdXNwZW5kZWRQYWdlLT5jbG9zZVdpdGhvdXRGbGFzaGluZygpOwogCi0gICAgaWYgKGZy
b21JdGVtICYmIG1fcHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2FjaGUoKSkKLSAgICAgICAgZnJvbUl0
ZW0tPnNldFN1c3BlbmRlZFBhZ2Uoc3VzcGVuZGVkUGFnZS5nZXQoKSk7Ci0KICAgICBtX2xhc3RT
dXNwZW5kZWRQYWdlID0gbWFrZVdlYWtQdHIoKnN1c3BlbmRlZFBhZ2UpOwotICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5hZGRTdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVuZGVkUGFnZSkp
OworCisgICAgaWYgKGZyb21JdGVtICYmIHNob3VsZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSkKKyAg
ICAgICAgZnJvbUl0ZW0tPnNldFN1c3BlbmRlZFBhZ2UoV1RGTW92ZShzdXNwZW5kZWRQYWdlKSk7
CisgICAgZWxzZQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcg
PSBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
V2ViUGFnZVByb3h5OjpzaG91bGRVc2VCYWNrRm9yd2FyZENhY2hlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcmVmZXJlbmNlcy0+dXNlc1BhZ2VDYWNoZSgpICYmIHByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5tYXhTaXplKCkgPiAwOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJv
eHk+JiYgZHJhd2luZ0FyZWEsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmIG1haW5GcmFtZSkKIHsK
ICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwpAQCAtMTAyNyw3ICsxMDM2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6RnVsbHNjcmVlbkNsaWVudD4oKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFnZSgqdGhpcyk7CisgICAgbV9wcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5jbGVhckVudHJpZXNGb3JQYWdl
KCp0aGlzKTsKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2Uo
KSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2Vi
UHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CkBAIC0yOTI5LDcgKzI5Mzgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OiBrZWVwIHVzaW5nIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbjogJXtwdWJsaWN9
cyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKIAogICAgICAg
ICBpZiAoc2hvdWxkUHJvY2Vzc1N3YXApIHsKLSAgICAgICAgICAgIGF1dG8gc3VzcGVuZGVkUGFn
ZSA9IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA/IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnRh
a2VTdXNwZW5kZWRQYWdlKCpkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UpIDogbnVsbHB0cjsKKyAg
ICAgICAgICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSAm
JiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPmJhY2tGb3J3YXJkTGlzdEl0ZW0oKSA/IGRlc3Rp
bmF0aW9uU3VzcGVuZGVkUGFnZS0+YmFja0ZvcndhcmRMaXN0SXRlbSgpLT50YWtlU3VzcGVuZGVk
UGFnZSgpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChzdXNwZW5kZWRQYWdlICYmIHN1c3Bl
bmRlZFBhZ2UtPnBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygpKQogICAgICAgICAgICAgICAgIHN1c3Bl
bmRlZFBhZ2UgPSBudWxscHRyOwogCkBAIC03MDI2LDYgKzcwMzUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAgICAg
bV9tYWluRnJhbWUgPSBudWxscHRyOwogICAgIG1fZm9jdXNlZEZyYW1lID0gbnVsbHB0cjsKICAg
ICBtX2ZyYW1lU2V0TGFyZ2VzdEZyYW1lID0gbnVsbHB0cjsKKyAgICBtX3N1c3BlbmRlZFBhZ2VL
ZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2Ug
PSBudWxscHRyOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03MzU1LDYgKzczNjUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBM
YXllclRyZWVDb250ZXh0JiBsYXllcgogCiAgICAgaWYgKG1fbGFzdFN1c3BlbmRlZFBhZ2UpCiAg
ICAgICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UtPnBhZ2VFbnRlcmVkQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoKTsKKyAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBu
dWxscHRyOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTQxNjk3
Y2Q1MWUuLjczMTljMWU4MTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTExMyw3ICsxMTEzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNz
UHJveHkmIGVuc3VyZVJ1bm5pbmdQcm9jZXNzKCk7Ci0gICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzKCkgeyByZXR1cm4gbV9wcm9jZXNzOyB9CisgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzOyB9CiAgICAgUHJvY2Vzc0lEIHByb2Nlc3NJZGVu
dGlmaWVyKCkgY29uc3Q7CiAKICAgICBXZWJQcmVmZXJlbmNlcyYgcHJlZmVyZW5jZXMoKSB7IHJl
dHVybiBtX3ByZWZlcmVuY2VzOyB9CkBAIC0xNTkyLDYgKzE1OTIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lkIG5vdGlmeVByb2Nlc3NQb29s
VG9QcmV3YXJtKCk7CisgICAgYm9vbCBzaG91bGRVc2VCYWNrRm9yd2FyZENhY2hlKCkgY29uc3Q7
CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlKTsKIApAQCAtMjU0Niw2
ICsyNTQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFk
U2FuZGJveEV4dGVuc2lvbiB7IGZhbHNlIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlz
aW9uYWxQYWdlUHJveHk+IG1fcHJvdmlzaW9uYWxQYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
dXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFzaGluZzsK
ICAgICBXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gbV9sYXN0U3VzcGVuZGVkUGFnZTsKIAog
I2lmIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IGFkNDA3ZTY0OTJmLi5hMmRhNjUzY2NkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUg
IlVJR2FtZXBhZFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRD
YWNoZS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKQEAg
LTIzNiw2ICsyMzcsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2ZvcmVncm91bmRX
ZWJQcm9jZXNzQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NB
c3NlcnRpb25zKCk7IH0pCiAgICAgLCBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlcihbdGhp
c10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7IH0pCiAjZW5k
aWYKKyAgICAsIG1fYmFja0ZvcndhcmRDYWNoZShtYWtlVW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJk
Q2FjaGU+KCkpCiAgICAgLCBtX3dlYlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdlYlByb2Nl
c3NDYWNoZT4oKnRoaXMpKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
QEAgLTI4Nyw3ICsyODksNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAKICAgICBub3RpZnlUaGlz
V2ViUHJvY2Vzc1Bvb2xXYXNDcmVhdGVkKCk7CiAKLSAgICB1cGRhdGVNYXhTdXNwZW5kZWRQYWdl
Q291bnQoKTsKKyAgICB1cGRhdGVCYWNrRm9yd2FyZENhY2hlU2l6ZSgpOwogfQogCiBXZWJQcm9j
ZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKQEAgLTEwOTEsOSArMTA5Myw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykK
ICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNoZSA9PSBwcm9jZXNzKQogICAgICAgICBtX3By
b2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsKIAotICAgIG1fc3VzcGVuZGVkUGFnZXMucmVt
b3ZlQWxsTWF0Y2hpbmcoW3Byb2Nlc3NdKGF1dG8mIHN1c3BlbmRlZFBhZ2UpIHsKLSAgICAgICAg
cmV0dXJuICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkgPT0gcHJvY2VzczsKLSAgICB9KTsKKyAg
ICBtX2JhY2tGb3J3YXJkQ2FjaGUtPmNsZWFyRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHByb2Nlc3MtPmlzUnVubmluZ1Nl
cnZpY2VXb3JrZXJzKCkpIHsKQEAgLTExMzEsNyArMTEzMSw3IEBAIFdlYlByb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0
b3JlJiB3CiAgICAgICAgICAgICByZXR1cm4gKnByb2Nlc3M7CiAKICAgICAgICAgLy8gQ2hlY2sg
aWYgd2UgaGF2ZSBhIHN1c3BlbmRlZCBwYWdlIGZvciB0aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9t
YWluIGFuZCB1c2UgaXRzIHByb2Nlc3MgaWYgd2UgZG8sIGZvciBwZXJmb3JtYW5jZSByZWFzb25z
LgotICAgICAgICBpZiAoYXV0byBwcm9jZXNzID0gcGFnZSA/IGZpbmRSZXVzYWJsZVN1c3BlbmRl
ZFBhZ2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCAqcGFnZSwgd2Vic2l0ZURhdGFTdG9yZSkg
OiBudWxscHRyKSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBwYWdlID8gbV9iYWNrRm9y
d2FyZENhY2hlLT5maW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhyZWdpc3RyYWJsZURv
bWFpbiwgKnBhZ2UsIHdlYnNpdGVEYXRhU3RvcmUpIDogbnVsbHB0cikgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiVXNpbmcgV2ViUHJvY2VzcyAlaSBmcm9tIGEg
U3VzcGVuZGVkUGFnZSIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAg
ICAgcmV0dXJuICpwcm9jZXNzOwogICAgICAgICB9CkBAIC0xMzg4LDcgKzEzODgsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcoQ3JpdGljYWwpCiAg
ICAgUkVMRUFTRV9MT0coUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNzUG9vbDo6
aGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nIiwgdGhpcyk7CiAKIAotICAgIGNsZWFyU3VzcGVu
ZGVkUGFnZXMoQWxsb3dQcm9jZXNzQ2FjaGluZzo6Tm8pOworICAgIG1fYmFja0ZvcndhcmRDYWNo
ZS0+Y2xlYXIoQWxsb3dQcm9jZXNzQ2FjaGluZzo6Tm8pOwogICAgIG1fd2ViUHJvY2Vzc0NhY2hl
LT5jbGVhcigpOwogCiAgICAgaWYgKG1fcHJld2FybWVkUHJvY2VzcykKQEAgLTE1MzksNyArMTUz
OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nl
c3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3QodXJsU2NoZW1lKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnVwZGF0ZU1heFN1c3BlbmRlZFBhZ2VDb3VudCgpCit2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRh
dGVCYWNrRm9yd2FyZENhY2hlU2l6ZSgpCiB7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPnVz
ZXNQYWdlQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU0OSwxNSArMTU0OSwxMiBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKQogICAgIHVu
c2lnbmVkIHBhZ2VDYWNoZVNpemUgPSAwOwogICAgIGNhbGN1bGF0ZU1lbW9yeUNhY2hlU2l6ZXMo
TGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwoKSwgZHVtbXksIGR1
bW15LCBkdW1teSwgZHVtbXlJbnRlcnZhbCwgcGFnZUNhY2hlU2l6ZSk7CiAKLSAgICBtX21heFN1
c3BlbmRlZFBhZ2VDb3VudCA9IHBhZ2VDYWNoZVNpemU7Ci0KLSAgICB3aGlsZSAobV9zdXNwZW5k
ZWRQYWdlcy5zaXplKCkgPiBtX21heFN1c3BlbmRlZFBhZ2VDb3VudCkKLSAgICAgICAgbV9zdXNw
ZW5kZWRQYWdlcy5yZW1vdmVGaXJzdCgpOworICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+c2V0TWF4
U2l6ZShwYWdlQ2FjaGVTaXplKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q2FjaGVN
b2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAgdXBkYXRlTWF4U3VzcGVuZGVkUGFn
ZUNvdW50KCk7CisgICAgdXBkYXRlQmFja0ZvcndhcmRDYWNoZVNpemUoKTsKIAogICAgIHNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChjYWNoZU1v
ZGVsKSk7CiAKQEAgLTIyNjMsNjcgKzIyNjAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgog
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIs
IHJlYXNvbik7CiB9CiAKLVJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpm
aW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQotewotICAgIGF1dG8gaXQgPSBtX3N1c3BlbmRlZFBhZ2VzLmZp
bmRJZihbJl0oYXV0byYgc3VzcGVuZGVkUGFnZSkgewotICAgICAgICByZXR1cm4gc3VzcGVuZGVk
UGFnZS0+cHJvY2VzcygpLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4g
JiYgJnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFT
dG9yZTsKLSAgICB9KTsKLSAgICByZXR1cm4gaXQgPT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKSA/
IG51bGxwdHIgOiAmKCppdCktPnByb2Nlc3MoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
YWRkU3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1
c3BlbmRlZFBhZ2UpCi17Ci0gICAgaWYgKCFtX21heFN1c3BlbmRlZFBhZ2VDb3VudCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZXMuc2l6ZSgpID49IG1fbWF4U3Vz
cGVuZGVkUGFnZUNvdW50KQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZUZpcnN0KCk7
Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2VzLmFwcGVuZChXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdl
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQotewotICAgIG1f
c3VzcGVuZGVkUGFnZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZwYWdlLCBwcm9jZXNzXShhdXRvJiBz
dXNwZW5kZWRQYWdlKSB7Ci0gICAgICAgIHJldHVybiAmc3VzcGVuZGVkUGFnZS0+cGFnZSgpID09
ICZwYWdlICYmICghcHJvY2VzcyB8fCAmc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpID09IHByb2Nl
c3MpOwotICAgIH0pOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUG9vbDo6dGFrZVN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBzdXNw
ZW5kZWRQYWdlKQotewotICAgIHJldHVybiBtX3N1c3BlbmRlZFBhZ2VzLnRha2VGaXJzdChbJnN1
c3BlbmRlZFBhZ2VdKGF1dG8mIGl0ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCkgPT0g
JnN1c3BlbmRlZFBhZ2U7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92
ZVN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBzdXNwZW5kZWRQYWdlKQotewotICAg
IGF1dG8gaXQgPSBtX3N1c3BlbmRlZFBhZ2VzLmZpbmRJZihbJnN1c3BlbmRlZFBhZ2VdKGF1dG8m
IGl0ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCkgPT0gJnN1c3BlbmRlZFBhZ2U7Ci0g
ICAgfSk7Ci0gICAgaWYgKGl0ICE9IG1fc3VzcGVuZGVkUGFnZXMuZW5kKCkpCi0gICAgICAgIG1f
c3VzcGVuZGVkUGFnZXMucmVtb3ZlKGl0KTsKLX0KLQotYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFz
U3VzcGVuZGVkUGFnZUZvcihXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VQcm94eSYg
cGFnZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlcy5maW5kSWYoWyZwcm9j
ZXNzLCAmcGFnZV0oYXV0byYgc3VzcGVuZGVkUGFnZSkgewotICAgICAgICByZXR1cm4gJnN1c3Bl
bmRlZFBhZ2UtPnByb2Nlc3MoKSA9PSAmcHJvY2VzcyAmJiAmc3VzcGVuZGVkUGFnZS0+cGFnZSgp
ID09ICZwYWdlOwotICAgIH0pICE9IG1fc3VzcGVuZGVkUGFnZXMuZW5kKCk7Ci19Ci0KLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyU3VzcGVuZGVkUGFnZXMoQWxsb3dQcm9jZXNzQ2FjaGluZyBh
bGxvd1Byb2Nlc3NDYWNoaW5nKQotewotICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4+IHByb2Nlc3NlczsKLSAgICBmb3IgKGF1dG8mIHN1c3BlbmRlZFBhZ2UgOiBtX3N1c3BlbmRl
ZFBhZ2VzKQotICAgICAgICBwcm9jZXNzZXMuYWRkKCZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkp
OwotCi0gICAgbV9zdXNwZW5kZWRQYWdlcy5jbGVhcigpOwotCi0gICAgZm9yIChhdXRvJiBwcm9j
ZXNzIDogcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKGFsbG93UHJv
Y2Vzc0NhY2hpbmcpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNb2NrTWVkaWFEZXZp
Y2UoY29uc3QgTW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDYxMmUz
OTJlNDM2Li4zN2E2MjUwN2E5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC05NSw2ICs5NSw3IEBAIHN0cnVjdCBNb2NrTWVkaWFEZXZpY2U7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwogY2xhc3MgSGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CiBjbGFzcyBVSUdhbWVwYWQ7CiBjbGFzcyBQ
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwpAQCAtMTQ5LDYgKzE1MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOworCisgICAgV2ViQmFja0ZvcndhcmRDYWNoZSYgYmFja0ZvcndhcmRDYWNoZSgp
IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDYWNoZS5nZXQoKTsgfQogICAgIAogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRp
b25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQpAQCAtNDc0LDE3ICs0NzcsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYs
IGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJv
Y2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmKTsK
IAotICAgIC8vIFN1c3BlbmRlZFBhZ2VQcm94eSBtYW5hZ2VtZW50LgotICAgIHZvaWQgYWRkU3Vz
cGVuZGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKLSAgICB2
b2lkIHJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFnZShXZWJQYWdlUHJveHkmLCBXZWJQcm9j
ZXNzUHJveHkqID0gbnVsbHB0cik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5Jik7Ci0gICAgdm9pZCBy
ZW1vdmVTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwotICAgIGJvb2wgaGFzU3Vz
cGVuZGVkUGFnZUZvcihXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlUHJveHkmKSBjb25zdDsKLSAg
ICB1bnNpZ25lZCBtYXhTdXNwZW5kZWRQYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX21heFN1
c3BlbmRlZFBhZ2VDb3VudDsgfQotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVz
YWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiwgV2ViUGFnZVByb3h5JiwgV2Vic2l0ZURhdGFTdG9yZSYpOwotCi0gICAgdm9pZCBjbGVhclN1
c3BlbmRlZFBhZ2VzKEFsbG93UHJvY2Vzc0NhY2hpbmcpOwotCiAgICAgdm9pZCBkaWRSZWFjaEdv
b2RUaW1lVG9QcmV3YXJtKCk7CiAKICAgICB2b2lkIGRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRp
b24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBXZWJDb3JlOjpQcmV3
YXJtSW5mb3JtYXRpb24mKTsKQEAgLTU5MSw3ICs1ODMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAKLSAgICB2b2lkIHVwZGF0ZU1heFN1c3Bl
bmRlZFBhZ2VDb3VudCgpOworICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRDYWNoZVNpemUoKTsK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgZmxvYXQgZGlzcGxheUJyaWdodG5lc3Mo
KTsKQEAgLTc3Miw4ICs3NjQsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIERl
cXVlPHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+PiBtX3N1c3BlbmRlZFBhZ2Vz
OwotICAgIHVuc2lnbmVkIG1fbWF4U3VzcGVuZGVkUGFnZUNvdW50IHsgMCB9OworICAgIFVuaXF1
ZVJlZjxXZWJCYWNrRm9yd2FyZENhY2hlPiBtX2JhY2tGb3J3YXJkQ2FjaGU7CiAKICAgICBVbmlx
dWVSZWY8V2ViUHJvY2Vzc0NhY2hlPiBtX3dlYlByb2Nlc3NDYWNoZTsKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4gbV9zd2Fw
cGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDYy
N2QyZDk5Y2IzLi45OTRkMGEyYTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJT
dG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKKyNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCkBAIC03MjUsNyArNzI2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVE
YXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgV2FsbFRpbWUKICAgICBh
dXRvIHdlYlByb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9y
RGF0YVJlbW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwogICAgIGlmICh3ZWJQcm9j
ZXNzQWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewogICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nl
c3NQb29sLT5jbGVhclN1c3BlbmRlZFBhZ2VzKEFsbG93UHJvY2Vzc0NhY2hpbmc6Ok5vKTsKKyAg
ICAgICAgICAgIHByb2Nlc3NQb29sLT5iYWNrRm9yd2FyZENhY2hlKCkuY2xlYXIoQWxsb3dQcm9j
ZXNzQ2FjaGluZzo6Tm8pOwogICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNo
ZSgpLmNsZWFyKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGFhYTE3ZWI2YmMuLmM3MWYwMjE5YjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMx
OTgsNiArMzE5OCw4IEBACiAJCTQ0NTk5ODQxMjI4MzNFNjAwMEU2MTM3MyAvKiBTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OUQ5MEQ4MjFGRDYzRkUw
MEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTQ4MUM2MjFGMkQyN0IwMEYyRjkxOSAv
KiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjAzMDExQTIzNEJFMzFEMDA5Qzgy
MTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDYwMzAxMUIyMzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAv
KiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMu
aDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0
NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzgyNSw2ICs3ODI3LDggQEAKIAkJCQkxQTBGMjlFMTEyMEI0NDQyMDA1M0QxQjkg
LyogVmlzaXRlZExpbmtTdG9yZS5jcHAgKi8sCiAJCQkJMUEwRjI5RTIxMjBCNDQ0MjAwNTNEMUI5
IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTYwMjI0OTE4QzE2QjA4MDBDM0U4Qzkg
LyogVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjAzMDExQTIzNEJFMzFE
MDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8sCisJCQkJNDYwMzAxMUIyMzRC
RTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuaCAqLywKIAkJCQlCQzcyQkExQjEx
RTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNwcCAqLywKIAkJCQlCQzcyQkEx
QzExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJRjAzNjk3
ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380440</attachid>
            <date>2019-10-08 10:22:53 -0700</date>
            <delta_ts>2019-10-08 14:36:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202660-20191008102252.patch</filename>
            <type>text/plain</type>
            <size>40549</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhMjE1ZGM5OTY1ZWUyZTQ5
OGEyNzRkMDhlMjBhZTJhNmM2MzU5ZjUuLjI0MzRmMzAyMGJjNzIxMGRkYjhjOGUyYjdkZmRlNjdm
MzlmZDhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTktMTAtMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN1c3BlbmRlZFBhZ2UgbG9n
aWMgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBuZXcgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjYwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBTdXNw
ZW5kZWRQYWdlIGxvZ2ljIGZyb20gV2ViUHJvY2Vzc1Bvb2wgdG8gbmV3IFdlYkJhY2tGb3J3YXJk
Q2FjaGUgY2xhc3MuIFRoaXMgaXMKKyAgICAgICAgYSBmaXJzdCBzdGVwIHRvd2FyZHMgaW1wbGVt
ZW50aW5nIGJhY2sgLyBmb3J3YXJkIGNhY2hlIGhhbmRsaW5nIGluIHRoZSBVSVByb2Nlc3MuCisK
KyAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAgMS4gU3Vz
cGVuZGVkUGFnZVByb3h5IG9iamVjdHMgYXJlIG5vdyBub3JtYWxseSBvd25lZCBieSB0aGVpciBh
c3NvY2lhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KKyAgICAgICAgICAgKFNpbWlsYXJseSB0
byBDYWNoZWRQYWdlIG9iamVjdHMgYmVpbmcgb3duZWQgYnkgdGhlaXIgSGlzdG9yeUl0ZW0gaW4g
V2ViQ29yZSkgaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgV2ViUHJvY2Vzc1Bvb2wuCisgICAg
ICAgIDIuIEEgbmV3IFdlYkJhY2tGb3J3YXJkQ2FjaGUgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBj
YXAgdGhlIG51bWJlciBvZiBjYWNoZWQgcGFnZXMgYW5kIGNsZWFyCisgICAgICAgICAgIHRoZW0g
KHNpbWlsYXJ5IHRvIHRoZSBQYWdlQ2FjaGUgaW4gV2ViQ29yZSkuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRha2VTdXNwZW5kZWRQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c3VzcGVuZGVkUGFnZSBjb25zdCk6
CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX21heGltdW1TdXNwZW5kZWRQYWdlQ291bnRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFn
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVk
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpzZXRCYWNr
Rm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojpz
dXNwZW5zaW9uVGltZWRPdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhck9sZGVzdENhY2hl
ZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhckl0ZW1D
YWNoZWRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2Fw
YWNpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpyZWdpc3Rlckl0
ZW1XaXRoQ2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6
OnVucmVnaXN0ZXJJdGVtV2l0aENhY2hlZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZENhY2hlOjpjbGVhckVudHJpZXNGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRDYWNoZTo6Y2xlYXJFbnRyaWVzRm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRDYWNoZTo6Y2FwYWNpdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG91bGRVc2VCYWNrRm9y
d2FyZENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3NDYWNoZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVtb3J5UHJlc3N1
cmVXYXJuaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUJhY2tG
b3J3YXJkQ2FjaGVDYXBhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEwLTA3ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm92aWRlIG9wdGlvbnMgZm9yIERUVFog
dG8gaGFwcGVuIGluIG1vcmUgc2l0dWF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkYWY0ZGEyMjc3Y2I0NjdmNzgyNDc4YTUw
NTY5NWFmNjUxZGEyOTRjLi41YWRmNzM3M2JhYmZkNTM4ZTdkNTk4NTA5NzQ1YTQzMDU2MDg3ODRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIK
IAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgpAQCAtNTQsNyAr
NTUsOCBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgp
CiAgICAgQVNTRVJUKGFsbEl0ZW1zKCkuZ2V0KG1faXRlbVN0YXRlLmlkZW50aWZpZXIpID09IHRo
aXMpOwogICAgIGFsbEl0ZW1zKCkucmVtb3ZlKG1faXRlbVN0YXRlLmlkZW50aWZpZXIpOwogCi0g
ICAgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpOworICAgIGlmIChtX3N1c3Bl
bmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRl
bShudWxscHRyKTsKIH0KIAogSGFzaE1hcDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKj4mIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmFsbEl0ZW1zKCkK
QEAgLTE1OSwyNyArMTYxLDI3IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlz
Q2xvbmUoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgb3RoZXIpCiAgICAgcmV0dXJuIGhh
c1NhbWVGcmFtZXMobWFpbkZyYW1lU3RhdGUsIG90aGVyTWFpbkZyYW1lU3RhdGUpOwogfQogCi12
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFn
ZVByb3h5KiBwYWdlKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQ
YWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkK
IHsKLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlID09IHBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAg
ICBpZiAobV9zdXNwZW5kZWRQYWdlKQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tG
b3J3YXJkTGlzdEl0ZW0obnVsbHB0cik7CiAKLSAgICByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVBy
b2Nlc3NQb29sKCk7Ci0gICAgbV9zdXNwZW5kZWRQYWdlID0gbWFrZVdlYWtQdHIocGFnZSk7Cisg
ICAgbV9zdXNwZW5kZWRQYWdlID0gV1RGTW92ZShzdXNwZW5kZWRQYWdlKTsKKworICAgIGlmICht
X3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRM
aXN0SXRlbSh0aGlzKTsKIH0KIAotU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpzdXNwZW5kZWRQYWdlKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRha2VTdXNwZW5kZWRQYWdlKCkKIHsK
LSAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOworICAgIGlmIChtX3N1c3BlbmRlZFBh
Z2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRlbShudWxs
cHRyKTsKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3N1c3BlbmRlZFBhZ2UsIG51bGxwdHIp
OwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnJlbW92ZVN1c3BlbmRlZFBhZ2VG
cm9tUHJvY2Vzc1Bvb2woKQorU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpzdXNwZW5kZWRQYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc3VzcGVuZGVkUGFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5yZW1vdmVTdXNwZW5kZWRQYWdlKCptX3N1c3BlbmRlZFBhZ2UpOwotICAgIEFTU0VS
VCghbV9zdXNwZW5kZWRQYWdlKTsKKyAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOwog
fQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oCmluZGV4IDZkNjdlYzBiMmVhYzAxODVhZWQ5NzFlODlkMzk0OGJhZDNh
N2UzM2UuLmRkYzM4NzcyZjc4MzczYjg5NDQ0NDNjYTRmNTY0YTAwOTFkNDE1ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTc3LDggKzc3
LDkgQEAgcHVibGljOgogICAgIFZpZXdTbmFwc2hvdCogc25hcHNob3QoKSBjb25zdCB7IHJldHVy
biBtX2l0ZW1TdGF0ZS5zbmFwc2hvdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0U25hcHNob3QoUmVm
UHRyPFZpZXdTbmFwc2hvdD4mJiBzbmFwc2hvdCkgeyBtX2l0ZW1TdGF0ZS5zbmFwc2hvdCA9IFdU
Rk1vdmUoc25hcHNob3QpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNldFN1c3BlbmRlZFBhZ2UoU3Vz
cGVuZGVkUGFnZVByb3h5Kik7CisgICAgdm9pZCBzZXRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVl
X3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYpOwogICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3Vz
cGVuZGVkUGFnZSgpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+IHRha2VTdXNwZW5kZWRQYWdlKCk7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
Y2hhciogbG9nZ2luZ1N0cmluZygpOwpAQCAtODcsMTMgKzg4LDExIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUm
JiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHJlbW92ZVN1c3BlbmRlZFBh
Z2VGcm9tUHJvY2Vzc1Bvb2woKTsKLQogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0
ZW1TdGF0ZTsKICAgICBVUkwgbV9yZXNvdXJjZURpcmVjdG9yeVVSTDsKICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyOwotICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBt
X3N1c3BlbmRlZFBhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4g
bV9zdXNwZW5kZWRQYWdlOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0+PiBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMzcz
ZDY1NWYxMGFmOGIzODAzNWI5NmJhYzdkOGYyOTUyYjBhNjhiYS4uMWU2MWUyM2IxMThhYTgyOGZl
YmZhNTg5YTJjNzk0NzM0MzQ5YTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNjAsNiArMjYwLDcgQEAg
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCiBVSVByb2Nlc3MvVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAK
K1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcAogVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAKIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAKIFVJUHJvY2Vzcy9XZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBjMmE5NTY2MjM4Mjk0MTM2NDQyNDEy
NzNkOTljMjg3ZjViZTZhZWQxLi42N2MyMDU2N2Q1MzYyODY1NDRjZTc1ZTU3NGRmOGIzOTllNDQz
YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVJbnRl
cm5hbC5oIgorI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2ltcG9ydCAiV2ViQ2Vy
dGlmaWNhdGVJbmZvLmgiCiAjaW1wb3J0ICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NDYWNoZS5oIgpAQCAtNTI2LDcgKzUyNyw3IEBAIC0gKHNpemVfdClfcGx1
Z2luUHJvY2Vzc0NvdW50CiAKIC0gKE5TVUludGVnZXIpX21heGltdW1TdXNwZW5kZWRQYWdlQ291
bnQKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5tYXhTdXNwZW5kZWRQYWdlQ291bnQoKTsK
KyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5iYWNrRm9yd2FyZENhY2hlKCkuY2FwYWNpdHkoKTsK
IH0KIAogLSAoTlNVSW50ZWdlcilfcHJvY2Vzc0NhY2hlQ2FwYWNpdHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDc5MjRlNGVmM2RjMjY0
MGVkOGM0YjcwOWYzNzZkZjM4ZTAxZWVlODAuLmVkNjlkODFlNTg5YmQyN2Y4ZjgwY2NkODViMTZm
NjI4NTYyYjllYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTQzLDYgKzQ0LDIxIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBzdXNwZW5z
aW9uVGltZW91dCB7IDEwX3MgfTsKIAorc3RhdGljIEhhc2hTZXQ8U3VzcGVuZGVkUGFnZVByb3h5
Kj4mIGFsbFN1c3BlbmRlZFBhZ2VzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdXNwZW5kZWRQYWdlUHJveHkqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK1Jl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IFN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3Vz
cGVuZGVkUGFnZVByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit7CisgICAgZm9yIChhdXRvKiBzdXNw
ZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFnZXMoKSkgeworICAgICAgICBpZiAoc3VzcGVuZGVk
UGFnZS0+cHJvY2VzcygpLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4g
JiYgJnN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFT
dG9yZSkKKyAgICAgICAgICAgIHJldHVybiAmc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpOworICAg
IH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogI2lmICFMT0dfRElTQUJMRUQKIHN0YXRpYyBj
b25zdCBIYXNoU2V0PElQQzo6U3RyaW5nUmVmZXJlbmNlPiYgbWVzc2FnZU5hbWVzVG9JZ25vcmVX
aGlsZVN1c3BlbmRlZCgpCiB7CkBAIC04OSw2ICsxMDUsNyBAQCBTdXNwZW5kZWRQYWdlUHJveHk6
OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJv
eHk+JgogICAgICwgbV9zdXNwZW5zaW9uVG9rZW4obV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKQogI2VuZGlmCiB7CisgICAgYWxsU3VzcGVuZGVkUGFnZXMo
KS5hZGQodGhpcyk7CiAgICAgbV9wcm9jZXNzLT5pbmNyZW1lbnRTdXNwZW5kZWRQYWdlQ291bnQo
KTsKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAKQEAgLTk5
LDYgKzExNiw3IEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBh
Z2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mCiBTdXNwZW5kZWRQYWdlUHJveHk6
On5TdXNwZW5kZWRQYWdlUHJveHkoKQogewogICAgIG1fcHJvY2Vzcy0+ZGVjcmVtZW50U3VzcGVu
ZGVkUGFnZUNvdW50KCk7CisgICAgYWxsU3VzcGVuZGVkUGFnZXMoKS5yZW1vdmUodGhpcyk7CiAK
ICAgICBpZiAobV9yZWFkeVRvVW5zdXNwZW5kSGFuZGxlcikgewogICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3JlYWR5VG9VbnN1c3BlbmRIYW5kbGVyID0gV1RGTW92ZShtX3JlYWR5
VG9VbnN1c3BlbmRIYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTEyMyw2ICsxNDEsMTggQEAgU3Vz
cGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICB9KTsKIH0KIAordm9p
ZCBTdXNwZW5kZWRQYWdlUHJveHk6OnNldEJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSogaXRlbSkKK3sKKyAgICBBU1NFUlQoIW1fYmFja0ZvcndhcmRMaXN0SXRlbSB8
fCAhaXRlbSk7CisgICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0SXRlbSkKKyAgICAgICAgcHJvY2Vz
cygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpLnVucmVnaXN0ZXJJdGVtV2l0aENh
Y2hlZFBhZ2UoKm1fYmFja0ZvcndhcmRMaXN0SXRlbSk7CisKKyAgICBtX2JhY2tGb3J3YXJkTGlz
dEl0ZW0gPSBpdGVtOworCisgICAgaWYgKG1fYmFja0ZvcndhcmRMaXN0SXRlbSkKKyAgICAgICAg
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpLnJlZ2lzdGVySXRlbVdp
dGhDYWNoZWRQYWdlKCptX2JhY2tGb3J3YXJkTGlzdEl0ZW0pOworfQorCiB2b2lkIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6d2FpdFVudGlsUmVhZHlUb1Vuc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN1c3BlbmRlZFBhZ2VQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
IChtX3JlYWR5VG9VbnN1c3BlbmRIYW5kbGVyKQpAQCAtMjE2LDcgKzI0NiwxMCBAQCB2b2lkIFN1
c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0
YXRlIG5ld1N1c3BlbnNpbwogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1l
ZE91dCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBT
dXNwZW5kZWRQYWdlUHJveHk6OnN1c3BlbnNpb25UaW1lZE91dCgpIGRlc3Ryb3lpbmcgdGhlIHN1
c3BlbmRlZCBwYWdlIGJlY2F1c2UgaXQgZmFpbGVkIHRvIHN1c3BlbmQgaW4gdGltZSIsIHRoaXMp
OwotICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVTdXNwZW5kZWRQYWdlKCp0aGlz
KTsgLy8gV2lsbCBkZXN0cm95IHx0aGlzfC4KKyAgICBpZiAobV9iYWNrRm9yd2FyZExpc3RJdGVt
KSB7CisgICAgICAgIEFTU0VSVChtX2JhY2tGb3J3YXJkTGlzdEl0ZW0tPnN1c3BlbmRlZFBhZ2Uo
KSA9PSB0aGlzKTsKKyAgICAgICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRTdXNwZW5kZWRQ
YWdlKG51bGxwdHIpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8LgorICAgIH0KIH0KIAogdm9pZCBT
dXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmgKaW5kZXggMWFjM2Q4ODE1MWI5Nzc0NTUxNzEyYzkzYmE2ZDZmMjA5OGE1Zjcy
Mi4uMWIwZDg1NmU3OWQyMWI0ZGMyMDU4ZDQzOGYwYWIzYWM2MDcyYzYwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGVudW0gY2xhc3MgU2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIDogYm9vbCB7
IE5vLCBZZXMgfTsKIApAQCAtNDYsMTEgKzQ3LDE2IEBAIHB1YmxpYzoKICAgICBTdXNwZW5kZWRQ
YWdlUHJveHkoV2ViUGFnZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVy
aW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOwogICAgIH5TdXNwZW5kZWRQYWdlUHJveHko
KTsKIAorICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBmaW5kUmV1c2FibGVTdXNw
ZW5kZWRQYWdlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKKwogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZTsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2ViUGFnZUlEOyB9CiAgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkg
eyByZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1haW5GcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVJRDsgfQogCisgICAgdm9p
ZCBzZXRCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBiYWNrRm9yd2FyZExpc3RJdGVtKCkgeyByZXR1cm4gbV9i
YWNrRm9yd2FyZExpc3RJdGVtOyB9CisKICAgICBib29sIHBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygp
IGNvbnN0OwogCiAgICAgdm9pZCB3YWl0VW50aWxSZWFkeVRvVW5zdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+JiYpOwpAQCAtNzcsNiArODMsNyBAQCBw
cml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsK
KyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0geyBudWxs
cHRyIH07CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIG1fbWFpbkZyYW1lSUQ7CiAgICAg
Ym9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKICAgICBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVu
dGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9zaG91bGREZWxheUNsb3NpbmdVbnRp
bEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgeyBTaG91bGREZWxheUNsb3NpbmdV
bnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGU6Ok5vIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
NzNhYTA2ZDQyYjExNmMwNTQ1OTNhMmI2ODg4Mjk2ZjBkM2QzZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcApAQCAtMCww
ICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJCYWNrRm9yd2FyZENhY2hlLmgiCisKKyNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJCYWNrRm9yd2FyZENhY2hlOjpXZWJCYWNrRm9yd2FyZENhY2hlKCkgPSBkZWZhdWx0
OworCitXZWJCYWNrRm9yd2FyZENhY2hlOjp+V2ViQmFja0ZvcndhcmRDYWNoZSgpID0gZGVmYXVs
dDsKKworaW5saW5lIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXJPbGRlc3RDYWNoZWRQ
YWdlKCkKK3sKKyAgICBBU1NFUlQoIW1faXRlbXNXaXRoQ2FjaGVkUGFnZS5pc0VtcHR5KCkpOwor
ICAgIGNsZWFySXRlbUNhY2hlZFBhZ2UoKm1faXRlbXNXaXRoQ2FjaGVkUGFnZS5maXJzdCgpKTsK
K30KKworaW5saW5lIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXJJdGVtQ2FjaGVkUGFn
ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQoreworICAgIGl0ZW0uc2V0U3VzcGVuZGVk
UGFnZShudWxscHRyKTsKK30KKwordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpzZXRDYXBhY2l0
eSh1bnNpZ25lZCBjYXBhY2l0eSkKK3sKKyAgICBtX2NhcGFjaXR5ID0gY2FwYWNpdHk7CisKKyAg
ICB3aGlsZSAoc2l6ZSgpID4gY2FwYWNpdHkpCisgICAgICAgIGNsZWFyT2xkZXN0Q2FjaGVkUGFn
ZSgpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlZ2lzdGVySXRlbVdpdGhDYWNo
ZWRQYWdlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgQVNTRVJUKGNhcGFj
aXR5KCkpOworCisgICAgaWYgKHNpemUoKSA+PSBjYXBhY2l0eSgpKQorICAgICAgICBjbGVhck9s
ZGVzdENhY2hlZFBhZ2UoKTsKKyAgICBBU1NFUlQoc2l6ZSgpIDwgY2FwYWNpdHkoKSk7CisgICAg
bV9pdGVtc1dpdGhDYWNoZWRQYWdlLmFkZCgmaXRlbSk7Cit9CisKK3ZvaWQgV2ViQmFja0Zvcndh
cmRDYWNoZTo6dW5yZWdpc3Rlckl0ZW1XaXRoQ2FjaGVkUGFnZShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiBpdGVtKQoreworICAgIEFTU0VSVChtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuY29udGFpbnMo
Jml0ZW0pKTsKKyAgICBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UucmVtb3ZlKCZpdGVtKTsKK30KKwor
dm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhckVudHJpZXNGb3JQYWdlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKK3sKKyAgICBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiBpdGVt
c1RvUmVtb3ZlOworICAgIGZvciAoYXV0byogaXRlbSA6IG1faXRlbXNXaXRoQ2FjaGVkUGFnZSkg
eworICAgICAgICBpZiAoaXRlbS0+cGFnZUlEKCkgPT0gcGFnZS5pZGVudGlmaWVyKCkpCisgICAg
ICAgICAgICBpdGVtc1RvUmVtb3ZlLmFwcGVuZCgqaXRlbSk7CisgICAgfQorICAgIGZvciAoYXV0
byYgaXRlbSA6IGl0ZW1zVG9SZW1vdmUpCisgICAgICAgIGNsZWFySXRlbUNhY2hlZFBhZ2UoaXRl
bSk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXJFbnRyaWVzRm9yUHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgVmVjdG9yPFJlZjxXZWJCYWNrRm9y
d2FyZExpc3RJdGVtPj4gaXRlbXNUb1JlbW92ZTsKKyAgICBmb3IgKGF1dG8qIGl0ZW0gOiBtX2l0
ZW1zV2l0aENhY2hlZFBhZ2UpIHsKKyAgICAgICAgaWYgKCZpdGVtLT5zdXNwZW5kZWRQYWdlKCkt
PnByb2Nlc3MoKSA9PSAmcHJvY2VzcykKKyAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUuYXBwZW5k
KCppdGVtKTsKKyAgICB9CisgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbXNUb1JlbW92ZSkKKyAg
ICAgICAgY2xlYXJJdGVtQ2FjaGVkUGFnZShpdGVtKTsKK30KKwordm9pZCBXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpjbGVhcihBbGxvd1Byb2Nlc3NDYWNoaW5nIGFsbG93UHJvY2Vzc0NhY2hpbmcpCit7
CisgICAgYXV0byBpdGVtc1RvUmVtb3ZlID0gV1RGOjptYXAobV9pdGVtc1dpdGhDYWNoZWRQYWdl
LCBbXShhdXRvKiBpdGVtKSB7IHJldHVybiBtYWtlUmVmKCppdGVtKTsgfSk7CisgICAgZm9yIChh
dXRvJiBpdGVtIDogaXRlbXNUb1JlbW92ZSkgeworICAgICAgICBhdXRvIHByb2Nlc3MgPSBtYWtl
UmVmKGl0ZW0tPnN1c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpKTsKKyAgICAgICAgY2xlYXJJdGVt
Q2FjaGVkUGFnZShpdGVtKTsKKyAgICAgICAgcHJvY2Vzcy0+bWF5YmVTaHV0RG93bihhbGxvd1By
b2Nlc3NDYWNoaW5nKTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9pdGVtc1dpdGhDYWNoZWRQYWdl
LmlzRW1wdHkoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDBkZDI1OGJl
ZmQ0ZTgwNjRhMGE3ODhjNmQzNjMzMDA5ZTk1MjAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5oCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFJlZ2lzdHJhYmxlRG9tYWluOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU3Vz
cGVuZGVkUGFnZVByb3h5OworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7CitlbnVtIGNsYXNzIEFsbG93UHJvY2Vzc0NhY2hpbmc7CisKK2NsYXNzIFdlYkJhY2tGb3J3
YXJkQ2FjaGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdl
YkJhY2tGb3J3YXJkQ2FjaGUoKTsKKyAgICB+V2ViQmFja0ZvcndhcmRDYWNoZSgpOworCisgICAg
dm9pZCBzZXRDYXBhY2l0eSh1bnNpZ25lZCk7CisgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25z
dCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5zaXplKCk7IH0KKworICAgIHZvaWQgcmVnaXN0ZXJJ
dGVtV2l0aENhY2hlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworICAgIHZvaWQgdW5y
ZWdpc3Rlckl0ZW1XaXRoQ2FjaGVkUGFnZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CisKKyAg
ICB2b2lkIGNsZWFyKEFsbG93UHJvY2Vzc0NhY2hpbmcpOworICAgIHZvaWQgY2xlYXJFbnRyaWVz
Rm9yUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIGNsZWFyRW50cmllc0ZvclBh
Z2UoV2ViUGFnZVByb3h5Jik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjbGVhck9sZGVzdENhY2hl
ZFBhZ2UoKTsKKyAgICB2b2lkIGNsZWFySXRlbUNhY2hlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYpOworCisgICAgdW5zaWduZWQgbV9jYXBhY2l0eSB7IDAgfTsKKyAgICBMaXN0SGFzaFNl
dDxXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4gbV9pdGVtc1dpdGhDYWNoZWRQYWdlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCAwNDE4MmI5OGNhMjA3ZmMyMmE3NGRlMTkxMDY3ZDU4NTU2YmI4NDZhLi41OTUx
MjlmNzk4MTU5N2Y4ZWJhZjdhNzNlMjJjNzE4ODZhMzJiOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTkyLDYgKzkyLDcgQEAKICNpbmNsdWRlICJVc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5oIgogI2luY2x1ZGUgIldLQ29udGV4dFByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJk
Q2FjaGUuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBA
IC03NTAsNiArNzUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBQcm8KIAogYm9vbCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IG1haW5GcmFtZUlELCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZERl
bGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSBzaG91bGRE
ZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpCiB7Cisg
ICAgbV9zdXNwZW5kZWRQYWdlS2VwdFRvUHJldmVudEZsYXNoaW5nID0gbnVsbHB0cjsKICAgICBt
X2xhc3RTdXNwZW5kZWRQYWdlID0gbnVsbHB0cjsKIAogICAgIGlmICghbWFpbkZyYW1lSUQpCkBA
IC03ODAsNiArNzgyLDE1IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJ
ZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICBib29sIG5lZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZs
YXNoaW5nID0gc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlID09IFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZTo6WWVzOworICAgIGlmICghbmVlZHNTdXNwZW5kZWRQYWdlVG9QcmV2ZW50
Rmxhc2hpbmcgJiYgKCFmcm9tSXRlbSB8fCAhc2hvdWxkVXNlQmFja0ZvcndhcmRDYWNoZSgpKSkg
eworICAgICAgICBpZiAoIWZyb21JdGVtKQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qg
c3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIHRoZXJlIGlzIG5vIGFz
c29jaWF0ZWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGUgYmFjayAvIGZvcndh
cmQgY2FjaGUgaXMgZGlzYWJsZWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5k
aW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVu
ZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBz
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OwogCkBAIC03OTAsMTQgKzgwMSwyMyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIGlm
IChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQ6OlllcykKICAgICAgICAgc3VzcGVuZGVkUGFnZS0+Y2xvc2VXaXRob3V0Rmxhc2hpbmco
KTsKIAotICAgIGlmIChmcm9tSXRlbSAmJiBtX3ByZWZlcmVuY2VzLT51c2VzUGFnZUNhY2hlKCkp
Ci0gICAgICAgIGZyb21JdGVtLT5zZXRTdXNwZW5kZWRQYWdlKHN1c3BlbmRlZFBhZ2UuZ2V0KCkp
OwotCiAgICAgbV9sYXN0U3VzcGVuZGVkUGFnZSA9IG1ha2VXZWFrUHRyKCpzdXNwZW5kZWRQYWdl
KTsKLSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuYWRkU3VzcGVuZGVkUGFnZShXVEZNb3Zl
KHN1c3BlbmRlZFBhZ2UpKTsKKworICAgIGlmIChmcm9tSXRlbSAmJiBzaG91bGRVc2VCYWNrRm9y
d2FyZENhY2hlKCkpCisgICAgICAgIGZyb21JdGVtLT5zZXRTdXNwZW5kZWRQYWdlKFdURk1vdmUo
c3VzcGVuZGVkUGFnZSkpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobmVlZHNTdXNwZW5k
ZWRQYWdlVG9QcmV2ZW50Rmxhc2hpbmcpOworICAgICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9Q
cmV2ZW50Rmxhc2hpbmcgPSBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpOworICAgIH0KKwogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkVXNlQmFja0ZvcndhcmRD
YWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2FjaGUo
KSAmJiBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCkuY2FwYWNpdHko
KSA+IDA7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBzdGQ6OnVu
aXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlYSwgUmVmUHRyPFdlYkZyYW1l
UHJveHk+JiYgbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CkBAIC0xMDI3
LDcgKzEwNDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fZnVsbHNjcmVl
bkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogI2VuZGlmCiAK
LSAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQ
YWdlKCp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNo
ZSgpLmNsZWFyRW50cmllc0ZvclBhZ2UoKnRoaXMpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3dlYlBhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5y
ZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6
WWVzKTsKQEAgLTI5MjksNyArMjk0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246IGtlZXAgdXNpbmcgcHJvY2VzcyAlaSBmb3IgbmF2aWdh
dGlvbiwgcmVhc29uOiAle3B1YmxpY31zIiwgcHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVhc29uLnV0
ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIGlmIChzaG91bGRQcm9jZXNzU3dhcCkgewotICAgICAg
ICAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlID8gcHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkudGFrZVN1c3BlbmRlZFBhZ2UoKmRlc3RpbmF0aW9uU3VzcGVu
ZGVkUGFnZSkgOiBudWxscHRyOworICAgICAgICAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gZGVz
dGluYXRpb25TdXNwZW5kZWRQYWdlICYmIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZS0+YmFja0Zv
cndhcmRMaXN0SXRlbSgpID8gZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLT5iYWNrRm9yd2FyZExp
c3RJdGVtKCktPnRha2VTdXNwZW5kZWRQYWdlKCkgOiBudWxscHRyOwogICAgICAgICAgICAgaWYg
KHN1c3BlbmRlZFBhZ2UgJiYgc3VzcGVuZGVkUGFnZS0+cGFnZUlzQ2xvc2VkT3JDbG9zaW5nKCkp
CiAgICAgICAgICAgICAgICAgc3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKQEAgLTcwMjYsNiAr
NzA0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24g
cmVzZXRTdGF0ZVJlYXNvbikKICAgICBtX21haW5GcmFtZSA9IG51bGxwdHI7CiAgICAgbV9mb2N1
c2VkRnJhbWUgPSBudWxscHRyOwogICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSBudWxscHRy
OworICAgIG1fc3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFzaGluZyA9IG51bGxwdHI7CiAg
ICAgbV9sYXN0U3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTczNTUsNiArNzM3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyCiAKICAgICBpZiAo
bV9sYXN0U3VzcGVuZGVkUGFnZSkKICAgICAgICAgbV9sYXN0U3VzcGVuZGVkUGFnZS0+cGFnZUVu
dGVyZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAgIG1fc3VzcGVuZGVkUGFnZUtl
cHRUb1ByZXZlbnRGbGFzaGluZyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpl
eGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBhNDE2OTdjZDUxZWJjOWFkMjM1Yzc1YTVmMzFmM2I2YmRhZTg4MDEz
Li43MzE5YzFlODE2MTU3MDY4NTc2ODgxOGRkMzZmNzlmZjQ3ZDUzOTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTExMyw3ICsxMTEzLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUHJveHkmIGVuc3VyZVJ1bm5pbmdQcm9jZXNzKCk7Ci0g
ICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgeyByZXR1cm4gbV9wcm9jZXNzOyB9CisgICAg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzOyB9CiAg
ICAgUHJvY2Vzc0lEIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICBXZWJQcmVmZXJl
bmNlcyYgcHJlZmVyZW5jZXMoKSB7IHJldHVybiBtX3ByZWZlcmVuY2VzOyB9CkBAIC0xNTkyLDYg
KzE1OTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAg
ICB2b2lkIG5vdGlmeVByb2Nlc3NQb29sVG9QcmV3YXJtKCk7CisgICAgYm9vbCBzaG91bGRVc2VC
YWNrRm9yd2FyZENhY2hlKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBn
b1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBXZWJDb3JlOjpGcmFt
ZUxvYWRUeXBlKTsKIApAQCAtMjU0Niw2ICsyNTQ3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
bWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiB7IGZhbHNlIH07CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IG1fcHJvdmlzaW9uYWxQYWdl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFn
ZUtlcHRUb1ByZXZlbnRGbGFzaGluZzsKICAgICBXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4g
bV9sYXN0U3VzcGVuZGVkUGFnZTsKIAogI2lmIEhBVkUoUEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFkNDA3ZTY0OTJmODM5Yjg2OTA3
Y2QyMDVjN2Y3NDU0ZmYwNzI3MjUuLmNiOTU2NzI3MDBmZDFkZjU4ZjM5Y2Q2MzNjZmRmNjc5MmZi
NDI2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJVSUdhbWVwYWRQcm92aWRlci5oIgogI2luY2x1ZGUg
IldLQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgor
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2Fy
ZExpc3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAi
V2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBAIC0yMzYsNiArMjM3LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6
OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQogICAgICwgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50
ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQogICAgICwgbV9iYWNrZ3Jv
dW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9j
ZXNzQXNzZXJ0aW9ucygpOyB9KQogI2VuZGlmCisgICAgLCBtX2JhY2tGb3J3YXJkQ2FjaGUobWFr
ZVVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENhY2hlPigpKQogICAgICwgbV93ZWJQcm9jZXNzQ2Fj
aGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0aGlzKSkKIHsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0yODcsNyArMjg5LDcgQEAgV2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQogCiAgICAgbm90aWZ5VGhpc1dlYlByb2Nlc3NQb29sV2FzQ3JlYXRlZCgpOwogCi0g
ICAgdXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KCk7CisgICAgdXBkYXRlQmFja0ZvcndhcmRD
YWNoZUNhcGFjaXR5KCk7CiB9CiAKIFdlYlByb2Nlc3NQb29sOjp+V2ViUHJvY2Vzc1Bvb2woKQpA
QCAtMTA5MSw5ICsxMDkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIGlmIChtX3Byb2Nlc3NXaXRoUGFnZUNh
Y2hlID09IHByb2Nlc3MpCiAgICAgICAgIG1fcHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPSBudWxscHRy
OwogCi0gICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmVBbGxNYXRjaGluZyhbcHJvY2Vzc10oYXV0
byYgc3VzcGVuZGVkUGFnZSkgewotICAgICAgICByZXR1cm4gJnN1c3BlbmRlZFBhZ2UtPnByb2Nl
c3MoKSA9PSBwcm9jZXNzOwotICAgIH0pOworICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+Y2xlYXJF
bnRyaWVzRm9yUHJvY2VzcygqcHJvY2Vzcyk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKHByb2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpIHsKQEAgLTExMzEs
NyArMTEzMSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JS
ZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiB3CiAgICAgICAgICAgICByZXR1cm4g
KnByb2Nlc3M7CiAKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHN1c3BlbmRlZCBwYWdl
IGZvciB0aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9tYWluIGFuZCB1c2UgaXRzIHByb2Nlc3MgaWYg
d2UgZG8sIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgotICAgICAgICBpZiAoYXV0byBwcm9jZXNz
ID0gcGFnZSA/IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9t
YWluLCAqcGFnZSwgd2Vic2l0ZURhdGFTdG9yZSkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChh
dXRvIHByb2Nlc3MgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBh
Z2VQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCB3ZWJzaXRlRGF0YVN0b3JlKSkgewogICAgICAg
ICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiVXNpbmcgV2ViUHJvY2VzcyAlaSBm
cm9tIGEgU3VzcGVuZGVkUGFnZSIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAg
ICAgICAgICAgcmV0dXJuICpwcm9jZXNzOwogICAgICAgICB9CkBAIC0xMzg4LDcgKzEzODgsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmcoQ3JpdGlj
YWwpCiAgICAgUkVMRUFTRV9MT0coUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNz
UG9vbDo6aGFuZGxlTWVtb3J5UHJlc3N1cmVXYXJuaW5nIiwgdGhpcyk7CiAKIAotICAgIGNsZWFy
U3VzcGVuZGVkUGFnZXMoQWxsb3dQcm9jZXNzQ2FjaGluZzo6Tm8pOworICAgIG1fYmFja0Zvcndh
cmRDYWNoZS0+Y2xlYXIoQWxsb3dQcm9jZXNzQ2FjaGluZzo6Tm8pOwogICAgIG1fd2ViUHJvY2Vz
c0NhY2hlLT5jbGVhcigpOwogCiAgICAgaWYgKG1fcHJld2FybWVkUHJvY2VzcykKQEAgLTE1Mzks
MjUgKzE1MzksMjIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Nh
bkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYKICAgICBzZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1lQXND
YW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCh1cmxTY2hlbWUpKTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KCkKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnVwZGF0ZUJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0eSgpCiB7CiAgICAgaWYgKCFtX2NvbmZp
Z3VyYXRpb24tPnVzZXNQYWdlQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWdu
ZWQgZHVtbXkgPSAwOwogICAgIFNlY29uZHMgZHVtbXlJbnRlcnZhbDsKLSAgICB1bnNpZ25lZCBw
YWdlQ2FjaGVTaXplID0gMDsKLSAgICBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVzKExlZ2FjeUds
b2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5jYWNoZU1vZGVsKCksIGR1bW15LCBkdW1teSwgZHVt
bXksIGR1bW15SW50ZXJ2YWwsIHBhZ2VDYWNoZVNpemUpOwotCi0gICAgbV9tYXhTdXNwZW5kZWRQ
YWdlQ291bnQgPSBwYWdlQ2FjaGVTaXplOworICAgIHVuc2lnbmVkIGJhY2tGb3J3YXJkQ2FjaGVD
YXBhY2l0eSA9IDA7CisgICAgY2FsY3VsYXRlTWVtb3J5Q2FjaGVTaXplcyhMZWdhY3lHbG9iYWxT
ZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpLCBkdW1teSwgZHVtbXksIGR1bW15LCBk
dW1teUludGVydmFsLCBiYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkpOwogCi0gICAgd2hpbGUgKG1f
c3VzcGVuZGVkUGFnZXMuc2l6ZSgpID4gbV9tYXhTdXNwZW5kZWRQYWdlQ291bnQpCi0gICAgICAg
IG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlRmlyc3QoKTsKKyAgICBtX2JhY2tGb3J3YXJkQ2FjaGUt
PnNldENhcGFjaXR5KGJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0eSk7CiB9CiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogewotICAgIHVw
ZGF0ZU1heFN1c3BlbmRlZFBhZ2VDb3VudCgpOworICAgIHVwZGF0ZUJhY2tGb3J3YXJkQ2FjaGVD
YXBhY2l0eSgpOwogCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTZXRDYWNoZU1vZGVsKGNhY2hlTW9kZWwpKTsKIApAQCAtMjI2Myw2NyArMjI2MCw2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVBy
b3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGNyZWF0
ZU5ld1Byb2Nlc3MoKSwgbnVsbHB0ciwgcmVhc29uKTsKIH0KIAotUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCi17Ci0gICAgYXV0byBp
dCA9IG1fc3VzcGVuZGVkUGFnZXMuZmluZElmKFsmXShhdXRvJiBzdXNwZW5kZWRQYWdlKSB7Ci0g
ICAgICAgIHJldHVybiBzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkucmVnaXN0cmFibGVEb21haW4o
KSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiAmc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpLndlYnNp
dGVEYXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlOwotICAgIH0pOwotICAgIHJldHVybiBpdCA9PSBt
X3N1c3BlbmRlZFBhZ2VzLmVuZCgpID8gbnVsbHB0ciA6ICYoKml0KS0+cHJvY2VzcygpOwotfQot
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjphZGRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxT
dXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKLXsKLSAgICBpZiAoIW1fbWF4U3Vz
cGVuZGVkUGFnZUNvdW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9zdXNwZW5kZWRQ
YWdlcy5zaXplKCkgPj0gbV9tYXhTdXNwZW5kZWRQYWdlQ291bnQpCi0gICAgICAgIG1fc3VzcGVu
ZGVkUGFnZXMucmVtb3ZlRmlyc3QoKTsKLQotICAgIG1fc3VzcGVuZGVkUGFnZXMuYXBwZW5kKFdU
Rk1vdmUoc3VzcGVuZGVkUGFnZSkpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVB
bGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MpCi17Ci0gICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmVBbGxNYXRjaGluZyhb
JnBhZ2UsIHByb2Nlc3NdKGF1dG8mIHN1c3BlbmRlZFBhZ2UpIHsKLSAgICAgICAgcmV0dXJuICZz
dXNwZW5kZWRQYWdlLT5wYWdlKCkgPT0gJnBhZ2UgJiYgKCFwcm9jZXNzIHx8ICZzdXNwZW5kZWRQ
YWdlLT5wcm9jZXNzKCkgPT0gcHJvY2Vzcyk7Ci0gICAgfSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjp0YWtlU3VzcGVuZGVkUGFnZShT
dXNwZW5kZWRQYWdlUHJveHkmIHN1c3BlbmRlZFBhZ2UpCi17Ci0gICAgcmV0dXJuIG1fc3VzcGVu
ZGVkUGFnZXMudGFrZUZpcnN0KFsmc3VzcGVuZGVkUGFnZV0oYXV0byYgaXRlbSkgewotICAgICAg
ICByZXR1cm4gaXRlbS5nZXQoKSA9PSAmc3VzcGVuZGVkUGFnZTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlU3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkm
IHN1c3BlbmRlZFBhZ2UpCi17Ci0gICAgYXV0byBpdCA9IG1fc3VzcGVuZGVkUGFnZXMuZmluZElm
KFsmc3VzcGVuZGVkUGFnZV0oYXV0byYgaXRlbSkgewotICAgICAgICByZXR1cm4gaXRlbS5nZXQo
KSA9PSAmc3VzcGVuZGVkUGFnZTsKLSAgICB9KTsKLSAgICBpZiAoaXQgIT0gbV9zdXNwZW5kZWRQ
YWdlcy5lbmQoKSkKLSAgICAgICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmUoaXQpOwotfQotCi1i
b29sIFdlYlByb2Nlc3NQb29sOjpoYXNTdXNwZW5kZWRQYWdlRm9yKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgV2ViUGFnZVByb3h5JiBwYWdlKSBjb25zdAotewotICAgIHJldHVybiBtX3N1c3Bl
bmRlZFBhZ2VzLmZpbmRJZihbJnByb2Nlc3MsICZwYWdlXShhdXRvJiBzdXNwZW5kZWRQYWdlKSB7
Ci0gICAgICAgIHJldHVybiAmc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpID09ICZwcm9jZXNzICYm
ICZzdXNwZW5kZWRQYWdlLT5wYWdlKCkgPT0gJnBhZ2U7Ci0gICAgfSkgIT0gbV9zdXNwZW5kZWRQ
YWdlcy5lbmQoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJTdXNwZW5kZWRQYWdl
cyhBbGxvd1Byb2Nlc3NDYWNoaW5nIGFsbG93UHJvY2Vzc0NhY2hpbmcpCi17Ci0gICAgSGFzaFNl
dDxSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzOwotICAgIGZvciAoYXV0byYgc3Vz
cGVuZGVkUGFnZSA6IG1fc3VzcGVuZGVkUGFnZXMpCi0gICAgICAgIHByb2Nlc3Nlcy5hZGQoJnN1
c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKSk7Ci0KLSAgICBtX3N1c3BlbmRlZFBhZ2VzLmNsZWFyKCk7
Ci0KLSAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
Pm1heWJlU2h1dERvd24oYWxsb3dQcm9jZXNzQ2FjaGluZyk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmFkZE1vY2tNZWRpYURldmljZShjb25zdCBNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkK
IHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggNjEyZTM5MmU0MzZhNWIzNTE2Njk5MzhkNjQ4ODdiYTM2ZjFmN2E4
Mi4uNTFjOWM0YjU1NGEyM2IzZmY5YTBiMWQyMGRiMTQwMjExZDNkMjU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC05NSw2ICs5NSw3IEBAIHN0cnVjdCBN
b2NrTWVkaWFEZXZpY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJCYWNrRm9y
d2FyZENhY2hlOwogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI7CiBj
bGFzcyBVSUdhbWVwYWQ7CiBjbGFzcyBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwpA
QCAtMTQ5LDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZv
aWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgV2ViQmFja0ZvcndhcmRD
YWNoZSYgYmFja0ZvcndhcmRDYWNoZSgpIHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDYWNoZS5nZXQo
KTsgfQogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVj
dElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2Vp
dmVyKQpAQCAtNDc0LDE3ICs0NzcsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByb2Nlc3NGb3JO
YXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIGNvbnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2VzcywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94
eSosIGNvbnN0IFN0cmluZyYpPiYmKTsKIAotICAgIC8vIFN1c3BlbmRlZFBhZ2VQcm94eSBtYW5h
Z2VtZW50LgotICAgIHZvaWQgYWRkU3VzcGVuZGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVu
ZGVkUGFnZVByb3h5PiYmKTsKLSAgICB2b2lkIHJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFn
ZShXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkqID0gbnVsbHB0cik7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gdGFrZVN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVk
UGFnZVByb3h5Jik7Ci0gICAgdm9pZCByZW1vdmVTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQ
cm94eSYpOwotICAgIGJvb2wgaGFzU3VzcGVuZGVkUGFnZUZvcihXZWJQcm9jZXNzUHJveHkmLCBX
ZWJQYWdlUHJveHkmKSBjb25zdDsKLSAgICB1bnNpZ25lZCBtYXhTdXNwZW5kZWRQYWdlQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX21heFN1c3BlbmRlZFBhZ2VDb3VudDsgfQotICAgIFJlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViUGFnZVByb3h5JiwgV2Vic2l0ZURhdGFTdG9y
ZSYpOwotCi0gICAgdm9pZCBjbGVhclN1c3BlbmRlZFBhZ2VzKEFsbG93UHJvY2Vzc0NhY2hpbmcp
OwotCiAgICAgdm9pZCBkaWRSZWFjaEdvb2RUaW1lVG9QcmV3YXJtKCk7CiAKICAgICB2b2lkIGRp
ZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBjb25zdCBXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24mKTsKQEAgLTU5MSw3ICs1ODMs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB0cnlQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9u
KFdlYlByb2Nlc3NQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAK
LSAgICB2b2lkIHVwZGF0ZU1heFN1c3BlbmRlZFBhZ2VDb3VudCgpOworICAgIHZvaWQgdXBkYXRl
QmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5KCk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3Rh
dGljIGZsb2F0IGRpc3BsYXlCcmlnaHRuZXNzKCk7CkBAIC03NzIsOCArNzY0LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogI2VuZGlmCiAKLSAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5Pj4gbV9zdXNwZW5kZWRQYWdlczsKLSAgICB1bnNpZ25lZCBtX21heFN1c3BlbmRl
ZFBhZ2VDb3VudCB7IDAgfTsKKyAgICBVbmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4gbV9i
YWNrRm9yd2FyZENhY2hlOwogCiAgICAgVW5pcXVlUmVmPFdlYlByb2Nlc3NDYWNoZT4gbV93ZWJQ
cm9jZXNzQ2FjaGU7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgUmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9t
YWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA2MjdkMmQ5OWNiM2VjNzI3MGI4NzY3YmEzMDZkOGZi
NTA5YThiZGMxLi40YmJmNmI3MjRmNThhMTg0YmQ2YzU0ZjMwOWQ1MTZlMGY5NGU0NzlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNp
bmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRD
YWNoZS5oIgogI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCkBAIC03MjUsNyArNzI2LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgV2FsbFRpbWUKICAgICBhdXRvIHdlYlByb2Nlc3NBY2Nlc3NUeXBl
ID0gY29tcHV0ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoZGF0YVR5cGVzLCAh
aXNQZXJzaXN0ZW50KCkpOwogICAgIGlmICh3ZWJQcm9jZXNzQWNjZXNzVHlwZSAhPSBQcm9jZXNz
QWNjZXNzVHlwZTo6Tm9uZSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT5jbGVhclN1c3BlbmRlZFBh
Z2VzKEFsbG93UHJvY2Vzc0NhY2hpbmc6Ok5vKTsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5i
YWNrRm9yd2FyZENhY2hlKCkuY2xlYXIoQWxsb3dQcm9jZXNzQ2FjaGluZzo6Tm8pOwogICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLmNsZWFyKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZGFhYTE3ZWI2YmNiMjY2NDg2NDQ4NDU1Y2E2MWViYjRlMmRjOGQ3ZS4uYzcxZjAyMTliMzJm
NDZiNzI4Mjg2YzFkOGFiMGI4OGZjNzcwZDJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTk4LDYgKzMxOTgsOCBAQAogCQk0NDU5
OTg0MTIyODMzRTYwMDBFNjEzNzMgLyogU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NDlEOTBEODIxRkQ2M0ZFMDBGNjc3QzAgLyogTG9jYWxBdXRoZW50
aWNhdGlvblNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NEE0ODFDNjIxRjJEMjdCMDBGMkY5MTkgLyogQ2xpZW50Q2VydGlmaWNhdGVBdXRo
ZW50aWNhdGlvblhQQ0NvbnN0YW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGllbnRDZXJ0
aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0Zvcndh
cmRDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2MDMwMTFCMjM0QkUz
MUUwMDlDODIxNyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEw
IC8qIFBpbmdMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBp
bmdMb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4MjUsNiArNzgyNyw4
IEBACiAJCQkJMUEwRjI5RTExMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuY3Bw
ICovLAogCQkJCTFBMEYyOUUyMTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1N0b3JlLmgg
Ki8sCiAJCQkJMUE2MDIyNDkxOEMxNkIwODAwQzNFOEM5IC8qIFZpc2l0ZWRMaW5rU3RvcmUubWVz
c2FnZXMuaW4gKi8sCisJCQkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3
YXJkQ2FjaGUuY3BwICovLAorCQkJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIxNyAvKiBXZWJCYWNr
Rm9yd2FyZENhY2hlLmggKi8sCiAJCQkJQkM3MkJBMUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJh
Y2tGb3J3YXJkTGlzdC5jcHAgKi8sCiAJCQkJQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdC5oICovLAogCQkJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBX
ZWJDb2xvclBpY2tlci5jcHAgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380465</attachid>
            <date>2019-10-08 14:36:55 -0700</date>
            <delta_ts>2019-10-11 13:08:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202660-20191008143654.patch</filename>
            <type>text/plain</type>
            <size>44543</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhMjE1ZGM5OTY1ZWUyZTQ5
OGEyNzRkMDhlMjBhZTJhNmM2MzU5ZjUuLjI0MzRmMzAyMGJjNzIxMGRkYjhjOGUyYjdkZmRlNjdm
MzlmZDhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTktMTAtMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN1c3BlbmRlZFBhZ2UgbG9n
aWMgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBuZXcgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjYwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBTdXNw
ZW5kZWRQYWdlIGxvZ2ljIGZyb20gV2ViUHJvY2Vzc1Bvb2wgdG8gbmV3IFdlYkJhY2tGb3J3YXJk
Q2FjaGUgY2xhc3MuIFRoaXMgaXMKKyAgICAgICAgYSBmaXJzdCBzdGVwIHRvd2FyZHMgaW1wbGVt
ZW50aW5nIGJhY2sgLyBmb3J3YXJkIGNhY2hlIGhhbmRsaW5nIGluIHRoZSBVSVByb2Nlc3MuCisK
KyAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAgMS4gU3Vz
cGVuZGVkUGFnZVByb3h5IG9iamVjdHMgYXJlIG5vdyBub3JtYWxseSBvd25lZCBieSB0aGVpciBh
c3NvY2lhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KKyAgICAgICAgICAgKFNpbWlsYXJseSB0
byBDYWNoZWRQYWdlIG9iamVjdHMgYmVpbmcgb3duZWQgYnkgdGhlaXIgSGlzdG9yeUl0ZW0gaW4g
V2ViQ29yZSkgaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgV2ViUHJvY2Vzc1Bvb2wuCisgICAg
ICAgIDIuIEEgbmV3IFdlYkJhY2tGb3J3YXJkQ2FjaGUgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBj
YXAgdGhlIG51bWJlciBvZiBjYWNoZWQgcGFnZXMgYW5kIGNsZWFyCisgICAgICAgICAgIHRoZW0g
KHNpbWlsYXJ5IHRvIHRoZSBQYWdlQ2FjaGUgaW4gV2ViQ29yZSkuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRha2VTdXNwZW5kZWRQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c3VzcGVuZGVkUGFnZSBjb25zdCk6
CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX21heGltdW1TdXNwZW5kZWRQYWdlQ291bnRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFn
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVk
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpzZXRCYWNr
Rm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5Ojpz
dXNwZW5zaW9uVGltZWRPdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhck9sZGVzdENhY2hl
ZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVhckl0ZW1D
YWNoZWRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2Fw
YWNpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpyZWdpc3Rlckl0
ZW1XaXRoQ2FjaGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6
OnVucmVnaXN0ZXJJdGVtV2l0aENhY2hlZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZENhY2hlOjpjbGVhckVudHJpZXNGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRDYWNoZTo6Y2xlYXJFbnRyaWVzRm9yUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRDYWNoZTo6Y2FwYWNpdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG91bGRVc2VCYWNrRm9y
d2FyZENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3NDYWNoZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVtb3J5UHJlc3N1
cmVXYXJuaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUJhY2tG
b3J3YXJkQ2FjaGVDYXBhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEwLTA3ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm92aWRlIG9wdGlvbnMgZm9yIERUVFog
dG8gaGFwcGVuIGluIG1vcmUgc2l0dWF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCBkYWY0ZGEyMjc3Y2I0NjdmNzgyNDc4YTUw
NTY5NWFmNjUxZGEyOTRjLi41YWRmNzM3M2JhYmZkNTM4ZTdkNTk4NTA5NzQ1YTQzMDU2MDg3ODRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIK
IAogI2luY2x1ZGUgIlN1c3BlbmRlZFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgpAQCAtNTQsNyAr
NTUsOCBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgp
CiAgICAgQVNTRVJUKGFsbEl0ZW1zKCkuZ2V0KG1faXRlbVN0YXRlLmlkZW50aWZpZXIpID09IHRo
aXMpOwogICAgIGFsbEl0ZW1zKCkucmVtb3ZlKG1faXRlbVN0YXRlLmlkZW50aWZpZXIpOwogCi0g
ICAgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpOworICAgIGlmIChtX3N1c3Bl
bmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRl
bShudWxscHRyKTsKIH0KIAogSGFzaE1hcDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKj4mIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmFsbEl0ZW1zKCkK
QEAgLTE1OSwyNyArMTYxLDI3IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlz
Q2xvbmUoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgb3RoZXIpCiAgICAgcmV0dXJuIGhh
c1NhbWVGcmFtZXMobWFpbkZyYW1lU3RhdGUsIG90aGVyTWFpbkZyYW1lU3RhdGUpOwogfQogCi12
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFn
ZVByb3h5KiBwYWdlKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQ
YWdlKHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkK
IHsKLSAgICBpZiAobV9zdXNwZW5kZWRQYWdlID09IHBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAg
ICBpZiAobV9zdXNwZW5kZWRQYWdlKQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPnNldEJhY2tG
b3J3YXJkTGlzdEl0ZW0obnVsbHB0cik7CiAKLSAgICByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVBy
b2Nlc3NQb29sKCk7Ci0gICAgbV9zdXNwZW5kZWRQYWdlID0gbWFrZVdlYWtQdHIocGFnZSk7Cisg
ICAgbV9zdXNwZW5kZWRQYWdlID0gV1RGTW92ZShzdXNwZW5kZWRQYWdlKTsKKworICAgIGlmICht
X3N1c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRM
aXN0SXRlbSh0aGlzKTsKIH0KIAotU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjpzdXNwZW5kZWRQYWdlKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnRha2VTdXNwZW5kZWRQYWdlKCkKIHsK
LSAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOworICAgIGlmIChtX3N1c3BlbmRlZFBh
Z2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRMaXN0SXRlbShudWxs
cHRyKTsKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3N1c3BlbmRlZFBhZ2UsIG51bGxwdHIp
OwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OnJlbW92ZVN1c3BlbmRlZFBhZ2VG
cm9tUHJvY2Vzc1Bvb2woKQorU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpzdXNwZW5kZWRQYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc3VzcGVuZGVkUGFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5yZW1vdmVTdXNwZW5kZWRQYWdlKCptX3N1c3BlbmRlZFBhZ2UpOwotICAgIEFTU0VS
VCghbV9zdXNwZW5kZWRQYWdlKTsKKyAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOwog
fQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oCmluZGV4IDZkNjdlYzBiMmVhYzAxODVhZWQ5NzFlODlkMzk0OGJhZDNh
N2UzM2UuLmRkYzM4NzcyZjc4MzczYjg5NDQ0NDNjYTRmNTY0YTAwOTFkNDE1ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTc3LDggKzc3
LDkgQEAgcHVibGljOgogICAgIFZpZXdTbmFwc2hvdCogc25hcHNob3QoKSBjb25zdCB7IHJldHVy
biBtX2l0ZW1TdGF0ZS5zbmFwc2hvdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0U25hcHNob3QoUmVm
UHRyPFZpZXdTbmFwc2hvdD4mJiBzbmFwc2hvdCkgeyBtX2l0ZW1TdGF0ZS5zbmFwc2hvdCA9IFdU
Rk1vdmUoc25hcHNob3QpOyB9CiAjZW5kaWYKLSAgICB2b2lkIHNldFN1c3BlbmRlZFBhZ2UoU3Vz
cGVuZGVkUGFnZVByb3h5Kik7CisgICAgdm9pZCBzZXRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVl
X3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYpOwogICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3Vz
cGVuZGVkUGFnZSgpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+IHRha2VTdXNwZW5kZWRQYWdlKCk7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
Y2hhciogbG9nZ2luZ1N0cmluZygpOwpAQCAtODcsMTMgKzg4LDExIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUm
JiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHJlbW92ZVN1c3BlbmRlZFBh
Z2VGcm9tUHJvY2Vzc1Bvb2woKTsKLQogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBtX2l0
ZW1TdGF0ZTsKICAgICBVUkwgbV9yZXNvdXJjZURpcmVjdG9yeVVSTDsKICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyOwotICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBt
X3N1c3BlbmRlZFBhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4g
bV9zdXNwZW5kZWRQYWdlOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0+PiBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMzcz
ZDY1NWYxMGFmOGIzODAzNWI5NmJhYzdkOGYyOTUyYjBhNjhiYS4uMWU2MWUyM2IxMThhYTgyOGZl
YmZhNTg5YTJjNzk0NzM0MzQ5YTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0yNjAsNiArMjYwLDcgQEAg
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCiBVSVByb2Nlc3MvVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCiBVSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAK
K1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcAogVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAKIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5jcHAKIFVJUHJvY2Vzcy9XZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBjMmE5NTY2MjM4Mjk0MTM2NDQyNDEy
NzNkOTljMjg3ZjViZTZhZWQxLi42N2MyMDU2N2Q1MzYyODY1NDRjZTc1ZTU3NGRmOGIzOTllNDQz
YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVJbnRl
cm5hbC5oIgorI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2ltcG9ydCAiV2ViQ2Vy
dGlmaWNhdGVJbmZvLmgiCiAjaW1wb3J0ICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NDYWNoZS5oIgpAQCAtNTI2LDcgKzUyNyw3IEBAIC0gKHNpemVfdClfcGx1
Z2luUHJvY2Vzc0NvdW50CiAKIC0gKE5TVUludGVnZXIpX21heGltdW1TdXNwZW5kZWRQYWdlQ291
bnQKIHsKLSAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5tYXhTdXNwZW5kZWRQYWdlQ291bnQoKTsK
KyAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5iYWNrRm9yd2FyZENhY2hlKCkuY2FwYWNpdHkoKTsK
IH0KIAogLSAoTlNVSW50ZWdlcilfcHJvY2Vzc0NhY2hlQ2FwYWNpdHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDc5MjRlNGVmM2RjMjY0
MGVkOGM0YjcwOWYzNzZkZjM4ZTAxZWVlODAuLjY5YzI0YTllZTAzZTZmZTAyOTZmYzMxM2RlMmU3
NDViNzIzMDY5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTQzLDYgKzQ0LDIyIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBzdXNwZW5z
aW9uVGltZW91dCB7IDEwX3MgfTsKIAorc3RhdGljIEhhc2hTZXQ8U3VzcGVuZGVkUGFnZVByb3h5
Kj4mIGFsbFN1c3BlbmRlZFBhZ2VzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTdXNwZW5kZWRQYWdlUHJveHkqPj4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CisKK1Jl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IFN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3Vz
cGVuZGVkUGFnZVByb2Nlc3MoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFT
dG9yZSkKK3sKKyAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBhbGxTdXNwZW5kZWRQYWdl
cygpKSB7CisgICAgICAgIGF1dG8mIHByb2Nlc3MgPSBzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCk7
CisgICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBw
cm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnByb2Nl
c3Mud2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUpCisgICAgICAgICAgICByZXR1cm4g
JnByb2Nlc3M7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYgIUxPR19ESVNB
QkxFRAogc3RhdGljIGNvbnN0IEhhc2hTZXQ8SVBDOjpTdHJpbmdSZWZlcmVuY2U+JiBtZXNzYWdl
TmFtZXNUb0lnbm9yZVdoaWxlU3VzcGVuZGVkKCkKIHsKQEAgLTg5LDYgKzEwNiw3IEBAIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVm
PFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKKyAgICBhbGxT
dXNwZW5kZWRQYWdlcygpLmFkZCh0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1c3Bl
bmRlZFBhZ2VDb3VudCgpOwogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0
aGlzKTsKIApAQCAtOTksNiArMTE3LDcgQEAgU3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQ
YWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYKIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCiB7CiAgICAgbV9wcm9jZXNzLT5k
ZWNyZW1lbnRTdXNwZW5kZWRQYWdlQ291bnQoKTsKKyAgICBhbGxTdXNwZW5kZWRQYWdlcygpLnJl
bW92ZSh0aGlzKTsKIAogICAgIGlmIChtX3JlYWR5VG9VbnN1c3BlbmRIYW5kbGVyKSB7CiAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVhZHlUb1Vuc3VzcGVuZEhhbmRsZXIgPSBX
VEZNb3ZlKG1fcmVhZHlUb1Vuc3VzcGVuZEhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMTIzLDYg
KzE0MiwxOCBAQCBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogICAg
IH0pOwogfQogCit2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6c2V0QmFja0ZvcndhcmRMaXN0SXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQoreworICAgIEFTU0VSVCghbV9iYWNrRm9y
d2FyZExpc3RJdGVtIHx8ICFpdGVtKTsKKyAgICBpZiAobV9iYWNrRm9yd2FyZExpc3RJdGVtKQor
ICAgICAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCkudW5yZWdp
c3Rlckl0ZW1XaXRoQ2FjaGVkUGFnZSgqbV9iYWNrRm9yd2FyZExpc3RJdGVtKTsKKworICAgIG1f
YmFja0ZvcndhcmRMaXN0SXRlbSA9IGl0ZW07CisKKyAgICBpZiAobV9iYWNrRm9yd2FyZExpc3RJ
dGVtKQorICAgICAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCku
cmVnaXN0ZXJJdGVtV2l0aENhY2hlZFBhZ2UoKm1fYmFja0ZvcndhcmRMaXN0SXRlbSk7Cit9CisK
IHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp3YWl0VW50aWxSZWFkeVRvVW5zdXNwZW5kKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKG1fcmVhZHlUb1Vuc3VzcGVuZEhhbmRsZXIpCkBAIC0yMTYsNyArMjQ3
LDEwIEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRQcm9jZXNzUmVxdWVzdFRvU3VzcGVu
ZChTdXNwZW5zaW9uU3RhdGUgbmV3U3VzcGVuc2lvCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6
c3VzcGVuc2lvblRpbWVkT3V0KCkKIHsKICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dh
cHBpbmcsICIlcCAtIFN1c3BlbmRlZFBhZ2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkgZGVz
dHJveWluZyB0aGUgc3VzcGVuZGVkIHBhZ2UgYmVjYXVzZSBpdCBmYWlsZWQgdG8gc3VzcGVuZCBp
biB0aW1lIiwgdGhpcyk7Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlbW92ZVN1c3Bl
bmRlZFBhZ2UoKnRoaXMpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8LgorICAgIGlmIChtX2JhY2tG
b3J3YXJkTGlzdEl0ZW0pIHsKKyAgICAgICAgQVNTRVJUKG1fYmFja0ZvcndhcmRMaXN0SXRlbS0+
c3VzcGVuZGVkUGFnZSgpID09IHRoaXMpOworICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW0t
PnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7IC8vIFdpbGwgZGVzdHJveSB8dGhpc3wuCisgICAg
fQogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCAxYWMzZDg4MTUxYjk3NzQ1NTE3MTJjOTNi
YTZkNmYyMDk4YTVmNzIyLi40NmU2ZGM2ODhhYzc0NzIxOWI1MjJlN2IxNWVmNzg2ZTc5ODY2ZmEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAt
MzYsNyArMzYsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsK
K2NsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworY2xhc3MgV2Vi
c2l0ZURhdGFTdG9yZTsKIAogZW51bSBjbGFzcyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVy
aW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgOiBib29sIHsgTm8sIFllcyB9OwogCkBAIC00
NiwxMSArNDgsMTYgQEAgcHVibGljOgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJv
eHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFp
bkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSk7CiAgICAgflN1c3BlbmRlZFBhZ2VQcm94eSgpOwogCisgICAgc3RhdGljIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdl
YlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRl
RGF0YVN0b3JlJik7CisKICAgICBXZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2U7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3dlYlBhZ2VJRDsgfQogICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIHsg
cmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBt
YWluRnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSUQ7IH0KIAorICAgIHZvaWQg
c2V0QmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CisgICAgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogYmFja0ZvcndhcmRMaXN0SXRlbSgpIHsgcmV0dXJuIG1fYmFj
a0ZvcndhcmRMaXN0SXRlbTsgfQorCiAgICAgYm9vbCBwYWdlSXNDbG9zZWRPckNsb3NpbmcoKSBj
b25zdDsKIAogICAgIHZvaWQgd2FpdFVudGlsUmVhZHlUb1Vuc3VzcGVuZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN1c3BlbmRlZFBhZ2VQcm94eSopPiYmKTsKQEAgLTc3LDYgKzg0LDcgQEAgcHJp
dmF0ZToKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3dlYlBhZ2VJRDsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7Cisg
ICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbV9iYWNrRm9yd2FyZExpc3RJdGVtIHsgbnVsbHB0
ciB9OwogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtX21haW5GcmFtZUlEOwogICAgIGJv
b2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07CiAgICAgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRl
cmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIG1fc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxF
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHsgU2hvdWxkRGVsYXlDbG9zaW5nVW50
aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlOjpObyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODcz
YWEwNmQ0MmIxMTZjMDU0NTkzYTJiNjg4ODI5NmYwZDNkM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTAsMCAr
MSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
QmFja0ZvcndhcmRDYWNoZS5oIgorCisjaW5jbHVkZSAiU3VzcGVuZGVkUGFnZVByb3h5LmgiCisj
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViQmFja0ZvcndhcmRDYWNoZTo6V2ViQmFja0ZvcndhcmRDYWNoZSgpID0gZGVmYXVsdDsK
KworV2ViQmFja0ZvcndhcmRDYWNoZTo6fldlYkJhY2tGb3J3YXJkQ2FjaGUoKSA9IGRlZmF1bHQ7
CisKK2lubGluZSB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmNsZWFyT2xkZXN0Q2FjaGVkUGFn
ZSgpCit7CisgICAgQVNTRVJUKCFtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuaXNFbXB0eSgpKTsKKyAg
ICBjbGVhckl0ZW1DYWNoZWRQYWdlKCptX2l0ZW1zV2l0aENhY2hlZFBhZ2UuZmlyc3QoKSk7Cit9
CisKK2lubGluZSB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmNsZWFySXRlbUNhY2hlZFBhZ2Uo
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBpdGVtLnNldFN1c3BlbmRlZFBh
Z2UobnVsbHB0cik7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6c2V0Q2FwYWNpdHko
dW5zaWduZWQgY2FwYWNpdHkpCit7CisgICAgbV9jYXBhY2l0eSA9IGNhcGFjaXR5OworCisgICAg
d2hpbGUgKHNpemUoKSA+IGNhcGFjaXR5KQorICAgICAgICBjbGVhck9sZGVzdENhY2hlZFBhZ2Uo
KTsKK30KKwordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZWdpc3Rlckl0ZW1XaXRoQ2FjaGVk
UGFnZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQoreworICAgIEFTU0VSVChjYXBhY2l0
eSgpKTsKKworICAgIGlmIChzaXplKCkgPj0gY2FwYWNpdHkoKSkKKyAgICAgICAgY2xlYXJPbGRl
c3RDYWNoZWRQYWdlKCk7CisgICAgQVNTRVJUKHNpemUoKSA8IGNhcGFjaXR5KCkpOworICAgIG1f
aXRlbXNXaXRoQ2FjaGVkUGFnZS5hZGQoJml0ZW0pOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJk
Q2FjaGU6OnVucmVnaXN0ZXJJdGVtV2l0aENhY2hlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYgaXRlbSkKK3sKKyAgICBBU1NFUlQobV9pdGVtc1dpdGhDYWNoZWRQYWdlLmNvbnRhaW5zKCZp
dGVtKSk7CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZSgmaXRlbSk7Cit9CisKK3Zv
aWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6Y2xlYXJFbnRyaWVzRm9yUGFnZShXZWJQYWdlUHJveHkm
IHBhZ2UpCit7CisgICAgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gaXRlbXNU
b1JlbW92ZTsKKyAgICBmb3IgKGF1dG8qIGl0ZW0gOiBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UpIHsK
KyAgICAgICAgaWYgKGl0ZW0tPnBhZ2VJRCgpID09IHBhZ2UuaWRlbnRpZmllcigpKQorICAgICAg
ICAgICAgaXRlbXNUb1JlbW92ZS5hcHBlbmQoKml0ZW0pOworICAgIH0KKyAgICBmb3IgKGF1dG8m
IGl0ZW0gOiBpdGVtc1RvUmVtb3ZlKQorICAgICAgICBjbGVhckl0ZW1DYWNoZWRQYWdlKGl0ZW0p
OworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmNsZWFyRW50cmllc0ZvclByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIFZlY3RvcjxSZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4+IGl0ZW1zVG9SZW1vdmU7CisgICAgZm9yIChhdXRvKiBpdGVtIDogbV9pdGVt
c1dpdGhDYWNoZWRQYWdlKSB7CisgICAgICAgIGlmICgmaXRlbS0+c3VzcGVuZGVkUGFnZSgpLT5w
cm9jZXNzKCkgPT0gJnByb2Nlc3MpCisgICAgICAgICAgICBpdGVtc1RvUmVtb3ZlLmFwcGVuZCgq
aXRlbSk7CisgICAgfQorICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zVG9SZW1vdmUpCisgICAg
ICAgIGNsZWFySXRlbUNhY2hlZFBhZ2UoaXRlbSk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRD
YWNoZTo6Y2xlYXIoQWxsb3dQcm9jZXNzQ2FjaGluZyBhbGxvd1Byb2Nlc3NDYWNoaW5nKQorewor
ICAgIGF1dG8gaXRlbXNUb1JlbW92ZSA9IFdURjo6bWFwKG1faXRlbXNXaXRoQ2FjaGVkUGFnZSwg
W10oYXV0byogaXRlbSkgeyByZXR1cm4gbWFrZVJlZigqaXRlbSk7IH0pOworICAgIGZvciAoYXV0
byYgaXRlbSA6IGl0ZW1zVG9SZW1vdmUpIHsKKyAgICAgICAgYXV0byBwcm9jZXNzID0gbWFrZVJl
ZihpdGVtLT5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSk7CisgICAgICAgIGNsZWFySXRlbUNh
Y2hlZFBhZ2UoaXRlbSk7CisgICAgICAgIHByb2Nlc3MtPm1heWJlU2h1dERvd24oYWxsb3dQcm9j
ZXNzQ2FjaGluZyk7CisgICAgfQorCisgICAgQVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5p
c0VtcHR5KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwZGQyNThiZWZk
NGU4MDY0YTBhNzg4YzZkMzYzMzAwOWU5NTIwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBS
ZWdpc3RyYWJsZURvbWFpbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFN1c3Bl
bmRlZFBhZ2VQcm94eTsKK2NsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CitjbGFzcyBXZWJQ
YWdlUHJveHk7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3Jl
OworZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nOworCitjbGFzcyBXZWJCYWNrRm9yd2Fy
ZENhY2hlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXZWJC
YWNrRm9yd2FyZENhY2hlKCk7CisgICAgfldlYkJhY2tGb3J3YXJkQ2FjaGUoKTsKKworICAgIHZv
aWQgc2V0Q2FwYWNpdHkodW5zaWduZWQpOworICAgIHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9jYXBhY2l0eTsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2l0ZW1zV2l0aENhY2hlZFBhZ2Uuc2l6ZSgpOyB9CisKKyAgICB2b2lkIHJlZ2lzdGVySXRl
bVdpdGhDYWNoZWRQYWdlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJJdGVtV2l0aENhY2hlZFBhZ2UoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworCisgICAg
dm9pZCBjbGVhcihBbGxvd1Byb2Nlc3NDYWNoaW5nKTsKKyAgICB2b2lkIGNsZWFyRW50cmllc0Zv
clByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCBjbGVhckVudHJpZXNGb3JQYWdl
KFdlYlBhZ2VQcm94eSYpOworCitwcml2YXRlOgorICAgIHZvaWQgY2xlYXJPbGRlc3RDYWNoZWRQ
YWdlKCk7CisgICAgdm9pZCBjbGVhckl0ZW1DYWNoZWRQYWdlKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mKTsKKworICAgIHVuc2lnbmVkIG1fY2FwYWNpdHkgeyAwIH07CisgICAgTGlzdEhhc2hTZXQ8
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRoQ2FjaGVkUGFnZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggMDQxODJiOThjYTIwN2ZjMjJhNzRkZTE5MTA2N2Q1ODU1NmJiODQ2YS4uNTk1MTI5
Zjc5ODE1OTdmOGViYWY3YTczZTIyYzcxODg2YTMyYjliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAjaW5jbHVkZSAiVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZENh
Y2hlLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgpAQCAt
NzUwLDYgKzc1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgUHJvCiAKIGJvb2wgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJRCwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgc2hvdWxkRGVs
YXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogeworICAg
IG1fc3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFzaGluZyA9IG51bGxwdHI7CiAgICAgbV9s
YXN0U3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1haW5GcmFtZUlEKQpAQCAt
NzgwLDYgKzc4MiwxNSBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQ
b3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCisgICAgYm9vbCBuZWVkc1N1c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFz
aGluZyA9IHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSA9PSBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGU6OlllczsKKyAgICBpZiAoIW5lZWRzU3VzcGVuZGVkUGFnZVRvUHJldmVudEZs
YXNoaW5nICYmICghZnJvbUl0ZW0gfHwgIXNob3VsZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSkpIHsK
KyAgICAgICAgaWYgKCFmcm9tSXRlbSkKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogTm90IHN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSB0aGVyZSBpcyBubyBhc3Nv
Y2lhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0iLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNw
ZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlIGJhY2sgLyBmb3J3YXJk
IGNhY2hlIGlzIGRpc2FibGVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGlu
ZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRl
ZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hv
dWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsK
IApAQCAtNzkwLDE0ICs4MDEsMjMgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICBpZiAo
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50OjpZZXMpCiAgICAgICAgIHN1c3BlbmRlZFBhZ2UtPmNsb3NlV2l0aG91dEZsYXNoaW5nKCk7
CiAKLSAgICBpZiAoZnJvbUl0ZW0gJiYgbV9wcmVmZXJlbmNlcy0+dXNlc1BhZ2VDYWNoZSgpKQot
ICAgICAgICBmcm9tSXRlbS0+c2V0U3VzcGVuZGVkUGFnZShzdXNwZW5kZWRQYWdlLmdldCgpKTsK
LQogICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBtYWtlV2Vha1B0cigqc3VzcGVuZGVkUGFnZSk7
Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmFkZFN1c3BlbmRlZFBhZ2UoV1RGTW92ZShz
dXNwZW5kZWRQYWdlKSk7CisKKyAgICBpZiAoZnJvbUl0ZW0gJiYgc2hvdWxkVXNlQmFja0Zvcndh
cmRDYWNoZSgpKQorICAgICAgICBmcm9tSXRlbS0+c2V0U3VzcGVuZGVkUGFnZShXVEZNb3ZlKHN1
c3BlbmRlZFBhZ2UpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG5lZWRzU3VzcGVuZGVk
UGFnZVRvUHJldmVudEZsYXNoaW5nKTsKKyAgICAgICAgbV9zdXNwZW5kZWRQYWdlS2VwdFRvUHJl
dmVudEZsYXNoaW5nID0gV1RGTW92ZShzdXNwZW5kZWRQYWdlKTsKKyAgICB9CisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZFVzZUJhY2tGb3J3YXJkQ2Fj
aGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByZWZlcmVuY2VzLT51c2VzUGFnZUNhY2hlKCkg
JiYgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYmFja0ZvcndhcmRDYWNoZSgpLmNhcGFjaXR5KCkg
PiAwOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0FyZWEsIFJlZlB0cjxXZWJGcmFtZVBy
b3h5PiYmIG1haW5GcmFtZSkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwpAQCAtMTAyNyw3
ICsxMDQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2Z1bGxzY3JlZW5D
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKICNlbmRpZgogCi0g
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFn
ZSgqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUo
KS5jbGVhckVudHJpZXNGb3JQYWdlKCp0aGlzKTsKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV93ZWJQYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olll
cyk7CkBAIC0yOTI5LDcgKzI5NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBrZWVwIHVzaW5nIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRp
b24sIHJlYXNvbjogJXtwdWJsaWN9cyIsIHByb2Nlc3NJZGVudGlmaWVyKCksIHJlYXNvbi51dGY4
KCkuZGF0YSgpKTsKIAogICAgICAgICBpZiAoc2hvdWxkUHJvY2Vzc1N3YXApIHsKLSAgICAgICAg
ICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSA/IHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLnRha2VTdXNwZW5kZWRQYWdlKCpkZXN0aW5hdGlvblN1c3BlbmRl
ZFBhZ2UpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IGRlc3Rp
bmF0aW9uU3VzcGVuZGVkUGFnZSAmJiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UtPmJhY2tGb3J3
YXJkTGlzdEl0ZW0oKSA/IGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZS0+YmFja0ZvcndhcmRMaXN0
SXRlbSgpLT50YWtlU3VzcGVuZGVkUGFnZSgpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChz
dXNwZW5kZWRQYWdlICYmIHN1c3BlbmRlZFBhZ2UtPnBhZ2VJc0Nsb3NlZE9yQ2xvc2luZygpKQog
ICAgICAgICAgICAgICAgIHN1c3BlbmRlZFBhZ2UgPSBudWxscHRyOwogCkBAIC03MDI2LDYgKzcw
NDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJl
c2V0U3RhdGVSZWFzb24pCiAgICAgbV9tYWluRnJhbWUgPSBudWxscHRyOwogICAgIG1fZm9jdXNl
ZEZyYW1lID0gbnVsbHB0cjsKICAgICBtX2ZyYW1lU2V0TGFyZ2VzdEZyYW1lID0gbnVsbHB0cjsK
KyAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogICAg
IG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBudWxscHRyOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBA
IC03MzU1LDYgKzczNzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllcgogCiAgICAgaWYgKG1f
bGFzdFN1c3BlbmRlZFBhZ2UpCiAgICAgICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UtPnBhZ2VFbnRl
cmVkQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKKyAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0
VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYTQxNjk3Y2Q1MWViYzlhZDIzNWM3NWE1ZjMxZjNiNmJkYWU4ODAxMy4u
NzMxOWMxZTgxNjE1NzA2ODU3Njg4MThkZDM2Zjc5ZmY0N2Q1Mzk5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExMTMsNyArMTExMyw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5JiBlbnN1cmVSdW5uaW5nUHJvY2VzcygpOwotICAg
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIHsgcmV0dXJuIG1fcHJvY2VzczsgfQorICAgIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2VzczsgfQogICAg
IFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OwogCiAgICAgV2ViUHJlZmVyZW5j
ZXMmIHByZWZlcmVuY2VzKCkgeyByZXR1cm4gbV9wcmVmZXJlbmNlczsgfQpAQCAtMTU5Miw2ICsx
NTkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCiAgICAg
dm9pZCBub3RpZnlQcm9jZXNzUG9vbFRvUHJld2FybSgpOworICAgIGJvb2wgc2hvdWxkVXNlQmFj
a0ZvcndhcmRDYWNoZSgpIGNvbnN0OwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29U
b0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgV2ViQ29yZTo6RnJhbWVM
b2FkVHlwZSk7CiAKQEAgLTI1NDYsNiArMjU0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21h
eUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24geyBmYWxzZSB9OwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBtX3Byb3Zpc2lvbmFsUGFnZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2VL
ZXB0VG9QcmV2ZW50Rmxhc2hpbmc7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1f
bGFzdFN1c3BlbmRlZFBhZ2U7CiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBhZDQwN2U2NDkyZjgzOWI4NjkwN2Nk
MjA1YzdmNzQ1NGZmMDcyNzI1Li40NjQ5YjJkMTVkMGU1M2ZlM2FjNDI2ZDA0MmMyNWY4MzVkNTY1
YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01
Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
S0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRM
aXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldl
YkNlcnRpZmljYXRlSW5mby5oIgpAQCAtMjM2LDYgKzIzNyw3IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVy
RXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKICAgICAsIG1fYmFja2dyb3Vu
ZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vz
c0Fzc2VydGlvbnMoKTsgfSkKICNlbmRpZgorICAgICwgbV9iYWNrRm9yd2FyZENhY2hlKG1ha2VV
bmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4oKSkKICAgICAsIG1fd2ViUHJvY2Vzc0NhY2hl
KG1ha2VVbmlxdWVSZWY8V2ViUHJvY2Vzc0NhY2hlPigqdGhpcykpCiB7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMjg3LDcgKzI4OSw3IEBAIFdlYlByb2Nlc3NQb29s
OjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKIAogICAgIG5vdGlmeVRoaXNXZWJQcm9jZXNzUG9vbFdhc0NyZWF0ZWQoKTsKIAotICAg
IHVwZGF0ZU1heFN1c3BlbmRlZFBhZ2VDb3VudCgpOworICAgIHVwZGF0ZUJhY2tGb3J3YXJkQ2Fj
aGVDYXBhY2l0eSgpOwogfQogCiBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKCkKQEAg
LTEwOTEsOSArMTA5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNz
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICBpZiAobV9wcm9jZXNzV2l0aFBhZ2VDYWNo
ZSA9PSBwcm9jZXNzKQogICAgICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0gbnVsbHB0cjsK
IAotICAgIG1fc3VzcGVuZGVkUGFnZXMucmVtb3ZlQWxsTWF0Y2hpbmcoW3Byb2Nlc3NdKGF1dG8m
IHN1c3BlbmRlZFBhZ2UpIHsKLSAgICAgICAgcmV0dXJuICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNz
KCkgPT0gcHJvY2VzczsKLSAgICB9KTsKKyAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPmNsZWFyRW50
cmllc0ZvclByb2Nlc3MoKnByb2Nlc3MpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7CkBAIC0xMTMxLDcg
KzExMzEsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYgdwogICAgICAgICAgICAgcmV0dXJuICpw
cm9jZXNzOwogCiAgICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBzdXNwZW5kZWQgcGFnZSBm
b3IgdGhlIGdpdmVuIHJlZ2lzdHJhYmxlIGRvbWFpbiBhbmQgdXNlIGl0cyBwcm9jZXNzIGlmIHdl
IGRvLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KLSAgICAgICAgaWYgKGF1dG8gcHJvY2VzcyA9
IHBhZ2UgPyBmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFp
biwgKnBhZ2UsIHdlYnNpdGVEYXRhU3RvcmUpIDogbnVsbHB0cikgeworICAgICAgICBpZiAoYXV0
byBwcm9jZXNzID0gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdl
UHJvY2VzcygqdGhpcywgcmVnaXN0cmFibGVEb21haW4sIHdlYnNpdGVEYXRhU3RvcmUpKSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJVc2luZyBXZWJQcm9jZXNz
ICVpIGZyb20gYSBTdXNwZW5kZWRQYWdlIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAgICAgICAgICAgICByZXR1cm4gKnByb2Nlc3M7CiAgICAgICAgIH0KQEAgLTEzODgsNyArMTM4
OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2FybmluZyhD
cml0aWNhbCkKICAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlBy
b2Nlc3NQb29sOjpoYW5kbGVNZW1vcnlQcmVzc3VyZVdhcm5pbmciLCB0aGlzKTsKIAogCi0gICAg
Y2xlYXJTdXNwZW5kZWRQYWdlcyhBbGxvd1Byb2Nlc3NDYWNoaW5nOjpObyk7CisgICAgbV9iYWNr
Rm9yd2FyZENhY2hlLT5jbGVhcihBbGxvd1Byb2Nlc3NDYWNoaW5nOjpObyk7CiAgICAgbV93ZWJQ
cm9jZXNzQ2FjaGUtPmNsZWFyKCk7CiAKICAgICBpZiAobV9wcmV3YXJtZWRQcm9jZXNzKQpAQCAt
MTUzOSwyNSArMTUzOSwyMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVt
ZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29uc3QgU3RyaW5nJgogICAgIHNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hl
bWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KHVybFNjaGVtZSkpOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKQordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6dXBkYXRlQmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5KCkKIHsKICAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi0+dXNlc1BhZ2VDYWNoZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICB1
bnNpZ25lZCBkdW1teSA9IDA7CiAgICAgU2Vjb25kcyBkdW1teUludGVydmFsOwotICAgIHVuc2ln
bmVkIHBhZ2VDYWNoZVNpemUgPSAwOwotICAgIGNhbGN1bGF0ZU1lbW9yeUNhY2hlU2l6ZXMoTGVn
YWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwoKSwgZHVtbXksIGR1bW15
LCBkdW1teSwgZHVtbXlJbnRlcnZhbCwgcGFnZUNhY2hlU2l6ZSk7Ci0KLSAgICBtX21heFN1c3Bl
bmRlZFBhZ2VDb3VudCA9IHBhZ2VDYWNoZVNpemU7CisgICAgdW5zaWduZWQgYmFja0ZvcndhcmRD
YWNoZUNhcGFjaXR5ID0gMDsKKyAgICBjYWxjdWxhdGVNZW1vcnlDYWNoZVNpemVzKExlZ2FjeUds
b2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5jYWNoZU1vZGVsKCksIGR1bW15LCBkdW1teSwgZHVt
bXksIGR1bW15SW50ZXJ2YWwsIGJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0eSk7CiAKLSAgICB3aGls
ZSAobV9zdXNwZW5kZWRQYWdlcy5zaXplKCkgPiBtX21heFN1c3BlbmRlZFBhZ2VDb3VudCkKLSAg
ICAgICAgbV9zdXNwZW5kZWRQYWdlcy5yZW1vdmVGaXJzdCgpOworICAgIG1fYmFja0ZvcndhcmRD
YWNoZS0+c2V0Q2FwYWNpdHkoYmFja0ZvcndhcmRDYWNoZUNhcGFjaXR5KTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0g
ICAgdXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KCk7CisgICAgdXBkYXRlQmFja0ZvcndhcmRD
YWNoZUNhcGFjaXR5KCk7CiAKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwogCkBAIC0yMjYzLDY3ICsyMjYwLDYg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
Y3JlYXRlTmV3UHJvY2VzcygpLCBudWxscHRyLCByZWFzb24pOwogfQogCi1SZWZQdHI8V2ViUHJv
Y2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nl
c3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBX
ZWJQYWdlUHJveHkmIHBhZ2UsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKLXsKLSAgICBh
dXRvIGl0ID0gbV9zdXNwZW5kZWRQYWdlcy5maW5kSWYoWyZdKGF1dG8mIHN1c3BlbmRlZFBhZ2Up
IHsKLSAgICAgICAgcmV0dXJuIHN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKS5yZWdpc3RyYWJsZURv
bWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCku
d2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmU7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGl0
ID09IG1fc3VzcGVuZGVkUGFnZXMuZW5kKCkgPyBudWxscHRyIDogJigqaXQpLT5wcm9jZXNzKCk7
Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFkZFN1c3BlbmRlZFBhZ2Uoc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlKQotewotICAgIGlmICghbV9t
YXhTdXNwZW5kZWRQYWdlQ291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3N1c3Bl
bmRlZFBhZ2VzLnNpemUoKSA+PSBtX21heFN1c3BlbmRlZFBhZ2VDb3VudCkKLSAgICAgICAgbV9z
dXNwZW5kZWRQYWdlcy5yZW1vdmVGaXJzdCgpOwotCi0gICAgbV9zdXNwZW5kZWRQYWdlcy5hcHBl
bmQoV1RGTW92ZShzdXNwZW5kZWRQYWdlKSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
bW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcykKLXsKLSAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZUFsbE1hdGNo
aW5nKFsmcGFnZSwgcHJvY2Vzc10oYXV0byYgc3VzcGVuZGVkUGFnZSkgewotICAgICAgICByZXR1
cm4gJnN1c3BlbmRlZFBhZ2UtPnBhZ2UoKSA9PSAmcGFnZSAmJiAoIXByb2Nlc3MgfHwgJnN1c3Bl
bmRlZFBhZ2UtPnByb2Nlc3MoKSA9PSBwcm9jZXNzKTsKLSAgICB9KTsKLX0KLQotc3RkOjp1bmlx
dWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnRha2VTdXNwZW5kZWRQ
YWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYgc3VzcGVuZGVkUGFnZSkKLXsKLSAgICByZXR1cm4gbV9z
dXNwZW5kZWRQYWdlcy50YWtlRmlyc3QoWyZzdXNwZW5kZWRQYWdlXShhdXRvJiBpdGVtKSB7Ci0g
ICAgICAgIHJldHVybiBpdGVtLmdldCgpID09ICZzdXNwZW5kZWRQYWdlOwotICAgIH0pOwotfQot
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQ
cm94eSYgc3VzcGVuZGVkUGFnZSkKLXsKLSAgICBhdXRvIGl0ID0gbV9zdXNwZW5kZWRQYWdlcy5m
aW5kSWYoWyZzdXNwZW5kZWRQYWdlXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiBpdGVt
LmdldCgpID09ICZzdXNwZW5kZWRQYWdlOwotICAgIH0pOwotICAgIGlmIChpdCAhPSBtX3N1c3Bl
bmRlZFBhZ2VzLmVuZCgpKQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZShpdCk7Ci19
Ci0KLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1N1c3BlbmRlZFBhZ2VGb3IoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBXZWJQYWdlUHJveHkmIHBhZ2UpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c3VzcGVuZGVkUGFnZXMuZmluZElmKFsmcHJvY2VzcywgJnBhZ2VdKGF1dG8mIHN1c3BlbmRlZFBh
Z2UpIHsKLSAgICAgICAgcmV0dXJuICZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkgPT0gJnByb2Nl
c3MgJiYgJnN1c3BlbmRlZFBhZ2UtPnBhZ2UoKSA9PSAmcGFnZTsKLSAgICB9KSAhPSBtX3N1c3Bl
bmRlZFBhZ2VzLmVuZCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhclN1c3BlbmRl
ZFBhZ2VzKEFsbG93UHJvY2Vzc0NhY2hpbmcgYWxsb3dQcm9jZXNzQ2FjaGluZykKLXsKLSAgICBI
YXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7Ci0gICAgZm9yIChhdXRv
JiBzdXNwZW5kZWRQYWdlIDogbV9zdXNwZW5kZWRQYWdlcykKLSAgICAgICAgcHJvY2Vzc2VzLmFk
ZCgmc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpKTsKLQotICAgIG1fc3VzcGVuZGVkUGFnZXMuY2xl
YXIoKTsKLQotICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+bWF5YmVTaHV0RG93bihhbGxvd1Byb2Nlc3NDYWNoaW5nKTsKLX0KLQogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6YWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IE1vY2tNZWRpYURldmljZSYgZGV2
aWNlKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2MTJlMzkyZTQzNmE1YjM1MTY2OTkzOGQ2NDg4N2JhMzZm
MWY3YTgyLi41MWM5YzRiNTU0YTIzYjNmZjlhMGIxZDIwZGIxNDAyMTFkM2QyNTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTk1LDYgKzk1LDcgQEAgc3Ry
dWN0IE1vY2tNZWRpYURldmljZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkJh
Y2tGb3J3YXJkQ2FjaGU7CiBjbGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
cjsKIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI7CkBAIC0xNDksNiArMTUwLDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CiAg
ICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICBXZWJCYWNrRm9y
d2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENhY2hl
LmdldCgpOyB9CiAgICAgCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
T2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYg
cmVjZWl2ZXIpCkBAIC00NzQsMTcgKzQ3Nyw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJvY2Vz
c0Zvck5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwgUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJik+JiYpOwogCi0gICAgLy8gU3VzcGVuZGVkUGFnZVByb3h5
IG1hbmFnZW1lbnQuCi0gICAgdm9pZCBhZGRTdXNwZW5kZWRQYWdlKHN0ZDo6dW5pcXVlX3B0cjxT
dXNwZW5kZWRQYWdlUHJveHk+JiYpOwotICAgIHZvaWQgcmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNG
b3JQYWdlKFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSogPSBudWxscHRyKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZShTdXNw
ZW5kZWRQYWdlUHJveHkmKTsKLSAgICB2b2lkIHJlbW92ZVN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVk
UGFnZVByb3h5Jik7Ci0gICAgYm9vbCBoYXNTdXNwZW5kZWRQYWdlRm9yKFdlYlByb2Nlc3NQcm94
eSYsIFdlYlBhZ2VQcm94eSYpIGNvbnN0OwotICAgIHVuc2lnbmVkIG1heFN1c3BlbmRlZFBhZ2VD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4U3VzcGVuZGVkUGFnZUNvdW50OyB9Ci0gICAgUmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4gZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJQYWdlUHJveHkmLCBXZWJzaXRlRGF0
YVN0b3JlJik7Ci0KLSAgICB2b2lkIGNsZWFyU3VzcGVuZGVkUGFnZXMoQWxsb3dQcm9jZXNzQ2Fj
aGluZyk7Ci0KICAgICB2b2lkIGRpZFJlYWNoR29vZFRpbWVUb1ByZXdhcm0oKTsKIAogICAgIHZv
aWQgZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYsIGNvbnN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbiYpOwpAQCAtNTkxLDcg
KzU4Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRyeVByZXdhcm1XaXRoRG9tYWluSW5mb3Jt
YXRpb24oV2ViUHJvY2Vzc1Byb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
KTsKIAotICAgIHZvaWQgdXBkYXRlTWF4U3VzcGVuZGVkUGFnZUNvdW50KCk7CisgICAgdm9pZCB1
cGRhdGVCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBzdGF0aWMgZmxvYXQgZGlzcGxheUJyaWdodG5lc3MoKTsKQEAgLTc3Miw4ICs3NjQsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+PiBtX3N1c3BlbmRlZFBhZ2VzOwotICAgIHVuc2lnbmVkIG1fbWF4U3Vz
cGVuZGVkUGFnZUNvdW50IHsgMCB9OworICAgIFVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENhY2hl
PiBtX2JhY2tGb3J3YXJkQ2FjaGU7CiAKICAgICBVbmlxdWVSZWY8V2ViUHJvY2Vzc0NhY2hlPiBt
X3dlYlByb2Nlc3NDYWNoZTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
LCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFi
bGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDYyN2QyZDk5Y2IzZWM3MjcwYjg3NjdiYTMw
NmQ4ZmI1MDlhOGJkYzEuLjRiYmY2YjcyNGY1OGExODRiZDZjNTRmMzA5ZDUxNmUwZjk0ZTQ3OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKQEAgLTcyNSw3ICs3
MjYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBXYWxsVGltZQogICAgIGF1dG8gd2ViUHJvY2Vzc0FjY2Vz
c1R5cGUgPSBjb21wdXRlV2ViUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbChkYXRhVHlw
ZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKHdlYlByb2Nlc3NBY2Nlc3NUeXBlICE9IFBy
b2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkgewotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmNsZWFyU3VzcGVu
ZGVkUGFnZXMoQWxsb3dQcm9jZXNzQ2FjaGluZzo6Tm8pOworICAgICAgICAgICAgcHJvY2Vzc1Bv
b2wtPmJhY2tGb3J3YXJkQ2FjaGUoKS5jbGVhcihBbGxvd1Byb2Nlc3NDYWNoaW5nOjpObyk7CiAg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkuY2xlYXIoKTsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkYWFhMTdlYjZiY2IyNjY0ODY0NDg0NTVjYTYxZWJiNGUyZGM4ZDdlLi5jNzFmMDIx
OWIzMmY0NmI3MjgyODZjMWQ4YWIwYjg4ZmM3NzBkMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxOTgsNiArMzE5OCw4IEBACiAJ
CTQ0NTk5ODQxMjI4MzNFNjAwMEU2MTM3MyAvKiBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OUQ5MEQ4MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1
dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ0QTQ4MUM2MjFGMkQyN0IwMEYyRjkxOSAvKiBDbGllbnRDZXJ0aWZpY2F0
ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaWVu
dENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjAzMDExQTIzNEJFMzFEMDA5QzgyMTcgLyogV2ViQmFja0Zvcndh
cmRDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJCYWNr
Rm9yd2FyZENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYwMzAxMUIy
MzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBE
RDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgyNSw2ICs3
ODI3LDggQEAKIAkJCQkxQTBGMjlFMTEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExpbmtTdG9y
ZS5jcHAgKi8sCiAJCQkJMUEwRjI5RTIxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rU3Rv
cmUuaCAqLywKIAkJCQkxQTYwMjI0OTE4QzE2QjA4MDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9y
ZS5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjAzMDExQTIzNEJFMzFEMDA5QzgyMTcgLyogV2ViQmFj
a0ZvcndhcmRDYWNoZS5jcHAgKi8sCisJCQkJNDYwMzAxMUIyMzRCRTMxRTAwOUM4MjE3IC8qIFdl
YkJhY2tGb3J3YXJkQ2FjaGUuaCAqLywKIAkJCQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyog
V2ViQmFja0ZvcndhcmRMaXN0LmNwcCAqLywKIAkJCQlCQzcyQkExQzExRTY0OTA3MDAxRUI0RUEg
LyogV2ViQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBF
IC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMDY3MDNiMWZkMWUxMTJiZWNiYThhYmE0M2MyNWU3ZmY2
ODliZmIyLi5hMDUzNzY3MGFhMjQ1Mjk1MjFiYmRjNzk5YzVmMjIxOGZjZDUxNWI4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTktMTAtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBNb3ZlIFN1c3BlbmRlZFBhZ2UgbG9naWMgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBuZXcgV2Vi
QmFja0ZvcndhcmRDYWNoZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyNjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRHJvcCB0ZXN0IHRoYXQgcmVsaWVkIG9uIHJldXNpbmcgYSBTdXNwZW5k
ZWRQYWdlJ3MgcHJvY2VzcyBmcm9tIGEgbG9hZEhUTUxTdHJpbmdMb2FkIChvcHRpbWl6YXRpb24p
LgorICAgICAgICBUaGlzIG5vIGxvbmdlciB3b3JrcyBub3cgdGhhdCBTdXNwZW5kZWRQYWdlcyBh
cmUgb3duZWQgYnkgdGhlaXIgYXNzb2NpYXRlZCBiYWNrL2ZvcndhcmQgaXRlbSBiZWNhdXNlCisg
ICAgICAgIHdlIGN1cnJlbnRseSBkbyBub3QgY3JlYXRlIGEgYmFjay9mb3J3YXJkIGl0ZW0gZm9y
IGxvYWRIVE1MU3RyaW5nIHJlcXVlc3RzLiBTdXNwZW5kaW5nIGEgcGFnZSBmb3IgYQorICAgICAg
ICBsb2FkSFRNTFN0cmluZyB3YXMgYWxzbyB3YXN0ZWZ1bCBzaW5jZSB0aGVyZSB3YXMgbm8gd2F5
IHRvIHJlc3RvcmUgdGhhdCBwYWdlIChnaXZlbiB0aGF0IHRoZXJlIHdhcworICAgICAgICBubyBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtIHRvIGdvIGJhY2sgdG8pLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKwog
MjAxOS0xMC0wNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIGluIFdlYktpdFRlc3RSdW5uZXJBcHA6IGludm9jYXRpb24gZnVuY3Rpb24gZm9yIGJs
b2NrIGluIFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzZW5kRXZlbnRTdHJlYW0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDVlNjlmMDVhNWVlYjZkYjczMjNkY2U2YzU1
MDA4ODhjNjc4ODU4YTAuLjVkNjhiOGQ2YzUyYWE2MmQ5NTllYjg2ZjlkZWQyZGM1MWMxNTkwNDQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMjQ4MSw1NSArMjQ4MSw2IEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIFJldXNlU3VzcGVuZGVkUHJvY2VzcykKICAgICBFWFBFQ1RfRVEo
YXBwbGVQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwogfQogCi1URVNUKFBy
b2Nlc3NTd2FwLCBSZXVzZVN1c3BlbmRlZFByb2Nlc3NMb2FkSFRNTFN0cmluZykKLXsKLSAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkudXNlc1dlYlByb2Nlc3ND
YWNoZSA9IE5POwotICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9v
bCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKLQotICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29uZmlndXJh
dGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07Ci0gICAgYXV0byBoYW5kbGVy
ID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmlld0NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpA
IlBTT04iXTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3
ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KLSAgICBOU1N0cmluZyAqaHRt
bFN0cmluZyA9IEAiPGh0bWw+PGJvZHk+VEVTVDwvYm9keT48L2h0bWw+IjsKLSAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvbWFpbjEuaHRtbCJdXTsKLQotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgZG9uZSA9IGZhbHNlOwotCi0gICAgYXV0byB3ZWJr
aXRQSUQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwotCi0gICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
cHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbjEuaHRtbCJdXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgZG9uZSA9IGZhbHNlOwotCi0gICAgYXV0byBhcHBsZVBJ
RCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07Ci0KLSAgICBFWFBFQ1RfTkUod2Vi
a2l0UElELCBhcHBsZVBJRCk7Ci0KLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3Ry
aW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcv
bWFpbjIuaHRtbCJdXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0g
ICAgZG9uZSA9IGZhbHNlOwotCi0gICAgLy8gV2Ugc2hvdWxkIGhhdmUgZ29uZSBiYWNrIHRvIHRo
ZSB3ZWJraXQub3JnIHByb2Nlc3MgZm9yIHRoaXMgbG9hZCBzaW5jZSB3ZSByZXVzZSBTdXNwZW5k
ZWRQYWdlcycgcHJvY2VzcyB3aGVuIHBvc3NpYmxlLgotICAgIEVYUEVDVF9FUSh3ZWJraXRQSUQs
IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwotCi0gICAgW3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjov
L3d3dy5hcHBsZS5jb20vbWFpbjIuaHRtbCJdXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7Ci0gICAgZG9uZSA9IGZhbHNlOwotCi0gICAgLy8gV2Ugc2hvdWxkIGhhdmUg
Z29uZSBiYWNrIHRvIHRoZSBhcHBsZS5jb20gcHJvY2VzcyBmb3IgdGhpcyBsb2FkIHNpbmNlIHdl
IHJldXNlIFN1c3BlbmRlZFBhZ2VzJyBwcm9jZXNzIHdoZW4gcG9zc2libGUuCi0gICAgRVhQRUNU
X0VRKGFwcGxlUElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKLX0KLQogc3Rh
dGljIGNvbnN0IGNoYXIqIGZhaWxzVG9FbnRlclBhZ2VDYWNoZVRlc3RCeXRlcyA9IFIiUFNPTlJF
U09VUkNFKAogPGJvZHk+CiA8c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380778</attachid>
            <date>2019-10-11 13:08:03 -0700</date>
            <delta_ts>2019-10-11 13:40:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202660-20191011130802.patch</filename>
            <type>text/plain</type>
            <size>50591</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk5ZGM1NzIxZWY5ODM0MDcx
MDY0NjcwZWJlM2MwMDE5MzAyYWM3ZDcuLjdjYTlkMDVmNDZjOWJmM2EwYWMxNTU0ZDA2NTdlMGZl
YjgzY2UyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTktMTAtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN1c3BlbmRlZFBhZ2UgbG9n
aWMgZnJvbSBXZWJQcm9jZXNzUG9vbCB0byBuZXcgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjYwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTW92ZSBTdXNw
ZW5kZWRQYWdlIGxvZ2ljIGZyb20gV2ViUHJvY2Vzc1Bvb2wgdG8gbmV3IFdlYkJhY2tGb3J3YXJk
Q2FjaGUgY2xhc3MuIFRoaXMgaXMKKyAgICAgICAgYSBmaXJzdCBzdGVwIHRvd2FyZHMgaW1wbGVt
ZW50aW5nIGJhY2sgLyBmb3J3YXJkIGNhY2hlIGhhbmRsaW5nIGluIHRoZSBVSVByb2Nlc3MuCisK
KyAgICAgICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAgMS4gU3Vz
cGVuZGVkUGFnZVByb3h5IG9iamVjdHMgYXJlIG5vdyBub3JtYWxseSBvd25lZCBieSB0aGVpciBh
c3NvY2lhdGVkIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KKyAgICAgICAgICAgKFNpbWlsYXJseSB0
byBDYWNoZWRQYWdlIG9iamVjdHMgYmVpbmcgb3duZWQgYnkgdGhlaXIgSGlzdG9yeUl0ZW0gaW4g
V2ViQ29yZSkgaW5zdGVhZCBvZiB0aGUKKyAgICAgICAgICAgV2ViUHJvY2Vzc1Bvb2wuCisgICAg
ICAgIDIuIEEgbmV3IFdlYkJhY2tGb3J3YXJkQ2FjaGUgY2xhc3MgaXMgaW50cm9kdWNlZCB0byBj
YXAgdGhlIG51bWJlciBvZiBjYWNoZWQgcGFnZXMgYW5kIGNsZWFyCisgICAgICAgICAgIHRoZW0g
KHNpbWlsYXJ5IHRvIHRoZSBQYWdlQ2FjaGUgaW4gV2ViQ29yZSkuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6d2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExpc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6dGFrZVN1c3Bl
bmRlZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzdXNw
ZW5kZWRQYWdlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfbWF4aW11bVN1
c3BlbmRlZFBhZ2VDb3VudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
bWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OnNldEJhY2tGb3J3YXJk
TGlzdEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmNsZWFyQmFj
a0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6
YmFja0ZvcndhcmRDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQ
cm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0hpZENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vTW9jay9Nb2NrSGlkU2VydmljZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZENhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2Fj
aGU6OnJlbW92ZU9sZGVzdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRD
YWNoZTo6c2V0Q2FwYWNpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hl
OjphZGRFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92
ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6dGFrZUVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0Zv
clByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVF
bnRyaWVzRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJl
bW92ZUVudHJpZXNNYXRjaGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2Fj
aGU6OmNsZWFyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRTZXJ2aWNlLmguCisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6
OmNhcGFjaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6
c2l6ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6ZGlkUmVtb3ZlSXRlbSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2hvdWxkVXNlQmFja0ZvcndhcmRDYWNoZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJv
Y2VzcyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2FybmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0Q2FjaGVNb2RlbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbik6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMTAtMTEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc2VuZFdpdGhBc3lu
Y1JlcGx5IGZvciBjb29raWUgZ2V0dGluZy9jbGVhcmluZyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5kZXggZGFmNGRhMjI3
N2NiNDY3Zjc4MjQ3OGE1MDU2OTVhZjY1MWRhMjk0Yy4uYjA4MjVhZjg2ZWFlNGE3MmRjZDE0ZTcy
YjgwOTgzZDNmZDBiODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmgiCiAKICNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvRGVidWdVdGlsaXRp
ZXMuaD4KQEAgLTUzLDggKzU0LDYgQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6fldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oKQogewogICAgIEFTU0VSVChhbGxJdGVtcygpLmdldChtX2l0ZW1TdGF0
ZS5pZGVudGlmaWVyKSA9PSB0aGlzKTsKICAgICBhbGxJdGVtcygpLnJlbW92ZShtX2l0ZW1TdGF0
ZS5pZGVudGlmaWVyKTsKLQotICAgIHJlbW92ZVN1c3BlbmRlZFBhZ2VGcm9tUHJvY2Vzc1Bvb2wo
KTsKIH0KIAogSGFzaE1hcDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKj4mIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmFsbEl0ZW1zKCkKQEAgLTE1OSwy
NyArMTU4LDM0IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzQ2xvbmUoY29u
c3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgb3RoZXIpCiAgICAgcmV0dXJuIGhhc1NhbWVGcmFt
ZXMobWFpbkZyYW1lU3RhdGUsIG90aGVyTWFpbkZyYW1lU3RhdGUpOwogfQogCi12b2lkIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5KiBw
YWdlKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp3YXNSZW1vdmVkRnJvbUJhY2tGb3J3
YXJkTGlzdCgpCiB7Ci0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZSA9PSBwYWdlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVByb2Nlc3NQb29sKCk7Ci0gICAg
bV9zdXNwZW5kZWRQYWdlID0gbWFrZVdlYWtQdHIocGFnZSk7CisgICAgaWYgKG1fc3VzcGVuZGVk
UGFnZSkKKyAgICAgICAgbV9zdXNwZW5kZWRQYWdlLT5iYWNrRm9yd2FyZENhY2hlKCkucmVtb3Zl
RW50cnkoKnRoaXMpOworICAgIEFTU0VSVCghbV9zdXNwZW5kZWRQYWdlKTsKIH0KIAotU3VzcGVu
ZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzdXNwZW5kZWRQYWdlKCkgY29u
c3QKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZShzdGQ6OnVu
aXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UpCiB7Ci0gICAgcmV0
dXJuIG1fc3VzcGVuZGVkUGFnZS5nZXQoKTsKKyAgICBpZiAobV9zdXNwZW5kZWRQYWdlKQorICAg
ICAgICBtX3N1c3BlbmRlZFBhZ2UtPmNsZWFyQmFja0ZvcndhcmRMaXN0SXRlbSgpOworCisgICAg
bV9zdXNwZW5kZWRQYWdlID0gV1RGTW92ZShzdXNwZW5kZWRQYWdlKTsKKworICAgIGlmIChtX3N1
c3BlbmRlZFBhZ2UpCisgICAgICAgIG1fc3VzcGVuZGVkUGFnZS0+c2V0QmFja0ZvcndhcmRMaXN0
SXRlbSgqdGhpcyk7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6cmVtb3ZlU3Vz
cGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpCitzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFn
ZVByb3h5PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp0YWtlU3VzcGVuZGVkUGFnZSgpCiB7Ci0g
ICAgaWYgKCFtX3N1c3BlbmRlZFBhZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9zdXNw
ZW5kZWRQYWdlKQorICAgICAgICBtX3N1c3BlbmRlZFBhZ2UtPmNsZWFyQmFja0ZvcndhcmRMaXN0
SXRlbSgpOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fc3VzcGVuZGVkUGFnZSwgbnVsbHB0
cik7Cit9CiAKLSAgICBtX3N1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJl
bW92ZVN1c3BlbmRlZFBhZ2UoKm1fc3VzcGVuZGVkUGFnZSk7Ci0gICAgQVNTRVJUKCFtX3N1c3Bl
bmRlZFBhZ2UpOworU3VzcGVuZGVkUGFnZVByb3h5KiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpz
dXNwZW5kZWRQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgp
OwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDZkNjdlYzBiMmVhYzAxODVhZWQ5NzFlODlkMzk0OGJh
ZDNhN2UzM2UuLmIyY2Y3NzEzNGU1NjI0ZjdkMWJiYjA5NDdkMzZlNDEzY2RkMjgyMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgY2xhc3MgRW5jb2RlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTdXNw
ZW5kZWRQYWdlUHJveHk7CitjbGFzcyBXZWJCYWNrRm9yd2FyZENhY2hlOwogCiBjbGFzcyBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgpAQCAtNzcsNyArNzgsOSBAQCBw
dWJsaWM6CiAgICAgVmlld1NuYXBzaG90KiBzbmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuIG1faXRl
bVN0YXRlLnNuYXBzaG90LmdldCgpOyB9CiAgICAgdm9pZCBzZXRTbmFwc2hvdChSZWZQdHI8Vmll
d1NuYXBzaG90PiYmIHNuYXBzaG90KSB7IG1faXRlbVN0YXRlLnNuYXBzaG90ID0gV1RGTW92ZShz
bmFwc2hvdCk7IH0KICNlbmRpZgotICAgIHZvaWQgc2V0U3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQ
YWdlUHJveHkqKTsKKworICAgIHZvaWQgd2FzUmVtb3ZlZEZyb21CYWNrRm9yd2FyZExpc3QoKTsK
KwogICAgIFN1c3BlbmRlZFBhZ2VQcm94eSogc3VzcGVuZGVkUGFnZSgpIGNvbnN0OwogCiAjaWYg
IUxPR19ESVNBQkxFRApAQCAtODcsMTMgKzkwLDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIHJlbW92ZVN1c3BlbmRlZFBhZ2VGcm9tUHJv
Y2Vzc1Bvb2woKTsKKyAgICAvLyBXZWJCYWNrRm9yd2FyZENhY2hlLgorICAgIGZyaWVuZCBjbGFz
cyBXZWJCYWNrRm9yd2FyZENhY2hlOworICAgIHZvaWQgc2V0U3VzcGVuZGVkUGFnZShzdGQ6OnVu
aXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiB0YWtlU3VzcGVuZGVkUGFnZSgpOwogCiAgICAgQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwogICAgIFVSTCBtX3Jlc291cmNlRGlyZWN0b3J5VVJM
OwogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7Ci0gICAgV2Vha1B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxS
ZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+IEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCA5MzZjMGNmNTVhZDAzZmJiYjNhZGM4NDM5MjAxM2E5MGUzNDhiNWVkLi5k
N2Q4OTkxZWQ2Y2VlOTg3ZjMyYzU4NGIwZGUzZmE4MGNjMGY5MDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTI2MCw2ICsyNjAsNyBAQCBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5j
cHAKIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9WaXNp
dGVkTGlua1N0b3JlLmNwcAorVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCiBVSVBy
b2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmNw
cAogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDIzOGNl
ZDM1Y2M5MzI4Y2QyYzM1YWU1MmU2ZjA2MGMzNGFlZTcwNjQuLjYwN2YyMGYxMGQ4NDdhOGFiYWU4
NTUzZGQ0NjNkOWViYzI1YzYwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJX
S09iamVjdC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZENhY2hlLmgi
CiAjaW1wb3J0ICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NhY2hlLmgiCkBAIC01MjYsNyArNTI3LDcg
QEAgLSAoc2l6ZV90KV9wbHVnaW5Qcm9jZXNzQ291bnQKIAogLSAoTlNVSW50ZWdlcilfbWF4aW11
bVN1c3BlbmRlZFBhZ2VDb3VudAogewotICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPm1heFN1c3Bl
bmRlZFBhZ2VDb3VudCgpOworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPmJhY2tGb3J3YXJkQ2Fj
aGUoKS5jYXBhY2l0eSgpOwogfQogCiAtIChOU1VJbnRlZ2VyKV9wcm9jZXNzQ2FjaGVDYXBhY2l0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggZmE2YzNkYWJlYmMwZjlhNGFhNjM4
ZTU0MjM1ZDY5YmMxNDE4NzFjMS4uMzE3ODM5MGNjMjA1YzA0N2E5OGZmNWFkYzdhOTYxMDE1ZTA2
NmY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdUcmVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsZXJQYWly
TWFjLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXgg
NzkyNGU0ZWYzZGMyNjQwZWQ4YzRiNzA5ZjM3NmRmMzhlMDFlZWU4MC4uNWM1Yjg2ZTJmOThjZGZh
MzJkODI4NjBmMGVkNTcxOTczYTRjM2M0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJE
cmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAt
NDMsNiArNDQsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBT
ZWNvbmRzIHN1c3BlbnNpb25UaW1lb3V0IHsgMTBfcyB9OwogCitzdGF0aWMgSGFzaFNldDxTdXNw
ZW5kZWRQYWdlUHJveHkqPiYgYWxsU3VzcGVuZGVkUGFnZXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFN1c3BlbmRlZFBhZ2VQcm94eSo+PiBtYXA7CisgICAgcmV0dXJu
IG1hcDsKK30KKworUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5Ojpm
aW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2VzcyhXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQoreworICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFnZSA6IGFs
bFN1c3BlbmRlZFBhZ2VzKCkpIHsKKyAgICAgICAgYXV0byYgcHJvY2VzcyA9IHN1c3BlbmRlZFBh
Z2UtPnByb2Nlc3MoKTsKKyAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnBy
b2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURv
bWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZSkKKyAgICAg
ICAgICAgIHJldHVybiAmcHJvY2VzczsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
ICNpZiAhTE9HX0RJU0FCTEVECiBzdGF0aWMgY29uc3QgSGFzaFNldDxJUEM6OlN0cmluZ1JlZmVy
ZW5jZT4mIG1lc3NhZ2VOYW1lc1RvSWdub3JlV2hpbGVTdXNwZW5kZWQoKQogewpAQCAtODksNiAr
MTA2LDcgQEAgU3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVBy
b3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYKICAgICAsIG1fc3VzcGVuc2lvblRva2Vu
KG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkKICNlbmRp
ZgogeworICAgIGFsbFN1c3BlbmRlZFBhZ2VzKCkuYWRkKHRoaXMpOwogICAgIG1fcHJvY2Vzcy0+
aW5jcmVtZW50U3VzcGVuZGVkUGFnZUNvdW50KCk7CiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dlYlBhZ2VJRCwgKnRoaXMpOwogCkBAIC05OSw2ICsxMTcsNyBAQCBTdXNwZW5kZWRQYWdlUHJv
eHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJveHk+JgogU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKIHsKICAg
ICBtX3Byb2Nlc3MtPmRlY3JlbWVudFN1c3BlbmRlZFBhZ2VDb3VudCgpOworICAgIGFsbFN1c3Bl
bmRlZFBhZ2VzKCkucmVtb3ZlKHRoaXMpOwogCiAgICAgaWYgKG1fcmVhZHlUb1Vuc3VzcGVuZEhh
bmRsZXIpIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZWFkeVRvVW5zdXNw
ZW5kSGFuZGxlciA9IFdURk1vdmUobV9yZWFkeVRvVW5zdXNwZW5kSGFuZGxlcildKCkgbXV0YWJs
ZSB7CkBAIC0xMjMsNiArMTQyLDIzIEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBh
Z2VQcm94eSgpCiAgICAgfSk7CiB9CiAKK3ZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzZXRCYWNr
Rm9yd2FyZExpc3RJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgQVNT
RVJUKCFtX2JhY2tGb3J3YXJkTGlzdEl0ZW0pOworICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbSA9
ICZpdGVtOworfQorCit2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xlYXJCYWNrRm9yd2FyZExp
c3RJdGVtKCkKK3sKKyAgICBBU1NFUlQobV9iYWNrRm9yd2FyZExpc3RJdGVtKTsKKyAgICBtX2Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gPSBudWxscHRyOworfQorCitXZWJCYWNrRm9yd2FyZENhY2hlJiBT
dXNwZW5kZWRQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2FjaGUoKSBjb25zdAoreworICAgIHJldHVy
biBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5iYWNrRm9yd2FyZENhY2hlKCk7Cit9CisKIHZvaWQg
U3VzcGVuZGVkUGFnZVByb3h5Ojp3YWl0VW50aWxSZWFkeVRvVW5zdXNwZW5kKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKG1fcmVhZHlUb1Vuc3VzcGVuZEhhbmRsZXIpCkBAIC0yMTUsOCArMjUxLDEyIEBA
IHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRQcm9jZXNzUmVxdWVzdFRvU3VzcGVuZChTdXNw
ZW5zaW9uU3RhdGUgbmV3U3VzcGVuc2lvCiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpzdXNw
ZW5zaW9uVGltZWRPdXQoKQogeworICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3RJdGVtKQorICAg
ICAgICByZXR1cm47CisKICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3dhcHBpbmcsICIl
cCAtIFN1c3BlbmRlZFBhZ2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KCkgZGVzdHJveWluZyB0
aGUgc3VzcGVuZGVkIHBhZ2UgYmVjYXVzZSBpdCBmYWlsZWQgdG8gc3VzcGVuZCBpbiB0aW1lIiwg
dGhpcyk7Ci0gICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlbW92ZVN1c3BlbmRlZFBhZ2Uo
KnRoaXMpOyAvLyBXaWxsIGRlc3Ryb3kgfHRoaXN8LgorICAgIEFTU0VSVChtX2JhY2tGb3J3YXJk
TGlzdEl0ZW0tPnN1c3BlbmRlZFBhZ2UoKSA9PSB0aGlzKTsKKyAgICBiYWNrRm9yd2FyZENhY2hl
KCkucmVtb3ZlRW50cnkoKm1fYmFja0ZvcndhcmRMaXN0SXRlbSk7IC8vIFdpbGwgZGVzdHJveSB8
dGhpc3wuCiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IDFhYzNkODgxNTFiOTc3NDU1MTcx
MmM5M2JhNmQ2ZjIwOThhNWY3MjIuLjlmM2FlMzMxOGZmNTVmYTgyMzdiMGNkNTVjN2UwOTA3ZDNl
M2Y0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5o
CkBAIC0zNSw4ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQmFj
a0ZvcndhcmRDYWNoZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlByb2Nlc3NQb29s
OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogZW51
bSBjbGFzcyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUgOiBib29sIHsgTm8sIFllcyB9OwogCkBAIC00NiwxMSArNDksMTkgQEAgcHVibGlj
OgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgbWFpbkZyYW1lSUQsIFNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAgICAgflN1
c3BlbmRlZFBhZ2VQcm94eSgpOwogCisgICAgc3RhdGljIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYlByb2Nlc3NQb29sJiwgY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CisKICAgICBX
ZWJQYWdlUHJveHkmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KICAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3dlYlBhZ2VJRDsg
fQotICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQo
KTsgfQorICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzcy5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBtYWluRnJhbWVJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lSUQ7IH0KIAorICAgIHZvaWQgc2V0QmFja0Zvcndh
cmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CisgICAgdm9pZCBjbGVhckJhY2tG
b3J3YXJkTGlzdEl0ZW0oKTsKKworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGJhY2tGb3J3
YXJkTGlzdEl0ZW0oKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW07IH0KKyAgICBXZWJC
YWNrRm9yd2FyZENhY2hlJiBiYWNrRm9yd2FyZENhY2hlKCkgY29uc3Q7CisKICAgICBib29sIHBh
Z2VJc0Nsb3NlZE9yQ2xvc2luZygpIGNvbnN0OwogCiAgICAgdm9pZCB3YWl0VW50aWxSZWFkeVRv
VW5zdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VzcGVuZGVkUGFnZVByb3h5Kik+JiYp
OwpAQCAtNzcsNiArODgsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwog
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQcm9j
ZXNzUHJveHk+IG1fcHJvY2VzczsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBtX2JhY2tG
b3J3YXJkTGlzdEl0ZW0geyBudWxscHRyIH07CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IG1fbWFpbkZyYW1lSUQ7CiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKICAgICBTaG91
bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgbV9z
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUg
eyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGU6Ok5vIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmgKaW5kZXggNDA4MzZk
MjgzZmRlMDE1MjVmNTY5ZTA3Mjk2ODE5Njg3ZTE3ZTBkYy4uMGRiMDBlOTg1NDMxY2NiOGY2Zjgz
NDZiZjM4YjU5MGI1MzkzYjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24u
aApAQCAtNjIsOCArNjIsOCBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiAgICAgT3B0aW9uYWw8Zmlk
bzo6Rmlkb0hpZE1lc3NhZ2U+IG1fcmVxdWVzdE1lc3NhZ2U7Ci0gICAgV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3RhZ2UgbV9zdGFnZSB7IE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN0YWdlOjpJbmZvIH07Ci0gICAgV2ViQ29y
ZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2UgbV9zdWJT
dGFnZSB7IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlOjpJ
bml0IH07CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6
SGlkU3RhZ2UgbV9zdGFnZSB7IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246OkhpZFN0YWdlOjpJbmZvIH07CisgICAgV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbjo6SGlkU3ViU3RhZ2UgbV9zdWJTdGFnZSB7IFdlYkNvcmU6Ok1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkhpZFN1YlN0YWdlOjpJbml0IH07CiAgICAg
dWludDMyX3QgbV9jdXJyZW50Q2hhbm5lbCB7IGZpZG86OmtIaWRCcm9hZGNhc3RDaGFubmVsIH07
CiAgICAgYm9vbCBtX3JlcXVpcmVSZXNpZGVudEtleSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jl
cXVpcmVVc2VyVmVyaWZpY2F0aW9uICB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2aWNlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRTZXJ2
aWNlLmgKaW5kZXggYmUxZWFkNjE3OTg2YTkzOWU2YWMyZmI0MmEzNzhhMjk5YzU4NzZkMi4uNDVj
NGQyOGNhYmNmMGJkZDZjNGRiYTM1YTZhMzNkNmM0MzJmYzFjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkU2VydmljZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9j
a0hpZFNlcnZpY2UuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgTW9ja0hpZFNlcnZpY2UgZmluYWwgOiBwdWJsaWMgSGlkU2VydmljZSB7CiBwdWJsaWM6Ci0g
ICAgTW9ja0hpZFNlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uJik7CisgICAgTW9ja0hpZFNlcnZpY2UoT2JzZXJ2ZXImLCBjb25zdCBXZWJD
b3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybVN0YXJ0RGlzY292ZXJ5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkZTE4NmU2
OTczMGVhOTgzYWUwYzE4MDA2ZWRmNmI3OGYzNTdhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcApAQCAtMCwwICsxLDEx
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZENhY2hlLmgiCisKKyNpbmNsdWRlICJTdXNwZW5kZWRQYWdlUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJCYWNrRm9yd2FyZENhY2hlOjpXZWJCYWNrRm9yd2FyZENhY2hlKCkgPSBkZWZhdWx0OworCitX
ZWJCYWNrRm9yd2FyZENhY2hlOjp+V2ViQmFja0ZvcndhcmRDYWNoZSgpID0gZGVmYXVsdDsKKwor
aW5saW5lIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlT2xkZXN0RW50cnkoKQorewor
ICAgIEFTU0VSVCghbV9pdGVtc1dpdGhDYWNoZWRQYWdlLmlzRW1wdHkoKSk7CisgICAgcmVtb3Zl
RW50cnkoKm1faXRlbXNXaXRoQ2FjaGVkUGFnZS5maXJzdCgpKTsKK30KKwordm9pZCBXZWJCYWNr
Rm9yd2FyZENhY2hlOjpzZXRDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSkKK3sKKyAgICBtX2Nh
cGFjaXR5ID0gY2FwYWNpdHk7CisgICAgd2hpbGUgKHNpemUoKSA+IGNhcGFjaXR5KQorICAgICAg
ICByZW1vdmVPbGRlc3RFbnRyeSgpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OmFk
ZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSkKK3sKKyAgICBBU1NFUlQoY2FwYWNpdHko
KSk7CisKKyAgICBpdGVtLnNldFN1c3BlbmRlZFBhZ2UoV1RGTW92ZShzdXNwZW5kZWRQYWdlKSk7
CisgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLmFkZCgmaXRlbSk7CisKKyAgICBpZiAoc2l6ZSgp
ID4gY2FwYWNpdHkoKSkKKyAgICAgICAgcmVtb3ZlT2xkZXN0RW50cnkoKTsKKyAgICBBU1NFUlQo
c2l6ZSgpIDw9IGNhcGFjaXR5KCkpOworfQorCit2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJl
bW92ZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgQVNTRVJUKG1f
aXRlbXNXaXRoQ2FjaGVkUGFnZS5jb250YWlucygmaXRlbSkpOworICAgIG1faXRlbXNXaXRoQ2Fj
aGVkUGFnZS5yZW1vdmUoJml0ZW0pOworICAgIGl0ZW0uc2V0U3VzcGVuZGVkUGFnZShudWxscHRy
KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gV2ViQmFja0Zvcndh
cmRDYWNoZTo6dGFrZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCit7CisgICAg
QVNTRVJUKG1faXRlbXNXaXRoQ2FjaGVkUGFnZS5jb250YWlucygmaXRlbSkpOworICAgIG1faXRl
bXNXaXRoQ2FjaGVkUGFnZS5yZW1vdmUoJml0ZW0pOworICAgIHJldHVybiBpdGVtLnRha2VTdXNw
ZW5kZWRQYWdlKCk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmll
c0ZvclByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIHJlbW92ZUVudHJp
ZXNNYXRjaGluZyhbJnByb2Nlc3NdKGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuICZpdGVt
LnN1c3BlbmRlZFBhZ2UoKS0+cHJvY2VzcygpID09ICZwcm9jZXNzOworICAgIH0pOworfQorCit2
b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQYWdlKFdlYlBhZ2VQcm94
eSYgcGFnZSkKK3sKKyAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3BhZ2VJRCA9IHBhZ2UuaWRl
bnRpZmllcigpXShhdXRvJiBpdGVtKSB7CisgICAgICAgIHJldHVybiBpdGVtLnBhZ2VJRCgpID09
IHBhZ2VJRDsKKyAgICB9KTsKK30KKwordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVF
bnRyaWVzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Jik+JiBtYXRjaGVzKQoreworICAgIGZvciAoYXV0byBpdCA9IG1faXRlbXNXaXRoQ2FjaGVkUGFn
ZS5iZWdpbigpOyBpdCAhPSBtX2l0ZW1zV2l0aENhY2hlZFBhZ2UuZW5kKCk7KSB7CisgICAgICAg
IGF1dG8gY3VycmVudCA9IGl0OworICAgICAgICArK2l0OworICAgICAgICBpZiAobWF0Y2hlcygq
KmN1cnJlbnQpKSB7CisgICAgICAgICAgICAoKmN1cnJlbnQpLT5zZXRTdXNwZW5kZWRQYWdlKG51
bGxwdHIpOworICAgICAgICAgICAgbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnJlbW92ZShjdXJyZW50
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpjbGVh
cihBbGxvd1Byb2Nlc3NDYWNoaW5nIGFsbG93UHJvY2Vzc0NhY2hpbmcpCit7CisgICAgYXV0byBp
dGVtc1dpdGhDYWNoZWRQYWdlID0gV1RGTW92ZShtX2l0ZW1zV2l0aENhY2hlZFBhZ2UpOworICAg
IGZvciAoYXV0byogaXRlbSA6IGl0ZW1zV2l0aENhY2hlZFBhZ2UpIHsKKyAgICAgICAgYXV0byBw
cm9jZXNzID0gbWFrZVJlZihpdGVtLT5zdXNwZW5kZWRQYWdlKCktPnByb2Nlc3MoKSk7CisgICAg
ICAgIGl0ZW0tPnNldFN1c3BlbmRlZFBhZ2UobnVsbHB0cik7CisgICAgICAgIHByb2Nlc3MtPm1h
eWJlU2h1dERvd24oYWxsb3dQcm9jZXNzQ2FjaGluZyk7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENh
Y2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmUwMmFiMTc3MmZjZDI4NDU3MWVjZTI2OWQ5MDA5MjcyMWZjZmRk
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkQ2FjaGUuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OworY2xhc3Mg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlBy
b2Nlc3NQcm94eTsKK2VudW0gY2xhc3MgQWxsb3dQcm9jZXNzQ2FjaGluZzsKKworY2xhc3MgV2Vi
QmFja0ZvcndhcmRDYWNoZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgV2ViQmFja0ZvcndhcmRDYWNoZSgpOworICAgIH5XZWJCYWNrRm9yd2FyZENhY2hlKCk7
CisKKyAgICB2b2lkIHNldENhcGFjaXR5KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBjYXBhY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWNpdHk7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9pdGVtc1dpdGhDYWNoZWRQYWdlLnNpemUoKTsgfQorCisgICAgdm9pZCBj
bGVhcihBbGxvd1Byb2Nlc3NDYWNoaW5nKTsKKyAgICB2b2lkIHJlbW92ZUVudHJpZXNGb3JQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlRW50cmllc0ZvclBhZ2UoV2Vi
UGFnZVByb3h5Jik7CisKKyAgICB2b2lkIGFkZEVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
LCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92
ZUVudHJ5KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiB0YWtlRW50cnkoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOworCitw
cml2YXRlOgorICAgIHZvaWQgcmVtb3ZlT2xkZXN0RW50cnkoKTsKKyAgICB2b2lkIHJlbW92ZUVu
dHJpZXNNYXRjaGluZyhjb25zdCBGdW5jdGlvbjxib29sKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KT4mKTsKKworICAgIHVuc2lnbmVkIG1fY2FwYWNpdHkgeyAwIH07CisgICAgTGlzdEhhc2hTZXQ8
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+IG1faXRlbXNXaXRoQ2FjaGVkUGFnZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAKaW5kZXggNTM3MDM3MWM0ZTAyYmNjMTVmMzczOTRkOTVjMWRkNTA3ODlj
OWI1MS4uNmFlY2Q4MjlkZTE4ZGU0NTk2YjUwZmMyMmVhZTBkZWJlZTBiODU5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5o
PgpAQCAtNDY3LDkgKzQ2OCwxMCBAQCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBX
ZWJCYWNrRm9yd2FyZExpc3Q6Oml0ZW1TdGF0ZXMoKSBjb25zdAogCiB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdDo6ZGlkUmVtb3ZlSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBiYWNrRm9yd2Fy
ZExpc3RJdGVtKQogeworICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW0ud2FzUmVtb3ZlZEZyb21CYWNr
Rm9yd2FyZExpc3QoKTsKKwogICAgIG1fcGFnZS0+YmFja0ZvcndhcmRSZW1vdmVkSXRlbShiYWNr
Rm9yd2FyZExpc3RJdGVtLml0ZW1JRCgpKTsKIAotICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW0uc2V0
U3VzcGVuZGVkUGFnZShudWxscHRyKTsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0o
R1RLKQogICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW0uc2V0U25hcHNob3QobnVsbHB0cik7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDA4ZTE0MmM3
ZDM2MmEwNzYzOGZkNTg0MWRiNjIxMjc0YWJmNjQyZGMuLmUyNTFiMzZmN2MzZDBlNWMyNTI1OTk5
ZWI0NThlNGRlN2Q4Zjc1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtOTIsNiArOTIsNyBAQAogI2luY2x1ZGUgIlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRp
b25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1ZGUg
IldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKQEAgLTc1MCw2ICs3NTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIFBybwogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSUQsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRl
cmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50
ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSkKIHsKKyAgICBtX3N1c3BlbmRlZFBhZ2VL
ZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2Ug
PSBudWxscHRyOwogCiAgICAgaWYgKCFtYWluRnJhbWVJRCkKQEAgLTc4MCw2ICs3ODIsMTUgQEAg
Ym9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAor
ICAgIGJvb2wgbmVlZHNTdXNwZW5kZWRQYWdlVG9QcmV2ZW50Rmxhc2hpbmcgPSBzaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUgPT0gU2hvdWxk
RGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlOjpZZXM7
CisgICAgaWYgKCFuZWVkc1N1c3BlbmRlZFBhZ2VUb1ByZXZlbnRGbGFzaGluZyAmJiAoIWZyb21J
dGVtIHx8ICFzaG91bGRVc2VCYWNrRm9yd2FyZENhY2hlKCkpKSB7CisgICAgICAgIGlmICghZnJv
bUl0ZW0pCisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGlu
ZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IE5vdCBzdXNwZW5kaW5nIGN1cnJlbnQg
cGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkgdGhlcmUgaXMgbm8gYXNzb2NpYXRlZCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBOb3Qgc3VzcGVuZGluZyBjdXJyZW50IHBh
Z2UgZm9yIHByb2Nlc3MgcGlkICVpIHRoZSBiYWNrIC8gZm9yd2FyZCBjYWNoZSBpcyBkaXNhYmxl
ZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
InN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZv
ciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAg
YXV0byBzdXNwZW5kZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlz
LCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1Vu
dGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKQEAgLTc5MCwxNCArODAx
LDI4IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgaWYgKHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzKQogICAgICAg
ICBzdXNwZW5kZWRQYWdlLT5jbG9zZVdpdGhvdXRGbGFzaGluZygpOwogCi0gICAgaWYgKGZyb21J
dGVtICYmIG1fcHJlZmVyZW5jZXMtPnVzZXNQYWdlQ2FjaGUoKSkKLSAgICAgICAgZnJvbUl0ZW0t
PnNldFN1c3BlbmRlZFBhZ2Uoc3VzcGVuZGVkUGFnZS5nZXQoKSk7Ci0KICAgICBtX2xhc3RTdXNw
ZW5kZWRQYWdlID0gbWFrZVdlYWtQdHIoKnN1c3BlbmRlZFBhZ2UpOwotICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5hZGRTdXNwZW5kZWRQYWdlKFdURk1vdmUoc3VzcGVuZGVkUGFnZSkpOwor
CisgICAgaWYgKGZyb21JdGVtICYmIHNob3VsZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSkKKyAgICAg
ICAgYmFja0ZvcndhcmRDYWNoZSgpLmFkZEVudHJ5KCpmcm9tSXRlbSwgV1RGTW92ZShzdXNwZW5k
ZWRQYWdlKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChuZWVkc1N1c3BlbmRlZFBhZ2VU
b1ByZXZlbnRGbGFzaGluZyk7CisgICAgICAgIG1fc3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRG
bGFzaGluZyA9IFdURk1vdmUoc3VzcGVuZGVkUGFnZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1dlYkJhY2tGb3J3YXJkQ2FjaGUmIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRD
YWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmJhY2tG
b3J3YXJkQ2FjaGUoKTsKK30KKworYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZFVzZUJhY2tGb3J3
YXJkQ2FjaGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByZWZlcmVuY2VzLT51c2VzUGFnZUNh
Y2hlKCkgJiYgYmFja0ZvcndhcmRDYWNoZSgpLmNhcGFjaXR5KCkgPiAwOworfQorCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVh
UHJveHk+JiYgZHJhd2luZ0FyZWEsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmIG1haW5GcmFtZSkK
IHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwpAQCAtMTAyNyw3ICsxMDUyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFnZSgqdGhpcyk7CisgICAgbV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLmJhY2tGb3J3YXJkQ2FjaGUoKS5yZW1vdmVFbnRyaWVzRm9y
UGFnZSgqdGhpcyk7CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNs
b3NlKCksIG1fd2ViUGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMs
IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtMjkyOSw3ICsy
OTU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjoga2VlcCB1c2luZyBwcm9jZXNzICVpIGZvciBuYXZpZ2F0aW9uLCByZWFzb246ICV7cHVi
bGljfXMiLCBwcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAKICAg
ICAgICAgaWYgKHNob3VsZFByb2Nlc3NTd2FwKSB7Ci0gICAgICAgICAgICBhdXRvIHN1c3BlbmRl
ZFBhZ2UgPSBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UgPyBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS50YWtlU3VzcGVuZGVkUGFnZSgqZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlKSA6IG51bGxwdHI7
CisgICAgICAgICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UgPyBiYWNrRm9yd2FyZENhY2hlKCkudGFrZUVudHJ5KCpkZXN0aW5hdGlvblN1c3BlbmRlZFBh
Z2UtPmJhY2tGb3J3YXJkTGlzdEl0ZW0oKSkgOiBudWxscHRyOwogICAgICAgICAgICAgaWYgKHN1
c3BlbmRlZFBhZ2UgJiYgc3VzcGVuZGVkUGFnZS0+cGFnZUlzQ2xvc2VkT3JDbG9zaW5nKCkpCiAg
ICAgICAgICAgICAgICAgc3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKQEAgLTcwMjYsNiArNzA1
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVz
ZXRTdGF0ZVJlYXNvbikKICAgICBtX21haW5GcmFtZSA9IG51bGxwdHI7CiAgICAgbV9mb2N1c2Vk
RnJhbWUgPSBudWxscHRyOwogICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSBudWxscHRyOwor
ICAgIG1fc3VzcGVuZGVkUGFnZUtlcHRUb1ByZXZlbnRGbGFzaGluZyA9IG51bGxwdHI7CiAgICAg
bV9sYXN0U3VzcGVuZGVkUGFnZSA9IG51bGxwdHI7CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAg
LTczNTUsNiArNzM4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyCiAKICAgICBpZiAobV9s
YXN0U3VzcGVuZGVkUGFnZSkKICAgICAgICAgbV9sYXN0U3VzcGVuZGVkUGFnZS0+cGFnZUVudGVy
ZWRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOworICAgIG1fc3VzcGVuZGVkUGFnZUtlcHRU
b1ByZXZlbnRGbGFzaGluZyA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBhMDA0ZTkwM2Q4OTI3YjQxMjA1MGEyMjJiZTA0ZWJkYTM2MDVlMDhkLi5h
Njk0ODhkZTY3NmQ4Y2Y3YWJmMjBhMjZkMTc1NDMwMjY4ZDliZWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjcwLDYgKzI3MCw3IEBAIGNsYXNzIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5OworY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKIGNsYXNzIFdlYktleWJvYXJk
RXZlbnQ7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViTW91c2VFdmVudDsK
QEAgLTExMTQsOSArMTExNSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFdlYlByb2Nlc3NQ
cm94eSYgZW5zdXJlUnVubmluZ1Byb2Nlc3MoKTsKLSAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MoKSB7IHJldHVybiBtX3Byb2Nlc3M7IH0KKyAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KICAgICBQcm9jZXNzSUQgcHJvY2Vzc0lkZW50
aWZpZXIoKSBjb25zdDsKIAorICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2Fj
aGUoKSBjb25zdDsKKwogICAgIFdlYlByZWZlcmVuY2VzJiBwcmVmZXJlbmNlcygpIHsgcmV0dXJu
IG1fcHJlZmVyZW5jZXM7IH0KICAgICB2b2lkIHNldFByZWZlcmVuY2VzKFdlYlByZWZlcmVuY2Vz
Jik7CiAKQEAgLTE1OTcsNiArMTYwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKIAogICAgIHZvaWQgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKKyAg
ICBib29sIHNob3VsZFVzZUJhY2tGb3J3YXJkQ2FjaGUoKSBjb25zdDsKIAogICAgIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IGdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUpOwogCkBAIC0yNTUxLDYgKzI1NTUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9u
IHsgZmFsc2UgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4g
bV9wcm92aXNpb25hbFBhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94
eT4gbV9zdXNwZW5kZWRQYWdlS2VwdFRvUHJldmVudEZsYXNoaW5nOwogICAgIFdlYWtQdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiBtX2xhc3RTdXNwZW5kZWRQYWdlOwogCiAjaWYgSEFWRShQRU5DSUxL
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNGI1
ZWRmYzY4NzBkYjgxZDIyMzFkYWQ2NzVmOGY5MzZlNmE4NjNlNy4uMzA1NTdhNjczOThkZjMzYzEx
YzQ0MzEzODY3MDU0NzI1NTBiOTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIlVJR2FtZXBhZFByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1dG9t
YXRpb25TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2luY2x1
ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKQEAgLTIzNiw2ICsyMzcsNyBA
QCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRl
cihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7IH0p
CiAgICAgLCBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2
ZW50KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7IH0pCiAjZW5kaWYKKyAgICAsIG1fYmFj
a0ZvcndhcmRDYWNoZShtYWtlVW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJkQ2FjaGU+KCkpCiAgICAg
LCBtX3dlYlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdlYlByb2Nlc3NDYWNoZT4oKnRoaXMp
KQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTI4Nyw3ICsyODks
NyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAKICAgICBub3RpZnlUaGlzV2ViUHJvY2Vzc1Bvb2xX
YXNDcmVhdGVkKCk7CiAKLSAgICB1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKTsKKyAgICB1
cGRhdGVCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkoKTsKIH0KIAogV2ViUHJvY2Vzc1Bvb2w6On5X
ZWJQcm9jZXNzUG9vbCgpCkBAIC0xMDkxLDkgKzEwOTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgaWYgKG1f
cHJvY2Vzc1dpdGhQYWdlQ2FjaGUgPT0gcHJvY2VzcykKICAgICAgICAgbV9wcm9jZXNzV2l0aFBh
Z2VDYWNoZSA9IG51bGxwdHI7CiAKLSAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZUFsbE1hdGNo
aW5nKFtwcm9jZXNzXShhdXRvJiBzdXNwZW5kZWRQYWdlKSB7Ci0gICAgICAgIHJldHVybiAmc3Vz
cGVuZGVkUGFnZS0+cHJvY2VzcygpID09IHByb2Nlc3M7Ci0gICAgfSk7CisgICAgbV9iYWNrRm9y
d2FyZENhY2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJvY2VzcygqcHJvY2Vzcyk7CiAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHByb2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3Jr
ZXJzKCkpIHsKQEAgLTExMzEsNyArMTEzMSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiB3CiAg
ICAgICAgICAgICByZXR1cm4gKnByb2Nlc3M7CiAKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2
ZSBhIHN1c3BlbmRlZCBwYWdlIGZvciB0aGUgZ2l2ZW4gcmVnaXN0cmFibGUgZG9tYWluIGFuZCB1
c2UgaXRzIHByb2Nlc3MgaWYgd2UgZG8sIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgotICAgICAg
ICBpZiAoYXV0byBwcm9jZXNzID0gcGFnZSA/IGZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9j
ZXNzKHJlZ2lzdHJhYmxlRG9tYWluLCAqcGFnZSwgd2Vic2l0ZURhdGFTdG9yZSkgOiBudWxscHRy
KSB7CisgICAgICAgIGlmIChhdXRvIHByb2Nlc3MgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRS
ZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKCp0aGlzLCByZWdpc3RyYWJsZURvbWFpbiwgd2Vi
c2l0ZURhdGFTdG9yZSkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGlu
ZywgIlVzaW5nIFdlYlByb2Nlc3MgJWkgZnJvbSBhIFN1c3BlbmRlZFBhZ2UiLCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIHJldHVybiAqcHJvY2VzczsKICAgICAg
ICAgfQpAQCAtMTM4OCw3ICsxMzg4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aGFuZGxlTWVt
b3J5UHJlc3N1cmVXYXJuaW5nKENyaXRpY2FsKQogICAgIFJFTEVBU0VfTE9HKFBlcmZvcm1hbmNl
TG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Bvb2w6OmhhbmRsZU1lbW9yeVByZXNzdXJlV2Fybmlu
ZyIsIHRoaXMpOwogCiAKLSAgICBjbGVhclN1c3BlbmRlZFBhZ2VzKEFsbG93UHJvY2Vzc0NhY2hp
bmc6Ok5vKTsKKyAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPmNsZWFyKEFsbG93UHJvY2Vzc0NhY2hp
bmc6Ok5vKTsKICAgICBtX3dlYlByb2Nlc3NDYWNoZS0+Y2xlYXIoKTsKIAogICAgIGlmIChtX3By
ZXdhcm1lZFByb2Nlc3MpCkBAIC0xNTQ5LDI1ICsxNTQ5LDIyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBT
dHJpbmcmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QodXJsU2No
ZW1lKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZU1heFN1c3BlbmRlZFBhZ2VD
b3VudCgpCit2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVCYWNrRm9yd2FyZENhY2hlQ2FwYWNp
dHkoKQogewogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT51c2VzUGFnZUNhY2hlKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGR1bW15ID0gMDsKICAgICBTZWNvbmRzIGR1bW15
SW50ZXJ2YWw7Ci0gICAgdW5zaWduZWQgcGFnZUNhY2hlU2l6ZSA9IDA7Ci0gICAgY2FsY3VsYXRl
TWVtb3J5Q2FjaGVTaXplcyhMZWdhY3lHbG9iYWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVN
b2RlbCgpLCBkdW1teSwgZHVtbXksIGR1bW15LCBkdW1teUludGVydmFsLCBwYWdlQ2FjaGVTaXpl
KTsKLQotICAgIG1fbWF4U3VzcGVuZGVkUGFnZUNvdW50ID0gcGFnZUNhY2hlU2l6ZTsKKyAgICB1
bnNpZ25lZCBiYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkgPSAwOworICAgIGNhbGN1bGF0ZU1lbW9y
eUNhY2hlU2l6ZXMoTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwo
KSwgZHVtbXksIGR1bW15LCBkdW1teSwgZHVtbXlJbnRlcnZhbCwgYmFja0ZvcndhcmRDYWNoZUNh
cGFjaXR5KTsKIAotICAgIHdoaWxlIChtX3N1c3BlbmRlZFBhZ2VzLnNpemUoKSA+IG1fbWF4U3Vz
cGVuZGVkUGFnZUNvdW50KQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZUZpcnN0KCk7
CisgICAgbV9iYWNrRm9yd2FyZENhY2hlLT5zZXRDYXBhY2l0eShiYWNrRm9yd2FyZENhY2hlQ2Fw
YWNpdHkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9k
ZWwgY2FjaGVNb2RlbCkKIHsKLSAgICB1cGRhdGVNYXhTdXNwZW5kZWRQYWdlQ291bnQoKTsKKyAg
ICB1cGRhdGVCYWNrRm9yd2FyZENhY2hlQ2FwYWNpdHkoKTsKIAogICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0Q2FjaGVNb2RlbChjYWNoZU1vZGVsKSk7CiAK
QEAgLTIyNTgsNjcgKzIyNTUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2
aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihjcmVhdGVOZXdQcm9jZXNzKCksIG51bGxwdHIsIHJlYXNvbik7
CiB9CiAKLVJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpmaW5kUmV1c2Fi
bGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4sIFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlKQotewotICAgIGF1dG8gaXQgPSBtX3N1c3BlbmRlZFBhZ2VzLmZpbmRJZihbJl0o
YXV0byYgc3VzcGVuZGVkUGFnZSkgewotICAgICAgICByZXR1cm4gc3VzcGVuZGVkUGFnZS0+cHJv
Y2VzcygpLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnN1c3Bl
bmRlZFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gaXQgPT0gbV9zdXNwZW5kZWRQYWdlcy5lbmQoKSA/IG51bGxwdHIg
OiAmKCppdCktPnByb2Nlc3MoKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWRkU3VzcGVu
ZGVkUGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBh
Z2UpCi17Ci0gICAgaWYgKCFtX21heFN1c3BlbmRlZFBhZ2VDb3VudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKG1fc3VzcGVuZGVkUGFnZXMuc2l6ZSgpID49IG1fbWF4U3VzcGVuZGVkUGFn
ZUNvdW50KQotICAgICAgICBtX3N1c3BlbmRlZFBhZ2VzLnJlbW92ZUZpcnN0KCk7Ci0KLSAgICBt
X3N1c3BlbmRlZFBhZ2VzLmFwcGVuZChXVEZNb3ZlKHN1c3BlbmRlZFBhZ2UpKTsKLX0KLQotdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQotewotICAgIG1fc3VzcGVuZGVk
UGFnZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZwYWdlLCBwcm9jZXNzXShhdXRvJiBzdXNwZW5kZWRQ
YWdlKSB7Ci0gICAgICAgIHJldHVybiAmc3VzcGVuZGVkUGFnZS0+cGFnZSgpID09ICZwYWdlICYm
ICghcHJvY2VzcyB8fCAmc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpID09IHByb2Nlc3MpOwotICAg
IH0pOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBXZWJQcm9jZXNz
UG9vbDo6dGFrZVN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBzdXNwZW5kZWRQYWdl
KQotewotICAgIHJldHVybiBtX3N1c3BlbmRlZFBhZ2VzLnRha2VGaXJzdChbJnN1c3BlbmRlZFBh
Z2VdKGF1dG8mIGl0ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCkgPT0gJnN1c3BlbmRl
ZFBhZ2U7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZVN1c3BlbmRl
ZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBzdXNwZW5kZWRQYWdlKQotewotICAgIGF1dG8gaXQg
PSBtX3N1c3BlbmRlZFBhZ2VzLmZpbmRJZihbJnN1c3BlbmRlZFBhZ2VdKGF1dG8mIGl0ZW0pIHsK
LSAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0KCkgPT0gJnN1c3BlbmRlZFBhZ2U7Ci0gICAgfSk7Ci0g
ICAgaWYgKGl0ICE9IG1fc3VzcGVuZGVkUGFnZXMuZW5kKCkpCi0gICAgICAgIG1fc3VzcGVuZGVk
UGFnZXMucmVtb3ZlKGl0KTsKLX0KLQotYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU3VzcGVuZGVk
UGFnZUZvcihXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYlBhZ2VQcm94eSYgcGFnZSkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlcy5maW5kSWYoWyZwcm9jZXNzLCAmcGFn
ZV0oYXV0byYgc3VzcGVuZGVkUGFnZSkgewotICAgICAgICByZXR1cm4gJnN1c3BlbmRlZFBhZ2Ut
PnByb2Nlc3MoKSA9PSAmcHJvY2VzcyAmJiAmc3VzcGVuZGVkUGFnZS0+cGFnZSgpID09ICZwYWdl
OwotICAgIH0pICE9IG1fc3VzcGVuZGVkUGFnZXMuZW5kKCk7Ci19Ci0KLXZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmNsZWFyU3VzcGVuZGVkUGFnZXMoQWxsb3dQcm9jZXNzQ2FjaGluZyBhbGxvd1Byb2Nl
c3NDYWNoaW5nKQotewotICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4+IHByb2Nl
c3NlczsKLSAgICBmb3IgKGF1dG8mIHN1c3BlbmRlZFBhZ2UgOiBtX3N1c3BlbmRlZFBhZ2VzKQot
ICAgICAgICBwcm9jZXNzZXMuYWRkKCZzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCkpOwotCi0gICAg
bV9zdXNwZW5kZWRQYWdlcy5jbGVhcigpOwotCi0gICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJv
Y2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5tYXliZVNodXREb3duKGFsbG93UHJvY2Vzc0NhY2hp
bmcpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjphZGRNb2NrTWVkaWFEZXZpY2UoY29uc3Qg
TW9ja01lZGlhRGV2aWNlJiBkZXZpY2UpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDA1Yjg3MjEwZTY5ZDZm
YjkzMDQ4ODgzN2Q3OTI1NTRhNGFiZTQ2Y2UuLjYwZWY0OTMxYTI0OGU1Zjc3NWFlNDNhYWI0YmI5
ZDQ5MGRiNjVlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApA
QCAtOTUsNiArOTUsNyBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorY2xhc3MgV2ViQmFja0ZvcndhcmRDYWNoZTsKIGNsYXNzIEhpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyOwogY2xhc3MgVUlHYW1lcGFkOwogY2xhc3MgUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjsKQEAgLTE0OSw2ICsxNTAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
ICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKKworICAgIFdlYkJhY2tGb3J3YXJkQ2FjaGUmIGJhY2tGb3J3YXJkQ2FjaGUoKSB7IHJldHVy
biBtX2JhY2tGb3J3YXJkQ2FjaGUuZ2V0KCk7IH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKQEAgLTQ3NiwxNyArNDc5LDYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25zdCBB
UEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3MsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJik7CiAKLSAgICAv
LyBTdXNwZW5kZWRQYWdlUHJveHkgbWFuYWdlbWVudC4KLSAgICB2b2lkIGFkZFN1c3BlbmRlZFBh
Z2Uoc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJik7Ci0gICAgdm9pZCByZW1v
dmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5
KiA9IG51bGxwdHIpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHRh
a2VTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwotICAgIHZvaWQgcmVtb3ZlU3Vz
cGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmKTsKLSAgICBib29sIGhhc1N1c3BlbmRlZFBh
Z2VGb3IoV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZVByb3h5JikgY29uc3Q7Ci0gICAgdW5zaWdu
ZWQgbWF4U3VzcGVuZGVkUGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9tYXhTdXNwZW5kZWRQ
YWdlQ291bnQ7IH0KLSAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBmaW5kUmV1c2FibGVTdXNw
ZW5kZWRQYWdlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYlBh
Z2VQcm94eSYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLQotICAgIHZvaWQgY2xlYXJTdXNwZW5kZWRQ
YWdlcyhBbGxvd1Byb2Nlc3NDYWNoaW5nKTsKLQogICAgIHZvaWQgZGlkUmVhY2hHb29kVGltZVRv
UHJld2FybSgpOwogCiAgICAgdm9pZCBkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgV2ViQ29yZTo6UHJld2FybUluZm9y
bWF0aW9uJik7CkBAIC01OTIsNyArNTg0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdHJ5UHJl
d2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihXZWJQcm9jZXNzUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAgdm9pZCB1cGRhdGVNYXhTdXNwZW5kZWRQYWdl
Q291bnQoKTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0eSgpOwogCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBmbG9hdCBkaXNwbGF5QnJpZ2h0bmVzcygpOwpA
QCAtNzczLDggKzc2NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNlbmRpZgogCi0gICAgRGVxdWU8
c3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4+IG1fc3VzcGVuZGVkUGFnZXM7Ci0g
ICAgdW5zaWduZWQgbV9tYXhTdXNwZW5kZWRQYWdlQ291bnQgeyAwIH07CisgICAgVW5pcXVlUmVm
PFdlYkJhY2tGb3J3YXJkQ2FjaGU+IG1fYmFja0ZvcndhcmRDYWNoZTsKIAogICAgIFVuaXF1ZVJl
ZjxXZWJQcm9jZXNzQ2FjaGU+IG1fd2ViUHJvY2Vzc0NhY2hlOwogICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+PiBtX3N3YXBwZWRQ
cm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMjYxOTAx
NmIyNGM5ZThmN2E1ODQ3YTlkYmI2ZjBmNmM1OWYwOWFkZS4uMmEyM2IyYWNlY2FhM2RiYzNjNWEy
ZDM0MGE4ZmY3MzMyY2NlZmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgor
I2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJLaXQySW5pdGlh
bGl6ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3ND
YWNoZS5oIgpAQCAtNzI1LDcgKzcyNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFdhbGxUaW1lCiAgICAg
YXV0byB3ZWJQcm9jZXNzQWNjZXNzVHlwZSA9IGNvbXB1dGVXZWJQcm9jZXNzQWNjZXNzVHlwZUZv
ckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAod2ViUHJv
Y2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5vbmUpIHsKICAgICAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7Ci0gICAgICAgICAgICBwcm9j
ZXNzUG9vbC0+Y2xlYXJTdXNwZW5kZWRQYWdlcyhBbGxvd1Byb2Nlc3NDYWNoaW5nOjpObyk7Cisg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+YmFja0ZvcndhcmRDYWNoZSgpLmNsZWFyKEFsbG93UHJv
Y2Vzc0NhY2hpbmc6Ok5vKTsKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2Fj
aGUoKS5jbGVhcigpOwogICAgICAgICB9CiAKQEAgLTIwNzcsNyArMjA3OCw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6YWRkU2VjS2V5UHJveHlTdG9yZShSZWY8U2VjS2V5UHJveHlTdG9yZT4m
JiBzdG9yZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLXZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3ZvaWQgV2Vic2l0ZURh
dGFTdG9yZTo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3JlOjpN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKICAg
ICBpZiAoIW1fYXV0aGVudGljYXRvck1hbmFnZXItPmlzTW9jaygpKSB7CiAgICAgICAgIG1fYXV0
aGVudGljYXRvck1hbmFnZXIgPSBtYWtlVW5pcXVlUmVmPE1vY2tBdXRoZW50aWNhdG9yTWFuYWdl
cj4oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZh
ZmEwMWIwODcwYjdiLi5kYTIxNzQxMDQyNzQ5NWJkMzhiNWVjN2Y4NzgwN2E3ZDM5NzMzYTljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTMxOTcsNiArMzE5Nyw4IEBACiAJCTQ0NTk5ODQxMjI4MzNFNjAwMEU2MTM3MyAvKiBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OUQ5MEQ4MjFGRDYz
RkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTQ4MUM2MjFGMkQyN0IwMEYyRjkx
OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjAzMDExQTIzNEJFMzFEMDA5
QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDYwMzAxMUIyMzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNo
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRC
ODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4
NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzgyMiw2ICs3ODI0LDggQEAKIAkJCQkxQTBGMjlFMTEyMEI0NDQyMDA1M0Qx
QjkgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAgKi8sCiAJCQkJMUEwRjI5RTIxMjBCNDQ0MjAwNTNE
MUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTYwMjI0OTE4QzE2QjA4MDBDM0U4
QzkgLyogVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjAzMDExQTIzNEJF
MzFEMDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8sCisJCQkJNDYwMzAxMUIy
MzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuaCAqLywKIAkJCQlCQzcyQkEx
QjExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmNwcCAqLywKIAkJCQlCQzcy
QkExQzExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJRjAz
Njk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYWYyMTA0YTU0NmVl
Y2IxMDRmYzQ2ZmVkZDdlOWM0OGExNDRhMDA3Li5kYTIxZmU4M2Q0ODc5N2NiNWNmMGYxNWRmNzk4
MzMzNzg2OTkwOTljIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMTAtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIFN1c3BlbmRlZFBhZ2UgbG9naWMgZnJvbSBXZWJQ
cm9jZXNzUG9vbCB0byBuZXcgV2ViQmFja0ZvcndhcmRDYWNoZSBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgRHJvcCB0ZXN0IHRoYXQgcmVsaWVk
IG9uIHJldXNpbmcgYSBTdXNwZW5kZWRQYWdlJ3MgcHJvY2VzcyBmcm9tIGEgbG9hZEhUTUxTdHJp
bmdMb2FkIChvcHRpbWl6YXRpb24pLgorICAgICAgICBUaGlzIG5vIGxvbmdlciB3b3JrcyBub3cg
dGhhdCBTdXNwZW5kZWRQYWdlcyBhcmUgb3duZWQgYnkgdGhlaXIgYXNzb2NpYXRlZCBiYWNrL2Zv
cndhcmQgaXRlbSBiZWNhdXNlCisgICAgICAgIHdlIGN1cnJlbnRseSBkbyBub3QgY3JlYXRlIGEg
YmFjay9mb3J3YXJkIGl0ZW0gZm9yIGxvYWRIVE1MU3RyaW5nIHJlcXVlc3RzLiBTdXNwZW5kaW5n
IGEgcGFnZSBmb3IgYQorICAgICAgICBsb2FkSFRNTFN0cmluZyB3YXMgYWxzbyB3YXN0ZWZ1bCBz
aW5jZSB0aGVyZSB3YXMgbm8gd2F5IHRvIHJlc3RvcmUgdGhhdCBwYWdlIChnaXZlbiB0aGF0IHRo
ZXJlIHdhcworICAgICAgICBubyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIHRvIGdvIGJhY2sgdG8p
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbToKKwogMjAxOS0xMC0xMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1MDk0NS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDVlNjlmMDVhNWVlYjZkYjczMjNk
Y2U2YzU1MDA4ODhjNjc4ODU4YTAuLjVkNjhiOGQ2YzUyYWE2MmQ5NTllYjg2ZjlkZWQyZGM1MWMx
NTkwNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMjQ4MSw1NSArMjQ4
MSw2IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIFJldXNlU3VzcGVuZGVkUHJvY2VzcykKICAgICBFWFBF
Q1RfRVEoYXBwbGVQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwogfQogCi1U
RVNUKFByb2Nlc3NTd2FwLCBSZXVzZVN1c3BlbmRlZFByb2Nlc3NMb2FkSFRNTFN0cmluZykKLXsK
LSAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCkudXNlc1dlYlBy
b2Nlc3NDYWNoZSA9IE5POwotICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKLQotICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJWaWV3Q29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07Ci0gICAgYXV0byBo
YW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2NdIGluaXRdKTsKLSAgICBbd2ViVmll
d0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAIlBTT04iXTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0KLSAgICBOU1N0cmlu
ZyAqaHRtbFN0cmluZyA9IEAiPGh0bWw+PGJvZHk+VEVTVDwvYm9keT48L2h0bWw+IjsKLSAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvbWFpbjEuaHRtbCJdXTsKLQotICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgZG9uZSA9IGZhbHNlOwotCi0gICAgYXV0
byB3ZWJraXRQSUQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwotCi0gICAgW3dl
YlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbjEuaHRtbCJdXTsKLQotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgZG9uZSA9IGZhbHNlOwotCi0gICAgYXV0byBh
cHBsZVBJRCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07Ci0KLSAgICBFWFBFQ1Rf
TkUod2Via2l0UElELCBhcHBsZVBJRCk7Ci0KLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpo
dG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtp
dC5vcmcvbWFpbjIuaHRtbCJdXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7Ci0gICAgZG9uZSA9IGZhbHNlOwotCi0gICAgLy8gV2Ugc2hvdWxkIGhhdmUgZ29uZSBiYWNr
IHRvIHRoZSB3ZWJraXQub3JnIHByb2Nlc3MgZm9yIHRoaXMgbG9hZCBzaW5jZSB3ZSByZXVzZSBT
dXNwZW5kZWRQYWdlcycgcHJvY2VzcyB3aGVuIHBvc3NpYmxlLgotICAgIEVYUEVDVF9FUSh3ZWJr
aXRQSUQsIFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl0pOwotCi0gICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
cHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbjIuaHRtbCJdXTsKLQotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgZG9uZSA9IGZhbHNlOwotCi0gICAgLy8gV2Ugc2hvdWxk
IGhhdmUgZ29uZSBiYWNrIHRvIHRoZSBhcHBsZS5jb20gcHJvY2VzcyBmb3IgdGhpcyBsb2FkIHNp
bmNlIHdlIHJldXNlIFN1c3BlbmRlZFBhZ2VzJyBwcm9jZXNzIHdoZW4gcG9zc2libGUuCi0gICAg
RVhQRUNUX0VRKGFwcGxlUElELCBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdKTsKLX0K
LQogc3RhdGljIGNvbnN0IGNoYXIqIGZhaWxzVG9FbnRlclBhZ2VDYWNoZVRlc3RCeXRlcyA9IFIi
UFNPTlJFU09VUkNFKAogPGJvZHk+CiA8c2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>