<?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>197282</bug_id>
          
          <creation_ts>2019-04-25 08:40:02 -0700</creation_ts>
          <short_desc>REGRESSION(r244627): Causing internal build failures (Requested by ShawnRoberts on #webkit).</short_desc>
          <delta_ts>2019-04-25 08:44:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>197171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>sroberts</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1530374</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-25 08:40:02 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/244627 broke the build:
Causing internal build failures (Requested by ShawnRoberts on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530376</commentid>
    <comment_count>1</comment_count>
      <attachid>368238</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-25 08:40:16 -0700</bug_when>
    <thetext>Created attachment 368238
ROLLOUT of r244627

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530377</commentid>
    <comment_count>2</comment_count>
      <attachid>368238</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-25 08:43:28 -0700</bug_when>
    <thetext>Comment on attachment 368238
ROLLOUT of r244627

Clearing flags on attachment: 368238

Committed r244644: &lt;https://trac.webkit.org/changeset/244644&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530378</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-25 08:43:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530379</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-25 08:44:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/50206735&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368238</attachid>
            <date>2019-04-25 08:40:16 -0700</date>
            <delta_ts>2019-04-25 08:43:28 -0700</delta_ts>
            <desc>ROLLOUT of r244627</desc>
            <filename>bug-197282-20190425084016.patch</filename>
            <type>text/plain</type>
            <size>251167</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRlZmZiMWY5Yjk1MWEx
NjE1MGU0ZGFjNDJhZTc3N2MyNjY3MTIwYS4uNWFjNDJjYWM5OWIxZDk0ZDgxZDZhY2QzN2ZkMmVj
MTYxOTE0NzkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA0LTI1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQ0NjI3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk3MjgyCisKKyAgICAgICAgQ2F1c2luZyBpbnRlcm5hbCBidWlsZCBm
YWlsdXJlcyAoUmVxdWVzdGVkIGJ5IFNoYXduUm9iZXJ0cyBvbgorICAgICAgICAjd2Via2l0KS4K
KworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkNyZWF0ZSBBVkZvdW5k
YXRpb25Tb2Z0TGluay57aCxtbX0gdG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlIgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTcxCisgICAgICAgIGh0
dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ2MjcKKwogMjAxOS0wNC0yNSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgcmVkZWZpbml0aW9uIG9m
IGVudW1lcmF0b3IgJ05TQXR0YWNobWVudENoYXJhY3Rlcicgd2l0aCBBcHBsZSBpbnRlcm5hbCBi
dWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMjNhZGQ3OTFkYjZiMzUxZGNlOGUwZmRjMTQ2ZmY3
YWM0MTE4NjAwZS4uMDBhMWQzOTVmMDkxMTU5ZWM2NjZhMTkwMTk5OGQxMjc0NzE2ZTZmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDQtMjUgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIyNDQ2MjcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTcyODIKKworICAgICAgICBDYXVzaW5nIGludGVybmFsIGJ1aWxkIGZhaWx1cmVz
IChSZXF1ZXN0ZWQgYnkgU2hhd25Sb2JlcnRzIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQ3JlYXRlIEFWRm91bmRhdGlvblNv
ZnRMaW5rLntoLG1tfSB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcxNzEKKyAgICAgICAgaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NDYyNworCiAyMDE5LTA0LTI0ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyZWF0ZSBBVkZvdW5kYXRp
b25Tb2Z0TGluay57aCxtbX0gdG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg1
OTU2MGZiODI4ZjQzYWI1NGI4OGZmNzNjYWMxNjllOTAwZGYyYTMuLmZmMDlhYmVkZTMxMGMxMDg0
ZTJhYjc4YTBkZDJlNzY2NWMzYWMyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTkt
MDQtMjUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDQ2MjcuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcyODIKKworICAgICAgICBDYXVzaW5nIGludGVy
bmFsIGJ1aWxkIGZhaWx1cmVzIChSZXF1ZXN0ZWQgYnkgU2hhd25Sb2JlcnRzIG9uCisgICAgICAg
ICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQ3Jl
YXRlIEFWRm91bmRhdGlvblNvZnRMaW5rLntoLG1tfSB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcxNzEK
KyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NDYyNworCiAyMDE5
LTA0LTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBIYXJkY29kZWQgdGV4dCBjb2xvciBpbiBpbnB1dCBmaWVsZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCBhOWEwYjdlMDhiNGY2ZjlmNmZiYmRmZDhiYTFlNDZhYmMy
ZWZjYjM0Li44YTMwZDc0OGZlNzFmMDE0ZTU1ZDExYWFkNGZiOTBhNTJiOTI4YWE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDQtMjUgIENvbW1p
dCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyNDQ2MjcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTcyODIKKworICAgICAgICBDYXVzaW5nIGludGVybmFsIGJ1aWxkIGZh
aWx1cmVzIChSZXF1ZXN0ZWQgYnkgU2hhd25Sb2JlcnRzIG9uCisgICAgICAgICN3ZWJraXQpLgor
CisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiQ3JlYXRlIEFWRm91bmRh
dGlvblNvZnRMaW5rLntoLG1tfSB0byByZWR1Y2UgZHVwbGljYXRlIGNvZGUiCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcxNzEKKyAgICAgICAgaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI0NDYyNworCiAyMDE5LTA0LTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAocjI0NDI5
MSk6IEJyb2tlbiBBUEkgVGVzdCBBdXRvTGF5b3V0UmVuZGVyaW5nUHJvZ3Jlc3NSZWxhdGl2ZU9y
ZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KaW5kZXggNDJlYTQzOTU3YzgwZjNmOGI5OWJi
YzU5OWU3NDFhNzI5NTQ4ZmQwOS4uMjYzYTIwMzZhOGQ1ZDY5ZGY3NjFhZWQ5ZGFkOWFmNTAyYmU5
YmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQpAQCAtNTcsMTQgKzU3LDE4IEBACiAjaW1w
b3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKwordHlw
ZWRlZiBBVk1ldGFkYXRhSXRlbSBBVk1ldGFkYXRhSXRlbVR5cGU7CitTT0ZUX0xJTktfRlJBTUVX
T1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24s
IEFWTWV0YWRhdGFJdGVtKQorI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRl
bUNsYXNzKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1
ZUluQ29udGV4dChpZCwgSlNDb250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRo
QVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW0gKiwgSlNDb250ZXh0ICopOwor
c3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRh
ZGF0YUl0ZW1UeXBlICosIEpTQ29udGV4dCAqKTsKICNlbmRpZgogCiBzdGF0aWMgU3RyaW5nIHF1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50U2NyaXB0KCkKQEAgLTMyNSwxMyArMzI5LDEzIEBAIHN0
YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KGlkIHZhbHVlLCBKU0NvbnRl
eHQgKmNvbnRleHQpCiAgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KHZh
bHVlLCBjb250ZXh0KTsKICAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRh
IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUs
IGVtcHR5U3RyaW5nKCksIGNvbnRleHQpOwotICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpXSkKKyAgICBlbHNlIGlmIChbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbQVZNZXRhZGF0YUl0ZW0gY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGpz
VmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwogCiAgICAg
cmV0dXJuIG5pbDsKIH0KIAotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0
ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW0gKml0ZW0sIEpTQ29udGV4dCAqY29udGV4dCkKK3N0
YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRh
dGFJdGVtVHlwZSAqaXRlbSwgSlNDb250ZXh0ICpjb250ZXh0KQogewogICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aERpY3Rpb25hcnk6W2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXV07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzNjU2Mzc4MzU3NTdm
MDZkYThkNGVjNmI3Nzc1ODVlNDJkNGVlZmQ4Li40ODg0ZWQzMWUzYjRhNDFhNGYxZjk1NDAxOGVm
ZWMzOWJjMDAxY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMSw4ICsyMSw2IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFy
Z2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KLQkJMDc3
RTg3QjEyMjZBNDYwMjAwQTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3RTg3QUYyMjZBNDYwMjAw
QTJBRkYwIC8qIEFWRm91bmRhdGlvblNvZnRMaW5rLm1tICovOyB9OwotCQkwNzdFODdCMjIyNkE0
NjAzMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0U4N0IwMjI2QTQ2MDIwMEEyQUZGMCAvKiBB
VkZvdW5kYXRpb25Tb2Z0TGluay5oICovOyB9OwogCQkwQzAwQ0ZENDFGNjhDRTQ2MDBBQUMyNkQg
LyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQzAwQ0ZEMjFGNjhDRTQ2MDBBQUMyNkQgLyogTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmggKi87IH07CiAJCTBDMkQ5RTczMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRN
YWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBD
MkQ5RTcyMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLzsgfTsKIAkJMEMyREEw
NkQxRjMzQ0E4NDAwREJDMzE3IC8qIENGTG9jYWxlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzJEQTA2NzFGMzNDQTg0MDBEQkMzMTcgLyogQ0ZM
b2NhbGVTUEkuaCAqLzsgfTsKQEAgLTEwMCw2ICs5OCw3IEBACiAJCTBDNzc4NUEwMUY0NTEzMEYw
MEY0RUJCNiAvKiBRdWlja0xvb2tNYWNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBDNzc4NTg3MUY0NTEzMEYwMEY0RUJCNiAvKiBRdWlja0xvb2tN
YWNTUEkuaCAqLzsgfTsKIAkJMEM3Nzg1QTExRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0
aWxpdGllc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEM3Nzg1ODgxRjQ1MTMwRjAwRjRFQkI2IC8qIFRlbGVwaG9ueVV0aWxpdGllc1NQSS5oICov
OyB9OwogCQkwQ0Y5OUNBNDFGNzM2Mzc1MDA3RUU3OTMgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMDBD
RkQxMUY2OENFNDYwMEFBQzI2RCAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovOyB9Owor
CQk3QTM2RDBGOTIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FEOUFCMDBC
MDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdF
RTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQ0Y5OUNBNjFGNzM4NDM2MDA3RUU3OTMgLyogQ29yZU1lZGlh
U29mdExpbmsuY3BwICovOyB9OwogCQkwQ0Y5OUNBOTFGNzM4NDM3MDA3RUU3OTMgLyogQ29yZU1l
ZGlhU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBDRjk5Q0E3MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5oICovOyB9
OwogCQkxQzA5RDA1MzFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5RDA1MjFFMzFDNDQxMDA3
MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggKi87IH07CkBAIC0xMjIsNyArMTIxLDYgQEAKIAkJNTcw
QUI4RjkyMEFGNkUzRDAwQjhCRTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwQUI4RjgyMEFGNkUzRDAwQjhC
RTg3IC8qIE5TWFBDQ29ubmVjdGlvblNQSS5oICovOyB9OwogCQk2M0M3RURDNzIxQUZBRTA0MDA2
QTdCOTkgLyogTlNQcm9ncmVzc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NTUEku
aCAqLzsgfTsKIAkJN0ExNjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExNjU2
NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovOyB9OwotCQk3QTM2
RDBGOTIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUg
LyogQ29tbW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCTdBM0E2QTgwMjBDQURCNDcwMDMxN0FBRSAv
KiBOU0ltYWdlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5oICovOyB9OwogCQlB
MTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQg
LyogSElUb29sYm94U1BJLmggKi87IH07CiAJCUExMDI2NThFMUY1NjdFOUQwMEI0Qzg0NCAvKiBI
SVNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTAyNjU4RDFGNTY3RTlEMDBCNEM4NDQgLyogSElTZXJ2aWNlc1NQSS5oICovOyB9OwpA
QCAtMTc3LDggKzE3NSw2IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0JCTA3N0U4N0FGMjI2
QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFWRm91bmRhdGlvblNvZnRMaW5rLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwNzdFODdCMDIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEMwMENGRDEx
RjY4Q0U0NjAwQUFDMjZEIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzAwQ0ZEMjFGNjhDRTQ2MDBBQUMyNkQgLyogTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhVGltZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJE
OUU3MjFFRUY1QUY2MDBEQkMzMTcgLyogRXhwb3J0TWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4cG9ydE1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTg2LDYgKzE4Miw3IEBACiAJCTBDMkRBMDY4MUYzM0NBODQwMERCQzMxNyAvKiBDRk5l
dHdvcmtDb25uZWN0aW9uQ2FjaGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ0ZOZXR3b3JrQ29ubmVjdGlvbkNhY2hlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBDMkRBMDY5MUYzM0NBODQwMERCQzMxNyAvKiBDRk5ldHdvcmtTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0ZOZXR3b3JrU1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBDMkRBMDZBMUYzM0NBODQwMERCQzMxNyAvKiBDRlV0aWxpdGllc1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlV0aWxpdGllc1NQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyog
Q29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1v
bkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJEQTA2QjFGMzND
QTg0MDBEQkMzMTcgLyogQ29yZUF1ZGlvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvcmVBdWRpb1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQzJE
QTA2QzFGMzNDQTg0MDBEQkMzMTcgLyogQ29yZU1lZGlhU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvcmVNZWRpYVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwQzJEQTExQzFGM0JFOUUwMDBEQkMzMTcgLyogQ29yZUdyYXBoaWNzU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVHcmFwaGljc1NQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjg2LDcgKzI4Myw2IEBACiAJCTU3MEFCOEY4MjBBRjZFM0Qw
MEI4QkU4NyAvKiBOU1hQQ0Nvbm5lY3Rpb25TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNYUENDb25u
ZWN0aW9uU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzRTM2OUY5MjFBRkE4
M0YwMDFDMTRCQyAvKiBOU1Byb2dyZXNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TUHJvZ3Jlc3NT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0ExNjU2NDMxRjk3QjJCODAwQkEz
Q0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOU0tleWVkQXJjaGl2ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
N0EzNkQwRjgyMjNBRDlBQjAwQjA1MjJFIC8qIENvbW1vbkNyeXB0b1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0EzQTZBN0YyMENBREI0NjAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNJbWFnZVNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0U1OTA5QzFGOTNCRjFFMDA2N0Y4Q0YgLyogVW5lbmNvZGFi
bGVIYW5kbGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmVuY29kYWJsZUhhbmRsaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRv
b2xib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSElUb29sYm94U1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzksOCArNTc1LDYgQEAKIAkJMUM0
ODc2REUxRjhEODMxMzAwQ0NFRUJEIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwNzdFODdCMDIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3Vu
ZGF0aW9uU29mdExpbmsuaCAqLywKLQkJCQkwNzdFODdBRjIyNkE0NjAyMDBBMkFGRjAgLyogQVZG
b3VuZGF0aW9uU29mdExpbmsubW0gKi8sCiAJCQkJRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8q
IEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gKi8sCiAJCQkJQTFGNjNDOUQyMUE0REJGNzAwNkZC
NDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovLAogCQkJCUExRjYzQzlFMjFBNERCRjcwMDZGQjQz
QiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi8sCkBAIC02NzgsNyArNjcyLDYgQEAKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkyRDAyRTkzQzIwNTZG
QUE3MDBBMTM3OTcgLyogQXVkaW9Ub29sYm94U1BJLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzdF
ODdCMjIyNkE0NjAzMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBDNzc4NTg5MUY0NTEzMEYwMEY0RUJCNiAvKiBBVkZvdW5kYXRpb25TUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTBDMkRBMTNFMUYzQkVCNDkwMERCQzMxNyAvKiBBVktpdFNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGOTExMTMyMjBFNEVFQzAwMUVBMzlFIC8qIENlbGVzdGlh
bFNQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODQsNyArODc3LDYgQEAKIAkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAotCQkJCTA3N0U4N0IxMjI2QTQ2MDIwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0
TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBDNUZGRjBGMUY3OEQ5REEwMDlFRkYxQSAvKiBD
bG9ja0NNLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8q
IENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2MUUzMUM0
NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YjE1NDdjNTlkNDExNGNlZTc2
NTI2NTI2ZDk2M2I3ZGQ2N2NkMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5oCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0KLSNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5o
PgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfRk9S
X0hFQURFUihQQUwsIEFWRm91bmRhdGlvbikKLQotLy8gTm90ZTogV2UgZG9uJ3QgZGVmaW5lIGFj
Y2Vzc29yIG1hY3JvcyBmb3IgY2xhc3NlcyAoZS5nLgotLy8gICAgI2RlZmluZSBBVkFzc2V0Q2Fj
aGUgUEFMOjpnZXRBVkFzc2V0Q2FjaGVDbGFzcygpCi0vLyBiZWNhdXNlIHRoZXkgbWFrZSBpdCBk
aWZmaWN1bHQgdG8gdXNlIHRoZSBjbGFzcyBuYW1lIGluIHNvdXJjZSBjb2RlLgotCi1TT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWQXNzZXRDYWNoZSkKLVNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBBVkFzc2V0UmVhZGVyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
UEFMLCBBVkFzc2V0UmVhZGVyU2FtcGxlUmVmZXJlbmNlT3V0cHV0KQotU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCkKLVNPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZBc3NldFdyaXRlcikKLVNPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgQVZBc3NldFdyaXRlcklucHV0KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoUEFMLCBBVkNhcHR1cmVDb25uZWN0aW9uKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBBVkNhcHR1cmVEZXZpY2UpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IEFWQ2FwdHVyZURldmljZUZvcm1hdCkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwg
QVZDYXB0dXJlRGV2aWNlSW5wdXQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFW
Q2FwdHVyZU91dHB1dCkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZDYXB0dXJl
U2Vzc2lvbikKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZDYXB0dXJlVmlkZW9E
YXRhT3V0cHV0KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVkNvbnRlbnRLZXlS
ZXNwb25zZSkKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZDb250ZW50S2V5U2Vz
c2lvbikKLVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZGcmFtZVJhdGVSYW5nZSkK
LVNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwKQot
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQot
U09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVk1ldGFkYXRhSXRlbSkKLVNPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgQVZNdXRhYmxlQXVkaW9NaXgpCi1TT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIEFWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzKQotU09G
VF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVk91dHB1dENvbnRleHQpCi1TT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUGxheWVyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBBVlBsYXllckl0ZW0pCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFW
UGxheWVySXRlbUxlZ2libGVPdXRwdXQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBBVlBsYXllckxheWVyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlNhbXBs
ZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFM
LCBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcikKLVNPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgQVZTdHJlYW1EYXRhUGFyc2VyKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBBVlVSTEFzc2V0KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlZp
ZGVvUGVyZm9ybWFuY2VNZXRyaWNzKQotCi0jaWYgSEFWRShBVlNUUkVBTVNFU1NJT04pICYmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
UEFMLCBBVlN0cmVhbVNlc3Npb24pCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWQXVkaW9TZXNzaW9uKQotU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBBVlBlcnNpc3RhYmxlQ29udGVudEtleVJlcXVlc3Qp
Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU3BlZWNoU3ludGhlc2lzVm9pY2Up
Ci1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU3BlZWNoU3ludGhlc2l6ZXIpCi1T
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWU3BlZWNoVXR0ZXJhbmNlKQotI2VuZGlm
Ci0KLSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi1TT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIEFWUm91dGVEZXRlY3RvcikKLSNlbmRpZgotCi1TT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQ
aXRjaEFsZ29yaXRobVNwZWN0cmFsLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVkF1ZGlvVGltZVBp
dGNoQWxnb3JpdGhtU3BlY3RyYWwgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQXVkaW9UaW1lUGl0
Y2hBbGdvcml0aG1TcGVjdHJhbCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCwgTlNTdHJp
bmcgKikKLSNkZWZpbmUgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCBQQUw6Omdl
dF9BVkZvdW5kYXRpb25fQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCgpCi1TT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljVmlzdWFsLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNWaXN1YWwgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3Vh
bCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYUNo
YXJhY3RlcmlzdGljQXVkaWJsZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3Rl
cmlzdGljQXVkaWJsZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbiwgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBOU1N0cmluZyAqKQotI2RlZmluZSBB
Vk1lZGlhVHlwZUNsb3NlZENhcHRpb24gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWVkaWFUeXBl
Q2xvc2VkQ2FwdGlvbigpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRlbywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYVR5
cGVWaWRlbyBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5cGVWaWRlbygpCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVNdXhl
ZCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYVR5cGVNdXhlZCBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZNZWRpYVR5cGVNdXhlZCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVBdWRpbywgTlNTdHJpbmcgKikKLSNkZWZpbmUg
QVZNZWRpYVR5cGVBdWRpbyBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5cGVBdWRpbygp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRp
YVR5cGVNZXRhZGF0YSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZWRpYVR5cGVNZXRhZGF0YSBQ
QUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYVR5cGVNZXRhZGF0YSgpCi1TT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEluaGVyaXRVUklR
dWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUg
QVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZlcmVuY2luZ1VSSUtleSBQ
QUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZy
b21SZWZlcmVuY2luZ1VSSUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVy
dHVyZSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVN
b2RlQ2xlYW5BcGVydHVyZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZBc3NldEltYWdlR2VuZXJh
dG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tl
eSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tl
eSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tl
eSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5T
U3RyaW5nICopCi0jZGVmaW5lIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsIFBB
TDo6Z2V0X0FWRm91bmRhdGlvbl9BVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6
ZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZT
dHJlYW1pbmdLZXlEZWxpdmVyeUNvbnRlbnRLZXlUeXBlLCBOU1N0cmluZyAqKQotI2RlZmluZSBB
VlN0cmVhbWluZ0tleURlbGl2ZXJ5Q29udGVudEtleVR5cGUgUEFMOjpnZXRfQVZGb3VuZGF0aW9u
X0FWU3RyZWFtaW5nS2V5RGVsaXZlcnlDb250ZW50S2V5VHlwZSgpCi0KLVNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNDb25u
ZWN0ZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZVdh
c0Nvbm5lY3RlZE5vdGlmaWNhdGlvbiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZDYXB0dXJlRGV2
aWNlV2FzQ29ubmVjdGVkTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3Rp
ZmljYXRpb24sIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5l
Y3RlZE5vdGlmaWNhdGlvbiBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZDYXB0dXJlRGV2aWNlV2Fz
RGlzY29ubmVjdGVkTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90aWZpY2F0
aW9uLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRUaW1lTm90
aWZpY2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlBsYXllckl0ZW1EaWRQbGF5VG9FbmRU
aW1lTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlm
aWVyQ2hhbmdlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZTdHJlYW1TZXNz
aW9uQ29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24g
UEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU3RyZWFtU2Vzc2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vz
c2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckZh
aWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uLCBOU1N0cmluZyopCi0jZGVmaW5lIEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb24gUEFMOjpnZXRfQVZGb3Vu
ZGF0aW9uX0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRp
b24oKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25FcnJvcktl
eSwgTlNTdHJpbmcqKQotI2RlZmluZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckZhaWxlZFRv
RGVjb2RlTm90aWZpY2F0aW9uRXJyb3JLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25FcnJvcktleSgpCi0K
LVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNDb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMsIE5TU3RyaW5nICopCi0j
ZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcyBQ
QUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9y
Y2VkU3VidGl0bGVzKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlLCBOU1N0cmluZyAqKQotI2RlZmlu
ZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdS
ZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlBsYXll
ckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5
IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4dFN0eWxp
bmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5KCkKLQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNT
dHJpbmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIFBBTDo6Z2V0X0FWRm91
bmRhdGlvbl9BVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNT
dHJpbmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uIFBBTDo6Z2V0X0FWRm91
bmRhdGlvbl9BVk1ldGFkYXRhS2V5U3BhY2VDb21tb24oKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0bGUsIE5TU3RyaW5n
ICopCi0jZGVmaW5lIEFWTWVkaWFUeXBlU3VidGl0bGUgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
TWVkaWFUeXBlU3VidGl0bGUoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBB
VkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50LCBO
U1N0cmluZyAqKQotI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29u
dGVudCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJv
Z3JhbUNvbnRlbnQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5k
YXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQsIE5TU3RyaW5nICopCi0jZGVm
aW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQgUEFMOjpnZXRfQVZGb3VuZGF0aW9u
X0FWTWVkaWFDaGFyYWN0ZXJpc3RpY0Vhc3lUb1JlYWQoKQotCi1TT0ZUX0xJTktfQ09OU1RBTlRf
TUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldE91dE9mQmFu
ZE1JTUVUeXBlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kTUlN
RVR5cGVLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlw
ZUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbiwgQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSwgTlNTdHJp
bmcgKikKLSNkZWZpbmUgQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSBQ
QUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNp
dmVseSgpCi0KLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfSEVBREVSKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZywgTlNTdHJpbmcq
KQotI2RlZmluZSBBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZyBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKQotU09GVF9M
SU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ29u
dGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBB
VkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSBQQUw6OmdldF9BVkZvdW5kYXRp
b25fQVZDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXkoKQotCi1TT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0Nv
ZGVjVHlwZUhFVkNXaXRoQWxwaGEsIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWVmlkZW9Db2RlY1R5
cGVIRVZDV2l0aEFscGhhIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlZpZGVvQ29kZWNUeXBlSEVW
Q1dpdGhBbHBoYSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZGaWxlVHlwZU1QRUc0LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVkZpbGVUeXBlTVBF
RzQgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWRmlsZVR5cGVNUEVHNCgpCi1TT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjS2V5LCBOU1N0
cmluZyAqKQotI2RlZmluZSBBVlZpZGVvQ29kZWNLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FW
VmlkZW9Db2RlY0tleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91
bmRhdGlvbiwgQVZWaWRlb0NvZGVjSDI2NCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZWaWRlb0Nv
ZGVjSDI2NCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZWaWRlb0NvZGVjSDI2NCgpCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb1dpZHRoS2V5
LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlZpZGVvV2lkdGhLZXkgUEFMOjpnZXRfQVZGb3VuZGF0
aW9uX0FWVmlkZW9XaWR0aEtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IEFWRm91bmRhdGlvbiwgQVZWaWRlb0hlaWdodEtleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZW
aWRlb0hlaWdodEtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZWaWRlb0hlaWdodEtleSgpCi1T
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0V4
cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlZpZGVvRXhw
ZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVmlkZW9FeHBl
Y3RlZFNvdXJjZUZyYW1lUmF0ZUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSwgTlNTdHJpbmcgKikKLSNk
ZWZpbmUgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZWaWRl
b1Byb2ZpbGVMZXZlbEtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFW
Rm91bmRhdGlvbiwgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5LCBOU1N0cmluZyAqKQotI2RlZmlu
ZSBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVmlkZW9B
dmVyYWdlQml0UmF0ZUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFW
Rm91bmRhdGlvbiwgQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXksIE5TU3RyaW5nICopCi0j
ZGVmaW5lIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlv
bl9BVlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZhbEtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0
b0xldmVsLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5B
dXRvTGV2ZWwgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFp
bkF1dG9MZXZlbCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSwgTlNTdHJpbmcgKikKLSNkZWZp
bmUgQVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSBQQUw6OmdldF9BVkZvdW5kYXRpb25f
QVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZFbmNvZGVyQml0UmF0ZUtleSwg
TlNTdHJpbmcgKikKLSNkZWZpbmUgQVZFbmNvZGVyQml0UmF0ZUtleSBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZFbmNvZGVyQml0UmF0ZUtleSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihQQUwsIEFWRm91bmRhdGlvbiwgQVZGb3JtYXRJREtleSwgTlNTdHJpbmcgKikK
LSNkZWZpbmUgQVZGb3JtYXRJREtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtl
eSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZOdW1iZXJPZkNoYW5uZWxzS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk51bWJl
ck9mQ2hhbm5lbHNLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZDaGFubmVsc0tl
eSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihQQUwsIEFWRm91bmRh
dGlvbiwgQVZTYW1wbGVSYXRlS2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlNhbXBsZVJhdGVL
ZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWU2FtcGxlUmF0ZUtleSgpCi0KLVNPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0Q2FjaGVLZXks
IE5TU3RyaW5nICopCi0jZGVmaW5lIEFWVVJMQXNzZXRDYWNoZUtleSBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZVUkxBc3NldENhY2hlS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5
LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tz
S2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJh
Y2tzS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9u
LCBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5LCBOU1N0cmluZyAqKQotI2RlZmlu
ZSBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlv
bl9BVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5KCkKLVNPRlRfTElOS19DT05TVEFO
VF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNr
RGlzcGxheU5hbWVLZXksIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRl
VHJhY2tEaXNwbGF5TmFtZUtleSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZPdXRPZkJhbmRBbHRl
cm5hdGVUcmFja0Rpc3BsYXlOYW1lS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5kZWRMYW5n
dWFnZVRhZ0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFj
a0V4dGVuZGVkTGFuZ3VhZ2VUYWdLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWT3V0T2ZCYW5k
QWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKLVNPRlRfTElOS19DT05TVEFO
VF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNr
SXNEZWZhdWx0S2V5LCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRy
YWNrSXNEZWZhdWx0S2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk91dE9mQmFuZEFsdGVybmF0
ZVRyYWNrSXNEZWZhdWx0S2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
QVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrTWVkaWFDaGFyYWN0ZXJzdGlj
c0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja01lZGlh
Q2hhcmFjdGVyc3RpY3NLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWT3V0T2ZCYW5kQWx0ZXJu
YXRlVHJhY2tNZWRpYUNoYXJhY3RlcnN0aWNzS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrSWRlbnRp
ZmllcktleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0lk
ZW50aWZpZXJLZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJh
Y2tJZGVudGlmaWVyS2V5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5LCBOU1N0cmluZyAq
KQotI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5IFBBTDo6Z2V0X0FW
Rm91bmRhdGlvbl9BVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5KCkKLVNPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikK
LSNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZvckFj
Y2Vzc2liaWxpdHkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rl
c2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5KCkKLVNPRlRfTElOS19DT05TVEFO
VF9GT1JfSEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFu
c2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICopCi0jZGVmaW5l
IEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJp
bGl0eSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmli
ZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFy
eUNvbnRlbnQsIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4
aWxpYXJ5Q29udGVudCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNoYXJhY3RlcmlzdGlj
SXNBdXhpbGlhcnlDb250ZW50KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
QVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vz
c2liaWxpdHksIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2Ny
aWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZWRpYUNo
YXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5KCkKLQotU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFj
ZVF1aWNrVGltZVVzZXJEYXRhLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk1ldGFkYXRhS2V5U3Bh
Y2VRdWlja1RpbWVVc2VyRGF0YSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNw
YWNlUXVpY2tUaW1lVXNlckRhdGEoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZVF1aWNrVGltZU1ldGFkYXRhLCBOU1N0
cmluZyAqKQotI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VRdWlja1RpbWVNZXRhZGF0YSBQQUw6
OmdldF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEoKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRh
dGFLZXlTcGFjZWlUdW5lcywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNl
aVR1bmVzIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk1ldGFkYXRhS2V5U3BhY2VpVHVuZXMoKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRh
dGFLZXlTcGFjZUlEMywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNlSUQz
IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVk1ldGFkYXRhS2V5U3BhY2VJRDMoKQotU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFj
ZUlTT1VzZXJEYXRhLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VJU09V
c2VyRGF0YSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRh
dGEoKQotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIo
UEFMLCBBVkZvdW5kYXRpb24sIEFWU3RyZWFtRGF0YVBhcnNlckNvbnRlbnRLZXlSZXF1ZXN0UHJv
dG9jb2xWZXJzaW9uc0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZTdHJlYW1EYXRhUGFyc2Vy
Q29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlv
bl9BVlN0cmVhbURhdGFQYXJzZXJDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXko
KQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRCb3VuZE5ldHdvcmtJbnRl
cmZhY2VOYW1lLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50
ZXJmYWNlTmFtZSBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEJvdW5kTmV0d29ya0lu
dGVyZmFjZU5hbWUoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5k
YXRpb24sIEFWVVJMQXNzZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyS2V5LCBOU1N0cmluZyAqKQot
I2RlZmluZSBBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcktleSBQQUw6OmdldF9BVkZv
dW5kYXRpb25fQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXkoKQotU09GVF9MSU5L
X0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNz
ZXRIVFRQQ29va2llc0tleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZVUkxBc3NldEhUVFBDb29r
aWVzS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkoKQot
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24s
IEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXksIE5TU3RyaW5nICopCi0jZGVm
aW5lIEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXkgUEFMOjpnZXRfQVZGb3Vu
ZGF0aW9uX0FWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRpbmdLZXkoKQotU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25S
dW50aW1lRXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZVNl
c3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQ2Fw
dHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1
cHRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbldh
c0ludGVycnVwdGVkTm90aWZpY2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkNhcHR1cmVT
ZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25F
bmRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbklu
dGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkNhcHR1
cmVTZXNzaW9uSW50ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1
cHRpb25SZWFzb25LZXksIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25JbnRl
cnJ1cHRpb25SZWFzb25LZXkgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQ2FwdHVyZVNlc3Npb25J
bnRlcnJ1cHRpb25SZWFzb25LZXkoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25FcnJvcktleSwgTlNTdHJpbmcgKikKLSNk
ZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkNh
cHR1cmVTZXNzaW9uRXJyb3JLZXkoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50LCBOU1N0cmluZyAq
KQotI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCBQQUw6OmdldF9BVkZvdW5k
YXRpb25fQVZBdWRpb1Nlc3Npb25DYXRlZ29yeUFtYmllbnQoKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlTb2xv
QW1iaWVudCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9B
bWJpZW50IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5U29sb0Ft
YmllbnQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24s
IEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5YmFjaywgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZB
dWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlv
U2Vzc2lvbkNhdGVnb3J5UGxheWJhY2soKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIo
UEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNvcmQsIE5TU3RyaW5n
ICopCi0jZGVmaW5lIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNvcmQgUEFMOjpnZXRfQVZGb3Vu
ZGF0aW9uX0FWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNvcmQoKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5
QW5kUmVjb3JkLCBOU1N0cmluZyAqKQotI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxh
eUFuZFJlY29yZCBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBs
YXlBbmRSZWNvcmQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5k
YXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcsIE5TU3RyaW5nICop
Ci0jZGVmaW5lIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcgUEFMOjpnZXRf
QVZGb3VuZGF0aW9uX0FWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcoKQotU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNz
aW9uTW9kZURlZmF1bHQsIE5TU3RyaW5nICopCi0jZGVmaW5lIEFWQXVkaW9TZXNzaW9uTW9kZURl
ZmF1bHQgUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQoKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9T
ZXNzaW9uTW9kZVZpZGVvQ2hhdCwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nlc3Npb25N
b2RlVmlkZW9DaGF0IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlvU2Vzc2lvbk1vZGVWaWRl
b0NoYXQoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24s
IEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotI2Rl
ZmluZSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5vdGlmaWNhdGlvbiBQQUw6OmdldF9BVkZv
dW5kYXRpb25fQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oKQotU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uVHlwZUtleSwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25UeXBlS2V5IFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvblR5cGVLZXkoKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBB
VkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5LCBOU1N0cmlu
ZyAqKQotI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk9wdGlvbktleSBQQUw6Omdl
dF9BVkZvdW5kYXRpb25fQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXkoKQotU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWUm91dGVEZXRl
Y3Rvck11bHRpcGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICopCi0jZGVmaW5lIEFWUm91dGVEZXRlY3Rvck11bHRpcGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFu
Z2VOb3RpZmljYXRpb24gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWUm91dGVEZXRlY3Rvck11bHRp
cGxlUm91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24oKQotU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uTWVkaWFTZXJ2
aWNlc1dlcmVSZXNldE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKLSNkZWZpbmUgQVZBdWRpb1Nl
c3Npb25NZWRpYVNlcnZpY2VzV2VyZVJlc2V0Tm90aWZpY2F0aW9uIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVkF1ZGlvU2Vzc2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmljYXRpb24oKQot
I2VuZGlmIC8vICBQTEFURk9STShJT1NfRkFNSUxZKQotCi0jZW5kaWYgLy8gVVNFKEFWRk9VTkRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0FWRm91bmRhdGlv
blNvZnRMaW5rLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFiMDRhZGZkMTRi
YmMwNDI0OTRiZGM2ODZiYjRiNzQyMmEyMmU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFLCBQ
QUxfRVhQT1JUKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFWRk9VTkRBVElP
TikKLQotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIEFWRm91bmRhdGlvbiwgUEFMX0VYUE9SVCkKLQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXNzZXRDYWNoZSwgUEFM
X0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBc3NldFJl
YWRlciwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVkFzc2V0V3JpdGVyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXNzZXRX
cml0ZXJJbnB1dCwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVDb25uZWN0aW9uLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZURldmljZSwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VGb3JtYXQs
IFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlSW5wdXQsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlT3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb24sIFBBTF9FWFBPUlQpCi1T
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwg
QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWRnJhbWVSYXRlUmFuZ2Us
IFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IEFWRm91bmRhdGlvbiwgQVZNZWRpYVNlbGVjdGlvbkdyb3VwLCBQQUxfRVhQT1JUKQotU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVk
aWFTZWxlY3Rpb25PcHRpb24sIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0sIFBBTF9FWFBP
UlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRh
dGlvbiwgQVZNdXRhYmxlQXVkaW9NaXgsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNdXRhYmxlQXVkaW9NaXhJ
bnB1dFBhcmFtZXRlcnMsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZPdXRwdXRDb250ZXh0LCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRp
b24sIEFWUGxheWVyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUGxheWVySXRlbSwgUEFMX0VYUE9SVCkKLVNP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBB
VlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUGxheWVySXRlbVZpZGVv
T3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIsIFBBTF9FWFBPUlQpCi1TT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxB
c3NldCwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElPTkFMX1dJ
VEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkFzc2V0UmVhZGVyU2FtcGxlUmVmZXJlbmNl
T3V0cHV0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxf
V0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0LCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVJlc3BvbnNlLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFM
LCBBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVNlc3Npb24sIFBBTF9FWFBPUlQpCi1TT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9PUFRJT05BTF9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlv
biwgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWU2FtcGxl
QnVmZmVyUmVuZGVyU3luY2hyb25pemVyLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfT1BUSU9OQUxfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWU3RyZWFt
RGF0YVBhcnNlciwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX09QVElP
TkFMX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlZpZGVvUGVyZm9ybWFuY2VNZXRy
aWNzLCBQQUxfRVhQT1JUKQotCi0jaWYgSEFWRShBVlNUUkVBTVNFU1NJT04pICYmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vzc2lvbiwgUEFMX0VYUE9SVCkKLSNl
bmRpZgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLVNPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbiwgUEFMX0VY
UE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVlBlcnNpc3RhYmxlQ29udGVudEtleVJlcXVlc3QsIFBBTF9FWFBPUlQpCi1TT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZT
cGVlY2hTeW50aGVzaXNWb2ljZSwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFN5bnRoZXNpemVyLCBQ
QUxfRVhQT1JUKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlLCBQQUxfRVhQT1JUKQotI2VuZGlmCi0KLSNp
ZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi1TT0ZUX0xJTktfQ0xB
U1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZSb3V0ZURldGVj
dG9yLCBQQUxfRVhQT1JUKQotI2VuZGlmCi0KLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVy
dHVyZU1vZGVDbGVhbkFwZXJ0dXJlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVk
aW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJhbCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9u
LCBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkLCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWQ2FwdHVyZURldmljZVdhc0Nvbm5lY3RlZE5vdGlmaWNhdGlvbiwgTlNTdHJp
bmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVEZXZpY2VXYXNEaXNjb25uZWN0ZWROb3Rp
ZmljYXRpb24sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZGaWxlVHlwZU1QRUc0LCBO
U1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUsIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVj
dCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0RmlsbCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNBdWRpYmxlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgTlNTdHJpbmcgKiwgUEFMX0VYUE9S
VCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3Vu
ZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNj
ZXNzaWJpbGl0eSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICosIFBBTF9FWFBP
UlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91
bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVhZCwgTlNTdHJpbmcgKiwgUEFM
X0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQsIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJv
Z3JhbUNvbnRlbnQsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3Rl
cmlzdGljTGVnaWJsZSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsLCBOU1N0cmlu
ZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBP
UlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICosIFBBTF9F
WFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFW
Rm91bmRhdGlvbiwgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWTWVkaWFUeXBlTWV0YWRhdGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1T
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlv
biwgQVZNZWRpYVR5cGVNdXhlZCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1lZGlh
VHlwZVN1YnRpdGxlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlk
ZW8sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUNvbW1vbktleVRpdGxl
LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwg
TlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VJRDMsIE5TU3Ry
aW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEsIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0
YWRhdGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlUXVp
Y2tUaW1lVXNlckRhdGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtl
eVNwYWNlaVR1bmVzLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWT3V0T2ZCYW5kQWx0
ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRf
TElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBB
Vk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5kZWRMYW5ndWFnZVRhZ0tleSwgTlNTdHJpbmcg
KiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrSWRlbnRpZmllcktl
eSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNr
SXNEZWZhdWx0S2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWT3V0T2ZCYW5kQWx0
ZXJuYXRlVHJhY2tNZWRpYUNoYXJhY3RlcnN0aWNzS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tTb3VyY2VLZXksIE5TU3RyaW5nICosIFBB
TF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbiwg
TlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4
dFN0eWxpbmdSZXNvbHV0aW9uU291cmNlQW5kUnVsZXNPbmx5LCBOU1N0cmluZyAqLCBQQUxfRVhQ
T1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZv
dW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmlj
YXRpb24sIE5TU3RyaW5nKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllckZhaWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uRXJyb3JLZXksIE5TU3RyaW5nKiwgUEFMX0VY
UE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXJDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVy
c2lvbnNLZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZTdHJlYW1TZXNzaW9uQ29u
dGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24sIE5TU3Ry
aW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZTdHJlYW1pbmdLZXlEZWxpdmVyeUNvbnRlbnRLZXlU
eXBlLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRDYWNoZUtleSwgTlNT
dHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9u
ZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFW
VVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXksIE5TU3RyaW5nICosIFBBTF9FWFBP
UlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91
bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgTlNTdHJpbmcgKiwg
UEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5LCBOU1N0
cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWVmlkZW9BdmVyYWdlQml0UmF0ZUtleSwgTlNTdHJp
bmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlZpZGVvQ29kZWNIMjY0LCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIEFWVmlkZW9Db2RlY0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9u
LCBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1lUmF0ZUtleSwgTlNTdHJpbmcgKiwgUEFM
X0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
QVZGb3VuZGF0aW9uLCBBVlZpZGVvSGVpZ2h0S2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRp
b24sIEFWVmlkZW9NYXhLZXlGcmFtZUludGVydmFsS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWVmlkZW9Qcm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbCwgTlNTdHJpbmcgKiwg
UEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBB
TCwgQVZGb3VuZGF0aW9uLCBBVlZpZGVvUHJvZmlsZUxldmVsS2V5LCBOU1N0cmluZyAqLCBQQUxf
RVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIEFWVmlkZW9XaWR0aEtleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLQot
U09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBB
VkZvdW5kYXRpb24sIEFWQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5LCBOU1N0
cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVN5c3RlbUZhaXJQ
bGF5U3RyZWFtaW5nLCBOU1N0cmluZyosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRf
TUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZFbmNv
ZGVyQml0UmF0ZUtleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFO
VF9NQVlfRkFJTF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkZv
cm1hdElES2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWTnVtYmVy
T2ZDaGFubmVsc0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFO
VF9NQVlfRkFJTF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlNh
bXBsZVJhdGVLZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRf
TUFZX0ZBSUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxB
c3NldE91dE9mQmFuZE1JTUVUeXBlS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9M
SU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHksIE5TU3RyaW5n
ICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxw
aGEsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRp
b24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JU
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5k
YXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcsIE5TU3RyaW5nICos
IFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXlBbmRSZWNvcmQsIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNr
LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlSZWNv
cmQsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNv
bG9BbWJpZW50LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uSW50
ZXJydXB0aW9uTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9uS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRp
b24sIEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleSwgTlNTdHJpbmcgKiwgUEFMX0VY
UE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZG
b3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmljYXRp
b24sIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25Nb2RlRGVmYXVs
dCwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbk1vZGVWaWRlb0No
YXQsIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5
LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRp
b25FbmRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLVNPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVkNhcHR1
cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5LCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRp
b24sIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24sIE5TU3RyaW5nICos
IFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0
aW9uLCBOU1N0cmluZyAqLCBQQUxfRVhQT1JUKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBBVkZvdW5kYXRpb24sIEFWUm91dGVEZXRlY3Rvck11bHRpcGxl
Um91dGVzRGV0ZWN0ZWREaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TU3RyaW5nICosIFBBTF9FWFBP
UlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91
bmRhdGlvbiwgQVZVUkxBc3NldEJvdW5kTmV0d29ya0ludGVyZmFjZU5hbWUsIE5TU3RyaW5nICos
IFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXksIE5T
U3RyaW5nICosIFBBTF9FWFBPUlQpCi0KLVNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SFRUUENvb2tp
ZXNLZXksIE5TU3RyaW5nICosIFBBTF9FWFBPUlQpCi1TT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldFJl
cXVpcmVzQ3VzdG9tVVJMTG9hZGluZ0tleSwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKLSNlbmRp
ZgotCi0jZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzE3Mjc1YThiNzlhYWE0NjI3
OTdjOTYxMjVhNWI4N2RkZjYyNTU0Li5lZTJmMWI0MzUzNzRhMDk3MDU3ODI4ZWU2MDhmYjQxNjk0
ZTQzMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDAsNyArMTAwLDYgQEAKIAkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJB
IC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5
U2xpZGVyLmggKi87IH07CiAJCTA3MEUwOTE5MTg3NUVFRkMwMDNBMUQzQyAvKiBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwRTA5MTgxODc1RUQ5MzAwM0ExRDNDIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDcwRTgxRDEx
QkYyNzY1NjAwMUZEQTQ4IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEU4MUQwMUJGMjc2NTYw
MDFGREE0OCAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi87IH07Ci0JCUNEQTc5
ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25JT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyNTE3MEEyNzkwMDBENDVDNTUg
LyogQXVkaW9TZXNzaW9uSU9TLm1tICovOyB9OwogCQkwNzBGNTQ5ODE3RjEyRjZCMDAxNjlFMDQg
LyogTWVkaWFTdHJlYW1Db25zdHJhaW50c1ZhbGlkYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MEY1NDk3MTdGMTJGNkIwMDE2OUUw
NCAvKiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzVmFsaWRhdGlvbkNsaWVudC5oICovOyB9OwogCQkw
NzE5NDI3RjFEMDg4RjIxMDAyQUE1MUQgLyogQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzhBRDExMUQw
NzNENjMwMDg3QzVDRSAvKiBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tICovOyB9OwogCQkw
NzFBOUVDMjE2OEZCQzQzMDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzFBOUVDMDE2OEZCNTZD
MDAyNjI5RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAgKi87IH07CkBAIC00MDgwLDYgKzQw
NzksNyBAQAogCQlDREEyOUEzMjFDQzAxQTk1MDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTI5QTJFMUNCRjczRkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNEQTU5NTkzMjE0NkRFQzMwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE1OTU5MTIxNDZERUMzMDBBODQx
ODUgLyogSEVWQ1V0aWxpdGllcy5oICovOyB9OwogCQlDREE1OTU5ODIxNDZERjc4MDBBODQxODUg
LyogSEVWQ1V0aWxpdGllc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREE1OTU5NjIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0Nv
Y29hLmggKi87IH07CisJCUNEQTc5ODI3MTcwQTI3OTEwMEQ0NUM1NSAvKiBBdWRpb1Nlc3Npb25J
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3
OTgyNTE3MEEyNzkwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uSU9TLm1tICovOyB9OwogCQlDREE3
OTgyQTE3MEEzRDAwMDBENDVDNTUgLyogQXVkaW9TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OTgyMTE3MEEyMkRDMDBENDVDNTUgLyog
QXVkaW9TZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIExlZ2FjeUNETS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5
MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmNwcCAqLzsgfTsKIAkJQ0RBQjZEMjkxN0M3REU2QzAwQzYw
QjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNzE3QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9s
c0hvc3QuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IDFiMmY2NWVmY2RhMDQxNTljYWQyZjZmMTYzOTYz
M2QyYWUzYmQyYjEuLjkwOTI0ZTZmYTZmODIwNWM5YTkyOTdhMzkwNTM2ODMwZWE5ZTlmZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25J
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lv
bklPUy5tbQpAQCAtMzQsOCArMzQsMjkgQEAKICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRh
dGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgor
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoQVZGb3Vu
ZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb24pCisK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlB
bWJpZW50LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZB
dWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NP
TlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrLCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25D
YXRlZ29yeVJlY29yZCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlQbGF5QW5kUmVjb3JkLCBOU1N0cmluZyAqKQorU09G
VF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeUF1ZGlv
UHJvY2Vzc2luZywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24s
IEFWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RB
TlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbk1vZGVWaWRlb0NoYXQsIE5TU3RyaW5nICop
CisKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb24gZ2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpCisjZGVm
aW5lIEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50IGdldEFWQXVkaW9TZXNzaW9uQ2F0ZWdv
cnlBbWJpZW50KCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50IGdl
dEFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlTb2xvQW1iaWVudCgpCisjZGVmaW5lIEFWQXVkaW9TZXNz
aW9uQ2F0ZWdvcnlQbGF5YmFjayBnZXRBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheWJhY2soKQor
I2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UmVjb3JkIGdldEFWQXVkaW9TZXNzaW9uQ2F0
ZWdvcnlSZWNvcmQoKQorI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFuZFJlY29y
ZCBnZXRBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFuZFJlY29yZCgpCisjZGVmaW5lIEFWQXVk
aW9TZXNzaW9uQ2F0ZWdvcnlBdWRpb1Byb2Nlc3NpbmcgZ2V0QVZBdWRpb1Nlc3Npb25DYXRlZ29y
eUF1ZGlvUHJvY2Vzc2luZygpCisjZGVmaW5lIEFWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQgZ2V0
QVZBdWRpb1Nlc3Npb25Nb2RlRGVmYXVsdCgpCisjZGVmaW5lIEFWQXVkaW9TZXNzaW9uTW9kZVZp
ZGVvQ2hhdCBnZXRBVkF1ZGlvU2Vzc2lvbk1vZGVWaWRlb0NoYXQoKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTEyNCw3ICsxNDUsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdv
cnkoQ2F0ZWdvcnlUeXBlIG5ld0NhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saQogICAg
IH0KIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIFtbUEFMOjpnZXRBVkF1ZGlvU2Vz
c2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHNldENhdGVnb3J5OmNhdGVnb3J5U3RyaW5nIG1v
ZGU6Y2F0ZWdvcnlNb2RlIHJvdXRlU2hhcmluZ1BvbGljeTpzdGF0aWNfY2FzdDxBVkF1ZGlvU2Vz
c2lvblJvdXRlU2hhcmluZ1BvbGljeT4ocG9saWN5KSBvcHRpb25zOm9wdGlvbnMgZXJyb3I6JmVy
cm9yXTsKKyAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBzZXRDYXRlZ29yeTpj
YXRlZ29yeVN0cmluZyBtb2RlOmNhdGVnb3J5TW9kZSByb3V0ZVNoYXJpbmdQb2xpY3k6c3RhdGlj
X2Nhc3Q8QVZBdWRpb1Nlc3Npb25Sb3V0ZVNoYXJpbmdQb2xpY3k+KHBvbGljeSkgb3B0aW9uczpv
cHRpb25zIGVycm9yOiZlcnJvcl07CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9S
KSAmJiAhUExBVEZPUk0oSU9TTUFDKQogICAgIEFTU0VSVCghZXJyb3IpOwogI2VuZGlmCkBAIC0x
MzIsNyArMTUzLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlw
ZSBuZXdDYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGkKIAogQXVkaW9TZXNzaW9uOjpD
YXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0CiB7Ci0gICAgTlNTdHJp
bmcgKmNhdGVnb3J5U3RyaW5nID0gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFy
ZWRJbnN0YW5jZV0gY2F0ZWdvcnldOworICAgIE5TU3RyaW5nICpjYXRlZ29yeVN0cmluZyA9IFtb
QVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIGNhdGVnb3J5XTsKICAgICBpZiAoW2NhdGVn
b3J5U3RyaW5nIGlzRXF1YWw6QVZBdWRpb1Nlc3Npb25DYXRlZ29yeUFtYmllbnRdKQogICAgICAg
ICByZXR1cm4gQW1iaWVudFNvdW5kOwogICAgIGlmIChbY2F0ZWdvcnlTdHJpbmcgaXNFcXVhbDpB
VkF1ZGlvU2Vzc2lvbkNhdGVnb3J5U29sb0FtYmllbnRdKQpAQCAtMTYxLDcgKzE4Miw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2VuZGlmCiAgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFJvdXRlU2hhcmluZ1BvbGljeTo6SW5kZXBlbmRlbnQpID09
IHN0YXRpY19jYXN0PHNpemVfdD4oQVZBdWRpb1Nlc3Npb25Sb3V0ZVNoYXJpbmdQb2xpY3lJbmRl
cGVuZGVudCksICJSb3V0ZVNoYXJpbmdQb2xpY3k6OkluZGVwZW5kZW50IGlzIG5vdCBBVkF1ZGlv
U2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeUluZGVwZW5kZW50IGFzIGV4cGVjdGVkIik7CiAKLSAg
ICBBVkF1ZGlvU2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kgPSBbW1BBTDo6Z2V0QVZB
dWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSByb3V0ZVNoYXJpbmdQb2xpY3ldOwor
ICAgIEFWQXVkaW9TZXNzaW9uUm91dGVTaGFyaW5nUG9saWN5IHBvbGljeSA9IFtbQVZBdWRpb1Nl
c3Npb24gc2hhcmVkSW5zdGFuY2VdIHJvdXRlU2hhcmluZ1BvbGljeV07CiAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PFJvdXRlU2hhcmluZ1BvbGljeT4ocG9saWN5KSA8PSBSb3V0ZVNoYXJpbmdQb2xp
Y3k6OkxvbmdGb3JtVmlkZW8pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSb3V0ZVNoYXJpbmdQ
b2xpY3k+KHBvbGljeSk7CiB9CkBAIC0xNjksNyArMTkwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiBTdHJpbmcgQXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgp
IGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZP
Uk0oSU9TTUFDKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKLSAgICByZXR1cm4gW1tQQUw6OmdldEFW
QXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRleHRVSURdOwor
ICAgIHJldHVybiBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSByb3V0aW5nQ29udGV4
dFVJRF07CiAjZWxzZQogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogI2VuZGlmCkBAIC0xOTEs
MTcgKzIxMiwxNyBAQCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNh
dGVnb3J5T3ZlcnJpZGUoKSBjb25zdAogCiBmbG9hdCBBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUo
KSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNo
YXJlZEluc3RhbmNlXSBzYW1wbGVSYXRlXTsKKyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBz
aGFyZWRJbnN0YW5jZV0gc2FtcGxlUmF0ZV07CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OmJ1
ZmZlclNpemUoKSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25D
bGFzcygpIHNoYXJlZEluc3RhbmNlXSBJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUoKTsK
KyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gSU9CdWZmZXJEdXJh
dGlvbl0gKiBzYW1wbGVSYXRlKCk7CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246Om51bWJlck9m
T3V0cHV0Q2hhbm5lbHMoKSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nl
c3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBvdXRwdXROdW1iZXJPZkNoYW5uZWxzXTsKKyAg
ICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZD
aGFubmVsc107CiB9CiAKIGJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFs
KGJvb2wgYWN0aXZlKQpAQCAtMjE2LDE0ICsyMzcsMTQgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRy
eVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCiAgICAgLy8gcmV0dXJucywgc28gZG8g
aXQgc3luY2hyb25vdXNseSBvbiB0aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAgICAgaWYgKGFjdGl2
ZSkgewogICAgICAgICBkaXNwYXRjaF9zeW5jKG1fcHJpdmF0ZS0+bV9kaXNwYXRjaFF1ZXVlLmdl
dCgpLCBeewotICAgICAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFy
ZWRJbnN0YW5jZV0gc2V0QWN0aXZlOllFUyB3aXRoT3B0aW9uczowIGVycm9yOiZlcnJvcl07Cisg
ICAgICAgICAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6WUVT
IHdpdGhPcHRpb25zOjAgZXJyb3I6JmVycm9yXTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0
dXJuICFlcnJvcjsKICAgICB9CiAKICAgICBkaXNwYXRjaF9hc3luYyhtX3ByaXZhdGUtPm1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgXnsKLSAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xh
c3MoKSBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOk5PIHdpdGhPcHRpb25zOkFWQXVkaW9TZXNz
aW9uU2V0QWN0aXZlT3B0aW9uTm90aWZ5T3RoZXJzT25EZWFjdGl2YXRpb24gZXJyb3I6JmVycm9y
XTsKKyAgICAgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOk5P
IHdpdGhPcHRpb25zOkFWQXVkaW9TZXNzaW9uU2V0QWN0aXZlT3B0aW9uTm90aWZ5T3RoZXJzT25E
ZWFjdGl2YXRpb24gZXJyb3I6JmVycm9yXTsKICAgICB9KTsKIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMjMxLDE0ICsyNTIsMTQgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50
ZXJuYWwoYm9vbCBhY3RpdmUpCiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZl
clNpemUoKSBjb25zdAogewotICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFz
cygpIHNoYXJlZEluc3RhbmNlXSBwcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJh
dGUoKTsKKyAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gcHJlZmVy
cmVkSU9CdWZmZXJEdXJhdGlvbl0gKiBzYW1wbGVSYXRlKCk7CiB9CiAKIHZvaWQgQXVkaW9TZXNz
aW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogewogICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOwogICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyU2l6ZSAvIHNh
bXBsZVJhdGUoKTsKLSAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZElu
c3RhbmNlXSBzZXRQcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uOmR1cmF0aW9uIGVycm9yOiZlcnJv
cl07CisgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0UHJlZmVycmVkSU9C
dWZmZXJEdXJhdGlvbjpkdXJhdGlvbiBlcnJvcjomZXJyb3JdOwogICAgIEFTU0VSVCghZXJyb3Ip
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IGZhZjViNDRkYjdkM2E5N2RhOWQyN2Uy
N2RhOTQ5YmU5ODMzMmU0NDkuLmQ2MjU5M2EzYjU1Zjc4NmZhYjQzYTc1NjU3YjFmODQ5ODNjYWM0
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC00NSwxMiArNDUsMTIgQEAKICNpbXBvcnQg
PHd0Zi9SQU1TaXplLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpbXBvcnQgPHBh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgotCi1XRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJ
QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsKLVdFQkNPUkVfRVhQT1JU
IE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlv
biA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24iOwot
V0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVO
b3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRp
b24iOwotV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmROb3RpZmljYXRpb24iOworU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbikKK1NPRlRfTElOS19DT05T
VEFOVChBVkZvdW5kYXRpb24sIEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9u
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXksIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlJvdXRlRGV0ZWN0b3JN
dWx0aXBsZVJvdXRlc0RldGVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQog
CiAjaWYgSEFWRShDRUxFU1RJQUwpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9O
QUwoQ2VsZXN0aWFsKQpAQCAtNTgsNiArNTgsMjAgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFM
KENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyKQogU09GVF9MSU5LX0NPTlNUQU5UX01BWV9G
QUlMKENlbGVzdGlhbCwgQVZTeXN0ZW1Db250cm9sbGVyX1BJRFRvSW5oZXJpdEFwcGxpY2F0aW9u
U3RhdGVGcm9tLCBOU1N0cmluZyAqKQogI2VuZGlmCiAKKyNpZiBIQVZFKE1FRElBX1BMQVlFUikg
JiYgIVBMQVRGT1JNKFdBVENIT1MpCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlJv
dXRlRGV0ZWN0b3IpCisjZW5kaWYKKworI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbiBnZXRBVkF1ZGlv
U2Vzc2lvbkNsYXNzKCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmlj
YXRpb24gZ2V0QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oKQorI2RlZmlu
ZSBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXkgZ2V0QVZBdWRpb1Nlc3Npb25JbnRl
cnJ1cHRpb25UeXBlS2V5KCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRp
b25LZXkgZ2V0QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXkoKQorCitXRUJDT1JF
X0VYUE9SVCBOU1N0cmluZyogV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmlj
YXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIjsK
K1dFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZE5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRO
b3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmVOb3RpZmljYXRpb24iOworV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gPSBAIldlYlVJQXBwbGljYXRpb25E
aWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24iOworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogQGludGVyZmFjZSBXZWJNZWRpYVNlc3Npb25IZWxwZXIgOiBOU09iamVjdCB7CkBAIC0y
MDMsNyArMjE3LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpleHRlcm5hbE91dHB1
dERldmljZUF2YWlsYWJsZURpZENoYW5nZSgpCiAgICAgX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAK
ICAgICBOU05vdGlmaWNhdGlvbkNlbnRlciAqY2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoaW50ZXJydXB0aW9uOikgbmFtZTpBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbk5v
dGlmaWNhdGlvbiBvYmplY3Q6W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZElu
c3RhbmNlXV07CisgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cihpbnRlcnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0
aW9uIG9iamVjdDpbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdXTsKIAogICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsKQEAgLTI4Niw5ICszMDAsOSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJpT1M6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKCkKIAogICAgICAg
ICBpZiAocHJvdGVjdGVkU2VsZi0+X2NhbGxiYWNrKSB7CiAgICAgICAgICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9yb3V0ZURldGVj
dG9yID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0p
OworICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IgPSBhZG9wdE5TKFth
bGxvY0FWUm91dGVEZXRlY3Rvckluc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICAgICAgcHJvdGVj
dGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCkucm91dGVEZXRlY3Rpb25FbmFibGVkID0gcHJv
dGVjdGVkU2VsZi0+X21vbml0b3JpbmdBaXJQbGF5Um91dGVzOwotICAgICAgICAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpwcm90ZWN0ZWRTZWxm
IHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZTopIG5h
bWU6QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNh
dGlvbiBvYmplY3Q6cHJvdGVjdGVkU2VsZi0+X3JvdXRlRGV0ZWN0b3IuZ2V0KCldOworICAgICAg
ICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpw
cm90ZWN0ZWRTZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURp
ZENoYW5nZTopIG5hbWU6Z2V0QVZSb3V0ZURldGVjdG9yTXVsdGlwbGVSb3V0ZXNEZXRlY3RlZERp
ZENoYW5nZU5vdGlmaWNhdGlvbigpIG9iamVjdDpwcm90ZWN0ZWRTZWxmLT5fcm91dGVEZXRlY3Rv
ci5nZXQoKV07CiAgICAgICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQpp
bmRleCAwMTUwMmNkYjBiZWFiZTM4ODBiZjMzZDU0MzJmMmY2NTI2ZjM2YzdmLi5lYjY5ODg4NDBh
MTMwNzE1NzgzMWZlMzhhYWIyM2YwZTg1YThiZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbQpAQCAtMzUsMTQgKzM1LDM4IEBACiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQ
bGF5ZXJJdGVtVHJhY2suaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotCi0jaW1wb3J0IDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgogCiBAY2xhc3MgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIEBpbnRlcmZhY2UgQVZNZWRp
YVNlbGVjdGlvbk9wdGlvbiAoV2ViS2l0SW50ZXJuYWwpCiAtIChpZClvcHRpb25JRDsKIEBlbmQK
IAorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCisKK1NPRlRfTElO
S19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRUcmFjaykKK1NPRlRfTElOS19DTEFTUyhBVkZv
dW5kYXRpb24sIEFWUGxheWVySXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFW
UGxheWVySXRlbVRyYWNrKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZNZWRpYVNl
bGVjdGlvbkdyb3VwKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZNZWRpYVNlbGVj
dGlvbk9wdGlvbikKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFJdGVt
KQorCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2Ny
aWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFO
VF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5
Q29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5k
YXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNj
ZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZv
dW5kYXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1v
biwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRl
bUNsYXNzKCkKKworI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29u
dGVudCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpCisjZGVm
aW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSBn
ZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHkoKQor
I2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQgZ2V0QVZNZWRp
YUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgp
CisjZGVmaW5lIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9uS2V5
VGl0bGUoKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24gZ2V0QVZNZXRhZGF0YUtl
eVNwYWNlQ29tbW9uKCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsOjpBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKiB0
cmFjaykKQEAgLTg4LDIyICsxMTIsMjIgQEAgdm9pZCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIEF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kIEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw6OmF1ZGlvS2luZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYXNz
ZXRUcmFjaykgewotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3Rlcmlz
dGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudF0pCisgICAgICAgIGlm
IChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50KCkgJiYgW21f
YXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lz
QXV4aWxpYXJ5Q29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gQXVkaW9UcmFja1ByaXZhdGU6
OkFsdGVybmF0aXZlOwotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0
eV0pCisgICAgICAgIGlmIChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlk
ZW9Gb3JBY2Nlc3NpYmlsaXR5KCkgJiYgW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3Rlcmlz
dGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eV0p
CiAgICAgICAgICAgICByZXR1cm4gQXVkaW9UcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uOwotICAg
ICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50XSkKKyAgICAgICAgaWYgKGNhbkxvYWRBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpICYmIFttX2Fzc2V0VHJhY2sg
aGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFt
Q29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gQXVkaW9UcmFja1ByaXZhdGU6Ok1haW47CiAg
ICAgICAgIHJldHVybiBBdWRpb1RyYWNrUHJpdmF0ZTo6Tm9uZTsKICAgICB9CiAKICAgICBpZiAo
bV9tZWRpYVNlbGVjdGlvbk9wdGlvbikgewogICAgICAgICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9u
ICpvcHRpb24gPSBtX21lZGlhU2VsZWN0aW9uT3B0aW9uLT5hdk1lZGlhU2VsZWN0aW9uT3B0aW9u
KCk7Ci0gICAgICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNo
YXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50XSkKKyAgICAgICAgaWYgKGNhbkxvYWRBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQoKSAmJiBbb3B0aW9uIGhhc01lZGlh
Q2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50XSkK
ICAgICAgICAgICAgIHJldHVybiBBdWRpb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU7Ci0gICAg
ICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKKyAgICAgICAgaWYgKGNhbkxvYWRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHkoKSAmJiBb
b3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3Jp
YmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKICAgICAgICAgICAgIHJldHVybiBBdWRpb1RyYWNr
UHJpdmF0ZTo6RGVzY3JpcHRpb247Ci0gICAgICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hhcmFj
dGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnRdKQorICAg
ICAgICBpZiAoY2FuTG9hZEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50
KCkgJiYgW29wdGlvbiBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzTWFpblByb2dyYW1Db250ZW50XSkKICAgICAgICAgICAgIHJldHVybiBBdWRpb1RyYWNrUHJp
dmF0ZTo6TWFpbjsKICAgICAgICAgcmV0dXJuIEF1ZGlvVHJhY2tQcml2YXRlOjpOb25lOwogICAg
IH0KQEAgLTExNSwyNiArMTM5LDI2IEBAIEF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kIEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw6OmF1ZGlvS2luZCgpIGNvbnN0CiBWaWRlb1RyYWNrUHJpdmF0ZTo6
S2luZCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjp2aWRlb0tpbmQoKSBjb25zdAogewogICAg
IGlmIChtX2Fzc2V0VHJhY2spIHsKLSAgICAgICAgaWYgKFttX2Fzc2V0VHJhY2sgaGFzTWVkaWFD
aGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vz
c2liaWxpdHldKQorICAgICAgICBpZiAoY2FuTG9hZEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2Ny
aWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSgpICYmIFttX2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFy
YWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2li
aWxpdHldKQogICAgICAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQcml2YXRlOjpTaWduOwotICAg
ICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFy
YWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eV0pCisgICAg
ICAgIGlmIChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFs
b2dGb3JBY2Nlc3NpYmlsaXR5KCkgJiYgW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3Rlcmlz
dGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNz
aWJpbGl0eV0pCiAgICAgICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6OkNhcHRpb25z
OwotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudF0pCisgICAgICAgIGlmIChjYW5Mb2Fk
QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50KCkgJiYgW21fYXNzZXRUcmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5
Q29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6OkFsdGVybmF0
aXZlOwotICAgICAgICBpZiAoW21fYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50XSkKKyAgICAgICAgaWYgKGNh
bkxvYWRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpICYmIFttX2Fz
c2V0VHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01h
aW5Qcm9ncmFtQ29udGVudF0pCiAgICAgICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6
Ok1haW47CiAgICAgICAgIHJldHVybiBWaWRlb1RyYWNrUHJpdmF0ZTo6Tm9uZTsKICAgICB9CiAK
ICAgICBpZiAobV9tZWRpYVNlbGVjdGlvbk9wdGlvbikgewogICAgICAgICBBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uICpvcHRpb24gPSBtX21lZGlhU2VsZWN0aW9uT3B0aW9uLT5hdk1lZGlhU2VsZWN0
aW9uT3B0aW9uKCk7Ci0gICAgICAgIGlmIChbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6
QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKKyAg
ICAgICAgaWYgKGNhbkxvYWRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFj
Y2Vzc2liaWxpdHkoKSAmJiBbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNo
YXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKICAgICAgICAgICAg
IHJldHVybiBWaWRlb1RyYWNrUHJpdmF0ZTo6U2lnbjsKLSAgICAgICAgaWYgKFtvcHRpb24gaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tl
bkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHldKQorICAgICAgICBpZiAoY2FuTG9hZEFWTWVkaWFDaGFy
YWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpICYmIFtv
cHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2Ny
aWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHldKQogICAgICAgICAgICAgcmV0dXJuIFZp
ZGVvVHJhY2tQcml2YXRlOjpDYXB0aW9uczsKLSAgICAgICAgaWYgKFtvcHRpb24gaGFzTWVkaWFD
aGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnRdKQor
ICAgICAgICBpZiAoY2FuTG9hZEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVu
dCgpICYmIFtvcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0
aWNJc0F1eGlsaWFyeUNvbnRlbnRdKQogICAgICAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQcml2
YXRlOjpBbHRlcm5hdGl2ZTsKLSAgICAgICAgaWYgKFtvcHRpb24gaGFzTWVkaWFDaGFyYWN0ZXJp
c3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudF0pCisgICAgICAg
IGlmIChjYW5Mb2FkQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQoKSAm
JiBbb3B0aW9uIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljSXNN
YWluUHJvZ3JhbUNvbnRlbnRdKQogICAgICAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQcml2YXRl
OjpNYWluOwogICAgICAgICByZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU7CiAgICAgfQpA
QCAtMTY1LDYgKzE4OSw5IEBAIEF0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
OjppZCgpIGNvbnN0CiAKIEF0b21pY1N0cmluZyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjps
YWJlbCgpIGNvbnN0CiB7CisgICAgaWYgKCFjYW5Mb2FkQVZNZXRhZGF0YUNvbW1vbktleVRpdGxl
KCkgfHwgIWNhbkxvYWRBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24oKSkKKyAgICAgICAgcmV0dXJu
IGVtcHR5QXRvbSgpOworCiAgICAgTlNBcnJheSAqY29tbW9uTWV0YWRhdGEgPSBuaWw7CiAgICAg
aWYgKG1fYXNzZXRUcmFjaykKICAgICAgICAgY29tbW9uTWV0YWRhdGEgPSBbbV9hc3NldFRyYWNr
IGNvbW1vbk1ldGFkYXRhXTsKQEAgLTE3MywxMiArMjAwLDEyIEBAIEF0b21pY1N0cmluZyBBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpsYWJlbCgpIGNvbnN0CiAgICAgZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIE5TQXJyYXkgKnRpdGxlcyA9IFtQQUw6OmdldEFW
TWV0YWRhdGFJdGVtQ2xhc3MoKSBtZXRhZGF0YUl0ZW1zRnJvbUFycmF5OmNvbW1vbk1ldGFkYXRh
IHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFWTWV0YWRhdGFLZXlT
cGFjZUNvbW1vbl07CisgICAgTlNBcnJheSAqdGl0bGVzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFk
YXRhSXRlbXNGcm9tQXJyYXk6Y29tbW9uTWV0YWRhdGEgd2l0aEtleTpBVk1ldGFkYXRhQ29tbW9u
S2V5VGl0bGUga2V5U3BhY2U6QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKICAgICBpZiAoIVt0
aXRsZXMgY291bnRdKQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tKCk7CiAKICAgICAvLyBJZiBw
b3NzaWJsZSwgcmV0dXJuIGEgdGl0bGUgaW4gb25lIG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxh
bmd1YWdlcy4KLSAgICBOU0FycmF5ICp0aXRsZXNGb3JQcmVmZXJyZWRMYW5ndWFnZXMgPSBbUEFM
OjpnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkgbWV0YWRhdGFJdGVtc0Zyb21BcnJheTp0aXRsZXMg
ZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpbTlNMb2NhbGUg
cHJlZmVycmVkTGFuZ3VhZ2VzXV07CisgICAgTlNBcnJheSAqdGl0bGVzRm9yUHJlZmVycmVkTGFu
Z3VhZ2VzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6dGl0bGVzIGZp
bHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXM6W05TTG9jYWxlIHBy
ZWZlcnJlZExhbmd1YWdlc11dOwogICAgIGlmIChbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2Vz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIFtbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzIG9i
amVjdEF0SW5kZXg6MF0gc3RyaW5nVmFsdWVdOwogICAgIHJldHVybiBbW3RpdGxlcyBvYmplY3RB
dEluZGV4OjBdIHN0cmluZ1ZhbHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCBhNTc2YjZiNzExNDk0MjE5MzJjMTQzM2M5NTBkZTU4
OTdhNGE1YjA3Li40NjA5MDU2MTgxMWVkMWM0NDgyNzIxMDE1ZTdlYzQxYjJlYjkwZjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC00
OCwxMSArNDgsMTUgQEAKICNlbmRpZgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExp
bmsuaD4KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCitTT0ZU
X0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19GUkFNRVdPUksoTWVkaWFU
b29sYm94KQogU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gpCiAKK1NPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVySXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5k
YXRpb24sIEFWTXV0YWJsZUF1ZGlvTWl4KQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwg
QVZNdXRhYmxlQXVkaW9NaXhJbnB1dFBhcmFtZXRlcnMpCisKIFNPRlRfTElOSyhBdWRpb1Rvb2xi
b3gsIEF1ZGlvQ29udmVydGVyQ29udmVydENvbXBsZXhCdWZmZXIsIE9TU3RhdHVzLCAoQXVkaW9D
b252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgVUludDMyIGluTnVtYmVyUENNRnJhbWVzLCBj
b25zdCBBdWRpb0J1ZmZlckxpc3QqIGluSW5wdXREYXRhLCBBdWRpb0J1ZmZlckxpc3QqIG91dE91
dHB1dERhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5OdW1iZXJQQ01GcmFtZXMsIGluSW5wdXRE
YXRhLCBvdXRPdXRwdXREYXRhKSkKIFNPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVy
dGVyTmV3LCBPU1N0YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5T
b3VyY2VGb3JtYXQsIGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5h
dGlvbkZvcm1hdCwgQXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291
cmNlRm9ybWF0LCBpbkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCiAKQEAg
LTIwMyw3ICsyMDcsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVN
aXgoKQogICAgIEFTU0VSVChtX2F2UGxheWVySXRlbSk7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsK
IAotICAgIG1fYXZBdWRpb01peCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVk11dGFibGVBdWRpb01p
eEluc3RhbmNlKCkgaW5pdF0pOworICAgIG1fYXZBdWRpb01peCA9IGFkb3B0TlMoW2FsbG9jQVZN
dXRhYmxlQXVkaW9NaXhJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE1UQXVkaW9Qcm9jZXNzaW5n
VGFwQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKICAgICAgICAgMCwKQEAgLTIyMCw3ICsyMjQsNyBA
QCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNaXgoKQogICAgIEFTU0VS
VCh0YXApOwogICAgIEFTU0VSVChtX3RhcCA9PSB0YXApOwogCi0gICAgUmV0YWluUHRyPEFWTXV0
YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzSW5zdGFuY2UoKSBpbml0XSk7Cisg
ICAgUmV0YWluUHRyPEFWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJz
ID0gYWRvcHROUyhbYWxsb2NBVk11dGFibGVBdWRpb01peElucHV0UGFyYW1ldGVyc0luc3RhbmNl
KCkgaW5pdF0pOwogICAgIFtwYXJhbWV0ZXJzIHNldEF1ZGlvVGFwUHJvY2Vzc29yOm1fdGFwLmdl
dCgpXTsKIAogICAgIENNUGVyc2lzdGVudFRyYWNrSUQgdHJhY2tJRCA9IG1fYXZBc3NldFRyYWNr
LmdldCgpLnRyYWNrSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFj
Lm1tCmluZGV4IDhlNmVkN2M4YjJhMTI2MWVkNzRiOTM5MDg0NzUyYzkzZGQxZTdmNDMuLjVkNWUx
NDczZDA5NDUwZjNkNjI5ZDZmZDk4OTAzMWJkMzVmNDhjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXliYWNrVGFyZ2V0
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXliYWNrVGFyZ2V0TWFjLm1tCkBAIC0zMCw4ICszMCwxMCBAQAogCiAjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5o
PgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZv
dW5kYXRpb25Tb2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5k
YXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dENvbnRleHQpCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2VsZWN0
aW9uR3JvdXBBVkZPYmpDLm1tCmluZGV4IDgzYjY0MjE3MmUxOWU2N2JlOWVhYmQ5YTZmOTlhYmMz
NDkwNDhmMjAuLmY3ODJkOGI3ZTBmZDg5N2QwMmJhYTVhZDFmNzczMzFhYmI5ZmFiY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0KQEAgLTMz
LDE1ICszMywxOSBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbS5oPgogI2lt
cG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvTGFuZ3VhZ2UuaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK1NP
RlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uR3JvdXApCitTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uKQorCiAjaWYgSEFWRShNRURJQV9B
Q0NFU1NJQklMSVRZX0ZSQU1FV09SSykKICNpbmNsdWRlIDxNZWRpYUFjY2Vzc2liaWxpdHkvTWVk
aWFBY2Nlc3NpYmlsaXR5Lmg+CiAjaW5jbHVkZSAiTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsu
aCIKICNlbmRpZgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4K
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpD
PiBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM6OmNyZWF0ZShNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQyYgZ3JvdXAsIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKm9wdGlvbikKQEAgLTEwMiw3
ICsxMDYsNyBAQCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6fk1lZGlhU2VsZWN0aW9uR3Jv
dXBBVkZPYmpDKCkKIAogdm9pZCBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6dXBkYXRlT3B0
aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzKQogewotICAgIFJldGFp
blB0cjxOU1NldD4gbmV3QVZPcHRpb25zID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0
aEFycmF5OltQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgcGxheWFibGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRpb25z
XV1dKTsKKyAgICBSZXRhaW5QdHI8TlNTZXQ+IG5ld0FWT3B0aW9ucyA9IGFkb3B0TlMoW1tOU1Nl
dCBhbGxvY10gaW5pdFdpdGhBcnJheTpbZ2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBw
bGF5YWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0Zyb21BcnJheTpbbV9tZWRpYVNlbGVjdGlvbkdy
b3VwIG9wdGlvbnNdXV0pOwogICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IG9sZEFWT3B0aW9u
cyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bV9vcHRp
b25zLnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgYXZPcHRpb24gOiBtX29wdGlvbnMua2V5cygp
KQogICAgICAgICBbb2xkQVZPcHRpb25zIGFkZE9iamVjdDooX19icmlkZ2UgQVZNZWRpYVNlbGVj
dGlvbk9wdGlvbiAqKWF2T3B0aW9uXTsKQEAgLTEzNSw3ICsxMzksNyBAQCB2b2lkIE1lZGlhU2Vs
ZWN0aW9uR3JvdXBBVkZPYmpDOjp1cGRhdGVPcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBj
aGFyYWN0ZXJpcwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNMYW5ndWFnZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6dXNlclByZWZl
cnJlZExhbmd1YWdlcygpLnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKCkpCiAgICAgICAgIFtuc0xhbmd1YWdlcyBhZGRPYmplY3Q6KE5T
U3RyaW5nKilsYW5ndWFnZV07Ci0gICAgTlNBcnJheSogZmlsdGVyZWRPcHRpb25zID0gW1BBTDo6
Z2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBtZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9t
QXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRpb25zXSBmaWx0ZXJlZEFuZFNvcnRlZEFj
Y29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzOm5zTGFuZ3VhZ2VzLmdldCgpXTsKKyAgICBOU0Fy
cmF5KiBmaWx0ZXJlZE9wdGlvbnMgPSBbZ2V0QVZNZWRpYVNlbGVjdGlvbkdyb3VwQ2xhc3MoKSBt
ZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6W21fbWVkaWFTZWxlY3Rpb25Hcm91cCBvcHRp
b25zXSBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzOm5zTGFu
Z3VhZ2VzLmdldCgpXTsKIAogICAgIGlmICghW2ZpbHRlcmVkT3B0aW9ucyBjb3VudF0gJiYgY2hh
cmFjdGVyaXN0aWNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4LDcgKzE1Miw3
IEBAIHZvaWQgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OnVwZGF0ZU9wdGlvbnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNoYXJhY3RlcmlzCiAgICAgZm9yIChhdXRvJiBjaGFyYWN0ZXJpc3Rp
YyA6IGNoYXJhY3RlcmlzdGljcykKICAgICAgICAgW25zQ2hhcmFjdGVyaXN0aWNzIGFkZE9iamVj
dDooTlNTdHJpbmcgKiljaGFyYWN0ZXJpc3RpY107CiAKLSAgICBOU0FycmF5KiBvcHRpb25zV2l0
aENoYXJhY3RlcmlzdGljcyA9IFtQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkg
bWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZpbHRlcmVkT3B0aW9ucyB3aXRoTWVkaWFD
aGFyYWN0ZXJpc3RpY3M6bnNDaGFyYWN0ZXJpc3RpY3MuZ2V0KCldOworICAgIE5TQXJyYXkqIG9w
dGlvbnNXaXRoQ2hhcmFjdGVyaXN0aWNzID0gW2dldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNz
KCkgbWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OmZpbHRlcmVkT3B0aW9ucyB3aXRoTWVk
aWFDaGFyYWN0ZXJpc3RpY3M6bnNDaGFyYWN0ZXJpc3RpY3MuZ2V0KCldOwogICAgIGlmIChvcHRp
b25zV2l0aENoYXJhY3RlcmlzdGljcyAmJiBbb3B0aW9uc1dpdGhDaGFyYWN0ZXJpc3RpY3MgY291
bnRdKQogICAgICAgICBmaWx0ZXJlZE9wdGlvbnMgPSBvcHRpb25zV2l0aENoYXJhY3RlcmlzdGlj
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWRm91bmRhdGlvbk1JTUVUeXBl
Q2FjaGUubW0KaW5kZXggYmU0NzY2N2NjZDM3MmZiYWQ2YWVlMGVkNThlYjg0MzY3NTJkYjg4Ny4u
MGIzMmY3OWY1ZTkzMzY4NjI4MDE1NjcwYmJkNDQ3NTQzMWVhMTJhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZGb3VuZGF0
aW9uTUlNRVR5cGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlLm1tCkBAIC0yOSwx
NCArMjksMTggQEAKICNpZiBQTEFURk9STShDT0NPQSkKIAogI2ltcG9ydCAiQ29udGVudFR5cGUu
aCIKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNl
dC5oPgogCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KLSNpbXBvcnQgPHBh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCisjaWYgRU5BQkxFKFZJREVPKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQogI2lmICFQTEFURk9STShJT1NNQUMpCiBTT0ZUX0xJTktfRlJBTUVX
T1JLX09QVElPTkFMX1BSRUZMSUdIVChBVkZvdW5kYXRpb24pCiAjZW5kaWYKK1NPRlRfTElOS19G
UkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRh
dGlvbiwgQVZVUkxBc3NldCkKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgx
LDcgKzg1LDcgQEAgYm9vbCBBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKLSAgICByZXR1cm4gW1BBTDo6Z2V0QVZV
UkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6bWltZVR5cGVdOworICAg
IHJldHVybiBbZ2V0QVZVUkxBc3NldENsYXNzKCkgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6
bWltZVR5cGVdOwogI2VuZGlmCiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksMTAgKzExMywx
MCBAQCB2b2lkIEFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGU6OmxvYWRNSU1FVHlwZXMoKQogI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFt0aGlzXSB7Ci0g
ICAgICAgIGlmICghUEFMOjpBVkZvdW5kYXRpb25MaWJyYXJ5KCkpCisgICAgICAgIGlmICghQVZG
b3VuZGF0aW9uTGlicmFyeSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAo
TlNTdHJpbmcqIHR5cGUgaW4gW1BBTDo6Z2V0QVZVUkxBc3NldENsYXNzKCkgYXVkaW92aXN1YWxN
SU1FVHlwZXNdKQorICAgICAgICBmb3IgKE5TU3RyaW5nKiB0eXBlIGluIFtnZXRBVlVSTEFzc2V0
Q2xhc3MoKSBhdWRpb3Zpc3VhbE1JTUVUeXBlc10pCiAgICAgICAgICAgICBtX2NhY2hlLT5hZGQo
dHlwZSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVUeXBlQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tCmluZGV4IDQzZWYyY2Q3MDAwNDkwMjY1M2U0MzFkZDJiMDhhYzM0MmFiZTdlYmQu
LjYyMDAxNGQ5MDQzN2I0ZGQyNWZjMjExYWM1NmIyZGRiZTQ2NDAyNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLm1tCkBAIC0zOSw5ICszOSwxOCBAQAogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZG
b3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvQWxnb3JpdGhtcy5oPgogI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29m
dExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09G
VF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDb250ZW50S2V5U2Vzc2lvbik7
CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNvbnRlbnRLZXlSZXNw
b25zZSk7CitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0
KTsKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ29udGVudEtl
eVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nLCBOU1N0cmluZyopCisKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZQZXJzaXN0
YWJsZUNvbnRlbnRLZXlSZXF1ZXN0KTsKKyNlbmRpZgogCiBzdGF0aWMgY29uc3QgTlNTdHJpbmcg
KlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CiAKQEAgLTEyOSwx
MyArMTM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCkKIHsKLSAgICBy
ZXR1cm4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZp
ZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildOworICAgIHJldHVybiBbZ2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOild
OwogfQogCiBib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0
c1BlcnNpc3RlbnRLZXlzKCkKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHJldHVy
biBQQUw6OmdldEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdENsYXNzKCk7CisgICAgcmV0
dXJuIGdldEFWUGVyc2lzdGFibGVDb250ZW50S2V5UmVxdWVzdENsYXNzKCk7CiAjZWxzZQogICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMTQzLDcgKzE1Miw3IEBAIGJvb2wgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnN1cHBvcnRzUGVyc2lzdGVudEtleXMoKQogCiBi
b29sIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c01lZGlhQ2Fw
YWJpbGl0eShjb25zdCBDRE1NZWRpYUNhcGFiaWxpdHkmIGNhcGFiaWxpdHkpCiB7Ci0gICAgaWYg
KCFbUEFMOjpnZXRBVlVSTEFzc2V0Q2xhc3MoKSBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTpj
YXBhYmlsaXR5LmNvbnRlbnRUeXBlXSkKKyAgICBpZiAoIVtnZXRBVlVSTEFzc2V0Q2xhc3MoKSBp
c1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTpjYXBhYmlsaXR5LmNvbnRlbnRUeXBlXSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRmFpclBsYXkgb25seSBzdXBwb3J0cyAnY2Jjcycg
ZW5jcnlwdGlvbjoKQEAgLTE2OCw3ICsxNzcsNyBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbgog
ICAgIGlmIChjb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcy5jb250YWlucyhDRE1TZXNzaW9uVHlw
ZTo6UGVyc2lzdGVudExpY2Vuc2UpICYmICFzdXBwb3J0c1BlcnNpc3RlbnRLZXlzKCkpCiAgICAg
ICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoIVBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSkKKyAgICBpZiAoIWNhbkxvYWRB
VkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQogICAgICAgICByZXR1cm4gRmFp
bGVkOwogCiAgICAgcmV0dXJuIFN1Y2NlZWRlZDsKQEAgLTM2MSw3ICszNzAsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKLSAgICAgICAgW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CisgICAgICAg
IFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Np
b25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVu
dGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAg
Y2FsbGJhY2soZmFsc2UsIHsgfSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2NlZWRl
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zODIsNyArMzkxLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX2N1cnJlbnRS
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpyZXNwb25zZURhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICBbbV9j
dXJyZW50UmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogCiAgICAg
Ly8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5k
IGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2Fs
bGJhY2suCiAgICAgc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1ldGhvZCA9IHByb3Rv
Y29sX2dldE1ldGhvZERlc2NyaXB0aW9uKEBwcm90b2NvbChBVkNvbnRlbnRLZXlTZXNzaW9uRGVs
ZWdhdGUpLCBAc2VsZWN0b3IoY29udGVudEtleVNlc3Npb246Y29udGVudEtleVJlcXVlc3REaWRT
dWNjZWVkOiksIE5PLCBZRVMpOwpAQCAtNDE0LDcgKzQyMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBs
aWNlbnNlCiAKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRL
ZXlzOwotICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6Omdl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNX
aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVS
TDpzdG9yYWdlVVJMXSkgeworICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRh
IGluIFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25S
ZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0
b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJl
ZFNlc3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhE
YXRhOmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBm
b3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbGF5
YmFja1Nlc3Npb25JZFZhbHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVjdEZv
cktleTpQbGF5YmFja1Nlc3Npb25JZEtleV07CiAgICAgICAgICAgICBpZiAoIVtwbGF5YmFja1Nl
c3Npb25JZFZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC00NzMsNyAr
NDgyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3Ig
Y2hhbmdlZEtleXM7Ci0gICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4g
W1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9u
UmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVj
dG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CisgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vz
c2lvbkRhdGEgaW4gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5
ICpleHBpcmVkU2Vzc2lvbiA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlM
aXN0V2l0aERhdGE6ZXhwaXJlZFNlc3Npb25EYXRhIG9wdGlvbnM6a0NGUHJvcGVydHlMaXN0SW1t
dXRhYmxlIGZvcm1hdDpudWxscHRyIGVycm9yOm51bGxwdHJdOwogICAgICAgICAgICAgTlNTdHJp
bmcgKnBsYXliYWNrU2Vzc2lvbklkVmFsdWUgPSAoTlNTdHJpbmcgKilbZXhwaXJlZFNlc3Npb24g
b2JqZWN0Rm9yS2V5OlBsYXliYWNrU2Vzc2lvbklkS2V5XTsKICAgICAgICAgICAgIGlmICghW3Bs
YXliYWNrU2Vzc2lvbklkVmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKQEAg
LTcwNiw5ICs3MTUsOSBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmVuc3VyZVNlc3Npb24oKQogCiAgICAgYXV0byBzdG9y
YWdlVVJMID0gbV9pbnN0YW5jZS0+c3RvcmFnZVVSTCgpOwogICAgIGlmICghbV9pbnN0YW5jZS0+
cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJMKQotICAgICAgICBtX3Nlc3Np
b24gPSBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lv
bldpdGhLZXlTeXN0ZW06QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmddOworICAg
ICAgICBtX3Nlc3Npb24gPSBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVudEtl
eVNlc3Npb25XaXRoS2V5U3lzdGVtOmdldEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFt
aW5nKCldOwogICAgIGVsc2UKLSAgICAgICAgbV9zZXNzaW9uID0gW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOkFWQ29udGVu
dEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdl
VVJMXTsKKyAgICAgICAgbV9zZXNzaW9uID0gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygp
IGNvbnRlbnRLZXlTZXNzaW9uV2l0aEtleVN5c3RlbTpnZXRBVkNvbnRlbnRLZXlTeXN0ZW1GYWly
UGxheVN0cmVhbWluZygpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKIAogICAg
IGlmICghbV9zZXNzaW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5k
ZXggMWY0Njg3OTc3MDBjMDVmMzk2OTdjNTI4Yjg2ZDY0NzFlODNjMzEzZi4uOTgzOWYzNTNmODJj
MWFjN2EyYjU4Y2Y3NjVmMGNkYzdhNjQyMGViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTQwLDggKzQw
LDE0IEBACiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9t
YWMvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25T
b2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCitT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXIpOworU09GVF9M
SU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDb250ZW50S2V5U2Vzc2lvbik7CitT
T0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNvbnRlbnRLZXlSZXNwb25z
ZSk7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVkNvbnRlbnRL
ZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3Ry
ZWFtaW5nLCBOU1N0cmluZyAqKQogCiB0eXBlZGVmIE5TU3RyaW5nICpBVkNvbnRlbnRLZXlTeXN0
ZW07CiAKQEAgLTEyMSw3ICsxMjcsNyBAQCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
fkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKCkKIAogYm9vbCBDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKQogewotICAgIHJldHVybiBQQUw6OmdldEFWQ29u
dGVudEtleVNlc3Npb25DbGFzcygpOworICAgIHJldHVybiBnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKTsKIH0KIAogUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhB
cnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQpAQCAtMTY3LDcgKzE3Myw3IEBAIHZvaWQg
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAgICAgICAgaWYg
KCFtX2NlcnRpZmljYXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghW1BB
TDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6c3RvcmFn
ZURpcmVjdG9yeUF0VVJMOildKQorICAgICAgICBpZiAoIVtnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlbmRpbmdFeHBpcmVkU2Vzc2lv
blJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0pCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBzdG9yYWdlUGF0aCA9IHRoaXMtPnN0b3Jh
Z2VQYXRoKCk7CkBAIC0xNzUsNyArMTgxLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6bV9jZXJ0aWZpY2F0ZS0+ZGF0YSgpIGxlbmd0aDptX2NlcnRpZmljYXRl
LT5sZW5ndGgoKV0pOwotICAgICAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRz
V2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlB
dFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07CisgICAgICAgIE5TQXJy
YXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5k
aW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRh
LmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3Jh
Z2VQYXRoXV07CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gZXhw
aXJlZFNlc3Npb25zKSB7CiAgICAgICAgICAgICBOU0RpY3Rpb25hcnkgKmV4cGlyZWRTZXNzaW9u
ID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBwcm9wZXJ0eUxpc3RXaXRoRGF0YTpleHBp
cmVkU2Vzc2lvbkRhdGEgb3B0aW9uczprQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0Om51
bGxwdHIgZXJyb3I6bnVsbHB0cl07CiAgICAgICAgICAgICBOU1N0cmluZyAqcGxheWJhY2tTZXNz
aW9uSWRWYWx1ZSA9IChOU1N0cmluZyAqKVtleHBpcmVkU2Vzc2lvbiBvYmplY3RGb3JLZXk6UGxh
eWJhY2tTZXNzaW9uSWRLZXldOwpAQCAtMjIzLDggKzIyOSw4IEBAIGJvb2wgQ0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFy
cmF5PiYKIAogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm1fY2VydGlmaWNhdGUtPmRhdGEoKSBs
ZW5ndGg6bV9jZXJ0aWZpY2F0ZS0+bGVuZ3RoKCldKTsKIAotICAgICAgICBpZiAoW1BBTDo6Z2V0
QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihy
ZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOndpdGhBcHBJZGVudGlmaWVyOnN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDopXSkKLSAgICAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6QFttX2V4cGly
ZWRTZXNzaW9uLmdldCgpXSB3aXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0ZURhdGEuZ2V0KCkg
c3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhd
XTsKKyAgICAgICAgaWYgKFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6d2l0
aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKQorICAgICAgICAgICAgW2dl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJl
cG9ydHM6QFttX2V4cGlyZWRTZXNzaW9uLmdldCgpXSB3aXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZp
Y2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6c3RvcmFnZVBhdGhdXTsKICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IG51bGxwdHI7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI3OCw3ICsyODQsNyBAQCBib29sIENETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8
VWludDhBcnJheT4mCiAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bV9jZXJ0aWZpY2F0ZS0+ZGF0
YSgpIGxlbmd0aDptX2NlcnRpZmljYXRlLT5sZW5ndGgoKV0pOwogCiAgICAgICAgIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IG9wdGlvbnM7Ci0gICAgICAgIGlmICghbV9wcm90b2NvbFZlcnNpb25z
LmlzRW1wdHkoKSAmJiBQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtleVJlcXVl
c3RQcm90b2NvbFZlcnNpb25zS2V5KCkpIHsKKyAgICAgICAgaWYgKCFtX3Byb3RvY29sVmVyc2lv
bnMuaXNFbXB0eSgpICYmIGNhbkxvYWRBVkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9u
c0tleSgpKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHByb3RvY29s
VmVyc2lvbnNPcHRpb24gPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgdmVyc2lvbiA6IG1fcHJvdG9jb2xWZXJzaW9ucykgewog
ICAgICAgICAgICAgICAgIGlmICghdmVyc2lvbikKQEAgLTI4Niw3ICsyOTIsNyBAQCBib29sIENE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQ
dHI8VWludDhBcnJheT4mCiAgICAgICAgICAgICAgICAgW3Byb3RvY29sVmVyc2lvbnNPcHRpb24g
YWRkT2JqZWN0OkAodmVyc2lvbildOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBvcHRp
b25zID0gQHsgQVZDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXk6IHByb3RvY29s
VmVyc2lvbnNPcHRpb24uZ2V0KCkgfTsKKyAgICAgICAgICAgIG9wdGlvbnMgPSBAeyBnZXRBVkNv
bnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9uc0tleSgpOiBwcm90b2NvbFZlcnNpb25zT3B0
aW9uLmdldCgpIH07CiAgICAgICAgIH0KIAogICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXll
cjo6Tm9FcnJvcjsKQEAgLTMxMCw4ICszMTYsOCBAQCBib29sIENETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mCiAg
ICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5LT5kYXRhKCkgbGVuZ3RoOmtleS0+
bGVuZ3RoKCldKTsKICAgICAKLSAgICBpZiAoW21fa2V5UmVxdWVzdCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6KV0gJiYgW1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29u
dGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOildKQot
ICAgICAgICBbbV9rZXlSZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTprZXlEYXRhLmdldCgpXV07CisgICAgaWYgKFttX2tl
eVJlcXVlc3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihwcm9jZXNzQ29udGVudEtleVJl
c3BvbnNlOildICYmIFtnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXNwb25zZURhdGE6KV0pCisgICAgICAgIFttX2tleVJlcXVlc3QgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbZ2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNw
b25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTprZXlEYXRhLmdldCgpXV07
CiAgICAgZWxzZQogICAgICAgICBbbV9rZXlSZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9u
c2VEYXRhOmtleURhdGEuZ2V0KCldOwogCkBAIC0zNDAsMTMgKzM0NiwxMyBAQCBSZWZQdHI8VWlu
dDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFz
ZU1lc3NhZ2UodW5zaQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNlcnRpZmljYXRlRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bV9jZXJ0aWZpY2F0ZS0+ZGF0YSgp
IGxlbmd0aDptX2NlcnRpZmljYXRlLT5sZW5ndGgoKV0pOwogCiAgICAgU3RyaW5nIHN0b3JhZ2VQ
YXRoID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKLSAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0eSgp
IHx8ICFbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmll
cjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0pIHsKKyAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0
eSgpIHx8ICFbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6
c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKSB7CiAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxh
eWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7CiAgICAgICAgIHN5c3RlbUNvZGUgPSAnIW1vcic7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE5TQXJyYXkqIGV4cGlyZWRT
ZXNzaW9ucyA9IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBp
cmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0ZURhdGEuZ2V0KCkg
c3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhd
XTsKKyAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbZ2V0QVZDb250ZW50S2V5U2Vzc2lv
bkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmNl
cnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpzdG9yYWdlUGF0aF1dOwogICAgIGlmICghW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0p
IHsKICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246Omdl
bmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UoJXApIC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIs
IHRoaXMpOwogCkBAIC0zNzUsMTAgKzM4MSwxMCBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Y29udGVudEtleVNlc3Npb24oKQogCiAgICAgU3Ry
aW5nIHN0b3JhZ2VQYXRoID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKICAgICBpZiAoc3RvcmFnZVBh
dGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmICghW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lv
bkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50S2V5U2Vzc2lvbldp
dGhLZXlTeXN0ZW06KV0gfHwgIVBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZDb250ZW50S2V5
U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSkKKyAgICAgICAgaWYgKCFbZ2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50S2V5U2Vz
c2lvbldpdGhLZXlTeXN0ZW06KV0gfHwgIWNhbkxvYWRBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxh
eVN0cmVhbWluZygpKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBtX2NvbnRl
bnRLZXlTZXNzaW9uID0gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVu
dEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOkFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFt
aW5nXTsKKyAgICAgICAgbV9jb250ZW50S2V5U2Vzc2lvbiA9IFtnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lvbldpdGhLZXlTeXN0ZW06Z2V0QVZDb250ZW50S2V5
U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5n
IHN0b3JhZ2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHN0b3JhZ2VQYXRo
KTsKIApAQCAtMzg4LDEwICszOTQsMTAgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICAgICAgfQogCiAg
ICAgICAgIGF1dG8gdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aF07Ci0g
ICAgICAgIGlmIChbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uV2l0aEtleVN5c3RlbTpzdG9yYWdl
RGlyZWN0b3J5QXRVUkw6KV0gJiYgUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVkNvbnRlbnRL
ZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQotICAgICAgICAgICAgbV9jb250ZW50S2V5U2Vz
c2lvbiA9IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIGNvbnRlbnRLZXlTZXNz
aW9uV2l0aEtleVN5c3RlbTpBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZyBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6dXJsXTsKKyAgICAgICAgaWYgKFtnZXRBVkNvbnRlbnRLZXlTZXNz
aW9uQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9u
V2l0aEtleVN5c3RlbTpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0gJiYgY2FuTG9hZEFWQ29udGVu
dEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCisgICAgICAgICAgICBtX2NvbnRlbnRLZXlT
ZXNzaW9uID0gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIGNvbnRlbnRLZXlTZXNzaW9u
V2l0aEtleVN5c3RlbTpnZXRBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpIHN0
b3JhZ2VEaXJlY3RvcnlBdFVSTDp1cmxdOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Nv
bnRlbnRLZXlTZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQ29udGVudEtleVNlc3Npb25J
bnN0YW5jZSgpIGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJMOnVybF0pOworICAgICAgICAg
ICAgbV9jb250ZW50S2V5U2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZDb250ZW50S2V5U2Vzc2lv
bkluc3RhbmNlKCkgaW5pdFdpdGhTdG9yYWdlRGlyZWN0b3J5QXRVUkw6dXJsXSk7CiAgICAgfQog
CiAgICAgbV9jb250ZW50S2V5U2Vzc2lvbi5nZXQoKS5kZWxlZ2F0ZSA9IG1fY29udGVudEtleVNl
c3Npb25EZWxlZ2F0ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYzFlZmQ1MWM5NWMyODVkZDllM2JmOTcx
YmE5NDE2Mjc2YTQwNjI5ZS4uY2ExOWJhZTA4ZmVjNWZjY2JhNTdlNDlhYTBmNGVhZjg3MTNlNTI3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTQxLDYgKzQxLDEyIEBACiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcu
aD4KICNpbXBvcnQgPHd0Zi9VVUlELmg+CiAKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldCkK
K1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0KQorI2RlZmluZSBBVlVSTEFzc2V0IGdldEFWVVJMQXNzZXRDbGFzcygpCisjZGVmaW5lIEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0IGdldEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0KCkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyogcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQppbmRl
eCA5OTE3NWE3NWUyYWMzOWZhNTc0ODdmMDc3YjYxYTg0YTEyODgwY2UxLi43NTU4N2M2MjlmMmYz
OTJiYmU2Y2MyYmI3MGRjODQ0NGU0MGI0OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KQEAgLTQwLDkgKzQwLDE0IEBACiAj
aW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3Vu
ZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZG
b3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1EYXRhUGFy
c2VyKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vz
c2lvbik7CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVh
bURhdGFQYXJzZXJDb250ZW50S2V5UmVxdWVzdFByb3RvY29sVmVyc2lvbnNLZXksIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNl
c3Npb25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlv
biwgTlNTdHJpbmcgKikKIAogQGludGVyZmFjZSBBVlN0cmVhbVNlc3Npb24gOiBOU09iamVjdAog
LSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1E
YXRhUGFyc2VyOwpAQCAtMTM3LDExICsxNDIsMTEgQEAgdm9pZCBDRE1TZXNzaW9uQVZTdHJlYW1T
ZXNzaW9uOjpyZWxlYXNlS2V5cygpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgU3Ry
aW5nIHN0b3JhZ2VQYXRoID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKLSAgICAgICAgaWYgKHN0b3Jh
Z2VQYXRoLmlzRW1wdHkoKSB8fCAhW1BBTDo6Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRo
QXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0pCisgICAgICAgIGlmIChzdG9y
YWdlUGF0aC5pc0VtcHR5KCkgfHwgIVtnZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IocGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJ
ZGVudGlmaWVyOnN0b3JhZ2VEaXJlY3RvcnlBdFVSTDopXSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm1fY2VydGlmaWNhdGUtPmRhdGEoKSBsZW5ndGg6
bV9jZXJ0aWZpY2F0ZS0+bGVuZ3RoKCldKTsKLSAgICAgICAgTlNBcnJheSogZXhwaXJlZFNlc3Np
b25zID0gW1BBTDo6Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Np
b25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VE
aXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07CisgICAg
ICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtnZXRBVlN0cmVhbVNlc3Npb25DbGFzcygp
IHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0
ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
c3RvcmFnZVBhdGhdXTsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBp
biBleHBpcmVkU2Vzc2lvbnMpIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJlZFNl
c3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRh
OmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBmb3Jt
YXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbGF5YmFj
a1Nlc3Npb25JZFZhbHVlID0gKE5TU3RyaW5nICopW2V4cGlyZWRTZXNzaW9uIG9iamVjdEZvcktl
eTpQbGF5YmFja1Nlc3Npb25JZEtleV07CkBAIC0xOTUsOCArMjAwLDggQEAgYm9vbCBDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhB
cnJheT4mIG5leHQKIAogICAgICAgICBJR05PUkVfV0FSTklOR1NfQkVHSU4oIm9iamMtbGl0ZXJh
bC1jb252ZXJzaW9uIikKICAgICAgICAgU3RyaW5nIHN0b3JhZ2VQYXRoID0gdGhpcy0+c3RvcmFn
ZVBhdGgoKTsKLSAgICAgICAgaWYgKCFzdG9yYWdlUGF0aC5pc0VtcHR5KCkgJiYgW1BBTDo6Z2V0
QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92
ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6d2l0aEFwcElkZW50aWZpZXI6c3RvcmFnZURp
cmVjdG9yeUF0VVJMOildKQotICAgICAgICAgICAgW1BBTDo6Z2V0QVZTdHJlYW1TZXNzaW9uQ2xh
c3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOkBbbV9leHBpcmVkU2Vzc2lv
bi5nZXQoKV0gd2l0aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VE
aXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07CisgICAg
ICAgIGlmICghc3RvcmFnZVBhdGguaXNFbXB0eSgpICYmIFtnZXRBVlN0cmVhbVNlc3Npb25DbGFz
cygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0czp3aXRoQXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KV0pCisg
ICAgICAgICAgICBbZ2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzOkBbbV9leHBpcmVkU2Vzc2lvbi5nZXQoKV0gd2l0aEFwcElkZW50aWZp
ZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07CiAgICAgICAgIElHTk9SRV9XQVJOSU5HU19FTkQK
ICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMjI1LDcgKzIzMCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBk
YXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0CiAgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGluaXREYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlczptX2luaXREYXRhLT5kYXRhKCkgbGVuZ3RoOm1faW5pdERhdGEtPmxlbmd0aCgpXSk7
CiAKICAgICAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gb3B0aW9uczsKLSAgICAgICAgaWYg
KCFtX3Byb3RvY29sVmVyc2lvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9wcm90b2Nv
bFZlcnNpb25zLmlzRW1wdHkoKSAmJiBjYW5Mb2FkQVZTdHJlYW1EYXRhUGFyc2VyQ29udGVudEtl
eVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5KCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gcHJvdG9jb2xWZXJzaW9uc09wdGlvbiA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgZm9yIChhdXRvJiB2ZXJzaW9uIDog
bV9wcm90b2NvbFZlcnNpb25zKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF2ZXJzaW9uKQpAQCAt
MjMzLDcgKzIzOCw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBkYXRlKFVp
bnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0CiAgICAgICAgICAgICAgICAg
W3Byb3RvY29sVmVyc2lvbnNPcHRpb24gYWRkT2JqZWN0OkAodmVyc2lvbildOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBvcHRpb25zID0gQHsgQVZTdHJlYW1EYXRhUGFyc2VyQ29udGVu
dEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5OiBwcm90b2NvbFZlcnNpb25zT3B0aW9uLmdl
dCgpIH07CisgICAgICAgICAgICBvcHRpb25zID0gQHsgZ2V0QVZTdHJlYW1EYXRhUGFyc2VyQ29u
dGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5KCk6IHByb3RvY29sVmVyc2lvbnNPcHRp
b24uZ2V0KCkgfTsKICAgICAgICAgfQogCiAgICAgICAgIE5TRXJyb3IqIGVycm9yID0gbmlsOwpA
QCAtMjc1LDE1ICsyODAsMTYgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRh
dGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQKIAogdm9pZCBDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpzZXRTdHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lvbiAq
c3RyZWFtU2Vzc2lvbikKIHsKLSAgICBpZiAobV9zdHJlYW1TZXNzaW9uKQotICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fZGF0YVBh
cnNlck9ic2VydmVyLmdldCgpIG5hbWU6QVZTdHJlYW1TZXNzaW9uQ29udGVudFByb3RlY3Rpb25T
ZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24gb2JqZWN0Om1fc3RyZWFtU2Vzc2lv
bi5nZXQoKV07CisgICAgaWYgKG1fc3RyZWFtU2Vzc2lvbiAmJiBjYW5Mb2FkQVZTdHJlYW1TZXNz
aW9uQ29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24o
KSkKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVP
YnNlcnZlcjptX2RhdGFQYXJzZXJPYnNlcnZlci5nZXQoKSBuYW1lOmdldEFWU3RyZWFtU2Vzc2lv
bkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9uKCkg
b2JqZWN0Om1fc3RyZWFtU2Vzc2lvbi5nZXQoKV07CiAKICAgICBtX3N0cmVhbVNlc3Npb24gPSBz
dHJlYW1TZXNzaW9uOwogCiAgICAgaWYgKCFtX3N0cmVhbVNlc3Npb24pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2
ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRQ
cm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkOikgbmFtZTpBVlN0cmVhbVNlc3Npb25D
b250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6bV9zdHJlYW1TZXNzaW9uLmdldCgpXTsKKyAgICBpZiAoY2FuTG9hZEFWU3RyZWFtU2Vzc2lv
bkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9uKCkp
CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2
ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRQ
cm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkOikgbmFtZTpnZXRBVlN0cmVhbVNlc3Np
b25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbigp
IG9iamVjdDptX3N0cmVhbVNlc3Npb24uZ2V0KCldOwogCiAgICAgTlNEYXRhKiBpZGVudGlmaWVy
ID0gW3N0cmVhbVNlc3Npb24gY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcl07CiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGlkZW50aWZp
ZXIgPyBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppZGVudGlmaWVyIGVu
Y29kaW5nOihOU1VURjhTdHJpbmdFbmNvZGluZyldKSA6IG5pbDsKQEAgLTMwOSwxMyArMzE1LDEz
IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlm
aWNhdGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczptX2NlcnRp
ZmljYXRlLT5kYXRhKCkgbGVuZ3RoOm1fY2VydGlmaWNhdGUtPmxlbmd0aCgpXSk7CiAKICAgICBT
dHJpbmcgc3RvcmFnZVBhdGggPSB0aGlzLT5zdG9yYWdlUGF0aCgpOwotICAgIGlmIChzdG9yYWdl
UGF0aC5pc0VtcHR5KCkgfHwgIVtQQUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKSB7CisgICAgaWYgKHN0b3JhZ2VQ
YXRoLmlzRW1wdHkoKSB8fCAhW2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50
aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0VVJMOildKSB7CiAgICAgICAgIGVycm9yQ29kZSA9IE1l
ZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7CiAgICAgICAgIHN5c3RlbUNvZGUgPSAn
IW1vcic7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE5TQXJyYXkqIGV4
cGlyZWRTZXNzaW9ucyA9IFtQQUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4
cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0YS5nZXQo
KSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0
aF1dOworICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtnZXRBVlN0cmVhbVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0
aWZpY2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6c3RvcmFnZVBhdGhdXTsKICAgICBpZiAoIVtleHBpcmVkU2Vzc2lvbnMgY291bnRdKSB7
CiAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRl
S2V5UmVsZWFzZU1lc3NhZ2UoJXApIC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIsIHRoaXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRl
eCBkM2Y1NDdmOTljNDZmNWRlNDcxNjVlMDVmNDQxNDYyYjM3NGVhYTQ0Li4xN2RmZDdhOGYyYzI3
NmMwOGRiMWY3ZjhhZmY3ZWI2ZDZkMGRkMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTUyLDEyICs1MiwyNSBAQAogI2ltcG9ydCA8d3Rm
L01lZGlhVGltZS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3
dGYvT3B0aW9uYWwuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3Rm
L1ZlY3Rvci5oPgogCisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBv
cnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5o
IgotI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvY29j
b2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworI3ByYWdtYSBtYXJrIC0gU29mdCBMaW5raW5n
CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5L
X0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldCkKK1NPRlRfTElOS19DTEFT
U19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWQXNzZXRSZWFkZXIpCitTT0ZUX0xJTktfQ0xBU1Nf
T1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkFzc2V0UmVhZGVyU2FtcGxlUmVmZXJlbmNlT3V0cHV0
KQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljVmlzdWFsLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlM
KEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tleSwgTlNTdHJp
bmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWVVJMQXNz
ZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXksIE5TU3RyaW5nICopCisjZGVmaW5lIEFWTWVkaWFD
aGFyYWN0ZXJpc3RpY1Zpc3VhbCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWwoKQorI2Rl
ZmluZSBBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5IGdldEFWVVJMQXNzZXRSZWZl
cmVuY2VSZXN0cmljdGlvbnNLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVu
dENhY2hlS2V5IGdldEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXkoKQogCiAjcHJh
Z21hIG1hcmsgLQogCkBAIC0yMjUsNiArMjM4LDkgQEAgc3RhdGljIE5TVVJMICpjdXN0b21TY2hl
bWVVUkwoKQogc3RhdGljIE5TRGljdGlvbmFyeSAqaW1hZ2VEZWNvZGVyQXNzZXRPcHRpb25zKCkK
IHsKICAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gW10geworICAgICAgICAvLyBG
SVhNRTogQXJlIHRoZXNlIGtleXMgcmVhbGx5IG9wdGlvbmFsPworICAgICAgICBpZiAoIWNhbkxv
YWRBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkgfHwgIWNhbkxvYWRBVlVSTEFz
c2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5KCkpCisgICAgICAgICAgICByZXR1cm4gW0B7IH0g
cmV0YWluXTsKICAgICAgICAgcmV0dXJuIFtAewogICAgICAgICAgICAgQVZVUkxBc3NldFJlZmVy
ZW5jZVJlc3RyaWN0aW9uc0tleTogQChBVkFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25Gb3JiaWRB
bGwpLAogICAgICAgICAgICAgQVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleTogQFlF
UywKQEAgLTM1MCw3ICszNjYsNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgIDogSW1h
Z2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3V0aShXZWJD
b3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQotICAgICwgbV9hc3NldChhZG9wdE5TKFtQ
QUw6OmFsbG9jQVZVUkxBc3NldEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6Y3VzdG9tU2NoZW1lVVJM
KCkgb3B0aW9uczppbWFnZURlY29kZXJBc3NldE9wdGlvbnMoKV0pKQorICAgICwgbV9hc3NldChh
ZG9wdE5TKFthbGxvY0FWVVJMQXNzZXRJbnN0YW5jZSgpIGluaXRXaXRoVVJMOmN1c3RvbVNjaGVt
ZVVSTCgpIG9wdGlvbnM6aW1hZ2VEZWNvZGVyQXNzZXRPcHRpb25zKCldKSkKICAgICAsIG1fbG9h
ZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lv
bihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewpAQCAtMzgzLDYg
KzM5OSwxMiBAQCBib29sIEltYWdlRGVjb2RlckFWRk9iakM6OmNhbkRlY29kZVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIAogQVZBc3NldFRyYWNrICpJbWFnZURlY29kZXJBVkZPYmpDOjpm
aXJzdEVuYWJsZWRUcmFjaygpCiB7CisgICAgLy8gRklYTUU6IElzIEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY1Zpc3VhbCB0cnVseSBvcHRpb25hbD8KKyAgICBpZiAoIWNhbkxvYWRBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNWaXN1YWwoKSkgeworICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6Zmlyc3RFbmFibGVkVHJhY2soJXApIC0gQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFs
IGlzIG5vdCBzdXBwb3J0ZWQiLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisK
ICAgICBOU0FycmF5PEFWQXNzZXRUcmFjayAqPiAqdmlkZW9UcmFja3MgPSBbbV9hc3NldCB0cmFj
a3NXaXRoTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdOwog
ICAgIE5TVUludGVnZXIgZmlyc3RFbmFibGVkSW5kZXggPSBbdmlkZW9UcmFja3MgaW5kZXhPZk9i
amVjdFBhc3NpbmdUZXN0Ol4oQVZBc3NldFRyYWNrICp0cmFjaywgTlNVSW50ZWdlciwgQk9PTCop
IHsKICAgICAgICAgcmV0dXJuIHRyYWNrLmVuYWJsZWQ7CkBAIC00MDEsOCArNDIzLDggQEAgdm9p
ZCBJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkU2FtcGxlcygpCiAgICAgaWYgKCFtX3NhbXBsZURh
dGEuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBhc3NldFJlYWRlciA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0UmVhZGVySW5zdGFuY2UoKSBpbml0V2l0aEFzc2V0Om1f
YXNzZXQuZ2V0KCkgZXJyb3I6bmlsXSk7Ci0gICAgYXV0byByZWZlcmVuY2VPdXRwdXQgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jQVZBc3NldFJlYWRlclNhbXBsZVJlZmVyZW5jZU91dHB1dEluc3RhbmNl
KCkgaW5pdFdpdGhUcmFjazptX3RyYWNrLmdldCgpXSk7CisgICAgYXV0byBhc3NldFJlYWRlciA9
IGFkb3B0TlMoW2FsbG9jQVZBc3NldFJlYWRlckluc3RhbmNlKCkgaW5pdFdpdGhBc3NldDptX2Fz
c2V0LmdldCgpIGVycm9yOm5pbF0pOworICAgIGF1dG8gcmVmZXJlbmNlT3V0cHV0ID0gYWRvcHRO
UyhbYWxsb2NBVkFzc2V0UmVhZGVyU2FtcGxlUmVmZXJlbmNlT3V0cHV0SW5zdGFuY2UoKSBpbml0
V2l0aFRyYWNrOm1fdHJhY2suZ2V0KCldKTsKIAogICAgIHJlZmVyZW5jZU91dHB1dC5nZXQoKS5h
bHdheXNDb3BpZXNTYW1wbGVEYXRhID0gTk87CiAgICAgW2Fzc2V0UmVhZGVyIGFkZE91dHB1dDpy
ZWZlcmVuY2VPdXRwdXQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzMDY3MjczZWQ2MmU1YTFm
YTZmZWM0YWRiZDIyODI1OGY1YzBiNTQwLi5kODhmN2M3NDc5YjJiNGJlMDc4OTBmOTA5NmY3ZDk0
YTBmNzEyNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzksOCArMzksNDIgQEAKICNpbXBvcnQgPEFW
Rm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXll
ckl0ZW1PdXRwdXQuaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotCi0jaW1wb3J0IDxwYWwv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVlBsYXllckl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1l
dGFkYXRhSXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVySXRlbUxl
Z2libGVPdXRwdXQpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCBnZXRBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWwoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNB
dWRpYmxlIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUoKQorI2RlZmluZSBBVk1lZGlh
VHlwZUNsb3NlZENhcHRpb24gZ2V0QVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uKCkKKyNkZWZpbmUg
QVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzIGdldEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpCisjZGVmaW5lIEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50IGdldEFWTWVkaWFDaGFyYWN0
ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3Rlcmlz
dGljRWFzeVRvUmVhZCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNFYXN5VG9SZWFkKCkKKworU09G
VF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uLCBO
U1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljTGVnaWJsZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlU3VidGl0bGUs
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHksIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVy
aXN0aWNEZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSwgTlNTdHJpbmcgKikK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Nv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcywgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFO
VChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNo
YXJhY3RlcmlzdGljRWFzeVRvUmVhZCwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVlBsYXllciBn
ZXRBVlBsYXllckNsYXNzKCkKKyNkZWZpbmUgQVZQbGF5ZXJJdGVtIGdldEFWUGxheWVySXRlbUNs
YXNzKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpCisj
ZGVmaW5lIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgZ2V0QVZQbGF5ZXJJdGVtTGVnaWJsZU91
dHB1dENsYXNzKCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUNvbW1vbktleVRp
dGxlIGdldEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSgpCisjZGVmaW5lIEFWTWV0YWRhdGFLZXlT
cGFjZUNvbW1vbiBnZXRBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24oKQorI2RlZmluZSBBVk1lZGlh
VHlwZVN1YnRpdGxlIGdldEFWTWVkaWFUeXBlU3VidGl0bGUoKQorI2RlZmluZSBBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZN
ZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5
KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZv
ckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRT
b3VuZEZvckFjY2Vzc2liaWxpdHkoKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNiwx
MCArMTcwLDEwIEBAIEF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzo6
bGFiZWwoKSBjb25zdAogCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gMDsKIAotICAgIE5TQXJyYXkg
KnRpdGxlcyA9IFtQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBtZXRhZGF0YUl0ZW1zRnJv
bUFycmF5OlttX21lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpIGNvbW1vbk1ldGFkYXRhXSB3aXRo
S2V5OkFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBrZXlTcGFjZTpBVk1ldGFkYXRhS2V5U3BhY2VD
b21tb25dOworICAgIE5TQXJyYXkgKnRpdGxlcyA9IFtBVk1ldGFkYXRhSXRlbSBtZXRhZGF0YUl0
ZW1zRnJvbUFycmF5OlttX21lZGlhU2VsZWN0aW9uT3B0aW9uLmdldCgpIGNvbW1vbk1ldGFkYXRh
XSB3aXRoS2V5OkFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBrZXlTcGFjZTpBVk1ldGFkYXRhS2V5
U3BhY2VDb21tb25dOwogICAgIGlmIChbdGl0bGVzIGNvdW50XSkgewogICAgICAgICAvLyBJZiBw
b3NzaWJsZSwgcmV0dXJuIGEgdGl0bGUgaW4gb25lIG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxh
bmd1YWdlcy4KLSAgICAgICAgTlNBcnJheSAqdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0g
W1BBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6dGl0
bGVzIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJyZWRMYW5ndWFnZXM6W05TTG9j
YWxlIHByZWZlcnJlZExhbmd1YWdlc11dOworICAgICAgICBOU0FycmF5ICp0aXRsZXNGb3JQcmVm
ZXJyZWRMYW5ndWFnZXMgPSBbQVZNZXRhZGF0YUl0ZW0gbWV0YWRhdGFJdGVtc0Zyb21BcnJheTp0
aXRsZXMgZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpbTlNM
b2NhbGUgcHJlZmVycmVkTGFuZ3VhZ2VzXV07CiAgICAgICAgIGlmIChbdGl0bGVzRm9yUHJlZmVy
cmVkTGFuZ3VhZ2VzIGNvdW50XSkKICAgICAgICAgICAgIHRpdGxlID0gW1t0aXRsZXNGb3JQcmVm
ZXJyZWRMYW5ndWFnZXMgb2JqZWN0QXRJbmRleDowXSBzdHJpbmdWYWx1ZV07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakMubW0KaW5kZXggYmEwZGZkZWEzZTRhYjQ1ZDcxYWI3OTBlOTMxZjQ3NjRhMzFi
YTQyNy4uNGM3YTQ1ZjJkMzA3OTE4OTg4MGM3MzY5MzRiNDk0ZDM4NmExNzk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUxlZ2FjeUFWRk9iakMubW0KQEAgLTMzLDggKzMzLDI0IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgiCiAjaW1wb3J0
IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaW1wb3J0
IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktf
T1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
VlBsYXllckl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhSXRl
bSkKKyNkZWZpbmUgQVZNZWRpYVR5cGVDbG9zZWRDYXB0aW9uIGdldEFWTWVkaWFUeXBlQ2xvc2Vk
Q2FwdGlvbigpCisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBl
Q2xvc2VkQ2FwdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktf
Q09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUsIE5TU3RyaW5n
ICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3BhY2VD
b21tb24sIE5TU3RyaW5nICopCisKKyNkZWZpbmUgQVZQbGF5ZXJJdGVtIGdldEFWUGxheWVySXRl
bUNsYXNzKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygp
CisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUgZ2V0QVZNZWRpYUNoYXJhY3Rl
cmlzdGljTGVnaWJsZSgpCisjZGVmaW5lIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRBVk1l
dGFkYXRhQ29tbW9uS2V5VGl0bGUoKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24g
Z2V0QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04NSwxMCArMTAxLDEwIEBAIEF0b21pY1N0cmluZyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVn
YWN5QVZGT2JqQzo6bGFiZWwoKSBjb25zdAogCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gMDsKIAot
ICAgIE5TQXJyYXkgKnRpdGxlcyA9IFtQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBtZXRh
ZGF0YUl0ZW1zRnJvbUFycmF5OltbbV9wbGF5ZXJJdGVtVHJhY2sgYXNzZXRUcmFja10gY29tbW9u
TWV0YWRhdGFdIHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFWTWV0
YWRhdGFLZXlTcGFjZUNvbW1vbl07CisgICAgTlNBcnJheSAqdGl0bGVzID0gW0FWTWV0YWRhdGFJ
dGVtIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6W1ttX3BsYXllckl0ZW1UcmFjayBhc3NldFRyYWNr
XSBjb21tb25NZXRhZGF0YV0gd2l0aEtleTpBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUga2V5U3Bh
Y2U6QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uXTsKICAgICBpZiAoW3RpdGxlcyBjb3VudF0pIHsK
ICAgICAgICAgLy8gSWYgcG9zc2libGUsIHJldHVybiBhIHRpdGxlIGluIG9uZSBvZiB0aGUgdXNl
cidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCi0gICAgICAgIE5TQXJyYXkgKnRpdGxlc0ZvclByZWZl
cnJlZExhbmd1YWdlcyA9IFtQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKSBtZXRhZGF0YUl0
ZW1zRnJvbUFycmF5OnRpdGxlcyBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVk
TGFuZ3VhZ2VzOltOU0xvY2FsZSBwcmVmZXJyZWRMYW5ndWFnZXNdXTsKKyAgICAgICAgTlNBcnJh
eSAqdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFkYXRh
SXRlbXNGcm9tQXJyYXk6dGl0bGVzIGZpbHRlcmVkQW5kU29ydGVkQWNjb3JkaW5nVG9QcmVmZXJy
ZWRMYW5ndWFnZXM6W05TTG9jYWxlIHByZWZlcnJlZExhbmd1YWdlc11dOwogICAgICAgICBpZiAo
W3RpdGxlc0ZvclByZWZlcnJlZExhbmd1YWdlcyBjb3VudF0pCiAgICAgICAgICAgICB0aXRsZSA9
IFtbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzIG9iamVjdEF0SW5kZXg6MF0gc3RyaW5nVmFs
dWVdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1hYy5tbQppbmRleCA5ZDAzZjk4ZjA5MGMxYWQ4NGNkOWZlZDhkMWU3ZDkxZjgz
MjkyNmU5Li4yNzYzNzQ0YWQwMTE5YjRkM2Y4NGY1MTU4NzZkZjUwNTA0ODRhNDgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
YWMubW0KQEAgLTM3LDkgKzM3LDE0IEBACiAjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5kYXRp
b25TUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2Nv
YS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgordHlwZWRlZiBBVk91dHB1dENvbnRleHQgQVZPdXRw
dXRDb250ZXh0V0tUeXBlOwordHlwZWRlZiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyIEFW
T3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJXS1R5cGU7CisKIAogU09GVExJTktfQVZLSVRfRlJB
TUVXT1JLKCkKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitT
T0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVk91dHB1dENvbnRleHQpCiBT
T0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xs
ZXIpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODIsNyArODcsNyBAQCBSZWY8TWVk
aWFQbGF5YmFja1RhcmdldD4gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYzo6cGxheWJhY2tU
YXJnZXQoKQogICAgIHJldHVybiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0TWFjOjpjcmVh
dGUoY29udGV4dCk7CiB9CiAKLUFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXIgKk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNYWM6OmRldmljZVBpY2tlcigpCitBVk91dHB1dERldmljZU1lbnVD
b250cm9sbGVyV0tUeXBlICpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpkZXZpY2VQaWNr
ZXIoKQogewogICAgIGlmICghZ2V0QVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlckNsYXNzKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtOTAsNyArOTUsNyBAQCBBVk91dHB1dERldmlj
ZU1lbnVDb250cm9sbGVyICpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpkZXZpY2VQaWNr
ZXIoKQogICAgIGlmICghbV9vdXRwdXREZXZpY2VNZW51Q29udHJvbGxlcikgewogICAgICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpkZXZpY2VQaWNrZXIgLSBh
bGxvY2F0aW5nIHBpY2tlciIpOwogCi0gICAgICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHQ+
IGNvbnRleHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZPdXRwdXRDb250ZXh0SW5zdGFuY2UoKSBp
bml0XSk7CisgICAgICAgIFJldGFpblB0cjxBVk91dHB1dENvbnRleHRXS1R5cGU+IGNvbnRleHQg
PSBhZG9wdE5TKFthbGxvY0FWT3V0cHV0Q29udGV4dEluc3RhbmNlKCkgaW5pdF0pOwogICAgICAg
ICBtX291dHB1dERldmljZU1lbnVDb250cm9sbGVyID0gYWRvcHROUyhbYWxsb2NBVk91dHB1dERl
dmljZU1lbnVDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aE91dHB1dENvbnRleHQ6Y29udGV4
dC5nZXQoKV0pOwogCiAgICAgICAgIFttX291dHB1dERldmljZU1lbnVDb250cm9sbGVyLmdldCgp
IGFkZE9ic2VydmVyOm1fb3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSBm
b3JLZXlQYXRoOmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlS2V5TmFtZSBvcHRpb25zOk5T
S2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDRlNWI4MjM3MmU5Yjc1OGMyNmQ0YTNlNWQ1ODAxY2ZhN2ExODQwYmMu
LjVlMjkzYmEwNTE4YmUwZTRmYzhiYTBkYTRhYmZiZGVlOGZiNDk0NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMTM2LDggKzEzNiwxNjggQEAgdGVtcGxhdGUgPD4gc3RydWN0IGl0ZXJh
dG9yX3RyYWl0czxIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbkEK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkwgKnJlc29sdmVkVVJMOwogQGVu
ZAogCit0eXBlZGVmIEFWUGxheWVyIEFWUGxheWVyVHlwZTsKK3R5cGVkZWYgQVZQbGF5ZXJJdGVt
IEFWUGxheWVySXRlbVR5cGU7Cit0eXBlZGVmIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgQVZQ
bGF5ZXJJdGVtTGVnaWJsZU91dHB1dFR5cGU7Cit0eXBlZGVmIEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0VHlwZTsKK3R5cGVkZWYgQVZNZXRhZGF0YUl0ZW0g
QVZNZXRhZGF0YUl0ZW1UeXBlOwordHlwZWRlZiBBVk1lZGlhU2VsZWN0aW9uR3JvdXAgQVZNZWRp
YVNlbGVjdGlvbkdyb3VwVHlwZTsKK3R5cGVkZWYgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiBBVk1l
ZGlhU2VsZWN0aW9uT3B0aW9uVHlwZTsKK3R5cGVkZWYgQVZBc3NldENhY2hlIEFWQXNzZXRDYWNo
ZVR5cGU7CisKKyNwcmFnbWEgbWFyayAtIFNvZnQgTGlua2luZworCisvLyBTb2Z0LWxpbmtpbmcg
aGVhZGVycyBtdXN0IGJlIGluY2x1ZGVkIGxhc3Qgc2luY2UgdGhleSAjZGVmaW5lIGZ1bmN0aW9u
cywgY29uc3RhbnRzLCBldGMuCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4K
LSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCitTT0ZUX0xJTktf
RlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09GVF9MSU5LX0ZSQU1FV09SS19P
UFRJT05BTChDb3JlSW1hZ2UpCisKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxh
eWVyKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtKQorU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQpCitTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZVUkxBc3NldCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFW
QXNzZXRJbWFnZUdlbmVyYXRvcikKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWV0
YWRhdGFJdGVtKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldENhY2hlKQor
CitTT0ZUX0xJTktfQ0xBU1MoQ29yZUltYWdlLCBDSUNvbnRleHQpCitTT0ZUX0xJTktfQ0xBU1Mo
Q29yZUltYWdlLCBDSUltYWdlKQorCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
VkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwsIE5TU3RyaW5nICopCitTT0ZUX0xJTktf
Q09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVk
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNo
YXJhY3RlcmlzdGljVmlzdWFsLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91
bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbiwgTlNT
dHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlk
ZW8sIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlh
VHlwZUF1ZGlvLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZNZWRpYVR5cGVNZXRhZGF0YSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24sIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SW5oZXJp
dFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJlZmVyZW5jaW5nVVJJS2V5LCBOU1N0cmluZyAqKQorU09G
VF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1
cmVNb2RlQ2xlYW5BcGVydHVyZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWVVJMQXNzZXRSZWZlcmVuY2VSZXN0cmljdGlvbnNLZXksIE5TU3RyaW5nICop
CitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwsIE5TU3RyaW5nICopCitTT0ZUX0xJ
TktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplLCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1pbmdLZXlE
ZWxpdmVyeUNvbnRlbnRLZXlUeXBlLCBOU1N0cmluZyAqKQorCitTT0ZUX0xJTktfQ09OU1RBTlRf
TUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXksIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlVS
TEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5LCBOU1N0cmluZyAqKQorCisjZGVm
aW5lIEFWUGxheWVyIGluaXRBVlBsYXllcigpCisjZGVmaW5lIEFWUGxheWVySXRlbSBpbml0QVZQ
bGF5ZXJJdGVtKCkKKyNkZWZpbmUgQVZQbGF5ZXJMYXllciBpbml0QVZQbGF5ZXJMYXllcigpCisj
ZGVmaW5lIEFWVVJMQXNzZXQgaW5pdEFWVVJMQXNzZXQoKQorI2RlZmluZSBBVkFzc2V0SW1hZ2VH
ZW5lcmF0b3IgaW5pdEFWQXNzZXRJbWFnZUdlbmVyYXRvcigpCisjZGVmaW5lIEFWUGxheWVySXRl
bVZpZGVvT3V0cHV0IGluaXRBVlBsYXllckl0ZW1WaWRlb091dHB1dCgpCisjZGVmaW5lIEFWTWV0
YWRhdGFJdGVtIGluaXRBVk1ldGFkYXRhSXRlbSgpCisjZGVmaW5lIEFWQXNzZXRDYWNoZSBpbml0
QVZBc3NldENhY2hlKCkKKworI2RlZmluZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3Ry
YWwgZ2V0QVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRobVNwZWN0cmFsKCkKKyNkZWZpbmUgQVZBdWRp
b1RpbWVQaXRjaEFsZ29yaXRobVZhcmlzcGVlZCBnZXRBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGht
VmFyaXNwZWVkKCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsIGdldEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1
ZGlibGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSgpCisjZGVmaW5lIEFWTWVkaWFU
eXBlQ2xvc2VkQ2FwdGlvbiBnZXRBVk1lZGlhVHlwZUNsb3NlZENhcHRpb24oKQorI2RlZmluZSBB
Vk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8oKQorI2RlZmluZSBBVk1lZGlhVHlw
ZUF1ZGlvIGdldEFWTWVkaWFUeXBlQXVkaW8oKQorI2RlZmluZSBBVk1lZGlhVHlwZU1ldGFkYXRh
IGdldEFWTWVkaWFUeXBlTWV0YWRhdGEoKQorI2RlZmluZSBBVlBsYXllckl0ZW1EaWRQbGF5VG9F
bmRUaW1lTm90aWZpY2F0aW9uIGdldEFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmlj
YXRpb24oKQorI2RlZmluZSBBVlVSTEFzc2V0SW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50RnJvbVJl
ZmVyZW5jaW5nVVJJS2V5IGdldEFWVVJMQXNzZXRJbmhlcml0VVJJUXVlcnlDb21wb25lbnRGcm9t
UmVmZXJlbmNpbmdVUklLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVL
ZXkgZ2V0QVZVUkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5KCkKKyNkZWZpbmUgQVZVUkxBc3Nl
dFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSBnZXRBVlVSTEFzc2V0VXNlQ2xpZW50VVJM
TG9hZGluZ0V4Y2x1c2l2ZWx5KCkKKyNkZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1
cmVNb2RlQ2xlYW5BcGVydHVyZSBnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVD
bGVhbkFwZXJ0dXJlKCkKKyNkZWZpbmUgQVZVUkxBc3NldFJlZmVyZW5jZVJlc3RyaWN0aW9uc0tl
eSBnZXRBVlVSTEFzc2V0UmVmZXJlbmNlUmVzdHJpY3Rpb25zS2V5KCkKKyNkZWZpbmUgQVZMYXll
clZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0KCkKKyNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwgZ2V0QVZM
YXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKQorI2RlZmluZSBBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplIGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUoKQorI2RlZmluZSBBVlN0
cmVhbWluZ0tleURlbGl2ZXJ5Q29udGVudEtleVR5cGUgZ2V0QVZTdHJlYW1pbmdLZXlEZWxpdmVy
eUNvbnRlbnRLZXlUeXBlKCkKKworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElP
Tl9HUk9VUCkKKwordHlwZWRlZiBBVk1lZGlhU2VsZWN0aW9uR3JvdXAgQVZNZWRpYVNlbGVjdGlv
bkdyb3VwVHlwZTsKK3R5cGVkZWYgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiBBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uVHlwZTsKKworU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJ
dGVtTGVnaWJsZU91dHB1dCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFT
ZWxlY3Rpb25Hcm91cCkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk91dHB1dENvbnRl
eHQpCisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0xlZ2libGUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9u
LCBBVk1lZGlhVHlwZVN1YnRpdGxlLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFW
Rm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1dGlvblNvdXJjZUFuZFJ1bGVzT25s
eSwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0IGdldEFW
UGxheWVySXRlbUxlZ2libGVPdXRwdXRDbGFzcygpCisjZGVmaW5lIEFWTWVkaWFTZWxlY3Rpb25H
cm91cCBnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpCisjZGVmaW5lIEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24gZ2V0QVZNZWRpYVNlbGVjdGlvbk9wdGlvbkNsYXNzKCkKKyNkZWZpbmUgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxl
KCkKKyNkZWZpbmUgQVZNZWRpYVR5cGVTdWJ0aXRsZSBnZXRBVk1lZGlhVHlwZVN1YnRpdGxlKCkK
KyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0NvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpCisj
ZGVmaW5lIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3Vy
Y2VBbmRSdWxlc09ubHkgZ2V0QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5nUmVz
b2x1dGlvblNvdXJjZUFuZFJ1bGVzT25seSgpCisKKyNlbmRpZgorCisjaWYgRU5BQkxFKEFWRl9D
QVBUSU9OUykKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENh
Y2hlS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZV
UkxBc3NldE91dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVL
ZXksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk91dE9m
QmFuZEFsdGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXksIE5TU3RyaW5nICopCitTT0ZUX0xJTktf
Q09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5kZWRM
YW5ndWFnZVRhZ0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJc0RlZmF1bHRLZXksIE5TU3RyaW5nICopCitT
T0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNr
TWVkaWFDaGFyYWN0ZXJzdGljc0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5LCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZPdXRPZkJhbmRBbHRl
cm5hdGVUcmFja1NvdXJjZUtleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JB
Y2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3Np
YmlsaXR5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50LCBOU1N0cmluZyAqKQorCisjZGVm
aW5lIEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkgZ2V0QVZVUkxBc3NldE91
dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSgpCisjZGVmaW5lIEFWVVJMQXNzZXRDYWNoZUtleSBn
ZXRBVlVSTEFzc2V0Q2FjaGVLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVu
dENhY2hlS2V5IGdldEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXkoKQorI2RlZmlu
ZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXkgZ2V0QVZPdXRPZkJhbmRB
bHRlcm5hdGVUcmFja0Rpc3BsYXlOYW1lS2V5KCkKKyNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5h
dGVUcmFja0V4dGVuZGVkTGFuZ3VhZ2VUYWdLZXkgZ2V0QVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFj
a0V4dGVuZGVkTGFuZ3VhZ2VUYWdLZXkoKQorI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRy
YWNrSXNEZWZhdWx0S2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJc0RlZmF1bHRLZXko
KQorI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrTWVkaWFDaGFyYWN0ZXJzdGljc0tl
eSBnZXRBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrTWVkaWFDaGFyYWN0ZXJzdGljc0tleSgpCisj
ZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5IGdldEFWT3V0T2ZC
YW5kQWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5KCkKKyNkZWZpbmUgQVZPdXRPZkJhbmRBbHRl
cm5hdGVUcmFja1NvdXJjZUtleSBnZXRBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrU291cmNlS2V5
KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRTb3VuZEZv
ckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzTXVzaWNBbmRT
b3VuZEZvckFjY2Vzc2liaWxpdHkoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFu
c2NyaWJlc1Nwb2tlbkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3Rlcmlz
dGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKKyNkZWZpbmUgQVZN
ZWRpYUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50IGdldEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0lzQXV4aWxpYXJ5Q29udGVudCgpCisKKyNlbmRpZgorCisjaWYgRU5BQkxFKERBVEFDVUVf
VkFMVUUpCisKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlT
cGFjZVF1aWNrVGltZVVzZXJEYXRhLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UX01B
WV9GQUlMKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlSVNPVXNlckRhdGEsIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhS2V5U3Bh
Y2VRdWlja1RpbWVNZXRhZGF0YSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZWlUdW5lcywgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUlEMywgTlNTdHJpbmcg
KikKKworI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VRdWlja1RpbWVVc2VyRGF0YSBnZXRBVk1l
dGFkYXRhS2V5U3BhY2VRdWlja1RpbWVVc2VyRGF0YSgpCisjZGVmaW5lIEFWTWV0YWRhdGFLZXlT
cGFjZUlTT1VzZXJEYXRhIGdldEFWTWV0YWRhdGFLZXlTcGFjZUlTT1VzZXJEYXRhKCkKKyNkZWZp
bmUgQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEgZ2V0QVZNZXRhZGF0YUtleVNw
YWNlUXVpY2tUaW1lTWV0YWRhdGEoKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VpVHVuZXMg
Z2V0QVZNZXRhZGF0YUtleVNwYWNlaVR1bmVzKCkKKyNkZWZpbmUgQVZNZXRhZGF0YUtleVNwYWNl
SUQzIGdldEFWTWV0YWRhdGFLZXlTcGFjZUlEMygpCisKKyNlbmRpZgorCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZVUkxBc3Nl
dEJvdW5kTmV0d29ya0ludGVyZmFjZU5hbWUsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRpZmll
cktleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTChBVkZvdW5kYXRp
b24sIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTChBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExv
YWRpbmdLZXksIE5TU3RyaW5nICopCisKKyNkZWZpbmUgQVZVUkxBc3NldEJvdW5kTmV0d29ya0lu
dGVyZmFjZU5hbWUgZ2V0QVZVUkxBc3NldEJvdW5kTmV0d29ya0ludGVyZmFjZU5hbWUoKQorI2Rl
ZmluZSBBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcktleSBnZXRBVlVSTEFzc2V0Q2xp
ZW50QnVuZGxlSWRlbnRpZmllcktleSgpCisjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tl
eSBnZXRBVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkoKQorI2RlZmluZSBBVlVSTEFzc2V0UmVxdWly
ZXNDdXN0b21VUkxMb2FkaW5nS2V5IGdldEFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExvYWRp
bmdLZXkoKQorCisjZW5kaWYKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhNZWRpYVRvb2xib3gpCiBT
T0ZUX0xJTktfT1BUSU9OQUwoTWVkaWFUb29sYm94LCBNVEVuYWJsZUNhcHRpb24yMDE1QmVoYXZp
b3IsIEJvb2xlYW4sICgpLCAoKSkKQEAgLTE2NSw3ICszMjUsMTEgQEAgZW51bSBNZWRpYVBsYXll
ckFWRm91bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dCB7CiAgICAgTWVkaWFQbGF5ZXJBVkZvdW5k
YXRpb25PYnNlcnZhdGlvbkNvbnRleHRBVlBsYXllckxheWVyLAogfTsKIAorI2lmIEhBVkUoQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVH
SUJMRV9PVVRQVVRfU1VQUE9SVCkKIEBpbnRlcmZhY2UgV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIg
OiBOU09iamVjdCA8QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFB1c2hEZWxlZ2F0ZT4KKyNlbHNl
CitAaW50ZXJmYWNlIFdlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIDogTlNPYmplY3QKKyNlbmRpZgog
ewogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gbV9wbGF5
ZXI7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lciwgc3RkOjphdG9taWM8dW5zaWduZWQ+PiBt
X3Rhc2tRdWV1ZTsKQEAgLTE3Niw4ICszNDAsMTAgQEAgZW51bSBNZWRpYVBsYXllckFWRm91bmRh
dGlvbk9ic2VydmF0aW9uQ29udGV4dCB7CiAtKHZvaWQpbWV0YWRhdGFMb2FkZWQ7CiAtKHZvaWQp
ZGlkRW5kOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0odm9pZClvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlv
bmFyeSAqKWNoYW5nZSBjb250ZXh0OihNZWRpYVBsYXllckFWRm91bmRhdGlvbk9ic2VydmF0aW9u
Q29udGV4dCljb250ZXh0OworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9H
Uk9VUCkKIC0gKHZvaWQpbGVnaWJsZU91dHB1dDooaWQpb3V0cHV0IGRpZE91dHB1dEF0dHJpYnV0
ZWRTdHJpbmdzOihOU0FycmF5ICopc3RyaW5ncyBuYXRpdmVTYW1wbGVCdWZmZXJzOihOU0FycmF5
ICopbmF0aXZlU2FtcGxlcyBmb3JJdGVtVGltZTooQ01UaW1lKWl0ZW1UaW1lOwogLSAodm9pZClv
dXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KGlkKW91dHB1dDsKKyNlbmRpZgogQGVuZAogCiAjaWYg
SEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQpAQCAtMjQzLDcgKzQwOSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhCiAgICAgQVNTRVJUKEFWRm91bmRhdGlvbk1JTUVUeXBlQ2Fj
aGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQogCi1zdGF0aWMgQVZBc3NldENhY2hl
ICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCitzdGF0aWMgQVZBc3NldENh
Y2hlVHlwZSAqYXNzZXRDYWNoZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIE5T
VVJMICphc3NldENhY2hlVVJMOwogICAgIApAQCAtMjUyLDcgKzQxOCw3IEBAIHN0YXRpYyBBVkFz
c2V0Q2FjaGUgKmFzc2V0Q2FjaGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBlbHNl
CiAgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNE
aXJlY3Rvcnk6WUVTXTsKIAotICAgIHJldHVybiBbUEFMOjpnZXRBVkFzc2V0Q2FjaGVDbGFzcygp
IGFzc2V0Q2FjaGVXaXRoVVJMOmFzc2V0Q2FjaGVVUkxdOworICAgIHJldHVybiBbaW5pdEFWQXNz
ZXRDYWNoZSgpIGFzc2V0Q2FjaGVXaXRoVVJMOmFzc2V0Q2FjaGVVUkxdOwogfQogCiBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMjc0LDcgKzQ0
MCw3IEBAIHN0YXRpYyBXYWxsVGltZSB0b1N5c3RlbUNsb2NrVGltZShOU0RhdGUgKmRhdGUpCiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hl
KGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKIHsKLSAgICBBVkFz
c2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRoKTsKKyAgICBBVkFz
c2V0Q2FjaGVUeXBlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7CiAgICAg
CiAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CiAgICAg
ICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShbYXNzZXRDYWNoZSBsYXN0TW9kaWZpZWREYXRlT2ZF
bnRyeUZvcktleTprZXldKSA+IG1vZGlmaWVkU2luY2UpCkBAIC0zMTYsNyArNDgyLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBXYWwKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBBVkFz
c2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRoKTsKKyAgICBBVkFz
c2V0Q2FjaGVUeXBlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7CiAgICAg
Zm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CiAgICAgICAgIFVS
TCBrZXlBc1VSTCA9IFVSTChVUkwoKSwga2V5KTsKICAgICAgICAgaWYgKGtleUFzVVJMLmlzVmFs
aWQoKSkgewpAQCAtMzk0LDExICs1NjAsMTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKCkKIAogICAgIGNsZWFyVGV4dFRyYWNrcygpOwogCisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9V
TkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQogICAgIGlmIChtX2xlZ2libGVPdXRwdXQp
IHsKICAgICAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQogICAgICAgICAgICAgW21fYXZQbGF5ZXJJ
dGVtLmdldCgpIHJlbW92ZU91dHB1dDptX2xlZ2libGVPdXRwdXQuZ2V0KCldOwogICAgICAgICBt
X2xlZ2libGVPdXRwdXQgPSBuaWw7CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAobV9hdlBsYXll
ckl0ZW0pIHsKICAgICAgICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBpbiBpdGVtS1ZPUHJvcGVy
dGllcygpKQpAQCAtNDc3LDcgKzY0NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoKQogICAgIGlmICghbV9hdkFzc2V0IHx8
IG1faW1hZ2VHZW5lcmF0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW1hZ2VHZW5lcmF0
b3IgPSBbUEFMOjpnZXRBVkFzc2V0SW1hZ2VHZW5lcmF0b3JDbGFzcygpIGFzc2V0SW1hZ2VHZW5l
cmF0b3JXaXRoQXNzZXQ6bV9hdkFzc2V0LmdldCgpXTsKKyAgICBtX2ltYWdlR2VuZXJhdG9yID0g
W0FWQXNzZXRJbWFnZUdlbmVyYXRvciBhc3NldEltYWdlR2VuZXJhdG9yV2l0aEFzc2V0Om1fYXZB
c3NldC5nZXQoKV07CiAKICAgICBbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBzZXRBcGVydHVyZU1v
ZGU6QVZBc3NldEltYWdlR2VuZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZV07CiAgICAg
W21faW1hZ2VHZW5lcmF0b3IuZ2V0KCkgc2V0QXBwbGllc1ByZWZlcnJlZFRyYWNrVHJhbnNmb3Jt
OllFU107CkBAIC01MzMsNyArNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKCkKICAgICBpZiAoIW1fYXZQbGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NB
VlBsYXllckxheWVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgbV92aWRlb0xheWVyID0gYWRvcHRO
UyhbW0FWUGxheWVyTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV92aWRlb0xheWVyIHNldFBs
YXllcjptX2F2UGxheWVyLmdldCgpXTsKIAogI2lmbmRlZiBOREVCVUcKQEAgLTYzMiw3ICs4MDAs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN5bmNocm9uaXpl
VGV4dFRyYWNrU3RhdGUoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAg
ICBSZWZQdHI8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gdHJhY2tQcml2YXRlID0gc3Rh
dGljX2Nhc3Q8T3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRio+KHRleHRUcmFjay5nZXQoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBjdXJyZW50T3B0aW9u
ID0gdHJhY2tQcml2YXRlLT5tZWRpYVNlbGVjdGlvbk9wdGlvbigpOworICAgICAgICBSZXRhaW5Q
dHI8QVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGU+IGN1cnJlbnRPcHRpb24gPSB0cmFja1ByaXZh
dGUtPm1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1dG8m
IHRyYWNrIDogb3V0T2ZCYW5kVHJhY2tTb3VyY2VzKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHVuaXF1ZUlEID0gU3RyaW5nOjpudW1iZXIodHJhY2stPnVuaXF1ZUlkKCkp
LmNyZWF0ZUNGU3RyaW5nKCk7CkBAIC03MjIsMTkgKzg5MCwxOSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAgICAgaWYgKHBsYXllcigpLT5kb2VzSGF2ZUF0dHJpYnV0ZSgieC1pdHVuZXMtaW5oZXJp
dC11cmktcXVlcnktY29tcG9uZW50IikpCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVj
dDpAWUVTIGZvcktleTogQVZVUkxBc3NldEluaGVyaXRVUklRdWVyeUNvbXBvbmVudEZyb21SZWZl
cmVuY2luZ1VSSUtleV07CiAKLSAgICBpZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVS
TEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5KCkpCisgICAgaWYgKGNhbkxvYWRB
VlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4Y2x1c2l2ZWx5KCkpCiAgICAgICAgIFtvcHRp
b25zIHNldE9iamVjdDpAWUVTIGZvcktleTpBVlVSTEFzc2V0VXNlQ2xpZW50VVJMTG9hZGluZ0V4
Y2x1c2l2ZWx5XTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGVsc2UgaWYgKFBBTDo6
Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldFJlcXVpcmVzQ3VzdG9tVVJMTG9hZGluZ0tl
eSgpKQorICAgIGVsc2UgaWYgKGNhbkxvYWRBVlVSTEFzc2V0UmVxdWlyZXNDdXN0b21VUkxMb2Fk
aW5nS2V5KCkpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpBVlVSTEFz
c2V0UmVxdWlyZXNDdXN0b21VUkxMb2FkaW5nS2V5XTsKICAgICAvLyBGSVhNRTogcmRhcjovL3By
b2JsZW0vMjAzNTQ2ODgKICAgICBTdHJpbmcgaWRlbnRpZmllciA9IHBsYXllcigpLT5zb3VyY2VB
cHBsaWNhdGlvbklkZW50aWZpZXIoKTsKLSAgICBpZiAoIWlkZW50aWZpZXIuaXNFbXB0eSgpKQor
ICAgIGlmICghaWRlbnRpZmllci5pc0VtcHR5KCkgJiYgY2FuTG9hZEFWVVJMQXNzZXRDbGllbnRC
dW5kbGVJZGVudGlmaWVyS2V5KCkpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDppZGVudGlm
aWVyIGZvcktleTpBVlVSTEFzc2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcktleV07CiAjZW5kaWYK
IAogICAgIGF1dG8gdHlwZSA9IHBsYXllcigpLT5jb250ZW50TUlNRVR5cGUoKTsKLSAgICBpZiAo
UEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlVSTEFzc2V0T3V0T2ZCYW5kTUlNRVR5cGVLZXko
KSAmJiAhdHlwZS5pc0VtcHR5KCkgJiYgIXBsYXllcigpLT5jb250ZW50TUlNRVR5cGVXYXNJbmZl
cnJlZEZyb21FeHRlbnNpb24oKSkgeworICAgIGlmIChjYW5Mb2FkQVZVUkxBc3NldE91dE9mQmFu
ZE1JTUVUeXBlS2V5KCkgJiYgIXR5cGUuaXNFbXB0eSgpICYmICFwbGF5ZXIoKS0+Y29udGVudE1J
TUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uKCkpIHsKICAgICAgICAgYXV0byBjb2RlY3Mg
PSBwbGF5ZXIoKS0+Y29udGVudFR5cGVDb2RlY3MoKTsKICAgICAgICAgaWYgKCFjb2RlY3MuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICBOU1N0cmluZyAqdHlwZVN0cmluZyA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcgKil0eXBlLCAo
TlNTdHJpbmcgKiljb2RlY3NdOwpAQCAtNzc5LDcgKzk0Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQogICAgICAgICAgICAgW25z
Q29va2llcyBhZGRPYmplY3Q6dG9OU0hUVFBDb29raWUoY29va2llKV07CiAKLSAgICAgICAgaWYg
KFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZVUkxBc3NldEhUVFBDb29raWVzS2V5KCkpCisg
ICAgICAgIGlmIChjYW5Mb2FkQVZVUkxBc3NldEhUVFBDb29raWVzS2V5KCkpCiAgICAgICAgICAg
ICBbb3B0aW9ucyBzZXRPYmplY3Q6bnNDb29raWVzLmdldCgpIGZvcktleTpBVlVSTEFzc2V0SFRU
UENvb2tpZXNLZXldOwogICAgIH0KICNlbmRpZgpAQCAtNzkxLDcgKzk1OSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25z
dCBVUkwmIHVybCkKICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0OmFzc2V0Q2FjaGVGb3JQYXRo
KHBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkgZm9y
S2V5OkFWVVJMQXNzZXRDYWNoZUtleV07CiAKICAgICBOU1VSTCAqY29jb2FVUkwgPSBjYW5vbmlj
YWxVUkwodXJsKTsKLSAgICBtX2F2QXNzZXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZVUkxBc3Nl
dEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6Y29jb2FVUkwgb3B0aW9uczpvcHRpb25zLmdldCgpXSk7
CisgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbW0FWVVJMQXNzZXQgYWxsb2NdIGluaXRXaXRoVVJM
OmNvY29hVVJMIG9wdGlvbnM6b3B0aW9ucy5nZXQoKV0pOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJ
T05fTE9BREVSX0RFTEVHQVRFKQogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqcmVzb3VyY2VM
b2FkZXIgPSBtX2F2QXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXI7CkBAIC04MTMsNyArOTgxLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIH0K
IAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRBVlBsYXllckl0
ZW0oQVZQbGF5ZXJJdGVtICppdGVtKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRBVlBsYXllckl0ZW0oQVZQbGF5ZXJJdGVtVHlwZSAqaXRlbSkKIHsKICAgICBp
ZiAoIW1fYXZQbGF5ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTgyMyw4ICs5OTEsOCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEFWUGxheWVySXRlbShBVlBs
YXllckl0ZW0gKml0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8
QVZQbGF5ZXI+IHN0cm9uZ1BsYXllciA9IG1fYXZQbGF5ZXIuZ2V0KCk7Ci0gICAgUmV0YWluUHRy
PEFWUGxheWVySXRlbT4gc3Ryb25nSXRlbSA9IGl0ZW07CisgICAgUmV0YWluUHRyPEFWUGxheWVy
VHlwZT4gc3Ryb25nUGxheWVyID0gbV9hdlBsYXllci5nZXQoKTsKKyAgICBSZXRhaW5QdHI8QVZQ
bGF5ZXJJdGVtVHlwZT4gc3Ryb25nSXRlbSA9IGl0ZW07CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1BsYXllciwgc3Ryb25nSXRlbV0gewogICAg
ICAgICBbc3Ryb25nUGxheWVyIHJlcGxhY2VDdXJyZW50SXRlbVdpdGhQbGF5ZXJJdGVtOnN0cm9u
Z0l0ZW0uZ2V0KCldOwogICAgIH0pOwpAQCAtODM5LDEzICsxMDA3LDE1IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIoKQogCiAgICAgc2V0
RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKLSAgICBtX2F2UGxheWVyID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWUGxheWVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgbV9hdlBsYXllciA9IGFkb3B0TlMo
W1tBVlBsYXllciBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4g
cGxheWVyS1ZPUHJvcGVydGllcygpKQogICAgICAgICBbbV9hdlBsYXllci5nZXQoKSBhZGRPYnNl
cnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOmtleU5hbWUgb3B0aW9uczpOU0tl
eVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6KHZvaWQgKilNZWRpYVBsYXllckFWRm91
bmRhdGlvbk9ic2VydmF0aW9uQ29udGV4dFBsYXllcl07CiAKICAgICBzZXRTaG91bGRPYnNlcnZl
VGltZUNvbnRyb2xTdGF0dXModHJ1ZSk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9T
RUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBP
UlQpCiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0QXBwbGllc01lZGlhU2VsZWN0aW9uQ3JpdGVy
aWFBdXRvbWF0aWNhbGx5Ok5PXTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICAgICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwpAQCAtODg5
LDcgKzEwNTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUFWUGxheWVySXRlbSgpCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKICAgICAv
LyBDcmVhdGUgdGhlIHBsYXllciBpdGVtIHNvIHdlIGNhbiBsb2FkIG1lZGlhIGRhdGEuIAotICAg
IG1fYXZQbGF5ZXJJdGVtID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbUluc3RhbmNl
KCkgaW5pdFdpdGhBc3NldDptX2F2QXNzZXQuZ2V0KCldKTsKKyAgICBtX2F2UGxheWVySXRlbSA9
IGFkb3B0TlMoW1tBVlBsYXllckl0ZW0gYWxsb2NdIGluaXRXaXRoQXNzZXQ6bV9hdkFzc2V0Lmdl
dCgpXSk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9i
c2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihkaWRFbmQ6KSBu
YW1lOkFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24gb2JqZWN0Om1fYXZQ
bGF5ZXJJdGVtLmdldCgpXTsKIApAQCAtOTAyLDE2ICsxMDcyLDE4IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCkKICAgICBpZiAo
bV9hdlBsYXllcikKICAgICAgICAgc2V0QVZQbGF5ZXJJdGVtKG1fYXZQbGF5ZXJJdGVtLmdldCgp
KTsKIAorI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFW
RShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKICAgICBjb25zdCBOU1RpbWVJ
bnRlcnZhbCBsZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKIAogICAgIFJldGFpblB0
cjxOU0FycmF5PiBzdWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ01TdWJ0aXRsZUZvcm1hdFR5
cGVfV2ViVlRUXSwgbmlsXSk7Ci0gICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbUEFMOjph
bGxvY0FWUGxheWVySXRlbUxlZ2libGVPdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFTdWJ0
eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0aW9uOnN1YnR5cGVzLmdldCgpXSk7CisgICAgbV9sZWdp
YmxlT3V0cHV0ID0gYWRvcHROUyhbW0FWUGxheWVySXRlbUxlZ2libGVPdXRwdXQgYWxsb2NdIGlu
aXRXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0aW9uOnN1YnR5cGVzLmdldCgp
XSk7CiAgICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXRTdXBwcmVzc2VzUGxheWVyUmVuZGVy
aW5nOllFU107CiAKICAgICBbbV9sZWdpYmxlT3V0cHV0LmdldCgpIHNldERlbGVnYXRlOm1fb2Jq
Y09ic2VydmVyLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOwogICAgIFtt
X2xlZ2libGVPdXRwdXQuZ2V0KCkgc2V0QWR2YW5jZUludGVydmFsRm9yRGVsZWdhdGVJbnZvY2F0
aW9uOmxlZ2libGVPdXRwdXRBZHZhbmNlSW50ZXJ2YWxdOwogICAgIFttX2xlZ2libGVPdXRwdXQu
Z2V0KCkgc2V0VGV4dFN0eWxpbmdSZXNvbHV0aW9uOkFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRU
ZXh0U3R5bGluZ1Jlc29sdXRpb25Tb3VyY2VBbmRSdWxlc09ubHldOwogICAgIFttX2F2UGxheWVy
SXRlbS5nZXQoKSBhZGRPdXRwdXQ6bV9sZWdpYmxlT3V0cHV0LmdldCgpXTsKKyNlbmRpZgogCiAj
aWYgRU5BQkxFKFdFQl9BVURJTykgJiYgVVNFKE1FRElBVE9PTEJPWCkKICAgICBpZiAobV9wcm92
aWRlcikgewpAQCAtMTU1MCw3ICsxNzIyLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKICAg
ICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIE5TU3RyaW5n
ICp0eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwi
JUBcIiIsIChOU1N0cmluZyAqKWNvbnRhaW5lclR5cGUsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMu
dHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKV07Ci0gICAgcmV0
dXJuIFtQQUw6OmdldEFWVVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBl
OnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1h
eUJlU3VwcG9ydGVkOworICAgIHJldHVybiBbQVZVUkxBc3NldCBpc1BsYXlhYmxlRXh0ZW5kZWRN
SU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZDsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTE2OTYsNyArMTg2OCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGlkU3RvcExvYWRpbmdSZXF1ZXN0KEFWQXNzZXRS
ZXNvdXJjZUxvCiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aXNB
dmFpbGFibGUoKQogewotICAgIHJldHVybiBQQUw6OkFWRm91bmRhdGlvbkxpYnJhcnkoKSAmJiBp
c0NvcmVNZWRpYUZyYW1ld29ya0F2YWlsYWJsZSgpOworICAgIHJldHVybiBBVkZvdW5kYXRpb25M
aWJyYXJ5KCkgJiYgaXNDb3JlTWVkaWFGcmFtZXdvcmtBdmFpbGFibGUoKTsKIH0KIAogTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1lZGlhVGltZUZvclRpbWVW
YWx1ZShjb25zdCBNZWRpYVRpbWUmIHRpbWVWYWx1ZSkgY29uc3QKQEAgLTE3NjEsNiArMTkzMyw5
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dHJhY2tzQ2hhbmdl
ZCgpCiAgICAgICAgIEFWQXNzZXRUcmFjayogZmlyc3RFbmFibGVkVmlkZW9UcmFjayA9IGZpcnN0
RW5hYmxlZFRyYWNrKFttX2F2QXNzZXQuZ2V0KCkgdHJhY2tzV2l0aE1lZGlhQ2hhcmFjdGVyaXN0
aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsXSk7CiAgICAgICAgIHNldEhhc1ZpZGVvKGZp
cnN0RW5hYmxlZFZpZGVvVHJhY2spOwogICAgICAgICBzZXRIYXNBdWRpbyhmaXJzdEVuYWJsZWRU
cmFjayhbbV9hdkFzc2V0LmdldCgpIHRyYWNrc1dpdGhNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKSk7CisjaWYgIUhBVkUoQVZGT1VOREFUSU9OX01FRElB
X1NFTEVDVElPTl9HUk9VUCkKKyAgICAgICAgaGFzQ2FwdGlvbnMgPSBbW21fYXZBc3NldC5nZXQo
KSB0cmFja3NXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbl0gY291bnRdOwor
I2VuZGlmCiAgICAgICAgIGF1dG8gc2l6ZSA9IGZpcnN0RW5hYmxlZFZpZGVvVHJhY2sgPyBGbG9h
dFNpemUoQ0dTaXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0oW2ZpcnN0RW5hYmxlZFZpZGVvVHJhY2sg
bmF0dXJhbFNpemVdLCBbZmlyc3RFbmFibGVkVmlkZW9UcmFjayBwcmVmZXJyZWRUcmFuc2Zvcm1d
KSkgOiBGbG9hdFNpemUoKTsKICAgICAgICAgLy8gRm9yIHZpZGVvcyB3aXRoIHJvdGF0aW9uIHRh
ZyBzZXQsIHRoZSB0cmFuc2Zvcm1hdGlvbiBhYm92ZSBtaWdodCByZXR1cm4gYSBDR1NpemUgaW5z
dGFuY2Ugd2l0aCBuZWdhdGl2ZSB3aWR0aCBvciBoZWlnaHQuCiAgICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjQ4LgpAQCAtMTc4Miw2ICsx
OTU3LDkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0cmFja3ND
aGFuZ2VkKCkKICAgICAgICAgICAgICAgICBlbHNlIGlmIChbbWVkaWFUeXBlIGlzRXF1YWxUb1N0
cmluZzpBVk1lZGlhVHlwZUF1ZGlvXSkKICAgICAgICAgICAgICAgICAgICAgaGFzQXVkaW8gPSB0
cnVlOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKFttZWRpYVR5cGUgaXNFcXVhbFRvU3RyaW5n
OkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbl0pIHsKKyNpZiAhSEFWRShBVkZPVU5EQVRJT05fTUVE
SUFfU0VMRUNUSU9OX0dST1VQKQorICAgICAgICAgICAgICAgICAgICBoYXNDYXB0aW9ucyA9IHRy
dWU7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgaGF2ZUNDVHJhY2sgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoW21lZGlhVHlwZSBpc0VxdWFsVG9TdHJpbmc6QVZNZWRp
YVR5cGVNZXRhZGF0YV0pIHsKICAgICAgICAgICAgICAgICAgICAgaGFzTWV0YURhdGEgPSB0cnVl
OwpAQCAtMTc4OSwxMSArMTk2NywxNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnRyYWNrc0NoYW5nZWQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAgIHVwZGF0ZUF1ZGlvVHJhY2tzKCk7CiAgICAg
ICAgIHVwZGF0ZVZpZGVvVHJhY2tzKCk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9T
RUxFQ1RJT05fR1JPVVApCiAgICAgICAgIGhhc0F1ZGlvIHw9IChtX2F1ZGlibGVHcm91cCAmJiBt
X2F1ZGlibGVHcm91cC0+c2VsZWN0ZWRPcHRpb24oKSk7CiAgICAgICAgIGhhc1ZpZGVvIHw9ICht
X3Zpc3VhbEdyb3VwICYmIG1fdmlzdWFsR3JvdXAtPnNlbGVjdGVkT3B0aW9uKCkpOworI2VuZGlm
CisjZW5kaWYKIAogICAgICAgICAvLyBBbHdheXMgc2F5cyB3ZSBoYXZlIHZpZGVvIGlmIHRoZSBB
VlBsYXllckxheWVyIGlzIHJlYWR5IGZvciBkaWFwbGF5IHRvIHdvcmsgYXJvdW5kCiAgICAgICAg
IC8vIGFuIEFWRm91bmRhdGlvbiBidWcgd2hpY2ggY2F1c2VzIGl0IHRvIHNvbWV0aW1lcyBjbGFp
bSBhIHRyYWNrIGlzIGRpc2FibGVkIGV2ZW4KQEAgLTE4MDcsMTIgKzE5ODksMjIgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp0cmFja3NDaGFuZ2VkKCkKICNlbmRp
ZgogICAgIH0KIAotICAgIEFWTWVkaWFTZWxlY3Rpb25Hcm91cCAqbGVnaWJsZUdyb3VwID0gc2Fm
ZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKTsKKyNpZiBIQVZFKEFWRk9VTkRB
VElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlw
ZSAqbGVnaWJsZUdyb3VwID0gc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEo
KTsKICAgICBpZiAobGVnaWJsZUdyb3VwICYmIG1fY2FjaGVkVHJhY2tzKSB7Ci0gICAgICAgIGhh
c0NhcHRpb25zID0gW1tQQUw6OmdldEFWTWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCkgcGxheWFi
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNGcm9tQXJyYXk6W2xlZ2libGVHcm91cCBvcHRpb25zXV0g
Y291bnRdOworICAgICAgICBoYXNDYXB0aW9ucyA9IFtbQVZNZWRpYVNlbGVjdGlvbkdyb3VwIHBs
YXlhYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxlR3JvdXAgb3B0aW9u
c11dIGNvdW50XTsKICAgICAgICAgaWYgKGhhc0NhcHRpb25zKQogICAgICAgICAgICAgcHJvY2Vz
c01lZGlhU2VsZWN0aW9uT3B0aW9ucygpOwogICAgIH0KKyNlbmRpZgorCisjaWYgIUhBVkUoQVZG
T1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpICYmIEhBVkUoQVZGT1VOREFUSU9OX01F
RElBX1NFTEVDVElPTl9HUk9VUCkKKyAgICBpZiAoIWhhc0NhcHRpb25zICYmIGhhdmVDQ1RyYWNr
KQorICAgICAgICBwcm9jZXNzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFja3MoKTsKKyNlbGlmICFI
QVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQorICAgIGlmIChoYXZlQ0NU
cmFjaykKKyAgICAgICAgcHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCk7CisjZW5k
aWYKIAogICAgIHNldEhhc0Nsb3NlZENhcHRpb25zKGhhc0NhcHRpb25zKTsKIApAQCAtMTg3Nyw2
ICsyMDY5LDggQEAgdm9pZCBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNrc0FuZE9s
ZEl0ZW1zKE5TQXJyYXkqIHRyYWNrcywgTlNTdHJpbmcqIHQKICAgICAgICAgKHBsYXllci0+KmFk
ZGVkRnVuY3Rpb24pKCphZGRlZEl0ZW0pOwogfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVE
SUFfU0VMRUNUSU9OX0dST1VQKQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVmVCwgdHlwZW5hbWUg
UGFzc1JlZlQ+CiB2b2lkIGRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJhY2tzQW5kT2xk
SXRlbXMoTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMqIGdyb3VwLCBWZWN0b3I8UmVmVD4mIG9s
ZEl0ZW1zLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2hhcmFjdGVyaXN0aWNzLCBSZWZUICgqaXRl
bUZhY3RvcnkpKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYpLCBNZWRpYVBsYXllciogcGxh
eWVyLCB2b2lkIChNZWRpYVBsYXllcjo6KnJlbW92ZWRGdW5jdGlvbikoUGFzc1JlZlQpLCB2b2lk
IChNZWRpYVBsYXllcjo6KmFkZGVkRnVuY3Rpb24pKFBhc3NSZWZUKSkKIHsKQEAgLTE4ODYsNyAr
MjA4MCw3IEBAIHZvaWQgZGV0ZXJtaW5lQ2hhbmdlZFRyYWNrc0Zyb21OZXdUcmFja3NBbmRPbGRJ
dGVtcyhNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQyoKICAgICBmb3IgKGF1dG8mIG9wdGlvbiA6
IGdyb3VwLT5vcHRpb25zKCkpIHsKICAgICAgICAgaWYgKCFvcHRpb24pCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiogYXZPcHRpb24gPSBvcHRp
b24tPmF2TWVkaWFTZWxlY3Rpb25PcHRpb24oKTsKKyAgICAgICAgQVZNZWRpYVNlbGVjdGlvbk9w
dGlvblR5cGUqIGF2T3B0aW9uID0gb3B0aW9uLT5hdk1lZGlhU2VsZWN0aW9uT3B0aW9uKCk7CiAg
ICAgICAgIGlmICghYXZPcHRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbmV3
U2VsZWN0aW9uT3B0aW9ucy5hZGQob3B0aW9uKTsKQEAgLTE5MzcsMjEgKzIxMzEsMjUgQEAgdm9p
ZCBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNrc0FuZE9sZEl0ZW1zKE1lZGlhU2Vs
ZWN0aW9uR3JvdXBBVkZPYmpDKgogICAgICAgICAocGxheWVyLT4qYWRkZWRGdW5jdGlvbikoKmFk
ZGVkSXRlbSk7CiB9CiAKKyNlbmRpZgorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUF1ZGlvVHJhY2tzKCkKIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICBzaXplX3QgY291bnQgPSBtX2F1ZGlvVHJhY2tzLnNpemUoKTsKICNlbmRpZgogCisj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQogICAgIFZlY3RvcjxT
dHJpbmc+IGNoYXJhY3RlcmlzdGljcyA9IHBsYXllcigpLT5wcmVmZXJyZWRBdWRpb0NoYXJhY3Rl
cmlzdGljcygpOwogICAgIGlmICghbV9hdWRpYmxlR3JvdXApIHsKLSAgICAgICAgaWYgKEFWTWVk
aWFTZWxlY3Rpb25Hcm91cCAqZ3JvdXAgPSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckF1ZGli
bGVNZWRpYSgpKQorICAgICAgICBpZiAoQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqZ3JvdXAg
PSBzYWZlTWVkaWFTZWxlY3Rpb25Hcm91cEZvckF1ZGlibGVNZWRpYSgpKQogICAgICAgICAgICAg
bV9hdWRpYmxlR3JvdXAgPSBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzo6Y3JlYXRlKG1fYXZQ
bGF5ZXJJdGVtLmdldCgpLCBncm91cCwgY2hhcmFjdGVyaXN0aWNzKTsKICAgICB9CiAKICAgICBp
ZiAobV9hdWRpYmxlR3JvdXApCiAgICAgICAgIGRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3
VHJhY2tzQW5kT2xkSXRlbXMobV9hdWRpYmxlR3JvdXAuZ2V0KCksIG1fYXVkaW9UcmFja3MsIGNo
YXJhY3RlcmlzdGljcywgJkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6Y3JlYXRlLCBwbGF5ZXIo
KSwgJk1lZGlhUGxheWVyOjpyZW1vdmVBdWRpb1RyYWNrLCAmTWVkaWFQbGF5ZXI6OmFkZEF1ZGlv
VHJhY2spOwogICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tz
RnJvbU5ld1RyYWNrc0FuZE9sZEl0ZW1zKG1fY2FjaGVkVHJhY2tzLmdldCgpLCBBVk1lZGlhVHlw
ZUF1ZGlvLCBtX2F1ZGlvVHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUs
IHBsYXllcigpLCAmTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2ssICZNZWRpYVBsYXllcjo6
YWRkQXVkaW9UcmFjayk7CiAKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcykK
QEAgLTE5NzAsMTMgKzIxNjgsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcygpCiAKICAgICBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tz
RnJvbU5ld1RyYWNrc0FuZE9sZEl0ZW1zKG1fY2FjaGVkVHJhY2tzLmdldCgpLCBBVk1lZGlhVHlw
ZVZpZGVvLCBtX3ZpZGVvVHJhY2tzLCAmVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUs
IHBsYXllcigpLCAmTWVkaWFQbGF5ZXI6OnJlbW92ZVZpZGVvVHJhY2ssICZNZWRpYVBsYXllcjo6
YWRkVmlkZW9UcmFjayk7CiAKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05f
R1JPVVApCiAgICAgaWYgKCFtX3Zpc3VhbEdyb3VwKSB7Ci0gICAgICAgIGlmIChBVk1lZGlhU2Vs
ZWN0aW9uR3JvdXAgKmdyb3VwID0gc2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JWaXN1YWxNZWRp
YSgpKQorICAgICAgICBpZiAoQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqZ3JvdXAgPSBzYWZl
TWVkaWFTZWxlY3Rpb25Hcm91cEZvclZpc3VhbE1lZGlhKCkpCiAgICAgICAgICAgICBtX3Zpc3Vh
bEdyb3VwID0gTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM6OmNyZWF0ZShtX2F2UGxheWVySXRl
bS5nZXQoKSwgZ3JvdXAsIFZlY3RvcjxTdHJpbmc+KCkpOwogICAgIH0KIAogICAgIGlmIChtX3Zp
c3VhbEdyb3VwKQogICAgICAgICBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNrc0Fu
ZE9sZEl0ZW1zKG1fdmlzdWFsR3JvdXAuZ2V0KCksIG1fdmlkZW9UcmFja3MsIFZlY3RvcjxTdHJp
bmc+KCksICZWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSwgcGxheWVyKCksICZNZWRp
YVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjaywgJk1lZGlhUGxheWVyOjphZGRWaWRlb1RyYWNrKTsK
KyNlbmRpZgogCiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpCiAgICAgICAg
IHRyYWNrLT5yZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKQEAgLTIwNzIsNyArMjI3Miw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRw
dXQoKQogI2Vsc2UKICAgICBOU0RpY3Rpb25hcnkqIGF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25l
ZEludDprQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBXSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1h
dFR5cGVLZXksIG5pbF07CiAjZW5kaWYKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFM
OjphbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVm
ZmVyQXR0cmlidXRlczphdHRyaWJ1dGVzXSk7CisgICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMo
W1tBVlBsYXllckl0ZW1WaWRlb091dHB1dCBhbGxvY10gaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJp
YnV0ZXM6YXR0cmlidXRlc10pOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAogICAgIFtt
X3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXREZWxlZ2F0ZS5nZXQoKSBxdWV1
ZTpnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpXTsKQEAgLTIyMjIsNyArMjQyMiw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZSgpCiAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidGlt
ZWQgb3V0Iik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZShBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRpYURhdGFXaWxs
Q2hhbmdlKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0VHlwZSAqKQogewogICAgIG1fdmlkZW9PdXRw
dXRTZW1hcGhvcmUuc2lnbmFsKCk7CiB9CkBAIC0yMzUxLDYgKzI1NTEsNDUgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXYWl0aW5nRm9yS2V5KGJvb2wgd2Fp
dGluZ0ZvcktleSkKIH0KICNlbmRpZgogCisjaWYgIUhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVf
T1VUUFVUX1NVUFBPUlQpCisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCkKK3sKKyNpZiBIQVZFKEFWRk9V
TkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCisgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgp
IHNlbGVjdE1lZGlhT3B0aW9uOm5pbCBpbk1lZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2Vs
ZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07CisjZW5kaWYKKworICAgIFZlY3RvcjxSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4+IHJlbW92ZWRUZXh0VHJhY2tzID0gbV90ZXh0
VHJhY2tzOworICAgIGZvciAoQVZQbGF5ZXJJdGVtVHJhY2sgKnBsYXllckl0ZW1UcmFjayBpbiBt
X2NhY2hlZFRyYWNrcy5nZXQoKSkgeworCisgICAgICAgIEFWQXNzZXRUcmFjayAqYXNzZXRUcmFj
ayA9IFtwbGF5ZXJJdGVtVHJhY2sgYXNzZXRUcmFja107CisgICAgICAgIGlmICghW1thc3NldFRy
YWNrIG1lZGlhVHlwZV0gaXNFcXVhbFRvU3RyaW5nOkFWTWVkaWFUeXBlQ2xvc2VkQ2FwdGlvbl0p
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBib29sIG5ld0NDVHJhY2sgPSB0cnVl
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZW1vdmVkVGV4dFRyYWNrcy5zaXplKCk7IGkg
PiAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0tPnRl
eHRUcmFja0NhdGVnb3J5KCkgIT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6TGVnYWN5Q2xv
c2VkQ2FwdGlvbikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDPiB0cmFjayA9IHN0YXRpY19j
YXN0PEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDKj4obV90ZXh0VHJhY2tzW2kg
LSAxXS5nZXQoKSk7CisgICAgICAgICAgICBpZiAodHJhY2stPmF2UGxheWVySXRlbVRyYWNrKCkg
PT0gcGxheWVySXRlbVRyYWNrKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlZFRleHRUcmFja3Mu
cmVtb3ZlKGkgLSAxKTsKKyAgICAgICAgICAgICAgICBuZXdDQ1RyYWNrID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIW5ld0NDVHJhY2spCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAg
IG1fdGV4dFRyYWNrcy5hcHBlbmQoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakM6
OmNyZWF0ZSh0aGlzLCBwbGF5ZXJJdGVtVHJhY2spKTsKKyAgICB9CisKKyAgICBwcm9jZXNzTmV3
QW5kUmVtb3ZlZFRleHRUcmFja3MocmVtb3ZlZFRleHRUcmFja3MpOworfQorCisjZW5kaWYKKwog
TlNBcnJheSogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZUFWQXNzZXRU
cmFja3NGb3JBdWRpYmxlTWVkaWEoKQogewogICAgIGlmICghbV9hdkFzc2V0KQpAQCAtMjM2Miw2
ICsyNjAxLDggQEAgTlNBcnJheSogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2FmZUFWQXNzZXRUcmFja3NGb3JBdWRpYmxlTWVkaWEoKQogICAgIHJldHVybiBbbV9hdkFzc2V0
IHRyYWNrc1dpdGhNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGli
bGVdOwogfQogCisjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQor
CiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0xvYWRlZE1lZGlh
U2VsZWN0aW9uR3JvdXBzKCkKIHsKICAgICBpZiAoIW1fYXZBc3NldCkKQEAgLTIzNzMsNyArMjYx
NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzTG9hZGVk
TWVkaWFTZWxlY3Rpb25Hcm91cHMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1BVk1lZGlhU2Vs
ZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRp
YVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCkKK0FWTWVkaWFTZWxlY3Rpb25Hcm91cFR5
cGUqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlv
bkdyb3VwRm9yTGVnaWJsZU1lZGlhKCkKIHsKICAgICBpZiAoIWhhc0xvYWRlZE1lZGlhU2VsZWN0
aW9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0yMzgxLDcgKzI2MjIsNyBAQCBB
Vk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNhZmVNZWRpYVNlbGVjdGlvbkdybwogICAgIHJldHVybiBbbV9hdkFzc2V0LmdldCgpIG1lZGlh
U2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGVdOwogfQogCi1BVk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yQXVkaWJsZU1lZGlh
KCkKK0FWTWVkaWFTZWxlY3Rpb25Hcm91cFR5cGUqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yQXVkaWJsZU1lZGlhKCkKIHsKICAg
ICBpZiAoIWhhc0xvYWRlZE1lZGlhU2VsZWN0aW9uR3JvdXBzKCkpCiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC0yMzg5LDcgKzI2MzAsNyBAQCBBVk1lZGlhU2VsZWN0aW9uR3JvdXAqIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNlbGVjdGlvbkdybwogICAgIHJl
dHVybiBbbV9hdkFzc2V0LmdldCgpIG1lZGlhU2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3Rl
cmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdOwogfQogCi1BVk1lZGlhU2VsZWN0
aW9uR3JvdXAqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNhZmVNZWRpYVNl
bGVjdGlvbkdyb3VwRm9yVmlzdWFsTWVkaWEoKQorQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSog
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2FmZU1lZGlhU2VsZWN0aW9uR3Jv
dXBGb3JWaXN1YWxNZWRpYSgpCiB7CiAgICAgaWYgKCFoYXNMb2FkZWRNZWRpYVNlbGVjdGlvbkdy
b3VwcygpKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMjM5OSw3ICsyNjQwLDcgQEAgQVZNZWRp
YVNlbGVjdGlvbkdyb3VwKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzYWZl
TWVkaWFTZWxlY3Rpb25Hcm8KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkKIHsKLSAgICBBVk1lZGlhU2VsZWN0
aW9uR3JvdXAgKmxlZ2libGVHcm91cCA9IHNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJs
ZU1lZGlhKCk7CisgICAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqbGVnaWJsZUdyb3VwID0g
c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKTsKICAgICBpZiAoIWxlZ2li
bGVHcm91cCkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAibm8gbWVkaWFTZWxl
Y3Rpb25Hcm91cCIpOwogICAgICAgICByZXR1cm47CkBAIC0yNDExLDE0ICsyNjUyLDE0IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01lZGlhU2VsZWN0
aW9uT3B0aW9ucygpCiAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxlY3RNZWRpYU9w
dGlvbjpuaWwgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9y
TGVnaWJsZU1lZGlhKCldOwogCiAgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGPj4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7Ci0gICAgTlNBcnJheSAq
bGVnaWJsZU9wdGlvbnMgPSBbUEFMOjpnZXRBVk1lZGlhU2VsZWN0aW9uR3JvdXBDbGFzcygpIHBs
YXlhYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxlR3JvdXAgb3B0aW9u
c11dOwotICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqb3B0aW9uIGluIGxlZ2libGVP
cHRpb25zKSB7CisgICAgTlNBcnJheSAqbGVnaWJsZU9wdGlvbnMgPSBbQVZNZWRpYVNlbGVjdGlv
bkdyb3VwIHBsYXlhYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxlR3Jv
dXAgb3B0aW9uc11dOworICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgKm9wdGlv
biBpbiBsZWdpYmxlT3B0aW9ucykgewogICAgICAgICBib29sIG5ld1RyYWNrID0gdHJ1ZTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVtb3ZlZFRleHRUcmFja3Muc2l6ZSgpOyBpID4gMDsg
LS1pKSB7CiAgICAgICAgICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3NbaSAtIDFdLT50ZXh0VHJh
Y2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OkxlZ2FjeUNsb3NlZENh
cHRpb24pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIFJldGFpblB0cjxBVk1lZGlhU2VsZWN0aW9uT3B0aW9uPiBjdXJyZW50T3B0aW9uOworICAg
ICAgICAgICAgUmV0YWluUHRyPEFWTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlPiBjdXJyZW50T3B0
aW9uOwogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCiAgICAgICAgICAgICBpZiAocmVtb3ZlZFRl
eHRUcmFja3NbaSAtIDFdLT50ZXh0VHJhY2tDYXRlZ29yeSgpID09IEluYmFuZFRleHRUcmFja1By
aXZhdGVBVkY6Ok91dE9mQmFuZCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxPdXRPZkJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGPiB0cmFjayA9IHN0YXRpY19jYXN0PE91dE9mQmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYqPihyZW1vdmVkVGV4dFRyYWNrc1tpIC0gMV0uZ2V0KCkpOwpAQCAtMjQ4Myw2
ICsyNzI0LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpmbHVz
aEN1ZXMoKQogICAgIG1fY3VycmVudFRleHRUcmFjay0+cmVzZXRDdWVWYWx1ZXMoKTsKIH0KIAor
I2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKKwogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRDdXJyZW50VGV4dFRyYWNr
KEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYgKnRyYWNrKQogewogICAgIGlmIChtX2N1cnJlbnRU
ZXh0VHJhY2sgPT0gdHJhY2spCkBAIC0yNDk3LDE0ICsyNzQwLDE4IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRleHRUcmFjayhJbmJhbmRUZXh0
VHJhY2tQcml2CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgogICAgICAgICAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgc2V0Q2xvc2VkQ2FwdGlvbkRpc3BsYXlF
bmFibGVkOllFU107CiAgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKKyNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCiAjaWYgRU5B
QkxFKEFWRl9DQVBUSU9OUykKICAgICAgICAgZWxzZSBpZiAodHJhY2stPnRleHRUcmFja0NhdGVn
b3J5KCkgPT0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6T3V0T2ZCYW5kKQogICAgICAgICAg
ICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOnN0YXRpY19jYXN0PE91
dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYqPih0cmFjayktPm1lZGlhU2VsZWN0aW9uT3B0aW9u
KCkgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJs
ZU1lZGlhKCldOwogI2VuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFttX2F2UGxheWVy
SXRlbS5nZXQoKSBzZWxlY3RNZWRpYU9wdGlvbjpzdGF0aWNfY2FzdDxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQyo+KHRyYWNrKS0+bWVkaWFTZWxlY3Rpb25PcHRpb24oKSBpbk1lZGlhU2Vs
ZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEoKV07Cisj
ZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElP
Tl9HUk9VUCkKICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9u
OjAgaW5NZWRpYVNlbGVjdGlvbkdyb3VwOnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJs
ZU1lZGlhKCldOworI2VuZGlmCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgICAgIFttX2F2UGxheWVyLmdldCgpIHNldENsb3NlZENhcHRpb25EaXNwbGF5
RW5hYmxlZDpOT107CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApA
QCAtMjUyMCwxMCArMjc2NywxMSBAQCBTdHJpbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3QKICAgICBpZiAoIW1f
YXZQbGF5ZXJJdGVtLmdldCgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorI2lm
IEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKICAgICAvLyBJZiBBVkZv
dW5kYXRpb24gaGFzIGFuIGF1ZGlibGUgZ3JvdXAsIHJldHVybiB0aGUgbGFuZ3VhZ2Ugb2YgdGhl
IGN1cnJlbnRseSBzZWxlY3RlZCBhdWRpYmxlIG9wdGlvbi4KLSAgICBBVk1lZGlhU2VsZWN0aW9u
R3JvdXAgKmF1ZGlibGVHcm91cCA9IFttX2F2QXNzZXQuZ2V0KCkgbWVkaWFTZWxlY3Rpb25Hcm91
cEZvck1lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZV07Cisg
ICAgQVZNZWRpYVNlbGVjdGlvbkdyb3VwVHlwZSAqYXVkaWJsZUdyb3VwID0gW21fYXZBc3NldC5n
ZXQoKSBtZWRpYVNlbGVjdGlvbkdyb3VwRm9yTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNBdWRpYmxlXTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgotICAgIEFWTWVkaWFTZWxlY3Rpb25PcHRpb24gKmN1cnJlbnRseVNlbGVjdGVkQXVkaWJs
ZU9wdGlvbiA9IFttX2F2UGxheWVySXRlbS5nZXQoKSBzZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRp
YVNlbGVjdGlvbkdyb3VwOmF1ZGlibGVHcm91cF07CisgICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlv
blR5cGUgKmN1cnJlbnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbiA9IFttX2F2UGxheWVySXRlbS5n
ZXQoKSBzZWxlY3RlZE1lZGlhT3B0aW9uSW5NZWRpYVNlbGVjdGlvbkdyb3VwOmF1ZGlibGVHcm91
cF07CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgaWYgKGN1cnJl
bnRseVNlbGVjdGVkQXVkaWJsZU9wdGlvbikgewogICAgICAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5
QXVkaW9UcmFjayA9IFtbY3VycmVudGx5U2VsZWN0ZWRBdWRpYmxlT3B0aW9uIGxvY2FsZV0gbG9j
YWxlSWRlbnRpZmllcl07CkBAIC0yNTMxLDYgKzI3NzksNyBAQCBTdHJpbmcgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29u
c3QKIAogICAgICAgICByZXR1cm4gbV9sYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAgICAg
fQorI2VuZGlmIC8vIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkKIAog
ICAgIC8vIEFWRm91bmRhdGlvbiBzeW50aGVzaXplcyBhbiBhdWRpYmxlIGdyb3VwIHdoZW4gdGhl
cmUgaXMgb25seSBvbmUgdW5ncm91cGVkIGF1ZGlvIHRyYWNrIGlmIHRoZXJlIGlzIGFsc28gYSBs
ZWdpYmxlIGdyb3VwIChvbmUgb3IKICAgICAvLyBtb3JlIGluLWJhbmQgdGV4dCB0cmFja3MpLiBJ
dCBkb2Vzbid0IGtub3cgYWJvdXQgb3V0LW9mLWJhbmQgdHJhY2tzLCBzbyBpZiB0aGVyZSBpcyBh
IHNpbmdsZSBhdWRpbyB0cmFjayByZXR1cm4gaXRzIGxhbmd1YWdlLgpAQCAtMjU3Niw3ICsyODI1
LDcgQEAgTWVkaWFQbGF5ZXI6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndpcmUKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVy
OjpUYXJnZXRUeXBlTm9uZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKCFQ
QUw6OkFWRm91bmRhdGlvbkxpYnJhcnkoKSkKKyAgICBpZiAoIUFWRm91bmRhdGlvbkxpYnJhcnko
KSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpUYXJnZXRUeXBlTm9uZTsKIAogICAgIHN3
aXRjaCAoW21fYXZQbGF5ZXIgZXh0ZXJuYWxQbGF5YmFja1R5cGVdKSB7CkBAIC0yNTk3LDE0ICsy
ODQ2LDE0IEBAIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3aXJlCiB9CiAgICAgCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLXN0YXRpYyBOU1N0cmluZyAqZXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9y
UGxheWVyKEFWUGxheWVyICpwbGF5ZXIpCitzdGF0aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZpY2VE
aXNwbGF5TmFtZUZvclBsYXllcihBVlBsYXllclR5cGUgKnBsYXllcikKIHsKICNpZiBIQVZFKENF
TEVTVElBTCkKLSAgICBpZiAoIVBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgpKQorICAgIGlmICgh
QVZGb3VuZGF0aW9uTGlicmFyeSgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKFtQ
QUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHQpXSkgewotICAgICAgICBBVk91
dHB1dENvbnRleHQgKm91dHB1dENvbnRleHQgPSBbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFz
cygpIHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dF07CisgICAgaWYgKFtnZXRB
Vk91dHB1dENvbnRleHRDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hhcmVk
QXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KV0pIHsKKyAgICAgICAgQVZPdXRwdXRDb250
ZXh0ICpvdXRwdXRDb250ZXh0ID0gW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgc2hhcmVkQXVk
aW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0XTsKIAogICAgICAgICBpZiAoIVtvdXRwdXRDb250
ZXh0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc3VwcG9ydHNNdWx0aXBsZU91dHB1dERl
dmljZXMpXQogICAgICAgICAgICAgfHwgIVtvdXRwdXRDb250ZXh0IHN1cHBvcnRzTXVsdGlwbGVP
dXRwdXREZXZpY2VzXQpAQCAtMjg4Nyw3ICszMTM2LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgbWV0YWRhdGFUeXBlKE5TU3RyaW5nICphdk1ldGFkYXRhS2V5U3BhY2UpCiAKICAgICBp
ZiAoW2F2TWV0YWRhdGFLZXlTcGFjZSBpc0VxdWFsVG9TdHJpbmc6QVZNZXRhZGF0YUtleVNwYWNl
UXVpY2tUaW1lVXNlckRhdGFdKQogICAgICAgICByZXR1cm4gcXVpY2tUaW1lVXNlckRhdGE7Ci0g
ICAgaWYgKFthdk1ldGFkYXRhS2V5U3BhY2UgaXNFcXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlT
cGFjZUlTT1VzZXJEYXRhXSkKKyAgICBpZiAoY2FuTG9hZEFWTWV0YWRhdGFLZXlTcGFjZUlTT1Vz
ZXJEYXRhKCkgJiYgW2F2TWV0YWRhdGFLZXlTcGFjZSBpc0VxdWFsVG9TdHJpbmc6QVZNZXRhZGF0
YUtleVNwYWNlSVNPVXNlckRhdGFdKQogICAgICAgICByZXR1cm4gaXNvVXNlckRhdGE7CiAgICAg
aWYgKFthdk1ldGFkYXRhS2V5U3BhY2UgaXNFcXVhbFRvU3RyaW5nOkFWTWV0YWRhdGFLZXlTcGFj
ZVF1aWNrVGltZU1ldGFkYXRhXSkKICAgICAgICAgcmV0dXJuIHF1aWNrVGltZU1ldGFkYXRhOwpA
QCAtMjkyMSwxNCArMzE3MCwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om1ldGFkYXRhRGlkQXJyaXZlKGNvbnN0IFJldGFpblB0cjxOU0FycgogCiAgICAgLy8g
U2V0IHRoZSBkdXJhdGlvbiBvZiBhbGwgaW5jb21wbGV0ZSBjdWVzIGJlZm9yZSBhZGRpbmcgbmV3
IG9uZXMuCiAgICAgTWVkaWFUaW1lIGVhcmxpZXN0U3RhcnRUaW1lID0gTWVkaWFUaW1lOjpwb3Np
dGl2ZUluZmluaXRlVGltZSgpOwotICAgIGZvciAoQVZNZXRhZGF0YUl0ZW0gKml0ZW0gaW4gbV9j
dXJyZW50TWV0YURhdGEuZ2V0KCkpIHsKKyAgICBmb3IgKEFWTWV0YWRhdGFJdGVtVHlwZSAqaXRl
bSBpbiBtX2N1cnJlbnRNZXRhRGF0YS5nZXQoKSkgewogICAgICAgICBNZWRpYVRpbWUgc3RhcnQg
PSBzdGQ6Om1heChQQUw6OnRvTWVkaWFUaW1lKGl0ZW0udGltZSksIE1lZGlhVGltZTo6emVyb1Rp
bWUoKSk7CiAgICAgICAgIGlmIChzdGFydCA8IGVhcmxpZXN0U3RhcnRUaW1lKQogICAgICAgICAg
ICAgZWFybGllc3RTdGFydFRpbWUgPSBzdGFydDsKICAgICB9CiAgICAgbV9tZXRhZGF0YVRyYWNr
LT51cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMoZWFybGllc3RTdGFydFRpbWUpOwogCi0gICAgZm9y
IChBVk1ldGFkYXRhSXRlbSAqaXRlbSBpbiBtX2N1cnJlbnRNZXRhRGF0YS5nZXQoKSkgeworICAg
IGZvciAoQVZNZXRhZGF0YUl0ZW1UeXBlICppdGVtIGluIG1fY3VycmVudE1ldGFEYXRhLmdldCgp
KSB7CiAgICAgICAgIE1lZGlhVGltZSBzdGFydCA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUo
aXRlbS50aW1lKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKICAgICAgICAgTWVkaWFUaW1lIGVu
ZCA9IE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgaWYgKENNVElN
RV9JU19WQUxJRChpdGVtLmR1cmF0aW9uKSkKQEAgLTMyNzQsNyArMzUyMyw3IEBAIE5TQXJyYXkq
IHBsYXllcktWT1Byb3BlcnRpZXMoKQogICAgICAgICAgICAgICAgIHBsYXllci0+ZHVyYXRpb25E
aWRDaGFuZ2UoUEFMOjp0b01lZGlhVGltZShbbmV3VmFsdWUgQ01UaW1lVmFsdWVdKSk7CiAgICAg
ICAgICAgICBlbHNlIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJ0aW1lZE1ldGFkYXRh
Il0gJiYgbmV3VmFsdWUpIHsKICAgICAgICAgICAgICAgICBNZWRpYVRpbWUgbm93OwotICAgICAg
ICAgICAgICAgIENNVGltZSBpdGVtVGltZSA9IFsoQVZQbGF5ZXJJdGVtICopb2JqZWN0LmdldCgp
IGN1cnJlbnRUaW1lXTsKKyAgICAgICAgICAgICAgICBDTVRpbWUgaXRlbVRpbWUgPSBbKEFWUGxh
eWVySXRlbVR5cGUgKilvYmplY3QuZ2V0KCkgY3VycmVudFRpbWVdOwogICAgICAgICAgICAgICAg
IGlmIChDTVRJTUVfSVNfTlVNRVJJQyhpdGVtVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIG5v
dyA9IHN0ZDo6bWF4KFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBNZWRpYVRpbWU6Onplcm9U
aW1lKCkpOwogICAgICAgICAgICAgICAgIHBsYXllci0+bWV0YWRhdGFEaWRBcnJpdmUoUmV0YWlu
UHRyPE5TQXJyYXk+KG5ld1ZhbHVlKSwgbm93KTsKQEAgLTMzMTksNiArMzU2OCw4IEBAIE5TQXJy
YXkqIHBsYXllcktWT1Byb3BlcnRpZXMoKQogICAgIH0pOwogfQogCisjaWYgSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQorCiAtICh2b2lkKWxlZ2libGVPdXRwdXQ6KGlk
KW91dHB1dCBkaWRPdXRwdXRBdHRyaWJ1dGVkU3RyaW5nczooTlNBcnJheSAqKXN0cmluZ3MgbmF0
aXZlU2FtcGxlQnVmZmVyczooTlNBcnJheSAqKW5hdGl2ZVNhbXBsZXMgZm9ySXRlbVRpbWU6KENN
VGltZSlpdGVtVGltZQogewogICAgIFVOVVNFRF9QQVJBTShvdXRwdXQpOwpAQCAtMzM0MSw2ICsz
NTkyLDggQEAgTlNBcnJheSogcGxheWVyS1ZPUHJvcGVydGllcygpCiAgICAgfSk7CiB9CiAKKyNl
bmRpZgorCiBAZW5kCiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkBA
IC0zNDA4LDEzICszNjYxLDEzIEBAIE5TQXJyYXkqIHBsYXllcktWT1Byb3BlcnRpZXMoKQogICAg
IHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKW91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6KEFW
UGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0CistICh2b2lkKW91dHB1dE1lZGlhRGF0YVdp
bGxDaGFuZ2U6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0VHlwZSAqKW91dHB1dAogewogICAgIGlm
IChtX3BsYXllcikKICAgICAgICAgbV9wbGF5ZXItPm91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2Uo
b3V0cHV0KTsKIH0KIAotLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hl
ZDooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRUeXBlICopb3V0cHV0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKG91dHB1dCk7CiAgICAgLy8gTm8tb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5k
ZXggN2ZiMWE1ZWMzMDVhODU0ZjY2ZWUyMDc1Nzk4MTRjNjYxOGQxYmVjOS4uZDgzMWIwNWQxODBl
YmI3ODgwMWQ2ZWM2Y2YxMjdhNjNhODI1NWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQpAQCAtNTIsOSArNTIsMzEgQEAKICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIK
KyNwcmFnbWEgbWFyayAtIFNvZnQgTGlua2luZworCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuaD4KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgor
I2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJ
T05BTChBVkZvdW5kYXRpb24pCisKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRp
b24sIEFWQXNzZXQpCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlVS
TEFzc2V0KQorQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgorU09GVF9MSU5LX0NM
QVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKQor
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKK1NPRlRfTElOS19DTEFTU19PUFRJT05B
TChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19CRUdJTgorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXIpCitBTExPV19ORVdfQVBJX1dJ
VEhPVVRfR1VBUkRTX0VORAorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwg
QVZTdHJlYW1EYXRhUGFyc2VyKQorU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlv
biwgQVZTdHJlYW1TZXNzaW9uKTsKK1NPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRp
b24sIEFWVmlkZW9QZXJmb3JtYW5jZU1ldHJpY3MpCisKK1NPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1TcGVjdHJhbCwgTlNTdHJpbmcqKQor
U09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRpb1RpbWVQaXRjaEFsZ29yaXRo
bVZhcmlzcGVlZCwgTlNTdHJpbmcqKQorCisjZGVmaW5lIEFWQXVkaW9UaW1lUGl0Y2hBbGdvcml0
aG1TcGVjdHJhbCBnZXRBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtU3BlY3RyYWwoKQorI2RlZmlu
ZSBBVkF1ZGlvVGltZVBpdGNoQWxnb3JpdGhtVmFyaXNwZWVkIGdldEFWQXVkaW9UaW1lUGl0Y2hB
bGdvcml0aG1WYXJpc3BlZWQoKQogCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBtYXJrIEFWU3Ry
ZWFtU2Vzc2lvbgpAQCAtOTUsNyArMTE3LDcgQEAgc3RhdGljIHZvaWQgQ01UaW1lYmFzZUVmZmVj
dGl2ZVJhdGVDaGFuZ2VkQ2FsbGJhY2soQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsIGNvbnMKIAog
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBs
YXllcikKLSAgICAsIG1fc3luY2hyb25pemVyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1
ZmZlclJlbmRlclN5bmNocm9uaXplckluc3RhbmNlKCkgaW5pdF0pKQorICAgICwgbV9zeW5jaHJv
bml6ZXIoYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplckluc3Rh
bmNlKCkgaW5pdF0pKQogICAgICwgbV9zZWVrVGltZXIoKnRoaXMsICZNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtJbnRlcm5hbCkKICAgICAsIG1fbmV0d29ya1N0YXRl
KE1lZGlhUGxheWVyOjpFbXB0eSkKICAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2
ZU5vdGhpbmcpCkBAIC0xNzksNyArMjAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QKIAog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmlzQXZhaWxhYmxlKCkK
IHsKLSAgICByZXR1cm4gUEFMOjpBVkZvdW5kYXRpb25MaWJyYXJ5KCkKKyAgICByZXR1cm4gQVZG
b3VuZGF0aW9uTGlicmFyeSgpCiAgICAgICAgICYmIGlzQ29yZU1lZGlhRnJhbWV3b3JrQXZhaWxh
YmxlKCkKICAgICAgICAgJiYgZ2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKQogICAgICAgICAm
JiBnZXRBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJDbGFzcygpCkBAIC0yMTIsMTQgKzIzNCwx
NCBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
Ok1heUJlU3VwcG9ydGVkOwogCiAgICAgTlNTdHJpbmcgKm91dHB1dENvZGVjcyA9IGNvZGVjczsK
LSAgICBpZiAoW1BBTDo6Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVj
UGFyYW1ldGVyOildKQotICAgICAgICBvdXRwdXRDb2RlY3MgPSBbUEFMOjpnZXRBVlN0cmVhbURh
dGFQYXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVj
UGFyYW1ldGVyOm91dHB1dENvZGVjc107CisgICAgaWYgKFtnZXRBVlN0cmVhbURhdGFQYXJzZXJD
bGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1l
dGVyRm9ySW5wdXRNSU1FQ29kZWNQYXJhbWV0ZXI6KV0pCisgICAgICAgIG91dHB1dENvZGVjcyA9
IFtnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZv
cklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOm91dHB1dENvZGVjc107CiAKICAgICBpZiAoIWNvbnRl
bnRUeXBlTWVldHNIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyhwYXJhbWV0ZXJzLnR5cGUsIHBh
cmFtZXRlcnMuY29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KSkKICAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIE5TU3RyaW5nICp0eXBl
U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIs
IChOU1N0cmluZyAqKXBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCksIChOU1N0cmluZyAq
KW91dHB1dENvZGVjc107Ci0gICAgcmV0dXJuIFtQQUw6OmdldEFWVVJMQXNzZXRDbGFzcygpIGlz
UGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5ZXI6OklzU3Vw
cG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKKyAgICByZXR1cm4gW2dldEFW
VVJMQXNzZXRDbGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8g
TWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsK
IH0KIAogI3ByYWdtYSBtYXJrIC0KQEAgLTY5Nyw3ICs3MTksNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZW5zdXJlTGF5ZXIoKQogICAgIGlmIChtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9
IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJbnN0YW5jZSgpIGluaXRd
KTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHNldE5h
bWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciJdOwogI2VuZGlmCkBAIC05MTUsNyArOTM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmZsdXNoUGVuZGluZ1NpemVDaGFuZ2VzKCkKICNpZiBIQVZF
KEFWU1RSRUFNU0VTU0lPTikKIEFWU3RyZWFtU2Vzc2lvbiogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzdHJlYW1TZXNzaW9uKCkKIHsKLSAgICBpZiAoIWdldEFWU3RyZWFt
U2Vzc2lvbkNsYXNzKCkgfHwgIVtQQUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgaW5zdGFu
Y2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0
VVJMOildKQorICAgIGlmICghZ2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSB8fCAhW2dldEFWU3Ry
ZWFtU2Vzc2lvbkNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGlu
aXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJMOildKQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgaWYgKCFtX3N0cmVhbVNlc3Npb24pIHsKQEAgLTkyOSw3ICs5NTEsNyBAQCBBVlN0cmVhbVNl
c3Npb24qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vzc2lv
bigpCiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3Au
cGxpc3QiKTsKLSAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
U3RyZWFtU2Vzc2lvbkluc3RhbmNlKCkgaW5pdFdpdGhTdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aF1dKTsKKyAgICAgICAgbV9zdHJlYW1TZXNz
aW9uID0gYWRvcHROUyhbYWxsb2NBVlN0cmVhbVNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoU3Rv
cmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXSk7
CiAgICAgfQogICAgIHJldHVybiBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KaW5kZXggY2RhOTdjOTFmZGEwODNkZWY2YWNmNWZhYzNkZWQyZjQ0ODE3
MWQ0Yy4uZDBlOTJiMmEzMmM5MTAxNzc5OTM5YTQ0NGI3YmE3NjIyMTRhZTAzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDYsOSArNDYsMjMgQEAKICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAotI2ltcG9ydCAiQ29y
ZVZpZGVvU29mdExpbmsuaCIKKworI3ByYWdtYSBtYXJrIC0gU29mdCBMaW5raW5nCisKICNpbXBv
cnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91
bmRhdGlvblNvZnRMaW5rLmg+CisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCitTT0ZU
X0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09GVF9MSU5LX0NMQVNT
X09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCisKK1NP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkxh
eWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19D
T05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUsIE5TU3RyaW5n
ICopCisKKyNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBnZXRBVkxheWVy
VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCkKKyNkZWZpbmUgQVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdEZpbGwgZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKQor
I2RlZmluZSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplIGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlS
ZXNpemUoKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTE5LDcgKzEzMyw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGlmICghX3BhcmVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0pIHsKKyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNz
OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0pIHsKICAgICAgICAgUmV0YWlu
UHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBsYXllciA9IChBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciAqKW9iamVjdDsKICAgICAgICAgQVNTRVJUKGxheWVyLmdldCgpID09IF9wYXJl
bnQtPmRpc3BsYXlMYXllcigpKTsKIApAQCAtMjI2LDcgKzI0MCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5n
aW5lUmVnaXN0CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpp
c0F2YWlsYWJsZSgpCiB7Ci0gICAgcmV0dXJuIFBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgpICYm
IGlzQ29yZU1lZGlhRnJhbWV3b3JrQXZhaWxhYmxlKCkgJiYgZ2V0QVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJDbGFzcygpOworICAgIHJldHVybiBBVkZvdW5kYXRpb25MaWJyYXJ5KCkgJiYgaXND
b3JlTWVkaWFGcmFtZXdvcmtBdmFpbGFibGUoKSAmJiBnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllckNsYXNzKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgdHlwZXMpCkBAIC00NzAsNyArNDg0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCiAgICAgaWYgKCFtX21lZGlhU3Ry
ZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSB8
fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0p
OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIGlmICghbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpIHsKICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICIr
W0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGFsbG9jXSBmYWlsZWQuIik7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRl
eCA1YzBmM2RjMDYxZjA1ZmM2OTNhMzc4NzM2MWVmZDg5MjhmMjIwOWFhLi5mZmM2OWQ3Nzg1Nzcy
ZGNhZDFhNDlhZDdhNGExYjA3ZDZjYjkxZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0zMiw4ICszMiw4IEBACiAjaW1wb3J0IDx3dGYvUHJp
bnRTdHJlYW0uaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi0jaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+
CisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogCiB1c2luZyBuYW1lc3BhY2UgUEFMOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCmluZGV4IDcyZWQ1YzljZjJmZDA5OTgyNzRkNjI4Y2QyZDY1OTliYzIzMjc5NWQuLmNi
OTRkNjY1OTJmNTc1N2Q4MDNkMTA3ZDAwYTIxODAxNDMxODU4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC02NSw3
ICs2NSwyOSBAQAogI3ByYWdtYSBtYXJrIC0gU29mdCBMaW5raW5nCiAKICNpbXBvcnQgPHBhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQor
CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0VHJhY2spCitTT0ZUX0xJTktf
Q0xBU1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXIpCitBTExPV19ORVdfQVBJX1dJ
VEhPVVRfR1VBUkRTX0JFR0lOCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlNhbXBs
ZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCitBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAor
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIp
CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNlc3Npb24pCisKK1NPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1Zpc3VhbCwg
TlNTdHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljQXVkaWJsZSwgTlNTdHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRh
dGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSwgTlNTdHJpbmcqKQorU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJGYWlsZWRU
b0RlY29kZU5vdGlmaWNhdGlvbiwgTlNTdHJpbmcqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91
bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJGYWlsZWRUb0RlY29kZU5vdGlmaWNh
dGlvbkVycm9yS2V5LCBOU1N0cmluZyopCisKKyNkZWZpbmUgQVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJGYWlsZWRUb0RlY29kZU5vdGlmaWNhdGlvbiBnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllckZhaWxlZFRvRGVjb2RlTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJGYWlsZWRUb0RlY29kZU5vdGlmaWNhdGlvbkVycm9yS2V5IGdldEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyRmFpbGVkVG9EZWNvZGVOb3RpZmljYXRpb25FcnJvcktleSgpCisK
KyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVmlzdWFsIGdldEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY1Zpc3VhbCgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUgZ2V0QVZN
ZWRpYUNoYXJhY3RlcmlzdGljQXVkaWJsZSgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0xlZ2libGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSgpCiAKIEBpbnRlcmZhY2Ug
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKFdlYkNvcmVBVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllclF1ZXVlTWFuYWdlbWVudFByaXZhdGUpCiAtICh2b2lkKXByZXJvbGxEZWNvZGVXaXRoQ29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcykpYmxvY2s7CkBAIC0zMzIsNyAr
MzU0LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICBVTlVTRURfUEFS
QU0oa2V5UGF0aCk7CiAgICAgQVNTRVJUKF9wYXJlbnQpOwogCi0gICAgaWYgKFtvYmplY3QgaXNL
aW5kT2ZDbGFzczpQQUw6OmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKV0pIHsK
KyAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOmdldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyQ2xhc3MoKV0pIHsKICAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBsYXllciA9IChBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqKW9iamVjdDsKICAgICAg
ICAgQVNTRVJUKF9sYXllcnMuY29udGFpbnMobGF5ZXIuZ2V0KCkpKTsKIApAQCAtMzUzLDcgKzM3
NSw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICB9IGVsc2UgaWYgKFtvYmpl
Y3QgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckNsYXNz
KCldKSB7CisgICAgfSBlbHNlIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6Z2V0QVZTYW1wbGVC
dWZmZXJBdWRpb1JlbmRlcmVyQ2xhc3MoKV0pIHsKICAgICAgICAgQUxMT1dfTkVXX0FQSV9XSVRI
T1VUX0dVQVJEU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJBdWRpb1Jl
bmRlcmVyPiByZW5kZXJlciA9IChBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKilvYmplY3Q7
CiAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECkBAIC00NjQsNyArNDg2
LDcgQEAgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6Y3JlYXRlKE1lZGlhU291cmNlUHIKIH0KIAogU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqIHBhcmVudCkKLSAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW1BBTDo6YWxsb2NBVlN0cmVhbURh
dGFQYXJzZXJJbnN0YW5jZSgpIGluaXRdKSkKKyAgICA6IG1fcGFyc2VyKGFkb3B0TlMoW2FsbG9j
QVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCiAgICAgLCBtX2RlbGVnYXRlKGFk
b3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJz
ZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OmNyZWF0ZVdlYWtQdHIoKV0pKQogICAgICwgbV9lcnJv
ckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgYWxsb2Nd
IGluaXRXaXRoUGFyZW50OmNyZWF0ZVdlYWtQdHIoKV0pKQogICAgICwgbV9pc0FwcGVuZGluZ0dy
b3VwKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfZ3JvdXBfY3JlYXRlKCkpKQpAQCAtNDc2LDggKzQ5
OCw4IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAjZW5kaWYKIHsKICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOwotCi0gICAgaWYgKCFbUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKHByZXJv
bGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgCisgICAgaWYgKCFbZ2V0QVZT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9y
OkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildKQogICAgICAg
ICBDTU5vdGlmaWNhdGlvbkNlbnRlckFkZExpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVyR2V0
RGVmYXVsdExvY2FsQ2VudGVyKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fbWFwSUQpLCBi
dWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNh
dGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0ciwgMCk7CiAgICAgCiAgICAgbV9kZWxlZ2F0ZS5n
ZXQoKS5hYm9ydFNlbWFwaG9yZSA9IEJveDxTZW1hcGhvcmU+OjpjcmVhdGUoMCk7CkBAIC00OTQs
NyArNTE2LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQygpCiAgICAgZGVzdHJveVBhcnNlcigpOwogICAgIGRlc3Ryb3lSZW5kZXJlcnMo
KTsKIAotICAgIGlmICghW1BBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygp
IGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENv
bXBsZXRpb25IYW5kbGVyOildKQorICAgIGlmICghW2dldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyQ2xhc3MoKSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IocHJlcm9sbERl
Y29kZVdpdGhDb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICAgICAgQ01Ob3RpZmljYXRpb25DZW50
ZXJSZW1vdmVMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRl
cigpLCB0aGlzLCBidWZmZXJXYXNDb25zdW1lZENhbGxiYWNrLCBrQ01TYW1wbGVCdWZmZXJDb25z
dW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCwgbnVsbHB0cik7CiAKICAgICBpZiAobV9o
YXNTZXNzaW9uU2VtYXBob3JlKQpAQCAtODg3LDcgKzkwOSw3IEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291CiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJl
bmRlcmVyOwogICAgICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgICAg
ICBpZiAoIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpIHsKLSAgICAgICAgICAg
IHJlbmRlcmVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
ckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICAgICAgcmVuZGVyZXIgPSBhZG9wdE5TKFthbGxv
Y0FWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlckluc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICAg
ICAgYXV0byB3ZWFrVGhpcyA9IGNyZWF0ZVdlYWtQdHIoKTsKICAgICAgICAgICAgIFtyZW5kZXJl
ciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpIHVzaW5nQmxvY2s6XnsKICAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCkBAIC0xMTI5
LDcgKzExNTEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2Ft
cGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0CiAgICAgICAgIGlmIChtX21lZGlh
U291cmNlICYmICFtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+aGFzQXZhaWxhYmxlVmlkZW9GcmFt
ZSgpICYmICFzYW1wbGUtPmlzTm9uRGlzcGxheWluZygpKSB7CiAgICAgICAgICAgICBERUJVR19M
T0coTE9HSURFTlRJRklFUiwgImFkZGluZyBidWZmZXIgYXR0YWNobWVudCIpOwogCi0gICAgICAg
ICAgICBib29sIGhhdmVQcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyID0gW1BBTDo6
Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3RvcihwcmVyb2xsRGVjb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyOildOwor
ICAgICAgICAgICAgYm9vbCBoYXZlUHJlcm9sbERlY29kZVdpdGhDb21wbGV0aW9uSGFuZGxlciA9
IFtnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRv
U2VsZWN0b3I6QHNlbGVjdG9yKHByZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KV07
CiAKICAgICAgICAgICAgIGlmICghaGF2ZVByZXJvbGxEZWNvZGVXaXRoQ29tcGxldGlvbkhhbmRs
ZXIpIHsKICAgICAgICAgICAgICAgICBDTVNhbXBsZUJ1ZmZlclJlZiByYXdTYW1wbGVDb3B5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCBhNDg1MjNjZjUxNzZiMzFmMmFj
YzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li43ZGFhMjU5NTJiY2JmNjc5YzUzNWQ0YjMyOTYwZTNkM2My
MTBiMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtNjMsNyArNjMs
OSBAQAogI2ltcG9ydCAiVGhlbWVNYWMuaCIKICNlbmRpZgogCi0jaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZG
b3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlBs
YXllckxheWVyKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5NiwxMiArMTk4LDEyIEBA
IHN0YXRpYyBOU1N0cmluZyAqdG9DQUZpbHRlclR5cGUoUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJU
eXBlIHR5cGUpCiAKIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIFBsYXRmb3JtQ0FMYXllckNv
Y29hOjpsYXllclR5cGVGb3JQbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQogewot
ICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
XSkKKyAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCld
KQogICAgICAgICByZXR1cm4gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcjsKIAogICAgIGlmIChbbGF5
ZXIgaXNLaW5kT2ZDbGFzczpvYmpjX2dldENsYXNzKCJXZWJWaWRlb0NvbnRhaW5lckxheWVyIild
CiAgICAgICAgICYmIGxheWVyLnN1YmxheWVycy5jb3VudCA9PSAxCi0gICAgICAgICYmIFtsYXll
ci5zdWJsYXllcnNbMF0gaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
XSkKKyAgICAgICAgJiYgW2xheWVyLnN1YmxheWVyc1swXSBpc0tpbmRPZkNsYXNzOmdldEFWUGxh
eWVyTGF5ZXJDbGFzcygpXSkKICAgICAgICAgcmV0dXJuIExheWVyVHlwZUFWUGxheWVyTGF5ZXI7
CiAKICAgICBpZiAoW2xheWVyIGlzS2luZE9mQ2xhc3M6W1dlYkdMTGF5ZXIgY2xhc3NdXSkKQEAg
LTI2MSw3ICsyNjMsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29j
b2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQwogICAgICAgICBsYXllckNs
YXNzID0gW1dlYlRpbGVkQmFja2luZ0xheWVyIGNsYXNzXTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBMYXllclR5cGVBVlBsYXllckxheWVyOgotICAgICAgICBsYXllckNsYXNzID0gUEFMOjpn
ZXRBVlBsYXllckxheWVyQ2xhc3MoKTsKKyAgICAgICAgbGF5ZXJDbGFzcyA9IGdldEFWUGxheWVy
TGF5ZXJDbGFzcygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExheWVyVHlwZUNvbnRlbnRz
UHJvdmlkZWRMYXllcjoKICAgICAgICAgLy8gV2UgZG9uJ3QgY3JlYXRlIFBsYXRmb3JtQ0FMYXll
ckNvY29hcyB3cmFwcGVkIGFyb3VuZCBXZWJHTExheWVycyBvciBXZWJHUFVMYXllcnMuCkBAIC0z
NTgsNyArMzYwLDcgQEAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmNsb25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIGMKICAgICBuZXdMYXllci0+dXBk
YXRlQ3VzdG9tQXBwZWFyYW5jZShjdXN0b21BcHBlYXJhbmNlKCkpOwogCiAgICAgaWYgKHR5cGUg
PT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcikgewotICAgICAgICBBU1NFUlQoW25ld0xheWVyLT5w
bGF0Zm9ybUxheWVyKCkgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
XSk7CisgICAgICAgIEFTU0VSVChbbmV3TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBpc0tpbmRPZkNs
YXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSk7CiAKICAgICAgICAgQVZQbGF5ZXJMYXllciAq
ZGVzdGluYXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19jYXN0PFBsYXRmb3JtQ0FMYXllckNvY29h
Jj4obmV3TGF5ZXIuZ2V0KCkpLmF2UGxheWVyTGF5ZXIoKTsKICAgICAgICAgQVZQbGF5ZXJMYXll
ciAqc291cmNlUGxheWVyTGF5ZXIgPSBhdlBsYXllckxheWVyKCk7CkBAIC0xMjY5LDEyICsxMjcx
LDEyIEBAIEFWUGxheWVyTGF5ZXIgKlBsYXRmb3JtQ0FMYXllckNvY29hOjphdlBsYXllckxheWVy
KCkgY29uc3QKICAgICBpZiAobGF5ZXJUeXBlKCkgIT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcikK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGlmIChbcGxhdGZvcm1MYXllcigpIGlzS2luZE9m
Q2xhc3M6UEFMOjpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pCisgICAgaWYgKFtwbGF0Zm9ybUxh
eWVyKCkgaXNLaW5kT2ZDbGFzczpnZXRBVlBsYXllckxheWVyQ2xhc3MoKV0pCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxBVlBsYXllckxheWVyICo+KHBsYXRmb3JtTGF5ZXIoKSk7CiAKICAg
ICBpZiAoW3BsYXRmb3JtTGF5ZXIoKSBpc0tpbmRPZkNsYXNzOm9iamNfZ2V0Q2xhc3MoIldlYlZp
ZGVvQ29udGFpbmVyTGF5ZXIiKV0pIHsKICAgICAgICAgQVNTRVJUKFtwbGF0Zm9ybUxheWVyKCkg
c3VibGF5ZXJzXS5jb3VudCA9PSAxKTsKLSAgICAgICAgQVNTRVJUKFtbcGxhdGZvcm1MYXllcigp
IHN1YmxheWVyc11bMF0gaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5ZXJDbGFzcygp
XSk7CisgICAgICAgIEFTU0VSVChbW3BsYXRmb3JtTGF5ZXIoKSBzdWJsYXllcnNdWzBdIGlzS2lu
ZE9mQ2xhc3M6Z2V0QVZQbGF5ZXJMYXllckNsYXNzKCldKTsKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oW3BsYXRmb3JtTGF5ZXIoKSBzdWJsYXllcnNdWzBdKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA1MDUwNjY3NjA1NDgyODg5MWM2
YzM3YzA3NzFiNjBmMTU4ZjcxMTg3Li4zMWMyZDcxYjU4NGM2YzZmMmE4YjAxYzg1YWU3ZjBiY2Qw
MjM4OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCkBAIC0yMywxNyArMjMsMTkgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkhFVkNVdGlsaXRpZXNDb2NvYS5oIgorI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkhFVkNVdGlsaXRpZXNDb2NvYS5oIgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAK
LSNpbXBvcnQgIkZvdXJDQy5oIgotI2ltcG9ydCAiSEVWQ1V0aWxpdGllcy5oIgotI2ltcG9ydCAi
TWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCisjaW5jbHVkZSAiRm91ckNDLmgiCisjaW5jbHVkZSAi
SEVWQ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIgogCi0j
aW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5oIgotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91
bmRhdGlvblNvZnRMaW5rLmg+CisjaW5jbHVkZSAiVmlkZW9Ub29sYm94U29mdExpbmsuaCIKKwor
U09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCitTT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhBbHBo
YSwgTlNTdHJpbmcgKikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSwxMCArNDMsMTAg
QEAgYm9vbCB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKEhFVkNQYXJhbWV0ZXJTZXQmIHBhcmFtZXRl
cnMsIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYKIHsKICAgICBDTVZpZGVvQ29kZWNUeXBlIGNvZGVj
ID0ga0NNVmlkZW9Db2RlY1R5cGVfSEVWQzsKICAgICBpZiAoaGFzQWxwaGFDaGFubmVsKSB7Ci0g
ICAgICAgIGlmICghUEFMOjpBVkZvdW5kYXRpb25MaWJyYXJ5KCkgfHwgIVBBTDo6Y2FuTG9hZF9B
VkZvdW5kYXRpb25fQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSkKKyAgICAgICAgaWYg
KCFBVkZvdW5kYXRpb25MaWJyYXJ5KCkgfHwgIWNhbkxvYWRBVlZpZGVvQ29kZWNUeXBlSEVWQ1dp
dGhBbHBoYSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gY29k
ZWNDb2RlID0gRm91ckNDOjpmcm9tU3RyaW5nKEFWVmlkZW9Db2RlY1R5cGVIRVZDV2l0aEFscGhh
KTsKKyAgICAgICAgYXV0byBjb2RlY0NvZGUgPSBGb3VyQ0M6OmZyb21TdHJpbmcoZ2V0QVZWaWRl
b0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSk7CiAgICAgICAgIGlmICghY29kZWNDb2RlKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCmluZGV4IDRiMzc4
ZmExN2U2ZWY1NWRmZmVkYzU4MDE0ZDdmM2ZlZWU2MjVjYTAuLjVhMGZlNzFhZWU5YzRmZGFjYTc4
YzMwMmNkYTcyODM3YmRlMWIwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCkBAIC0zMiwzNiAr
MzIsMjIgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNwZWVjaFN5bnRoZXNpcy5oPgogI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZG
b3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9uKQor
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hTeW50aGVzaXplcikKK1NPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlKQorU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hTeW50aGVzaXNWb2ljZSkKIAotc3RhdGljIGZsb2F0
IGdldEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGUoKQotewotICAgIHN0YXRpYyBm
bG9hdCB2YWx1ZTsKLSAgICBzdGF0aWMgdm9pZCogc3ltYm9sOwotICAgIGlmICghc3ltYm9sKSB7
Ci0gICAgICAgIHZvaWQqIHN5bWJvbCA9IGRsc3ltKFBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgp
LCAiQVZTcGVlY2hVdHRlcmFuY2VEZWZhdWx0U3BlZWNoUmF0ZSIpOwotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0Uoc3ltYm9sLCAiJXMiLCBkbGVycm9yKCkpOwotICAgICAgICB2
YWx1ZSA9ICpzdGF0aWNfY2FzdDxmbG9hdCBjb25zdCAqPihzeW1ib2wpOwotICAgIH0KLSAgICBy
ZXR1cm4gdmFsdWU7Ci19Ci0KLXN0YXRpYyBmbG9hdCBnZXRBVlNwZWVjaFV0dGVyYW5jZU1heGlt
dW1TcGVlY2hSYXRlKCkKLXsKLSAgICBzdGF0aWMgZmxvYXQgdmFsdWU7Ci0gICAgc3RhdGljIHZv
aWQqIHN5bWJvbDsKLSAgICBpZiAoIXN5bWJvbCkgewotICAgICAgICB2b2lkKiBzeW1ib2wgPSBk
bHN5bShQQUw6OkFWRm91bmRhdGlvbkxpYnJhcnkoKSwgIkFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11
bVNwZWVjaFJhdGUiKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHN5bWJv
bCwgIiVzIiwgZGxlcnJvcigpKTsKLSAgICAgICAgdmFsdWUgPSAqc3RhdGljX2Nhc3Q8ZmxvYXQg
Y29uc3QgKj4oc3ltYm9sKTsKLSAgICB9Ci0gICAgcmV0dXJuIHZhbHVlOwotfQorU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VEZWZhdWx0U3BlZWNoUmF0
ZSwgZmxvYXQpCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVy
YW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIAogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5j
ZURlZmF1bHRTcGVlY2hSYXRlIGdldEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGUo
KQogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlIGdldEFWU3BlZWNo
VXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUoKQogCisjZGVmaW5lIEFWU3BlZWNoVXR0ZXJhbmNl
Q2xhc3MgZ2V0QVZTcGVlY2hVdHRlcmFuY2VDbGFzcygpCisjZGVmaW5lIEFWU3BlZWNoU3ludGhl
c2lzVm9pY2VDbGFzcyBnZXRBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlQ2xhc3MoKQorCiBAaW50ZXJm
YWNlIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgOiBOU09iamVjdDxBVlNwZWVjaFN5bnRoZXNp
emVyRGVsZWdhdGU+CiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciog
bV9zeW50aGVzaXplck9iamVjdDsKQEAgLTExMCw3ICs5Niw3IEBAIHN0YXRpYyBmbG9hdCBnZXRB
VlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlKCkKIAogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIGlmICghbV9zeW50aGVzaXplcikgewotICAgICAgICBtX3N5bnRo
ZXNpemVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU3BlZWNoU3ludGhlc2l6ZXJJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICAgICAgbV9zeW50aGVzaXplciA9IGFkb3B0TlMoW2FsbG9jQVZTcGVlY2hT
eW50aGVzaXplckluc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICBbbV9zeW50aGVzaXplciBzZXRE
ZWxlZ2F0ZTpzZWxmXTsKICAgICB9CiAKQEAgLTEyMCw3ICsxMDYsNyBAQCBzdGF0aWMgZmxvYXQg
Z2V0QVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSgpCiAgICAgTlNTdHJpbmcgKnZv
aWNlTGFuZ3VhZ2UgPSBuaWw7CiAgICAgaWYgKCF1dHRlcmFuY2VWb2ljZSkgewogICAgICAgICBp
ZiAodXR0ZXJhbmNlLT5sYW5nKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgdm9pY2VMYW5ndWFn
ZSA9IFtQQUw6OmdldEFWU3BlZWNoU3ludGhlc2lzVm9pY2VDbGFzcygpIGN1cnJlbnRMYW5ndWFn
ZUNvZGVdOworICAgICAgICAgICAgdm9pY2VMYW5ndWFnZSA9IFtBVlNwZWVjaFN5bnRoZXNpc1Zv
aWNlQ2xhc3MgY3VycmVudExhbmd1YWdlQ29kZV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHZvaWNlTGFuZ3VhZ2UgPSB1dHRlcmFuY2UtPmxhbmcoKTsKICAgICB9IGVsc2UKQEAgLTEyOCw5
ICsxMTQsOSBAQCBzdGF0aWMgZmxvYXQgZ2V0QVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNo
UmF0ZSgpCiAKICAgICBBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlICphdlZvaWNlID0gbmlsOwogICAg
IGlmICh2b2ljZUxhbmd1YWdlKQotICAgICAgICBhdlZvaWNlID0gW1BBTDo6Z2V0QVZTcGVlY2hT
eW50aGVzaXNWb2ljZUNsYXNzKCkgdm9pY2VXaXRoTGFuZ3VhZ2U6dm9pY2VMYW5ndWFnZV07Cisg
ICAgICAgIGF2Vm9pY2UgPSBbQVZTcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzIHZvaWNlV2l0aExh
bmd1YWdlOnZvaWNlTGFuZ3VhZ2VdOwogCi0gICAgQVZTcGVlY2hVdHRlcmFuY2UgKmF2VXR0ZXJh
bmNlID0gW1BBTDo6Z2V0QVZTcGVlY2hVdHRlcmFuY2VDbGFzcygpIHNwZWVjaFV0dGVyYW5jZVdp
dGhTdHJpbmc6dXR0ZXJhbmNlLT50ZXh0KCldOworICAgIEFWU3BlZWNoVXR0ZXJhbmNlICphdlV0
dGVyYW5jZSA9IFtBVlNwZWVjaFV0dGVyYW5jZUNsYXNzIHNwZWVjaFV0dGVyYW5jZVdpdGhTdHJp
bmc6dXR0ZXJhbmNlLT50ZXh0KCldOwogCiAgICAgW2F2VXR0ZXJhbmNlIHNldFJhdGU6W3NlbGYg
bWFwU3BlZWNoUmF0ZVRvUGxhdGZvcm1SYXRlOnV0dGVyYW5jZS0+cmF0ZSgpXV07CiAgICAgW2F2
VXR0ZXJhbmNlIHNldFZvbHVtZTp1dHRlcmFuY2UtPnZvbHVtZSgpXTsKQEAgLTI1OCw3ICsyNDQs
NyBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cigpCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3Qo
KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIGZvciAoQVZTcGVlY2hT
eW50aGVzaXNWb2ljZSAqdm9pY2UgaW4gW1BBTDo6Z2V0QVZTcGVlY2hTeW50aGVzaXNWb2ljZUNs
YXNzKCkgc3BlZWNoVm9pY2VzXSkgeworICAgIGZvciAoQVZTcGVlY2hTeW50aGVzaXNWb2ljZSAq
dm9pY2UgaW4gW0FWU3BlZWNoU3ludGhlc2lzVm9pY2VDbGFzcyBzcGVlY2hWb2ljZXNdKSB7CiAg
ICAgICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IFt2b2ljZSBsYW5ndWFnZV07CiAgICAgICAgIGJv
b2wgaXNEZWZhdWx0ID0gdHJ1ZTsKICAgICAgICAgTlNTdHJpbmcgKnZvaWNlVVJJID0gW3ZvaWNl
IGlkZW50aWZpZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDAzY2UyMGM5MDI3MzM3
OGY0ZTg2MmE4MmVkZjlkMThlNmMxMjQ0MmIuLjA4NzI0ZWI2NmM2OWI0OGJkZmVjMGQyMzZkNzIw
YWM4ZGVmZGM1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbXBvcnQgPFVJS2l0L1VJV2luZG93Lmg+CiAjaW1wb3J0IDxvYmpjL21lc3NhZ2UuaD4KICNp
bXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lv
cy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTEsOSArNTIsMTQg
QEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKy8vIFNvZnQtbGlua2luZyBoZWFkZXJz
IG11c3QgYmUgaW5jbHVkZWQgbGFzdCBzaW5jZSB0aGV5ICNkZWZpbmUgZnVuY3Rpb25zLCBjb25z
dGFudHMsIGV0Yy4KICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgotI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvaW9zL1VJ
S2l0U29mdExpbmsuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQorU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZSwgTlNTdHJpbmcgKikK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNp
emVBc3BlY3QsIE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
VkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbCwgTlNTdHJpbmcgKikKIAogU09GVExJ
TktfQVZLSVRfRlJBTUVXT1JLKCkKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVktpdCwgQVZQ
aWN0dXJlSW5QaWN0dXJlQ29udHJvbGxlcikKQEAgLTIwNCw3ICsyMTAsNyBAQCBzdGF0aWMgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRU
b0V4aXRGdWxsU2NyZQogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKHNlbGYpIHsK
ICAgICAgICAgW3NlbGYgc2V0TWFza3NUb0JvdW5kczpZRVNdOwotICAgICAgICBfdmlkZW9HcmF2
aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKKyAgICAgICAgX3ZpZGVvR3Jh
dml0eSA9IGdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QoKTsKICAgICB9CiAgICAg
cmV0dXJuIHNlbGY7CiB9CkBAIC0yNjQsMTMgKzI3MCwxMyBAQCBzdGF0aWMgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxs
U2NyZQogICAgIEZsb2F0UmVjdCB0YXJnZXRWaWRlb0ZyYW1lOwogICAgIGZsb2F0IHZpZGVvQXNw
ZWN0UmF0aW8gPSBzZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlkZW9EaW1lbnNp
b25zLmhlaWdodDsKICAgICAKLSAgICBpZiAoW0FWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUgaXNF
cXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgeworICAgIGlmIChbZ2V0QVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZSgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pIHsK
ICAgICAgICAgc291cmNlVmlkZW9GcmFtZSA9IHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWU7CiAg
ICAgICAgIHRhcmdldFZpZGVvRnJhbWUgPSBzZWxmLmJvdW5kczsKLSAgICB9IGVsc2UgaWYgKFtB
VkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0IGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVv
R3Jhdml0eV0pIHsKKyAgICB9IGVsc2UgaWYgKFtnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXpl
QXNwZWN0KCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgewogICAgICAgICBz
b3VyY2VWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZp
ZGVvQXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgICAgICB0YXJn
ZXRWaWRlb0ZyYW1lID0gbGFyZ2VzdFJlY3RXaXRoQXNwZWN0UmF0aW9JbnNpZGVSZWN0KHZpZGVv
QXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKLSAgICB9IGVsc2UgaWYgKFtBVkxheWVyVmlkZW9H
cmF2aXR5UmVzaXplQXNwZWN0RmlsbCBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHld
KSB7CisgICAgfSBlbHNlIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZp
bGwoKSBpc0VxdWFsVG9TdHJpbmc6c2VsZi52aWRlb0dyYXZpdHldKSB7CiAgICAgICAgIHNvdXJj
ZVZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KHZpZGVv
QXNwZWN0UmF0aW8sIHNlbGYubW9kZWxWaWRlb0xheWVyRnJhbWUpOwogICAgICAgICBzZWxmLm1v
ZGVsVmlkZW9MYXllckZyYW1lID0gQ0dSZWN0TWFrZSgwLCAwLCBzb3VyY2VWaWRlb0ZyYW1lLndp
ZHRoKCksIHNvdXJjZVZpZGVvRnJhbWUuaGVpZ2h0KCkpOwogICAgICAgICBpZiAoYXV0byogbW9k
ZWwgPSBfZnVsbHNjcmVlbkludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKQEAgLTMy
Miw3ICszMjgsNyBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRG
dWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogI2lmIFBMQVRGT1JNKElPU01B
QykKICAgICAvLyBGSVhNRTxyZGFyOi8vNDYwMTEyMzA+OiByZW1vdmUgdGhpcyAjaWYgb25jZSB0
aGlzIHJhZGFyIGxhbmRzLgogICAgIGlmICghdmlkZW9HcmF2aXR5KQotICAgICAgICB2aWRlb0dy
YXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0OworICAgICAgICB2aWRlb0dy
YXZpdHkgPSBnZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KCk7CiAjZW5kaWYKIAog
ICAgIF92aWRlb0dyYXZpdHkgPSB2aWRlb0dyYXZpdHk7CkBAIC0zMzEsMTEgKzMzNywxMSBAQCBz
dGF0aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29u
IGNvbnZlcnRUb0V4aXRGdWxsU2NyZQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSA9IFdlYkNvcmU6Ok1lZGlhUGxh
eWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdDsKLSAgICBpZiAodmlkZW9HcmF2aXR5
ID09IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemUpCisgICAgaWYgKHZpZGVvR3Jhdml0eSA9PSBn
ZXRBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplKCkpCiAgICAgICAgIGdyYXZpdHkgPSBXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHlSZXNpemU7Ci0gICAgaWYgKHZpZGVvR3Jh
dml0eSA9PSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQorICAgIGlmICh2aWRlb0dy
YXZpdHkgPT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpKQogICAgICAgICBn
cmF2aXR5ID0gV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0OwotICAgIGVsc2UgaWYgKHZpZGVvR3Jhdml0eSA9PSBBVkxheWVyVmlkZW9HcmF2aXR5UmVz
aXplQXNwZWN0RmlsbCkKKyAgICBlbHNlIGlmICh2aWRlb0dyYXZpdHkgPT0gZ2V0QVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGwoKSkKICAgICAgICAgZ3Jhdml0eSA9IFdlYkNvcmU6
Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7CiAgICAgZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTM1Niw5ICszNjIsOSBAQCBzdGF0
aWMgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNv
bnZlcnRUb0V4aXRGdWxsU2NyZQogICAgIAogICAgIGZsb2F0IHZpZGVvQXNwZWN0UmF0aW8gPSBz
ZWxmLnZpZGVvRGltZW5zaW9ucy53aWR0aCAvIHNlbGYudmlkZW9EaW1lbnNpb25zLmhlaWdodDsK
IAotICAgIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCBpc0VxdWFsVG9TdHJp
bmc6c2VsZi52aWRlb0dyYXZpdHldKQorICAgIGlmIChbZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdCgpIGlzRXF1YWxUb1N0cmluZzpzZWxmLnZpZGVvR3Jhdml0eV0pCiAgICAgICAg
IHJldHVybiBsYXJnZXN0UmVjdFdpdGhBc3BlY3RSYXRpb0luc2lkZVJlY3QodmlkZW9Bc3BlY3RS
YXRpbywgc2VsZi5ib3VuZHMpOwotICAgIGlmIChbQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFz
cGVjdEZpbGwgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkKKyAgICBpZiAoW2dl
dEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsKCkgaXNFcXVhbFRvU3RyaW5nOnNl
bGYudmlkZW9HcmF2aXR5XSkKICAgICAgICAgcmV0dXJuIHNtYWxsZXN0UmVjdFdpdGhBc3BlY3RS
YXRpb0Fyb3VuZFJlY3QodmlkZW9Bc3BlY3RSYXRpbywgc2VsZi5ib3VuZHMpOwogCiAgICAgcmV0
dXJuIHNlbGYuYm91bmRzOwpAQCAtNDU0LDcgKzQ2MCw3IEBAIHN0YXRpYyB2b2lkIFdlYkFWUGxh
eWVyTGF5ZXJWaWV3X3N0YXJ0Um91dGluZ1ZpZGVvVG9QaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5
ZXJWCiAKICAgICBXZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxh
eWVyICopW3BsYXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CiAgICAgV2ViQVZQbGF5ZXJMYXll
ciAqcGlwUGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVtwaXBWaWV3IGxheWVyXTsK
LSAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OkFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNp
emVBc3BlY3RdOworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0dyYXZpdHk6Z2V0QVZMYXllclZp
ZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpXTsKICAgICBbcGlwUGxheWVyTGF5ZXIgc2V0VmlkZW9T
dWJsYXllcjpwbGF5ZXJMYXllci52aWRlb1N1YmxheWVyXTsKICAgICBbcGlwUGxheWVyTGF5ZXIg
c2V0VmlkZW9EaW1lbnNpb25zOnBsYXllckxheWVyLnZpZGVvRGltZW5zaW9uc107CiAgICAgW3Bp
cFBsYXllckxheWVyIHNldFZpZGVvR3Jhdml0eTpwbGF5ZXJMYXllci52aWRlb0dyYXZpdHldOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCmluZGV4IGMyOTUzY2EwM2U4MDVjZmRj
MzA1MGNmNjBhMzVkODRjZmZjOTU4NzkuLmU5OTdiMzZhN2I0YTUwYTE2MzNhYjBhZWFhZjZhYTFi
NzhmNWRiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KQEAgLTM4LDkg
KzM4LDE0IEBACiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KICNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNl
NjQuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Cit0eXBl
ZGVmIEFWTWV0YWRhdGFJdGVtIEFWTWV0YWRhdGFJdGVtVHlwZTsKK1NPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwg
QVZNZXRhZGF0YUl0ZW0pCisjZGVmaW5lIEFWTWV0YWRhdGFJdGVtIGdldEFWTWV0YWRhdGFJdGVt
Q2xhc3MoKQorCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNyArNTMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0
KE5TRGF0YSAqLCBKU0NvbnRleHQgKik7CiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBcnJh
eUluQ29udGV4dChOU0FycmF5ICosIEpTQ29udGV4dCAqKTsKIHN0YXRpYyBKU1ZhbHVlICpqc1Zh
bHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5ICosIEpTQ29udGV4dCAqKTsK
LXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0
YWRhdGFJdGVtICosIEpTQ29udGV4dCAqKTsKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFW
TWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtVHlwZSAqLCBKU0NvbnRleHQgKik7
CiBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCwgSlNDb250ZXh0
ICopOwogI2VuZGlmCiAKQEAgLTEzMSw3ICsxMzYsNyBAQCBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1
ZVdpdGhWYWx1ZUluQ29udGV4dChpZCB2YWx1ZSwgSlNDb250ZXh0ICpjb250ZXh0KQogICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBq
c1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwogCi0gICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpXSkKKyAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W0FWTWV0YWRhdGFJdGVtIGNsYXNzXV0pCiAgICAgICAgIHJl
dHVybiBqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsK
IAogICAgIHJldHVybiBuaWw7CkBAIC0xOTQsNyArMTk5LDcgQEAgc3RhdGljIEpTVmFsdWUgKmpz
VmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpT
Q29udGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdp
dGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFkYXRhSXRlbSAqaXRlbSwgSlNDb250ZXh0
ICpjb250ZXh0KQorc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNv
bnRleHQoQVZNZXRhZGF0YUl0ZW1UeXBlICppdGVtLCBKU0NvbnRleHQgKmNvbnRleHQpCiB7CiAg
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5
IGRpY3Rpb25hcnldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggNzVkNDY1Njc4Njk4NDFkYzA0Y2Q5ZGFkMzlhZjkxNThi
ZDcxNzI4NC4uMmI3ODRhNGRlYjZhMTk4YmQ1ODMwMDZlNTM5ZGZmNTRlZGJiMWYxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpA
QCAtMzcsMTUgKzM3LDUyIEBACiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91
bmRhdGlvblNvZnRMaW5rLmg+Cit0eXBlZGVmIEFWQXNzZXRXcml0ZXIgQVZBc3NldFdyaXRlclR5
cGU7Cit0eXBlZGVmIEFWQXNzZXRXcml0ZXJJbnB1dCBBVkFzc2V0V3JpdGVySW5wdXRUeXBlOwor
CitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKKworU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldFdyaXRlcikKK1NPRlRfTElOS19DTEFTUyhBVkZv
dW5kYXRpb24sIEFWQXNzZXRXcml0ZXJJbnB1dCkKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91
bmRhdGlvbiwgQVZGaWxlVHlwZU1QRUc0LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NP
TlNUQU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvZGVjSDI2NCwgTlNTdHJpbmcgKikKK1NPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVmlkZW9XaWR0aEtleSwgTlNTdHJpbmcgKikK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVmlkZW9IZWlnaHRLZXksIE5TU3Ry
aW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVv
LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5
cGVBdWRpbywgTlNTdHJpbmcgKikKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZWaWRlb0V4cGVjdGVkU291cmNlRnJhbWVSYXRlS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSwgTlNTdHJpbmcg
KikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVmlkZW9BdmVyYWdlQml0UmF0
ZUtleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWVmlk
ZW9NYXhLZXlGcmFtZUludGVydmFsS2V5LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5U
KEFWRm91bmRhdGlvbiwgQVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsLCBOU1N0
cmluZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZWaWRlb0NvbXByZXNz
aW9uUHJvcGVydGllc0tleSwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVkZpbGVUeXBlTVBFRzQg
Z2V0QVZGaWxlVHlwZU1QRUc0KCkKKyNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBnZXRBVk1lZGlh
VHlwZUF1ZGlvKCkKKyNkZWZpbmUgQVZNZWRpYVR5cGVWaWRlbyBnZXRBVk1lZGlhVHlwZVZpZGVv
KCkKKyNkZWZpbmUgQVZWaWRlb0NvZGVjS2V5IGdldEFWVmlkZW9Db2RlY0tleSgpCisjZGVmaW5l
IEFWVmlkZW9Db2RlY0gyNjQgZ2V0QVZWaWRlb0NvZGVjSDI2NCgpCisjZGVmaW5lIEFWVmlkZW9X
aWR0aEtleSBnZXRBVlZpZGVvV2lkdGhLZXkoKQorI2RlZmluZSBBVlZpZGVvSGVpZ2h0S2V5IGdl
dEFWVmlkZW9IZWlnaHRLZXkoKQorCisjZGVmaW5lIEFWVmlkZW9FeHBlY3RlZFNvdXJjZUZyYW1l
UmF0ZUtleSBnZXRBVlZpZGVvRXhwZWN0ZWRTb3VyY2VGcmFtZVJhdGVLZXkoKQorI2RlZmluZSBB
VlZpZGVvUHJvZmlsZUxldmVsS2V5IGdldEFWVmlkZW9Qcm9maWxlTGV2ZWxLZXkoKQorI2RlZmlu
ZSBBVlZpZGVvQXZlcmFnZUJpdFJhdGVLZXkgZ2V0QVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5KCkK
KyNkZWZpbmUgQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXkgZ2V0QVZWaWRlb01heEtleUZy
YW1lSW50ZXJ2YWxLZXkoKQorI2RlZmluZSBBVlZpZGVvUHJvZmlsZUxldmVsSDI2NE1haW5BdXRv
TGV2ZWwgZ2V0QVZWaWRlb1Byb2ZpbGVMZXZlbEgyNjRNYWluQXV0b0xldmVsKCkKKyNkZWZpbmUg
QVZWaWRlb0NvbXByZXNzaW9uUHJvcGVydGllc0tleSBnZXRBVlZpZGVvQ29tcHJlc3Npb25Qcm9w
ZXJ0aWVzS2V5KCkKKworU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwg
QVZFbmNvZGVyQml0UmF0ZUtleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlf
RkFJTChBVkZvdW5kYXRpb24sIEFWRm9ybWF0SURLZXksIE5TU3RyaW5nICopCitTT0ZUX0xJTktf
Q09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVk51bWJlck9mQ2hhbm5lbHNLZXksIE5T
U3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlNh
bXBsZVJhdGVLZXksIE5TU3RyaW5nICopCiAKLSN1bmRlZiBBVkVuY29kZXJCaXRSYXRlS2V5CiAj
ZGVmaW5lIEFWRW5jb2RlckJpdFJhdGVLZXkgZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxs
YmFjaygpCi0jdW5kZWYgQVZGb3JtYXRJREtleQogI2RlZmluZSBBVkZvcm1hdElES2V5IGdldEFW
Rm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQotI3VuZGVmIEFWTnVtYmVyT2ZDaGFubmVsc0tleQog
I2RlZmluZSBBVk51bWJlck9mQ2hhbm5lbHNLZXkgZ2V0QVZOdW1iZXJPZkNoYW5uZWxzS2V5V2l0
aEZhbGxiYWNrKCkKLSN1bmRlZiBBVlNhbXBsZVJhdGVLZXkKICNkZWZpbmUgQVZTYW1wbGVSYXRl
S2V5IGdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTU0LDggKzkxLDggQEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIAogc3RhdGljIE5TU3Ry
aW5nICpnZXRBVkZvcm1hdElES2V5V2l0aEZhbGxiYWNrKCkKIHsKLSAgICBpZiAoUEFMOjpjYW5M
b2FkX0FWRm91bmRhdGlvbl9BVkZvcm1hdElES2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6Omdl
dF9BVkZvdW5kYXRpb25fQVZGb3JtYXRJREtleSgpOworICAgIGlmIChjYW5Mb2FkQVZGb3JtYXRJ
REtleSgpKQorICAgICAgICByZXR1cm4gZ2V0QVZGb3JtYXRJREtleSgpOwogCiAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVkZvcm1hdElES2V5Iik7CiAgICAg
cmV0dXJuIEAiQVZGb3JtYXRJREtleSI7CkBAIC02Myw4ICsxMDAsOCBAQCBzdGF0aWMgTlNTdHJp
bmcgKmdldEFWRm9ybWF0SURLZXlXaXRoRmFsbGJhY2soKQogCiBzdGF0aWMgTlNTdHJpbmcgKmdl
dEFWTnVtYmVyT2ZDaGFubmVsc0tleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAgaWYgKFBBTDo6Y2Fu
TG9hZF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCkpCi0gICAgICAgIHJldHVy
biBQQUw6OmdldF9BVkZvdW5kYXRpb25fQVZOdW1iZXJPZkNoYW5uZWxzS2V5KCk7CisgICAgaWYg
KGNhbkxvYWRBVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKKyAgICAgICAgcmV0dXJuIGdldEFWTnVt
YmVyT2ZDaGFubmVsc0tleSgpOwogCiAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWls
ZWQgdG8gbG9hZCBBVk51bWJlck9mQ2hhbm5lbHNLZXkiKTsKICAgICByZXR1cm4gQCJBVk51bWJl
ck9mQ2hhbm5lbHNLZXkiOwpAQCAtNzIsOCArMTA5LDggQEAgc3RhdGljIE5TU3RyaW5nICpnZXRB
Vk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQogCiBzdGF0aWMgTlNTdHJpbmcgKmdl
dEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9B
VkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIHJldHVybiBQQUw6OmdldF9B
VkZvdW5kYXRpb25fQVZTYW1wbGVSYXRlS2V5KCk7CisgICAgaWYgKGNhbkxvYWRBVlNhbXBsZVJh
dGVLZXkoKSkKKyAgICAgICAgcmV0dXJuIGdldEFWU2FtcGxlUmF0ZUtleSgpOwogCiAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsK
ICAgICByZXR1cm4gQCJBVlNhbXBsZVJhdGVLZXkiOwpAQCAtODEsOCArMTE4LDggQEAgc3RhdGlj
IE5TU3RyaW5nICpnZXRBVlNhbXBsZVJhdGVLZXlXaXRoRmFsbGJhY2soKQogCiBzdGF0aWMgTlNT
dHJpbmcgKmdldEFWRW5jb2RlckJpdFJhdGVLZXlXaXRoRmFsbGJhY2soKQogewotICAgIGlmIChQ
QUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWRW5jb2RlckJpdFJhdGVLZXkoKSkKLSAgICAgICAg
cmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRhdGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7CisgICAg
aWYgKGNhbkxvYWRBVkVuY29kZXJCaXRSYXRlS2V5KCkpCisgICAgICAgIHJldHVybiBnZXRBVkVu
Y29kZXJCaXRSYXRlS2V5KCk7CiAKICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZhaWxl
ZCB0byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXkiKTsKICAgICByZXR1cm4gQCJBVkVuY29kZXJC
aXRSYXRlS2V5IjsKQEAgLTk3LDcgKzEzNCw3IEBAIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShjb25zdCBNZWRpCiAg
ICAgTlNVUkwgKm91dHB1dFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF07CiAgICAg
U3RyaW5nIGZpbGVQYXRoID0gW3BhdGggVVRGOFN0cmluZ107CiAgICAgTlNFcnJvciAqZXJyb3Ig
PSBuaWw7Ci0gICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNz
ZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoVVJMOm91dHB1dFVSTCBmaWxlVHlwZTpBVkZpbGVU
eXBlTVBFRzQgZXJyb3I6JmVycm9yXSk7CisgICAgYXV0byBhdkFzc2V0V3JpdGVyID0gYWRvcHRO
UyhbYWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0aFVSTDpvdXRwdXRVUkwgZmls
ZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwogICAgIGlmIChlcnJvcikgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgImNyZWF0ZSBBVkFzc2V0V3Jp
dGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkIiwgKGxvbmcpZXJyb3IuY29k
ZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTYwLDcgKzE5Nyw3IEBAIGJvb2wgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21wcmVzc2lv
blByb3BlcnRpZXMKICAgICB9OwogICAgIAotICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFW
TWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3VyY2VGb3JtYXRI
aW50Om5pbF0pOworICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0TlMoW2FsbG9jQVZBc3NldFdyaXRl
cklucHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1
dFNldHRpbmdzOnZpZGVvU2V0dGluZ3Mgc291cmNlRm9ybWF0SGludDpuaWxdKTsKICAgICBbbV92
aWRlb0lucHV0IHNldEV4cGVjdHNNZWRpYURhdGFJblJlYWxUaW1lOnRydWVdOwogICAgIAogICAg
IGlmICghW21fd3JpdGVyIGNhbkFkZElucHV0Om1fdmlkZW9JbnB1dC5nZXQoKV0pIHsKQEAgLTE4
NCw3ICsyMjEsNyBAQCBib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzZXRBdWRpb0lu
cHV0KCkKICAgICAgICAgQVZTYW1wbGVSYXRlS2V5IDogQCgyMjA1MCkKICAgICB9OwogCi0gICAg
bV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3Rh
bmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczph
dWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgbV9hdWRpb0lucHV0ID0g
YWRvcHROUyhbYWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFU
eXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0dGluZ3M6YXVkaW9TZXR0aW5ncyBzb3VyY2VG
b3JtYXRIaW50Om5pbF0pOwogICAgIFttX2F1ZGlvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUlu
UmVhbFRpbWU6dHJ1ZV07CiAgICAgCiAgICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV9h
dWRpb0lucHV0LmdldCgpXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IDk5YmFjYmUyNDIzOTli
YTQ2NDU5YzNiZmRhOGM5YTBkYWZmMThlYTAuLmFjMzQ0MDBkNTI0MGExMDM2ZWY0MjBhZjEzNjk1
NmUwZmQyNmZlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vVmlkZW9QcmVzZXQuaAppbmRleCAyMDMzYzc2ZGI2NWZhMzllNmFkY2EzOWRkODJj
NGQwOTJjNzU4NmZmLi5mOTlmZjBhMzhjNzQ0Zjc2MTNkNzlhZDlhNWFlMjQzZGEwMTlmZTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
TWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCmluZGV4IDQ2
MDUwZDkzODM0ZjNhOTM3ZmVlMzc1NTczN2RlYWE0ZTJjOWMwYTUuLjA0MDZkNmM5YjUzMWQ1Mjk3
YTg5MzhiMjc0ZmIzOGE2MDNmMDk0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vz
c2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0yMywxNyArMjMsMjAgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgi
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0j
aW1wb3J0ICJBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UuaCIKLSNpbXBvcnQgIlJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lv
bi5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgIkFWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZS5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNp
bmNsdWRlIDxBVkZvdW5kYXRpb24vQVZBdWRpb1Nlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2Nv
YS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRp
b24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbikKKyNkZWZp
bmUgQVZBdWRpb1Nlc3Npb24gZ2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpCiAKIHZvaWQqIEF2YWls
YWJsZUlucHV0c0NvbnRleHQgPSAmQXZhaWxhYmxlSW5wdXRzQ29udGV4dDsKIApAQCAtMTI0LDEz
ICsxMjcsMTMgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZy
ZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgICAgIG1fbGlzdGVuZXIgPSBhZG9wdE5TKFtb
V2ViQVZBdWRpb1Nlc3Npb25BdmFpbGFibGVJbnB1dHNMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhD
YWxsYmFjazpbdGhpc10gewogICAgICAgICAgICAgcmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMo
KTsKICAgICAgICAgfV0pOwotICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygp
IHNoYXJlZEluc3RhbmNlXSBhZGRPYnNlcnZlcjptX2xpc3RlbmVyLmdldCgpIGZvcktleVBhdGg6
QCJhdmFpbGFibGVJbnB1dHMiIG9wdGlvbnM6MCBjb250ZXh0OkF2YWlsYWJsZUlucHV0c0NvbnRl
eHRdOworICAgICAgICBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBhZGRPYnNlcnZl
cjptX2xpc3RlbmVyLmdldCgpIGZvcktleVBhdGg6QCJhdmFpbGFibGVJbnB1dHMiIG9wdGlvbnM6
MCBjb250ZXh0OkF2YWlsYWJsZUlucHV0c0NvbnRleHRdOwogICAgIH0KIAogICAgIFZlY3RvcjxB
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+IG5ld0F1ZGlvRGV2aWNlczsKICAgICBWZWN0b3I8
Q2FwdHVyZURldmljZT4gbmV3RGV2aWNlczsKIAotICAgIGZvciAoQVZBdWRpb1Nlc3Npb25Qb3J0
RGVzY3JpcHRpb24gKnBvcnREZXNjcmlwdGlvbiBpbiBbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNs
YXNzKCkgc2hhcmVkSW5zdGFuY2VdLmF2YWlsYWJsZUlucHV0cykgeworICAgIGZvciAoQVZBdWRp
b1Nlc3Npb25Qb3J0RGVzY3JpcHRpb24gKnBvcnREZXNjcmlwdGlvbiBpbiBbQVZBdWRpb1Nlc3Np
b24gc2hhcmVkSW5zdGFuY2VdLmF2YWlsYWJsZUlucHV0cykgewogICAgICAgICBhdXRvIGF1ZGlv
RGV2aWNlID0gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlOjpjcmVhdGUocG9ydERlc2NyaXB0
aW9uKTsKICAgICAgICAgbmV3RGV2aWNlcy5hcHBlbmQoYXVkaW9EZXZpY2UpOwogICAgICAgICBu
ZXdBdWRpb0RldmljZXMuYXBwZW5kKFdURk1vdmUoYXVkaW9EZXZpY2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0Nv
cmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KaW5kZXggNmZiM2RhZDM5YzJkOWU5NzhkYzUyMWI3
YmI4M2Y2OTlhOTMyNTNmZi4uMmVkODMyNDI3NDEyMjQ0ZjJkNmYzODYwNGMyMDkzYTQxYzU0M2E1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0Nv
cmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KQEAgLTMxLDggKzMx
LDIxIEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBdWRp
b1Nlc3Npb24uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KIAotI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+
Cit0eXBlZGVmIEFWQXVkaW9TZXNzaW9uIEFWQXVkaW9TZXNzaW9uVHlwZTsKKworU09GVF9MSU5L
X0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
VkF1ZGlvU2Vzc2lvbikKKworU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZBdWRp
b1Nlc3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24sIE5TU3RyaW5nICopCitTT0ZUX0xJTktf
Q09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvblR5cGVLZXks
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vz
c2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCisKKyNk
ZWZpbmUgQVZBdWRpb1Nlc3Npb24gZ2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpCisjZGVmaW5lIEFW
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIGdldEFWQXVkaW9TZXNzaW9uSW50
ZXJydXB0aW9uTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRp
b25UeXBlS2V5IGdldEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleSgpCisjZGVmaW5l
IEFWQXVkaW9TZXNzaW9uTWVkaWFTZXJ2aWNlc1dlcmVSZXNldE5vdGlmaWNhdGlvbiBnZXRBVkF1
ZGlvU2Vzc2lvbk1lZGlhU2VydmljZXNXZXJlUmVzZXROb3RpZmljYXRpb24oKQogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTUsNyArNjgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKICAgICBfY2FsbGJhY2sgPSBjYWxsYmFjazsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2Vu
dGVyKiBjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAg
QVZBdWRpb1Nlc3Npb24qIHNlc3Npb24gPSBbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkg
c2hhcmVkSW5zdGFuY2VdOworICAgIEFWQXVkaW9TZXNzaW9uVHlwZSogc2Vzc2lvbiA9IFtBVkF1
ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV07CiAKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNl
bGYgc2VsZWN0b3I6QHNlbGVjdG9yKGhhbmRsZUludGVycnVwdGlvbjopIG5hbWU6QVZBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24gb2JqZWN0OnNlc3Npb25dOwogICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lvbk1lZGlhU2Vydmlj
ZXNXZXJlUmVzZXQ6KSBuYW1lOkFWQXVkaW9TZXNzaW9uTWVkaWFTZXJ2aWNlc1dlcmVSZXNldE5v
dGlmaWNhdGlvbiBvYmplY3Q6c2Vzc2lvbl07CkBAIC04Miw3ICs5NSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiAgICAgaWYgKFtbbm90aWZpY2F0aW9uLnVzZXJJbmZvIHZhbHVlRm9y
S2V5OkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleV0gaW50VmFsdWVdID09IEFWQXVk
aW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUVuZGVkKSB7CiAgICAgICAgIE5TRXJyb3IgKmVycm9y
ID0gbmlsOwotICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZElu
c3RhbmNlXSBzZXRBY3RpdmU6WUVTIGVycm9yOiZlcnJvcl07CisgICAgICAgIFtbQVZBdWRpb1Nl
c3Npb24gc2hhcmVkSW5zdGFuY2VdIHNldEFjdGl2ZTpZRVMgZXJyb3I6JmVycm9yXTsKIAogI2lm
ICFMT0dfRElTQUJMRUQKICAgICAgICAgaWYgKGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQppbmRleCBhOWVhM2UxYjNlY2FhM2Y5MzkxNmU2ZDE1NzQ2MmQyMzEzZTdjZDUy
Li4xMDYyNmFhZWY4YWEwMjMzMjEzYTZmNTNmOWFhYjk5N2E3MDU1MzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFu
YWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZD
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtNDEsOCArNDEsMjcgQEAKICNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgordHlwZWRlZiBBVkNhcHR1cmVEZXZpY2Ug
QVZDYXB0dXJlRGV2aWNlVHlwZWRlZjsKK3R5cGVkZWYgQVZDYXB0dXJlU2Vzc2lvbiBBVkNhcHR1
cmVTZXNzaW9uVHlwZTsKKworU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRp
b24pCisKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZSkKK1NP
RlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZVNlc3Npb24pCisKK1NPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCitT
T0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZU11eGVkLCBOU1N0cmlu
ZyAqKQorU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRlbywg
TlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURl
dmljZVdhc0Nvbm5lY3RlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19DT05T
VEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3RlZE5vdGlmaWNh
dGlvbiwgTlNTdHJpbmcgKikKKworI2RlZmluZSBBVk1lZGlhVHlwZUF1ZGlvIGdldEFWTWVkaWFU
eXBlQXVkaW8oKQorI2RlZmluZSBBVk1lZGlhVHlwZU11eGVkIGdldEFWTWVkaWFUeXBlTXV4ZWQo
KQorI2RlZmluZSBBVk1lZGlhVHlwZVZpZGVvIGdldEFWTWVkaWFUeXBlVmlkZW8oKQorI2RlZmlu
ZSBBVkNhcHR1cmVEZXZpY2VXYXNDb25uZWN0ZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlRGV2
aWNlV2FzQ29ubmVjdGVkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDYXB0dXJlRGV2aWNlV2Fz
RGlzY29ubmVjdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5lY3Rl
ZE5vdGlmaWNhdGlvbigpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC04MCw3ICs5
OSw3IEBAIGNvbnN0IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Y2FwdHVyZURldmljZXMoKQogICAgIHJldHVybiBjYXB0dXJlRGV2aWNlc0ludGVybmFsKCk7
CiB9CiAKLWlubGluZSBzdGF0aWMgYm9vbCBkZXZpY2VJc0F2YWlsYWJsZShBVkNhcHR1cmVEZXZp
Y2UgKmRldmljZSkKK2lubGluZSBzdGF0aWMgYm9vbCBkZXZpY2VJc0F2YWlsYWJsZShBVkNhcHR1
cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UpCiB7CiAgICAgaWYgKCFbZGV2aWNlIGlzQ29ubmVjdGVk
XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTUsMjAgKzExNCwyMCBAQCBpbmxpbmUgc3Rh
dGljIGJvb2wgZGV2aWNlSXNBdmFpbGFibGUoQVZDYXB0dXJlRGV2aWNlICpkZXZpY2UpCiAKIHZv
aWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dXBkYXRlQ2FjaGVkQVZDYXB0dXJlRGV2aWNlcygp
CiB7Ci0gICAgYXV0byogY3VycmVudERldmljZXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VD
bGFzcygpIGRldmljZXNdOworICAgIGF1dG8qIGN1cnJlbnREZXZpY2VzID0gW2dldEFWQ2FwdHVy
ZURldmljZUNsYXNzKCkgZGV2aWNlc107CiAgICAgYXV0byBjaGFuZ2VkRGV2aWNlcyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgIGZvciAoQVZDYXB0dXJlRGV2
aWNlICpjYWNoZWREZXZpY2UgaW4gbV9hdkNhcHR1cmVEZXZpY2VzLmdldCgpKSB7CisgICAgZm9y
IChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpjYWNoZWREZXZpY2UgaW4gbV9hdkNhcHR1cmVEZXZp
Y2VzLmdldCgpKSB7CiAgICAgICAgIGlmICghW2N1cnJlbnREZXZpY2VzIGNvbnRhaW5zT2JqZWN0
OmNhY2hlZERldmljZV0pCiAgICAgICAgICAgICBbY2hhbmdlZERldmljZXMgYWRkT2JqZWN0OmNh
Y2hlZERldmljZV07CiAgICAgfQogCiAgICAgaWYgKFtjaGFuZ2VkRGV2aWNlcyBjb3VudF0pIHsK
LSAgICAgICAgZm9yIChBVkNhcHR1cmVEZXZpY2UgKmRldmljZSBpbiBjaGFuZ2VkRGV2aWNlcy5n
ZXQoKSkKKyAgICAgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpkZXZpY2UgaW4gY2hh
bmdlZERldmljZXMuZ2V0KCkpCiAgICAgICAgICAgICBbZGV2aWNlIHJlbW92ZU9ic2VydmVyOm1f
b2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJzdXNwZW5kZWQiXTsKICAgICAgICAgW21f
YXZDYXB0dXJlRGV2aWNlcyByZW1vdmVPYmplY3RzSW5BcnJheTpjaGFuZ2VkRGV2aWNlcy5nZXQo
KV07CiAgICAgfQogCi0gICAgZm9yIChBVkNhcHR1cmVEZXZpY2UgKmRldmljZSBpbiBjdXJyZW50
RGV2aWNlcykgeworICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqZGV2aWNlIGluIGN1
cnJlbnREZXZpY2VzKSB7CiAKICAgICAgICAgaWYgKCFbZGV2aWNlIGhhc01lZGlhVHlwZTpBVk1l
ZGlhVHlwZVZpZGVvXSAmJiAhW2RldmljZSBoYXNNZWRpYVR5cGU6QVZNZWRpYVR5cGVNdXhlZF0p
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMiw5ICsxNTEsOSBAQCB2b2lkIEFWQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnJlZnJlc2hDYXB0dXJlRGV2aWNlcygpCiAgICAgdXBkYXRlQ2FjaGVk
QVZDYXB0dXJlRGV2aWNlcygpOwogCiAgICAgYm9vbCBkZXZpY2VIYXNDaGFuZ2VkID0gZmFsc2U7
Ci0gICAgYXV0byogY3VycmVudERldmljZXMgPSBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFz
cygpIGRldmljZXNdOworICAgIGF1dG8qIGN1cnJlbnREZXZpY2VzID0gW2dldEFWQ2FwdHVyZURl
dmljZUNsYXNzKCkgZGV2aWNlc107CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGRldmljZUxp
c3Q7Ci0gICAgZm9yIChBVkNhcHR1cmVEZXZpY2UgKnBsYXRmb3JtRGV2aWNlIGluIGN1cnJlbnRE
ZXZpY2VzKSB7CisgICAgZm9yIChBVkNhcHR1cmVEZXZpY2VUeXBlZGVmICpwbGF0Zm9ybURldmlj
ZSBpbiBjdXJyZW50RGV2aWNlcykgewogCiAgICAgICAgIGlmICghW3BsYXRmb3JtRGV2aWNlIGhh
c01lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvXSAmJiAhW3BsYXRmb3JtRGV2aWNlIGhhc01lZGlh
VHlwZTpBVk1lZGlhVHlwZU11eGVkXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTYwLDcg
KzE3OSw3IEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6cmVmcmVzaENhcHR1cmVEZXZp
Y2VzKCkKIAogYm9vbCBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjppc0F2YWlsYWJsZSgpCiB7Ci0g
ICAgcmV0dXJuIFBBTDo6QVZGb3VuZGF0aW9uTGlicmFyeSgpOworICAgIHJldHVybiBBVkZvdW5k
YXRpb25MaWJyYXJ5KCk7CiB9CiAKIEFWQ2FwdHVyZURldmljZU1hbmFnZXImIEFWQ2FwdHVyZURl
dmljZU1hbmFnZXI6OnNpbmdsZXRvbigpCkBAIC0xNzgsNyArMTk3LDcgQEAgQVZDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6fkFWQ2FwdHVyZURldmljZU1hbmFnZXIoKQogewogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIu
Z2V0KCldOwogICAgIFttX29iamNPYnNlcnZlciBkaXNjb25uZWN0XTsKLSAgICBmb3IgKEFWQ2Fw
dHVyZURldmljZSAqZGV2aWNlIGluIG1fYXZDYXB0dXJlRGV2aWNlcy5nZXQoKSkKKyAgICBmb3Ig
KEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSBpbiBtX2F2Q2FwdHVyZURldmljZXMuZ2V0
KCkpCiAgICAgICAgIFtkZXZpY2UgcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkg
Zm9yS2V5UGF0aDpAInN1c3BlbmRlZCJdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
bW0KaW5kZXggODUxNDRhZGY0NTkwYTZkOGM0MmZlMDViODEzZmM1MWZhOGIzY2IzYi4uN2YzZWM4
MmIzYThmM2NmYWI3OWQ4NGZlNTJlNGEyM2M4ZDQwYzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbQpAQCAtNDUsOSArNDUsNTUgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkVy
cm9yLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KIAotI2ltcG9ydCAiQ29yZVZpZGVvU29m
dExpbmsuaCIKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogI2lt
cG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0
TGluay5oIgorCit0eXBlZGVmIEFWQ2FwdHVyZUNvbm5lY3Rpb24gQVZDYXB0dXJlQ29ubmVjdGlv
blR5cGU7Cit0eXBlZGVmIEFWQ2FwdHVyZURldmljZSBBVkNhcHR1cmVEZXZpY2VUeXBlZGVmOwor
dHlwZWRlZiBBVkNhcHR1cmVEZXZpY2VGb3JtYXQgQVZDYXB0dXJlRGV2aWNlRm9ybWF0VHlwZTsK
K3R5cGVkZWYgQVZDYXB0dXJlRGV2aWNlSW5wdXQgQVZDYXB0dXJlRGV2aWNlSW5wdXRUeXBlOwor
dHlwZWRlZiBBVkNhcHR1cmVPdXRwdXQgQVZDYXB0dXJlT3V0cHV0VHlwZTsKK3R5cGVkZWYgQVZD
YXB0dXJlVmlkZW9EYXRhT3V0cHV0IEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU7Cit0eXBl
ZGVmIEFWRnJhbWVSYXRlUmFuZ2UgQVZGcmFtZVJhdGVSYW5nZVR5cGU7Cit0eXBlZGVmIEFWQ2Fw
dHVyZVNlc3Npb24gQVZDYXB0dXJlU2Vzc2lvblR5cGU7CisKK1NPRlRfTElOS19GUkFNRVdPUktf
T1BUSU9OQUwoQVZGb3VuZGF0aW9uKQorCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
VkNhcHR1cmVDb25uZWN0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0
dXJlRGV2aWNlKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNl
Rm9ybWF0KQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlSW5w
dXQpCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVPdXRwdXQpCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXQpCitTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkZyYW1lUmF0ZVJhbmdlKQorU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbikKKworI2RlZmluZSBBVkNhcHR1cmVD
b25uZWN0aW9uIGdldEFWQ2FwdHVyZUNvbm5lY3Rpb25DbGFzcygpCisjZGVmaW5lIEFWQ2FwdHVy
ZURldmljZSBnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpCisjZGVmaW5lIEFWQ2FwdHVyZURldmlj
ZUZvcm1hdCBnZXRBVkNhcHR1cmVEZXZpY2VGb3JtYXRDbGFzcygpCisjZGVmaW5lIEFWQ2FwdHVy
ZURldmljZUlucHV0IGdldEFWQ2FwdHVyZURldmljZUlucHV0Q2xhc3MoKQorI2RlZmluZSBBVkNh
cHR1cmVPdXRwdXQgZ2V0QVZDYXB0dXJlT3V0cHV0Q2xhc3MoKQorI2RlZmluZSBBVkNhcHR1cmVW
aWRlb0RhdGFPdXRwdXQgZ2V0QVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0Q2xhc3MoKQorI2RlZmlu
ZSBBVkZyYW1lUmF0ZVJhbmdlIGdldEFWRnJhbWVSYXRlUmFuZ2VDbGFzcygpCisKK1NPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlkZW8sIE5TU3RyaW5nICopCisK
K1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nv
bm5lY3RlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikKKyNkZWZpbmUgQVZDYXB0dXJlRGV2aWNl
V2FzRGlzY29ubmVjdGVkTm90aWZpY2F0aW9uIGdldEFWQ2FwdHVyZURldmljZVdhc0Rpc2Nvbm5l
Y3RlZE5vdGlmaWNhdGlvbigpCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorU09GVF9MSU5L
X1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uUnVudGltZUVy
cm9yTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVTZXNzaW9uV2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24s
IE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFW
Q2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25FbmRlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKikK
K1NPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lv
bkludGVycnVwdGlvblJlYXNvbktleSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19QT0lOVEVSX09Q
VElPTkFMKEFWRm91bmRhdGlvbiwgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5LCBOU1N0cmluZyAq
KQorCisjZGVmaW5lIEFWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gZ2V0
QVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbigpCisjZGVmaW5lIEFWQ2Fw
dHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiBnZXRBVkNhcHR1cmVTZXNzaW9u
V2FzSW50ZXJydXB0ZWROb3RpZmljYXRpb24oKQorI2RlZmluZSBBVkNhcHR1cmVTZXNzaW9uSW50
ZXJydXB0aW9uRW5kZWROb3RpZmljYXRpb24gZ2V0QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlv
bkVuZGVkTm90aWZpY2F0aW9uKCkKKyNkZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlv
blJlYXNvbktleSBnZXRBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uS2V5KCkKKyNk
ZWZpbmUgQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5IGdldEFWQ2FwdHVyZVNlc3Npb25FcnJvcktl
eSgpCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ug
UEFMOwpAQCAtNjAsNyArMTA2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIC0odm9pZClkaXNj
b25uZWN0OwogLSh2b2lkKWFkZE5vdGlmaWNhdGlvbk9ic2VydmVyczsKIC0odm9pZClyZW1vdmVO
b3RpZmljYXRpb25PYnNlcnZlcnM7Ci0tKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0
cHV0KiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJS
ZWYpc2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uKiljb25u
ZWN0aW9uOworLSh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1
cmVPdXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVC
dWZmZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9u
OwogLSh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2Jq
ZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5KiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSh2b2lkKXNlc3Npb25SdW50aW1lRXJyb3I6KE5T
Tm90aWZpY2F0aW9uKilub3RpZmljYXRpb247CkBAIC05NCwyMyArMTQwLDIzIEBAIHN0YXRpYyBk
aXNwYXRjaF9xdWV1ZV90IGdsb2JhVmlkZW9DYXB0dXJlU2VyaWFsUXVldWUoKQogCiBjbGFzcyBB
VlZpZGVvUHJlc2V0IDogcHVibGljIFZpZGVvUHJlc2V0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEFWVmlkZW9QcmVzZXQ+IGNyZWF0ZShJbnRTaXplIHNpemUsIFZlY3RvcjxGcmFtZVJhdGVS
YW5nZT4mJiBmcmFtZVJhdGVSYW5nZXMsIEFWQ2FwdHVyZURldmljZUZvcm1hdCogZm9ybWF0KQor
ICAgIHN0YXRpYyBSZWY8QVZWaWRlb1ByZXNldD4gY3JlYXRlKEludFNpemUgc2l6ZSwgVmVjdG9y
PEZyYW1lUmF0ZVJhbmdlPiYmIGZyYW1lUmF0ZVJhbmdlcywgQVZDYXB0dXJlRGV2aWNlRm9ybWF0
VHlwZSogZm9ybWF0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVZWaWRl
b1ByZXNldChzaXplLCBXVEZNb3ZlKGZyYW1lUmF0ZVJhbmdlcyksIGZvcm1hdCkpOwogICAgIH0K
IAotICAgIEFWVmlkZW9QcmVzZXQoSW50U2l6ZSBzaXplLCBWZWN0b3I8RnJhbWVSYXRlUmFuZ2U+
JiYgZnJhbWVSYXRlUmFuZ2VzLCBBVkNhcHR1cmVEZXZpY2VGb3JtYXQqIGZvcm1hdCkKKyAgICBB
VlZpZGVvUHJlc2V0KEludFNpemUgc2l6ZSwgVmVjdG9yPEZyYW1lUmF0ZVJhbmdlPiYmIGZyYW1l
UmF0ZVJhbmdlcywgQVZDYXB0dXJlRGV2aWNlRm9ybWF0VHlwZSogZm9ybWF0KQogICAgICAgICA6
IFZpZGVvUHJlc2V0KHNpemUsIFdURk1vdmUoZnJhbWVSYXRlUmFuZ2VzKSwgQVZDYXB0dXJlKQog
ICAgICAgICAsIGZvcm1hdChmb3JtYXQpCiAgICAgewogICAgIH0KIAotICAgIFJldGFpblB0cjxB
VkNhcHR1cmVEZXZpY2VGb3JtYXQ+IGZvcm1hdDsKKyAgICBSZXRhaW5QdHI8QVZDYXB0dXJlRGV2
aWNlRm9ybWF0VHlwZT4gZm9ybWF0OwogfTsKIAogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNyZWF0ZShTdHJpbmcmJiBpZCwgU3RyaW5nJiYgaGFzaFNhbHQsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewotICAgIEFWQ2FwdHVyZURldmlj
ZSAqZGV2aWNlID0gW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBkZXZpY2VXaXRoVW5p
cXVlSUQ6aWRdOworICAgIEFWQ2FwdHVyZURldmljZVR5cGVkZWYgKmRldmljZSA9IFtnZXRBVkNh
cHR1cmVEZXZpY2VDbGFzcygpIGRldmljZVdpdGhVbmlxdWVJRDppZF07CiAgICAgaWYgKCFkZXZp
Y2UpCiAgICAgICAgIHJldHVybiB7IH07CiAKQEAgLTEyNCw3ICsxNzAsNyBAQCBDYXB0dXJlU291
cmNlT3JFcnJvciBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlKFN0cmluZyYmIGlkLCBTdHJp
bmcmJiBoYXNoU2FsdAogICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNv
dXJjZSkpOwogfQogCi1BVlZpZGVvQ2FwdHVyZVNvdXJjZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2Uo
QVZDYXB0dXJlRGV2aWNlKiBkZXZpY2UsIFN0cmluZyYmIGlkLCBTdHJpbmcmJiBoYXNoU2FsdCkK
K0FWVmlkZW9DYXB0dXJlU291cmNlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZp
Y2VUeXBlZGVmKiBkZXZpY2UsIFN0cmluZyYmIGlkLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6
IFJlYWx0aW1lVmlkZW9Tb3VyY2UoZGV2aWNlLmxvY2FsaXplZE5hbWUsIFdURk1vdmUoaWQpLCBX
VEZNb3ZlKGhhc2hTYWx0KSkKICAgICAsIG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3Jl
QVZWaWRlb0NhcHR1cmVTb3VyY2VPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlz
XSkpCiAgICAgLCBtX2RldmljZShkZXZpY2UpCkBAIC0yNTksNyArMzA1LDcgQEAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcGFi
aWxpdGllcygpCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRp
ZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKICAgICBjYXBhYmlsaXRpZXMu
c2V0RGV2aWNlSWQoaGFzaGVkSWQoKSk7CiAKLSAgICBBVkNhcHR1cmVEZXZpY2UgKnZpZGVvRGV2
aWNlID0gZGV2aWNlKCk7CisgICAgQVZDYXB0dXJlRGV2aWNlVHlwZWRlZiAqdmlkZW9EZXZpY2Ug
PSBkZXZpY2UoKTsKICAgICBpZiAoW3ZpZGVvRGV2aWNlIHBvc2l0aW9uXSA9PSBBVkNhcHR1cmVE
ZXZpY2VQb3NpdGlvbkZyb250KQogICAgICAgICBjYXBhYmlsaXRpZXMuYWRkRmFjaW5nTW9kZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXIpOwogICAgIGlmIChbdmlkZW9EZXZpY2Ug
cG9zaXRpb25dID09IEFWQ2FwdHVyZURldmljZVBvc2l0aW9uQmFjaykKQEAgLTM3NSw5ICs0MjEs
OSBAQCBzdGF0aWMgaW5saW5lIGludCBzZW5zb3JPcmllbnRhdGlvbihBVkNhcHR1cmVWaWRlb09y
aWVudGF0aW9uIHZpZGVvT3JpZW50YXRpb24pCiAjZW5kaWYKIH0KIAotc3RhdGljIGlubGluZSBp
bnQgc2Vuc29yT3JpZW50YXRpb25Gcm9tVmlkZW9PdXRwdXQoQVZDYXB0dXJlVmlkZW9EYXRhT3V0
cHV0KiB2aWRlb091dHB1dCkKK3N0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uRnJv
bVZpZGVvT3V0cHV0KEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGUqIHZpZGVvT3V0cHV0KQog
ewotICAgIEFWQ2FwdHVyZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBbdmlkZW9PdXRwdXQgY29u
bmVjdGlvbldpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlb107CisgICAgQVZDYXB0dXJlQ29u
bmVjdGlvblR5cGUqIGNvbm5lY3Rpb24gPSBbdmlkZW9PdXRwdXQgY29ubmVjdGlvbldpdGhNZWRp
YVR5cGU6IGdldEFWTWVkaWFUeXBlVmlkZW8oKV07CiAgICAgcmV0dXJuIGNvbm5lY3Rpb24gPyBz
ZW5zb3JPcmllbnRhdGlvbihbY29ubmVjdGlvbiB2aWRlb09yaWVudGF0aW9uXSkgOiAwOwogfQog
CkBAIC0zODgsNyArNDM0LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNz
aW9uKCkKIAogICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwog
Ci0gICAgbV9zZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0
YW5jZSgpIGluaXRdKTsKKyAgICBtX3Nlc3Npb24gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVNl
c3Npb25JbnN0YW5jZSgpIGluaXRdKTsKICAgICBbbV9zZXNzaW9uIGFkZE9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJydW5uaW5nIiBvcHRpb25zOk5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKW5pbF07CiAKICAgICBbbV9zZXNzaW9u
IGJlZ2luQ29uZmlndXJhdGlvbl07CkBAIC00MDEsMTAgKzQ0NywxMCBAQCBib29sIEFWVmlkZW9D
YXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24oKQogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi1B
VkZyYW1lUmF0ZVJhbmdlKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkZvckZy
YW1lUmF0ZShkb3VibGUgcmF0ZSkKK0FWRnJhbWVSYXRlUmFuZ2VUeXBlKiBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkZvckZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKIHsKLSAgICBB
VkZyYW1lUmF0ZVJhbmdlICpiZXN0RnJhbWVSYXRlUmFuZ2UgPSBuaWw7Ci0gICAgZm9yIChBVkZy
YW1lUmF0ZVJhbmdlICpmcmFtZVJhdGVSYW5nZSBpbiBbW2RldmljZSgpIGFjdGl2ZUZvcm1hdF0g
dmlkZW9TdXBwb3J0ZWRGcmFtZVJhdGVSYW5nZXNdKSB7CisgICAgQVZGcmFtZVJhdGVSYW5nZVR5
cGUgKmJlc3RGcmFtZVJhdGVSYW5nZSA9IG5pbDsKKyAgICBmb3IgKEFWRnJhbWVSYXRlUmFuZ2VU
eXBlICpmcmFtZVJhdGVSYW5nZSBpbiBbW2RldmljZSgpIGFjdGl2ZUZvcm1hdF0gdmlkZW9TdXBw
b3J0ZWRGcmFtZVJhdGVSYW5nZXNdKSB7CiAgICAgICAgIGlmIChmcmFtZVJhdGVSYW5nZUluY2x1
ZGVzUmF0ZSh7IFtmcmFtZVJhdGVSYW5nZSBtaW5GcmFtZVJhdGVdLCBbZnJhbWVSYXRlUmFuZ2Ug
bWF4RnJhbWVSYXRlXSB9LCByYXRlKSkgewogICAgICAgICAgICAgaWYgKCFiZXN0RnJhbWVSYXRl
UmFuZ2UgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKFtmcmFtZVJhdGVSYW5nZSBtaW5GcmFtZUR1
cmF0aW9uXSwgPiwgW2Jlc3RGcmFtZVJhdGVSYW5nZSBtaW5GcmFtZUR1cmF0aW9uXSkpCiAgICAg
ICAgICAgICAgICAgYmVzdEZyYW1lUmF0ZVJhbmdlID0gZnJhbWVSYXRlUmFuZ2U7CkBAIC00MjYs
NyArNDcyLDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lv
bigpCiAjZW5kaWYKIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIFJldGFpblB0cjxB
VkNhcHR1cmVEZXZpY2VJbnB1dD4gdmlkZW9JbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkNhcHR1
cmVEZXZpY2VJbnB1dEluc3RhbmNlKCkgaW5pdFdpdGhEZXZpY2U6ZGV2aWNlKCkgZXJyb3I6JmVy
cm9yXSk7CisgICAgUmV0YWluUHRyPEFWQ2FwdHVyZURldmljZUlucHV0VHlwZT4gdmlkZW9JbiA9
IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlRGV2aWNlSW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoRGV2
aWNlOmRldmljZSgpIGVycm9yOiZlcnJvcl0pOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBF
UlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJmYWlsZWQgdG8gYWxsb2Nh
dGUgQVZDYXB0dXJlRGV2aWNlSW5wdXQgIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0g
VVRGOFN0cmluZ10pOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MzgsNyArNDg0LDcgQEAg
Ym9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCiAgICAgfQog
ICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CiAKLSAgICBtX3ZpZGVvT3V0
cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dEluc3RhbmNl
KCkgaW5pdF0pOworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVZp
ZGVvRGF0YU91dHB1dEluc3RhbmNlKCkgaW5pdF0pOwogICAgIGF1dG8gc2V0dGluZ3NEaWN0aW9u
YXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0
c0FuZEtleXM6IFtOU051bWJlciBudW1iZXJXaXRoSW50OmF2VmlkZW9DYXB0dXJlUGl4ZWxCdWZm
ZXJGb3JtYXQoKV0sIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5LCBuaWxdKTsKIAog
ICAgIFttX3ZpZGVvT3V0cHV0IHNldFZpZGVvU2V0dGluZ3M6c2V0dGluZ3NEaWN0aW9uYXJ5Lmdl
dCgpXTsKQEAgLTUyMiw3ICs1NjgsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpwcm9j
ZXNzTmV3RnJhbWUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSkKICAgICBkaXNwYXRjaE1lZGlh
U2FtcGxlVG9PYnNlcnZlcnMoV1RGTW92ZShzYW1wbGUpKTsKIH0KIAotdm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y2FwdHVyZU91dHB1dERpZE91dHB1dFNhbXBsZUJ1ZmZlckZyb21Db25uZWN0
aW9uKEFWQ2FwdHVyZU91dHB1dCosIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQVZD
YXB0dXJlQ29ubmVjdGlvbiogY2FwdHVyZUNvbm5lY3Rpb24pCit2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpjYXB0dXJlT3V0cHV0RGlkT3V0cHV0U2FtcGxlQnVmZmVyRnJvbUNvbm5lY3Rpb24o
QVZDYXB0dXJlT3V0cHV0VHlwZSosIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQVZD
YXB0dXJlQ29ubmVjdGlvblR5cGUqIGNhcHR1cmVDb25uZWN0aW9uKQogewogICAgIGlmIChtX2Zy
YW1lc1RvRHJvcEF0U3RhcnR1cCAmJiBtX2ZyYW1lc1RvRHJvcEF0U3RhcnR1cC0tKQogICAgICAg
ICByZXR1cm47CkBAIC01NzMsNyArNjE5LDcgQEAgYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
aW50ZXJydXB0ZWQoKSBjb25zdAogdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Z2VuZXJhdGVQ
cmVzZXRzKCkKIHsKICAgICBWZWN0b3I8UmVmPFZpZGVvUHJlc2V0Pj4gcHJlc2V0czsKLSAgICBm
b3IgKEFWQ2FwdHVyZURldmljZUZvcm1hdCogZm9ybWF0IGluIFtkZXZpY2UoKSBmb3JtYXRzXSkg
eworICAgIGZvciAoQVZDYXB0dXJlRGV2aWNlRm9ybWF0VHlwZSogZm9ybWF0IGluIFtkZXZpY2Uo
KSBmb3JtYXRzXSkgewogCiAgICAgICAgIENNVmlkZW9EaW1lbnNpb25zIGRpbWVuc2lvbnMgPSBD
TVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zKGZvcm1hdC5mb3JtYXREZXNjcmlw
dGlvbik7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IHsgZGltZW5zaW9ucy53aWR0aCwgZGltZW5z
aW9ucy5oZWlnaHQgfTsKQEAgLTU4NCw3ICs2MzAsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJlU291
cmNlOjpnZW5lcmF0ZVByZXNldHMoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
VmVjdG9yPEZyYW1lUmF0ZVJhbmdlPiBmcmFtZVJhdGVzOwotICAgICAgICBmb3IgKEFWRnJhbWVS
YXRlUmFuZ2UqIHJhbmdlIGluIFtmb3JtYXQgdmlkZW9TdXBwb3J0ZWRGcmFtZVJhdGVSYW5nZXNd
KQorICAgICAgICBmb3IgKEFWRnJhbWVSYXRlUmFuZ2VUeXBlICpyYW5nZSBpbiBbZm9ybWF0IHZp
ZGVvU3VwcG9ydGVkRnJhbWVSYXRlUmFuZ2VzXSkKICAgICAgICAgICAgIGZyYW1lUmF0ZXMuYXBw
ZW5kKHsgcmFuZ2UubWluRnJhbWVSYXRlLCByYW5nZS5tYXhGcmFtZVJhdGV9KTsKIAogICAgICAg
ICBwcmVzZXRzLmFwcGVuZChBVlZpZGVvUHJlc2V0OjpjcmVhdGUoc2l6ZSwgV1RGTW92ZShmcmFt
ZVJhdGVzKSwgZm9ybWF0KSk7CkBAIC02NjYsNyArNzEyLDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6ZGV2aWNlRGlzY29ubmVjdGVkKFJldGFpblB0cjxOU05vdGlmaWNhdGlvbj4gbm90
aWZpY2EKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGRl
dmljZUNvbm5lY3RlZERpZENoYW5nZTopIG5hbWU6QVZDYXB0dXJlRGV2aWNlV2FzRGlzY29ubmVj
dGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBBVkNhcHR1cmVTZXNzaW9uKiBzZXNzaW9uID0gbV9jYWxsYmFjay0+c2Vzc2lvbigpOwor
ICAgIEFWQ2FwdHVyZVNlc3Npb25UeXBlKiBzZXNzaW9uID0gbV9jYWxsYmFjay0+c2Vzc2lvbigp
OwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lv
blJ1bnRpbWVFcnJvcjopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNh
dGlvbiBvYmplY3Q6c2Vzc2lvbl07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihiZWdpblNlc3Npb25JbnRlcnJ1cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vz
c2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIG9iamVjdDpzZXNzaW9uXTsKICAgICBbY2Vu
dGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGVuZFNlc3Npb25JbnRlcnJ1
cHRlZDopIG5hbWU6QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90aWZpY2F0aW9u
IG9iamVjdDpzZXNzaW9uXTsKQEAgLTY3OCw3ICs3MjQsNyBAQCB2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpkZXZpY2VEaXNjb25uZWN0ZWQoUmV0YWluUHRyPE5TTm90aWZpY2F0aW9uPiBub3Rp
ZmljYQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2Jz
ZXJ2ZXI6c2VsZl07CiB9CiAKLS0gKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0
KiljYXB0dXJlT3V0cHV0IGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYp
c2FtcGxlQnVmZmVyIGZyb21Db25uZWN0aW9uOihBVkNhcHR1cmVDb25uZWN0aW9uKiljb25uZWN0
aW9uCistICh2b2lkKWNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dFR5cGUqKWNhcHR1cmVP
dXRwdXQgZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZm
ZXIgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb25UeXBlKiljb25uZWN0aW9uCiB7
CiAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggNWM3ODk4N2JiNzNhNzg2OGIyYWM3YjliZWEw
ZTNiNGJmNTc3YzRiNC4uMDQ3NTkwMTNiMGM1NDkxNGExM2Q5YjBlNzkwMTJlYWMxZjM4ODNiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtNDYsOCArNDYs
OCBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9uLmg+CiAjaW1wb3J0IDxvYmpj
L3J1bnRpbWUuaD4KIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKICNpbXBvcnQgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJY29uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMubW0KaW5kZXggNzkyYzdkZTliOGRkYWQ2
ZDU5ZmJlMGZmOWQ4MzM0YWE0NTc0ZGQwMi4uNDcwZWNhNDU2N2EwMzI5MjczYjNiZjVjOThiN2Rm
ZDJkYTYyNzQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkljb25V
dGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRp
ZXMubW0KQEAgLTM0LDExICszNCwxNCBAQAogI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5o
PgogI2ltcG9ydCA8SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vydmlj
ZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExp
bmsuaD4KICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAotI2ltcG9ydCA8cGFsL2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmg+Ci0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsu
aD4KK1NPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9uKTsKK1NPRlRfTElOS19DTEFTUyhB
VkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdlbmVyYXRvcik7CitTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVlVSTEFzc2V0KTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTExNyw4
ICsxMjAsOCBAQCBVSUltYWdlKiBpY29uRm9yVmlkZW9GaWxlKE5TVVJMICpmaWxlKQogewogICAg
IEFTU0VSVF9BUkcoZmlsZSwgW2ZpbGUgaXNGaWxlVVJMXSk7CiAKLSAgICBSZXRhaW5QdHI8QVZV
UkxBc3NldD4gYXNzZXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZVUkxBc3NldEluc3RhbmNlKCkg
aW5pdFdpdGhVUkw6ZmlsZSBvcHRpb25zOm5pbF0pOwotICAgIFJldGFpblB0cjxBVkFzc2V0SW1h
Z2VHZW5lcmF0b3I+IGdlbmVyYXRvciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0SW1hZ2VH
ZW5lcmF0b3JJbnN0YW5jZSgpIGluaXRXaXRoQXNzZXQ6YXNzZXQuZ2V0KCldKTsKKyAgICBSZXRh
aW5QdHI8QVZVUkxBc3NldD4gYXNzZXQgPSBhZG9wdE5TKFthbGxvY0FWVVJMQXNzZXRJbnN0YW5j
ZSgpIGluaXRXaXRoVVJMOmZpbGUgb3B0aW9uczpuaWxdKTsKKyAgICBSZXRhaW5QdHI8QVZBc3Nl
dEltYWdlR2VuZXJhdG9yPiBnZW5lcmF0b3IgPSBhZG9wdE5TKFthbGxvY0FWQXNzZXRJbWFnZUdl
bmVyYXRvckluc3RhbmNlKCkgaW5pdFdpdGhBc3NldDphc3NldC5nZXQoKV0pOwogICAgIFtnZW5l
cmF0b3Igc2V0QXBwbGllc1ByZWZlcnJlZFRyYWNrVHJhbnNmb3JtOllFU107CiAKICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCmluZGV4IDViYTUyYzkwYWViMGZlYWQ2ZjQ0OGQ3MDg2
ZjU5YTJhZTZlOWU5NTIuLjIxYzAwNjc3NmE2Njc0MWFiOTRhZTY5MTgwYmY2YjQxMGY5OTQ5MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENv
ZGVyc01hYy5tbQpAQCAtNDQsOCArNDQsMTEgQEAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUKQogI2ltcG9ydCA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
PgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9BVkZvdW5k
YXRpb25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCi0jaW1wb3J0IDxwYWwv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZPdXRwdXRD
b250ZXh0KQogI2VuZGlmCiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNTc3LDE2ICs1ODAsMTYgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Ok1l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0JiB0YXJnZXQp
CiB7Ci0gICAgaWYgKFtQQUw6OmdldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQorICAgIGlmIChbZ2V0QVZPdXRwdXRD
b250ZXh0Q2xhc3MoKSBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKE5TU2VjdXJlQ29kaW5n
KV0pCiAgICAgICAgIGVuY29kZXIgPDwgdGFyZ2V0LmF2T3V0cHV0Q29udGV4dCgpOwogfQogCiBi
b29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENvbnRleHQmIHRhcmdldCkKIHsKLSAgICBpZiAoIVtQQUw6OmdldEFWT3V0cHV0Q29u
dGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyld
KQorICAgIGlmICghW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgY29uZm9ybXNUb1Byb3RvY29s
OkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBhdXRvIGNvbnRleHQgPSBJUEM6OmRlY29kZTxBVk91dHB1dENvbnRleHQ+KGRlY29kZXIsIFBB
TDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSk7CisgICAgYXV0byBjb250ZXh0ID0gSVBDOjpk
ZWNvZGU8QVZPdXRwdXRDb250ZXh0PihkZWNvZGVyLCBnZXRBVk91dHB1dENvbnRleHRDbGFzcygp
KTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggYTUxYTIyMzYyMzg0MTUx
YWIxMWQ0ODk0MzY5ZjhhMTg1ODAwNjdkYS4uNWVhYTI3MTc1ZjBmMWVhNDU1NTEyYjlmNDdjNDg5
MDgyOTY3MjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCkBAIC02MCw4ICs2MCwxMiBAQAogI2lmIEhBVkUoQVVUSE9SSVpBVElPTl9TVEFUVVNfRk9S
X01FRElBX1RZUEUpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CiAj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRpYUZvcm1hdC5oPgorI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgor
U09GVF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pOworU09GVF9MSU5LX0NMQVNTKEFWRm91
bmRhdGlvbiwgQVZDYXB0dXJlRGV2aWNlKTsKK1NPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRp
b24sIEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopOworU09GVF9MSU5LX0NPTlNUQU5UKEFW
Rm91bmRhdGlvbiwgQVZNZWRpYVR5cGVWaWRlbywgTlNTdHJpbmcgKik7CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC05NDMsNyArOTQ3LDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3gKICAgICAgICAgICAgIHJlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9uRm9yRnJhbWUoZnJh
bWUsIHRvcExldmVsT3JpZ2luLCBwcm90ZWN0ZWRSZXF1ZXN0LCAoaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+KW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpLCAqd2ViVmlldy5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgQVZBdXRob3JpemF0aW9uU3Rh
dHVzIGNhbWVyYUF1dGhvcml6YXRpb25TdGF0dXMgPSB1c2luZ01vY2tDYXB0dXJlRGV2aWNlcyA/
IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbUEFMOjpnZXRBVkNhcHR1cmVEZXZp
Y2VDbGFzcygpIGF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRl
b107CisgICAgICAgIEFWQXV0aG9yaXphdGlvblN0YXR1cyBjYW1lcmFBdXRob3JpemF0aW9uU3Rh
dHVzID0gdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPyBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRo
b3JpemVkIDogW2dldEFWQ2FwdHVyZURldmljZUNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c0Zv
ck1lZGlhVHlwZTpnZXRBVk1lZGlhVHlwZVZpZGVvKCldOwogICAgICAgICBzd2l0Y2ggKGNhbWVy
YUF1dGhvcml6YXRpb25TdGF0dXMpIHsKICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0
dXNBdXRob3JpemVkOgogICAgICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25G
b3JGcmFtZShmcmFtZSwgdG9wTGV2ZWxPcmlnaW4sIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCksICp3ZWJWaWV3
LmdldCgpKTsKQEAgLTk2MSwxMyArOTY1LDEzIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6
OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94CiAg
ICAgICAgICAgICAgICAgcmVxdWVzdFVzZXJNZWRpYUF1dGhvcml6YXRpb25Gb3JGcmFtZShmcmFt
ZSwgdG9wTGV2ZWxPcmlnaW4sIHByb3RlY3RlZFJlcXVlc3QsIChpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4pbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCksICp3ZWJWaWV3LmdldCgpKTsKICAg
ICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBbUEFMOjpnZXRBVkNhcHR1cmVEZXZpY2VDbGFz
cygpIHJlcXVlc3RBY2Nlc3NGb3JNZWRpYVR5cGU6QVZNZWRpYVR5cGVWaWRlbyBjb21wbGV0aW9u
SGFuZGxlcjpkZWNpc2lvbkhhbmRsZXIuZ2V0KCldOworICAgICAgICAgICAgW2dldEFWQ2FwdHVy
ZURldmljZUNsYXNzKCkgcmVxdWVzdEFjY2Vzc0Zvck1lZGlhVHlwZTpnZXRBVk1lZGlhVHlwZVZp
ZGVvKCkgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgpXTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSk7CiAKICAgICBpZiAocmVxdWlyZXNBdWRpb0Nh
cHR1cmUpIHsKLSAgICAgICAgQVZBdXRob3JpemF0aW9uU3RhdHVzIG1pY3JvcGhvbmVBdXRob3Jp
emF0aW9uU3RhdHVzID0gdXNpbmdNb2NrQ2FwdHVyZURldmljZXMgPyBBVkF1dGhvcml6YXRpb25T
dGF0dXNBdXRob3JpemVkIDogW1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3Jp
emF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW9dOworICAgICAgICBBVkF1
dGhvcml6YXRpb25TdGF0dXMgbWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMgPSB1c2luZ01v
Y2tDYXB0dXJlRGV2aWNlcyA/IEFWQXV0aG9yaXphdGlvblN0YXR1c0F1dGhvcml6ZWQgOiBbZ2V0
QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSBhdXRob3JpemF0aW9uU3RhdHVzRm9yTWVkaWFUeXBlOmdl
dEFWTWVkaWFUeXBlQXVkaW8oKV07CiAgICAgICAgIHN3aXRjaCAobWljcm9waG9uZUF1dGhvcml6
YXRpb25TdGF0dXMpIHsKICAgICAgICAgY2FzZSBBVkF1dGhvcml6YXRpb25TdGF0dXNBdXRob3Jp
emVkOgogICAgICAgICAgICAgcmVxdWVzdENhbWVyYUF1dGhvcml6YXRpb24oKTsKQEAgLTk4NSw3
ICs5ODksNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveAogICAgICAgICAgICAgICAgIHJlcXVl
c3RDYW1lcmFBdXRob3JpemF0aW9uKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
W1BBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSByZXF1ZXN0QWNjZXNzRm9yTWVkaWFUeXBl
OkFWTWVkaWFUeXBlQXVkaW8gY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyLmdldCgp
XTsKKyAgICAgICAgICAgIFtnZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpIHJlcXVlc3RBY2Nlc3NG
b3JNZWRpYVR5cGU6Z2V0QVZNZWRpYVR5cGVBdWRpbygpIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lz
aW9uSGFuZGxlci5nZXQoKV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0g
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0KaW5kZXggNTJhOWJkNGRjYzkxNzU4Y2RmMDAwZGJjMGI0ZGU3MjdhYzg1NmNkOC4u
NWJkZmI2ZGRkYmY5OTE0MmY0MjI5MjE0ZGZiMGQ1ODQ0ZjFmM2RkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZUN1c3RvbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tCkBAIC0zNSw4
ICszNSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKLSNpbXBvcnQgPHBhbC9jb2Nv
YS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChB
VkZvdW5kYXRpb24pCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlBs
YXllckxheWVyKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtMTAzLDggKzEwNSw4IEBAIFJlZjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVyCiAKICAgICBpZiAo
bGF5ZXJUeXBlKCkgPT0gTGF5ZXJUeXBlQVZQbGF5ZXJMYXllcikgewogICAgICAgICAKLSAgICAg
ICAgaWYgKFtwbGF0Zm9ybUxheWVyKCkgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVyTGF5
ZXJDbGFzcygpXSkgewotICAgICAgICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jQVZQbGF5ZXJMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICBpZiAoW3BsYXRmb3Jt
TGF5ZXIoKSBpc0tpbmRPZkNsYXNzOmdldEFWUGxheWVyTGF5ZXJDbGFzcygpXSkgeworICAgICAg
ICAgICAgY2xvbmVkTGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5jZSgp
IGluaXRdKTsKIAogICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqZGVzdGluYXRpb25QbGF5ZXJM
YXllciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oY2xvbmVkTGF5ZXIuZ2V0KCkpOwog
ICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqc291cmNlUGxheWVyTGF5ZXIgPSBzdGF0aWNfY2Fz
dDxBVlBsYXllckxheWVyICo+KHBsYXRmb3JtTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXIubW0KaW5kZXggMjNhYWMzNDQyNmJhMDNhYjkzYjRlOTYzZjFlODJmODUxNDA0YTFjYi4u
YzZlMDcxNjRjYWYwNWNhNDgxOWUzMGE3ODZkY2M4YWQ4M2Q2MDUzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbQpAQCAtMzYsMTEgKzM2LDEzIEBACiAjaW1wb3J0IDxvYmpjL3J1bnRp
bWUuaD4KICNpbXBvcnQgPHBhbC9zeXN0ZW0vU2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgotCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsu
aD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogCitTT0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKK1NPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCisKIEBpbnRlcmZhY2UgV2Vi
VmlkZW9GdWxsc2NyZWVuV2luZG93IDogTlNXaW5kb3c8TlNBbmltYXRpb25EZWxlZ2F0ZT4gewog
ICAgIFNFTCBfY29udHJvbGxlckFjdGlvbk9uQW5pbWF0aW9uRW5kOwogICAgIFdlYldpbmRvd1Nj
YWxlQW5pbWF0aW9uICpfZnVsbHNjcmVlbkFuaW1hdGlvbjsgLy8gKHJldGFpbikKQEAgLTExNiw3
ICsxMTgsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAgICAgYXV0
byBjb250ZW50VmlldyA9IFtbc2VsZiBmdWxsc2NyZWVuV2luZG93XSBjb250ZW50Vmlld107CiAK
LSAgICBhdXRvIGxheWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVyTGF5ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICBhdXRvIGxheWVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckxheWVy
SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgW2xheWVyIHNldFBsYXllcjpwbGF5ZXJdOwogCiAgICAg
W2NvbnRlbnRWaWV3IHNldExheWVyOmxheWVyLmdldCgpXTsKQEAgLTE0NSw3ICsxNDcsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAodm9pZCl3aW5kb3dEaWRFeGl0
RnVsbHNjcmVlbgogewogICAgIENBTGF5ZXIgKmxheWVyID0gW1tbc2VsZiB3aW5kb3ddIGNvbnRl
bnRWaWV3XSBsYXllcl07Ci0gICAgaWYgKFtsYXllciBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQ
bGF5ZXJMYXllckNsYXNzKCldKQorICAgIGlmIChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpnZXRBVlBs
YXllckxheWVyQ2xhc3MoKV0pCiAgICAgICAgIFtbKEFWUGxheWVyTGF5ZXIgKilsYXllciBwbGF5
ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInJhdGUiXTsKIAogICAgIFtzZWxm
IGNsZWFyRmFkZUFuaW1hdGlvbl07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggYWQ5MjFhNWIzZTJiZDk5MmEzYTE0Yzg1YzdhZmYyZDkyM2QwNmVj
ZS4uYTJlNjBmNTUwOGIxOGE3MmE1Yzg3N2Q0MTkyNTU2Njg2OGI1OWE3NSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE5LTA0LTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQ0NjI3LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MjgyCisKKyAgICAgICAgQ2F1c2luZyBp
bnRlcm5hbCBidWlsZCBmYWlsdXJlcyAoUmVxdWVzdGVkIGJ5IFNoYXduUm9iZXJ0cyBvbgorICAg
ICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAg
IkNyZWF0ZSBBVkZvdW5kYXRpb25Tb2Z0TGluay57aCxtbX0gdG8gcmVkdWNlIGR1cGxpY2F0ZSBj
b2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3
MTcxCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNDQ2MjcKKwog
MjAxOS0wNC0yNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gSGFyZGNvZGVkIHRleHQgY29sb3IgaW4gaW5wdXQgZmllbGRzCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDE4MGYxOWJmYTk2YzJiZWQ1NGRlYjI2OWU0NGZiMDdkMTVm
ZDVjYTUuLjA4ZjE2NjFhYzUwODRlYzY1ZDNkYzhhMzMxMmVmNDQ3NDYyYzM3ZmIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMyw3ICsyMyw2IEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCiAJCTA0MUExRTM0MjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXgu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDQxQTFF
MzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgKi87IH07Ci0JCTA3MTFERjUy
MjI2QTk1RkMwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzExREY1MTIyNkE5NUZCMDAz
REQyRjcgLyogQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tICovOyB9OwogCQkwNzQ5MkIzQjFE
RjhCMTRDMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDkyQjNBMURGOEFFMkQwMDYzM0RF
MSAvKiBFbnVtZXJhdGVNZWRpYURldmljZXMuY3BwICovOyB9OwogCQkwNzQ5MkIzQzFERjhCODY2
MDA2MzNERTEgLyogZW51bWVyYXRlTWVkaWFEZXZpY2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0OTJCMzkxREY4QURBNDAwNjMz
REUxIC8qIGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sICovOyB9OwogCQkwNzQ5OTQ0MjFFQTUw
MzRCMDAwREE0NEUgLyogZ2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE0MTBGNEQxOUFGN0JFRjAwMkVCQUI1IC8q
IGdldFVzZXJNZWRpYS5odG1sICovOyB9OwpAQCAtMTMzOSw3ICsxMzM4LDYgQEAKIC8qIEJlZ2lu
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwMENEOUY2MjE1QkUzMTJDMDAyREEyQ0Ug
LyogQmFja0ZvcndhcmRMaXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQmFja0ZvcndhcmRMaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1YmxpY1N1ZmZpeC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTA3MTFERjUxMjI2QTk1RkIwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25T
b2Z0TGlua1Rlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
VkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3NDkyQjM5MURGOEFEQTQwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyog
RW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NjZERDFGMUE1QUQ1MjAwMDIzRTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVz
dFVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjg5LDcgKzM2ODcsNiBA
QAogCQlDRDg5RDAzNzFDNEVEQjEzMDAwNDBBMDQgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTA3MTFERjUxMjI2QTk1RkIwMDNERDJGNyAv
KiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gKi8sCiAJCQkJNzUxQjA1RDUxRjhFQUMxQTAw
MjhBMDlFIC8qIERhdGFiYXNlVHJhY2tlclRlc3QubW0gKi8sCiAJCQkJNTc2OUM1MEExRDlCMDAw
MTAwMDg0N0ZCIC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tICovLAogCQkJCUExNzk5MTg2
MUUxQzk5NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gKi8sCkBAIC00MDMxLDcgKzQwMjgs
NiBAQAogCQkJCUNEQzhFNDhEMUJDNUNCNDUwMDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25DYXRlZ29y
eUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEI5MUQwQTY0RjEwMEZFQkNGMyAvKiBB
dXRvTGF5b3V0SW50ZWdyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkwN0NEMzJGNjIwNjVC
NTQzMDA2NEE0QkUgLyogQVZGb3VuZGF0aW9uUHJlZmVyZW5jZS5tbSBpbiBTb3VyY2VzICovLAot
CQkJCTA3MTFERjUyMjI2QTk1RkMwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3Qu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNTFBNDExQTdFMDA0NDdDNEMgLyogQmFja0Zv
cndhcmRMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM3RkVCMjAyMDdDMEYyRTAwRDIzMjc4
IC8qIEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NEI3QTYwMURGMzZF
RUUwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5k
YXRpb25Tb2Z0TGlua1Rlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmtUZXN0Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzOWM4ZGZhY2IwOGJkZWNmM2M3MmFkYjg5ZjU2NDRkOWRjMDkyZTFlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1URVNUKEFWRm91
bmRhdGlvblNvZnRMaW5rLCBDbGFzc2VzKQotewotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWUGxh
eWVyQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZQbGF5ZXJJdGVt
Q2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXRDbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVlBsYXll
ckxheWVyQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZVUkxBc3Nl
dENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWQXNzZXRJbWFnZUdl
bmVyYXRvckNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWTWV0YWRh
dGFJdGVtQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZBc3NldENh
Y2hlQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZQbGF5ZXJJdGVt
TGVnaWJsZU91dHB1dENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFW
TWVkaWFTZWxlY3Rpb25Hcm91cENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6
OmdldEFWTWVkaWFTZWxlY3Rpb25PcHRpb25DbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1Rf
TkUoUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1Rf
TkUoUEFMOjpnZXRBVkFzc2V0UmVhZGVyQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05F
KFBBTDo6Z2V0QVZBc3NldFdyaXRlckNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQ
QUw6OmdldEFWQXNzZXRXcml0ZXJJbnB1dENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9O
RShQQUw6OmdldEFWQ2FwdHVyZVNlc3Npb25DbGFzcygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1Rf
TkUoUEFMOjpnZXRBVkNhcHR1cmVDb25uZWN0aW9uQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQ
RUNUX05FKFBBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQ
RUNUX05FKFBBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlRm9ybWF0Q2xhc3MoKSwgbnVsbHB0cik7Ci0g
ICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZDYXB0dXJlRGV2aWNlSW5wdXRDbGFzcygpLCBudWxscHRy
KTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVkNhcHR1cmVPdXRwdXRDbGFzcygpLCBudWxscHRy
KTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRDbGFzcygp
LCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVkZyYW1lUmF0ZVJhbmdlQ2xhc3Mo
KSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZNdXRhYmxlQXVkaW9NaXhDbGFz
cygpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVk11dGFibGVBdWRpb01peElu
cHV0UGFyYW1ldGVyc0NsYXNzKCksIG51bGxwdHIpOwotCi0jaWYgSEFWRShBVlNUUkVBTVNFU1NJ
T04pICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIEVYUEVDVF9ORShQQUw6
OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6
OmdldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCksIG51bGxwdHIpOwotI2VuZGlmCi0KLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWUGVyc2lzdGFibGVD
b250ZW50S2V5UmVxdWVzdENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6Omdl
dEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0
QVZTcGVlY2hTeW50aGVzaXplckNsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6
OmdldEFWU3BlZWNoVXR0ZXJhbmNlQ2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBB
TDo6Z2V0QVZTcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzKCksIG51bGxwdHIpOwotI2VuZGlmCi0K
LSNpZiBIQVZFKE1FRElBX1BMQVlFUikgJiYgIVBMQVRGT1JNKFdBVENIT1MpCi0gICAgRVhQRUNU
X05FKFBBTDo6Z2V0QVZSb3V0ZURldGVjdG9yQ2xhc3MoKSwgbnVsbHB0cik7Ci0jZW5kaWYKLQot
ICAgIEVYUEVDVF9ORShQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSwgbnVsbHB0
cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCksIG51
bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1
ZXN0Q2xhc3MoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKFBBTDo6Z2V0QVZBc3NldFJlYWRl
clNhbXBsZVJlZmVyZW5jZU91dHB1dENsYXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQ
QUw6OmdldEFWVmlkZW9QZXJmb3JtYW5jZU1ldHJpY3NDbGFzcygpLCBudWxscHRyKTsKLSAgICBF
WFBFQ1RfTkUoUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJDbGFzcygpLCBudWxs
cHRyKTsKLSAgICBFWFBFQ1RfTkUoUEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNs
YXNzKCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9ORShQQUw6OmdldEFWU2FtcGxlQnVmZmVyUmVu
ZGVyU3luY2hyb25pemVyQ2xhc3MoKSwgbnVsbHB0cik7Ci19Ci0KLQotVEVTVChBVkZvdW5kYXRp
b25Tb2Z0TGluaywgQ29uc3RhbnRzKQotewotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvVGltZVBp
dGNoQWxnb3JpdGhtU3BlY3RyYWwgaXNFcXVhbFRvU3RyaW5nOkAiU3BlY3RyYWwiXSk7Ci0gICAg
RVhQRUNUX1RSVUUoW0FWQXVkaW9UaW1lUGl0Y2hBbGdvcml0aG1WYXJpc3BlZWQgaXNFcXVhbFRv
U3RyaW5nOkAiVmFyaXNwZWVkIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk1lZGlhVHlwZUNsb3Nl
ZENhcHRpb24gaXNFcXVhbFRvU3RyaW5nOkAiY2xjcCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZN
ZWRpYVR5cGVWaWRlbyBpc0VxdWFsVG9TdHJpbmc6QCJ2aWRlIl0pOwotICAgIEVYUEVDVF9UUlVF
KFtBVk1lZGlhVHlwZUF1ZGlvIGlzRXF1YWxUb1N0cmluZzpAInNvdW4iXSk7Ci0gICAgRVhQRUNU
X1RSVUUoW0FWTWVkaWFUeXBlTXV4ZWQgaXNFcXVhbFRvU3RyaW5nOkAibXV4eCJdKTsKLSAgICBF
WFBFQ1RfVFJVRShbQVZNZWRpYVR5cGVNZXRhZGF0YSBpc0VxdWFsVG9TdHJpbmc6QCJtZXRhIl0p
OwotICAgIEVYUEVDVF9UUlVFKFtBVkFzc2V0SW1hZ2VHZW5lcmF0b3JBcGVydHVyZU1vZGVDbGVh
bkFwZXJ0dXJlIGlzRXF1YWxUb1N0cmluZzpAIkNsZWFuQXBlcnR1cmUiXSk7Ci0gICAgRVhQRUNU
X1RSVUUoW0FWU3RyZWFtaW5nS2V5RGVsaXZlcnlDb250ZW50S2V5VHlwZSBpc0VxdWFsVG9TdHJp
bmc6QCJjb20uYXBwbGUuc3RyZWFtaW5na2V5ZGVsaXZlcnkuY29udGVudGtleSJdKTsKLSAgICBF
WFBFQ1RfVFJVRShbQVZNZWRpYUNoYXJhY3RlcmlzdGljQ29udGFpbnNPbmx5Rm9yY2VkU3VidGl0
bGVzIGlzRXF1YWxUb1N0cmluZzpAInB1YmxpYy5zdWJ0aXRsZXMuZm9yY2VkLW9ubHkiXSk7Ci0g
ICAgRVhQRUNUX1RSVUUoW0FWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBpc0VxdWFsVG9TdHJpbmc6
QCJ0aXRsZSJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uIGlz
RXF1YWxUb1N0cmluZzpAImNvbW4iXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWTWVkaWFUeXBlU3Vi
dGl0bGUgaXNFcXVhbFRvU3RyaW5nOkAic2J0bCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZWRp
YUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQgaXNFcXVhbFRvU3RyaW5nOkAicHVi
bGljLm1haW4tcHJvZ3JhbS1jb250ZW50Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNFYXN5VG9SZWFkIGlzRXF1YWxUb1N0cmluZzpAInB1YmxpYy5lYXN5LXRvLXJl
YWQiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWRmlsZVR5cGVNUEVHNCBpc0VxdWFsVG9TdHJpbmc6
QCJwdWJsaWMubXBlZy00Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVlZpZGVvQ29kZWNIMjY0IGlz
RXF1YWxUb1N0cmluZzpAImF2YzEiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWVmlkZW9FeHBlY3Rl
ZFNvdXJjZUZyYW1lUmF0ZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJFeHBlY3RlZEZyYW1lUmF0ZSJd
KTsKLSAgICBFWFBFQ1RfVFJVRShbQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSBpc0VxdWFsVG9TdHJp
bmc6QCJQcm9maWxlTGV2ZWwiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWVmlkZW9BdmVyYWdlQml0
UmF0ZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJBdmVyYWdlQml0UmF0ZSJdKTsKLSAgICBFWFBFQ1Rf
VFJVRShbQVZWaWRlb01heEtleUZyYW1lSW50ZXJ2YWxLZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWF4
S2V5RnJhbWVJbnRlcnZhbCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZWaWRlb1Byb2ZpbGVMZXZl
bEgyNjRNYWluQXV0b0xldmVsIGlzRXF1YWxUb1N0cmluZzpAIkgyNjRfTWFpbl9BdXRvTGV2ZWwi
XSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFt
ZUtleSBpc0VxdWFsVG9TdHJpbmc6QCJNZWRpYVNlbGVjdGlvbk9wdGlvbnNOYW1lIl0pOwotICAg
IEVYUEVDVF9UUlVFKFtBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrRXh0ZW5kZWRMYW5ndWFnZVRh
Z0tleSBpc0VxdWFsVG9TdHJpbmc6QCJNZWRpYVNlbGVjdGlvbk9wdGlvbnNFeHRlbmRlZExhbmd1
YWdlVGFnIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNrSXNE
ZWZhdWx0S2V5IGlzRXF1YWxUb1N0cmluZzpAIk1lZGlhU2VsZWN0aW9uT3B0aW9uc0lzRGVmYXVs
dCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja01lZGlhQ2hh
cmFjdGVyc3RpY3NLZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWVkaWFTZWxlY3Rpb25PcHRpb25zVGFn
Z2VkTWVkaWFDaGFyYWN0ZXJpc3RpY3MiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWT3V0T2ZCYW5k
QWx0ZXJuYXRlVHJhY2tJZGVudGlmaWVyS2V5IGlzRXF1YWxUb1N0cmluZzpAIk1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NsaWVudElkZW50aWZpZXIiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWT3V0T2ZC
YW5kQWx0ZXJuYXRlVHJhY2tTb3VyY2VLZXkgaXNFcXVhbFRvU3RyaW5nOkAiTWVkaWFTZWxlY3Rp
b25PcHRpb25zVVJMIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVk1lZGlhQ2hhcmFjdGVyaXN0aWNE
ZXNjcmliZXNNdXNpY0FuZFNvdW5kRm9yQWNjZXNzaWJpbGl0eSBpc0VxdWFsVG9TdHJpbmc6QCJw
dWJsaWMuYWNjZXNzaWJpbGl0eS5kZXNjcmliZXMtbXVzaWMtYW5kLXNvdW5kIl0pOwotICAgIEVY
UEVDVF9UUlVFKFtBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tlbkRpYWxvZ0Zv
ckFjY2Vzc2liaWxpdHkgaXNFcXVhbFRvU3RyaW5nOkAicHVibGljLmFjY2Vzc2liaWxpdHkudHJh
bnNjcmliZXMtc3Bva2VuLWRpYWxvZyJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZWRpYUNoYXJh
Y3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50IGlzRXF1YWxUb1N0cmluZzpAInB1YmxpYy5hdXhp
bGlhcnktY29udGVudCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZWRpYUNoYXJhY3RlcmlzdGlj
RGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5IGlzRXF1YWxUb1N0cmluZzpAInB1YmxpYy5h
Y2Nlc3NpYmlsaXR5LmRlc2NyaWJlcy12aWRlbyJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZXRh
ZGF0YUtleVNwYWNlUXVpY2tUaW1lVXNlckRhdGEgaXNFcXVhbFRvU3RyaW5nOkAidWR0YSJdKTsK
LSAgICBFWFBFQ1RfVFJVRShbQVZNZXRhZGF0YUtleVNwYWNlUXVpY2tUaW1lTWV0YWRhdGEgaXNF
cXVhbFRvU3RyaW5nOkAibWR0YSJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZNZXRhZGF0YUtleVNw
YWNlaVR1bmVzIGlzRXF1YWxUb1N0cmluZzpAIml0c2siXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FW
TWV0YWRhdGFLZXlTcGFjZUlEMyBpc0VxdWFsVG9TdHJpbmc6QCJvcmcuaWQzIl0pOwotICAgIEVY
UEVDVF9UUlVFKFtBVk1ldGFkYXRhS2V5U3BhY2VJU09Vc2VyRGF0YSBpc0VxdWFsVG9TdHJpbmc6
QCJ1aXNvIl0pOwotCi0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZFbmNvZGVy
Qml0UmF0ZUtleSgpKQotICAgICAgICBFWFBFQ1RfVFJVRShbQVZFbmNvZGVyQml0UmF0ZUtleSBp
c0VxdWFsVG9TdHJpbmc6QCJBVkVuY29kZXJCaXRSYXRlS2V5Il0pOwotICAgIGlmIChQQUw6OmNh
bkxvYWRfQVZGb3VuZGF0aW9uX0FWRm9ybWF0SURLZXkoKSkKLSAgICAgICAgRVhQRUNUX1RSVUUo
W0FWRm9ybWF0SURLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZGb3JtYXRJREtleSJdKTsKLSAgICBp
ZiAoUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVk51bWJlck9mQ2hhbm5lbHNLZXkoKSkKLSAg
ICAgICAgRVhQRUNUX1RSVUUoW0FWTnVtYmVyT2ZDaGFubmVsc0tleSBpc0VxdWFsVG9TdHJpbmc6
QCJBVk51bWJlck9mQ2hhbm5lbHNLZXkiXSk7Ci0gICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZvdW5k
YXRpb25fQVZTYW1wbGVSYXRlS2V5KCkpCi0gICAgICAgIEVYUEVDVF9UUlVFKFtBVlNhbXBsZVJh
dGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZTYW1wbGVSYXRlS2V5Il0pOwotCi0jaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gNDAwMDApIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMCkKLSAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZG
b3VuZGF0aW9uX0FWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRShbQVZVUkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5IGlzRXF1YWxUb1N0cmluZzpAIkFW
VVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleSJdKTsKLSNlbmRpZgotCi0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAw
MCkgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gNTAwMDApIHx8IChQTEFURk9STShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMCkKLSAgICBFWFBFQ1RfVFJVRShQQUw6OmNhbkxvYWRfQVZGb3Vu
ZGF0aW9uX0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkoKSk7Ci0gICAg
RVhQRUNUX1RSVUUoW0FWVVJMQXNzZXRVc2VDbGllbnRVUkxMb2FkaW5nRXhjbHVzaXZlbHkgaXNF
cXVhbFRvU3RyaW5nOkAiQVZVUkxBc3NldFVzZUNsaWVudFVSTExvYWRpbmdFeGNsdXNpdmVseSJd
KTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRF
TlRLRVlTRVNTSU9OKQotICAgIEVYUEVDVF9UUlVFKFBBTDo6Y2FuTG9hZF9BVkZvdW5kYXRpb25f
QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
W0FWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nIGlzRXF1YWxUb1N0cmluZzpAIkZh
aXJQbGF5U3RyZWFtaW5nIl0pOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBFWFBFQ1RfVFJVRShQQUw6OmNh
bkxvYWRfQVZGb3VuZGF0aW9uX0FWQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25zS2V5
KCkpOwotICAgIEVYUEVDVF9UUlVFKFtBVkNvbnRlbnRLZXlSZXF1ZXN0UHJvdG9jb2xWZXJzaW9u
c0tleSBpc0VxdWFsVG9TdHJpbmc6QCJQcm90b2NvbFZlcnNpb25zS2V5Il0pOwotI2VuZGlmCi0K
LSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTUwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTMwMDAwKSB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19XQVRDSF9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSA2MDAwMCkgfHwgKFBMQVRGT1JNKEFQUExFVFYpICYmIF9fVFZf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwMDAwKQotICAgIEVYUEVDVF9UUlVFKFBBTDo6
Y2FuTG9hZF9BVkZvdW5kYXRpb25fQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoW0FWVmlkZW9Db2RlY1R5cGVIRVZDV2l0aEFscGhhIGlzRXF1YWxUb1N0
cmluZzpAIm11eGEiXSk7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBFWFBFQ1Rf
VFJVRShbQVZTdHJlYW1EYXRhUGFyc2VyQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25z
S2V5IGlzRXF1YWxUb1N0cmluZzpAIkFWQ29udGVudEtleVJlcXVlc3RQcm90b2NvbFZlcnNpb25z
S2V5Il0pOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEVYUEVDVF9U
UlVFKFtBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50ZXJmYWNlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJBVlVSTEFzc2V0Qm91bmROZXR3b3JrSW50ZXJmYWNlTmFtZSJdKTsKLSAgICBFWFBFQ1RfVFJV
RShbQVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXkgaXNFcXVhbFRvU3RyaW5nOkAi
QVZVUkxBc3NldENsaWVudEJ1bmRsZUlkZW50aWZpZXJLZXkiXSk7Ci0gICAgRVhQRUNUX1RSVUUo
W0FWQ2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3JOb3RpZmljYXRpb24gaXNFcXVhbFRvU3RyaW5n
OkAiQVZDYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvck5vdGlmaWNhdGlvbiJdKTsKLSAgICBFWFBF
Q1RfVFJVRShbQVZDYXB0dXJlU2Vzc2lvbldhc0ludGVycnVwdGVkTm90aWZpY2F0aW9uIGlzRXF1
YWxUb1N0cmluZzpAIkFWQ2FwdHVyZVNlc3Npb25XYXNJbnRlcnJ1cHRlZE5vdGlmaWNhdGlvbiJd
KTsKLSAgICBFWFBFQ1RfVFJVRShbQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvbkVuZGVkTm90
aWZpY2F0aW9uIGlzRXF1YWxUb1N0cmluZzpAIkFWQ2FwdHVyZVNlc3Npb25JbnRlcnJ1cHRpb25F
bmRlZE5vdGlmaWNhdGlvbiJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZDYXB0dXJlU2Vzc2lvbklu
dGVycnVwdGlvblJlYXNvbktleSBpc0VxdWFsVG9TdHJpbmc6QCJBVkNhcHR1cmVTZXNzaW9uSW50
ZXJydXB0aW9uUmVhc29uS2V5Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkNhcHR1cmVTZXNzaW9u
RXJyb3JLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZDYXB0dXJlU2Vzc2lvbkVycm9yS2V5Il0pOwot
ICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCBpc0VxdWFsVG9T
dHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudCJdKTsKLSAgICBFWFBFQ1RfVFJV
RShbQVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50IGlzRXF1YWxUb1N0cmluZzpAIkFW
QXVkaW9TZXNzaW9uQ2F0ZWdvcnlTb2xvQW1iaWVudCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZB
dWRpb1Nlc3Npb25DYXRlZ29yeVBsYXliYWNrIGlzRXF1YWxUb1N0cmluZzpAIkFWQXVkaW9TZXNz
aW9uQ2F0ZWdvcnlQbGF5YmFjayJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZBdWRpb1Nlc3Npb25D
YXRlZ29yeVJlY29yZCBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UmVj
b3JkIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFuZFJl
Y29yZCBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5UGxheUFuZFJlY29y
ZCJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZBdWRpb1Nlc3Npb25DYXRlZ29yeUF1ZGlvUHJvY2Vz
c2luZyBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QXVkaW9Qcm9jZXNz
aW5nIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lvbk1vZGVEZWZhdWx0IGlzRXF1
YWxUb1N0cmluZzpAIkFWQXVkaW9TZXNzaW9uTW9kZURlZmF1bHQiXSk7Ci0gICAgRVhQRUNUX1RS
VUUoW0FWQXVkaW9TZXNzaW9uTW9kZVZpZGVvQ2hhdCBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlv
U2Vzc2lvbk1vZGVWaWRlb0NoYXQiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW0FWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIGlzRXF1YWxUb1N0cmluZzpAIkFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uTm90aWZpY2F0aW9uIl0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vz
c2lvbkludGVycnVwdGlvblR5cGVLZXkgaXNFcXVhbFRvU3RyaW5nOkAiQVZBdWRpb1Nlc3Npb25J
bnRlcnJ1cHRpb25UeXBlS2V5Il0pOwotICAgIEVYUEVDVF9UUlVFKFtBVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvbk9wdGlvbktleSBpc0VxdWFsVG9TdHJpbmc6QCJBVkF1ZGlvU2Vzc2lvbkludGVy
cnVwdGlvbk9wdGlvbktleSJdKTsKLSAgICBFWFBFQ1RfVFJVRShbQVZSb3V0ZURldGVjdG9yTXVs
dGlwbGVSb3V0ZXNEZXRlY3RlZERpZENoYW5nZU5vdGlmaWNhdGlvbiBpc0VxdWFsVG9TdHJpbmc6
QCJBVlJvdXRlRGV0ZWN0b3JNdWx0aXBsZVJvdXRlc0RldGVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0
aW9uIl0pOwotI2VuZGlmCi19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKLQotfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>